From b703eab295330e6f81564fbb39a10a1a2fdd2f54 Mon Sep 17 00:00:00 2001 From: Robert Jonsson Date: Sun, 27 Dec 2009 11:30:35 +0000 Subject: moved old qt4 branch --- muse/CMakeLists.txt | 335 - muse/COPYING | 280 - muse/ChangeLog | 2760 - muse/Doxyfile.in | 1271 - muse/NEWS | 12 - muse/README | 117 - muse/Reference | 59 - muse/al/CMakeLists.txt | 32 - muse/al/al.cpp | 29 - muse/al/al.h | 34 - muse/al/dsp.cpp | 120 - muse/al/dsp.h | 83 - muse/al/dspSSE.cpp | 531 - muse/al/dspXMM.cpp | 115 - muse/al/marker.cpp | 86 - muse/al/marker.h | 67 - muse/al/pos.cpp | 616 - muse/al/pos.h | 129 - muse/al/sig.cpp | 407 - muse/al/sig.h | 103 - muse/al/tempo.cpp | 393 - muse/al/tempo.h | 101 - muse/al/xml.cpp | 362 - muse/al/xml.h | 69 - muse/all.h | 123 - muse/awl/CMakeLists.txt | 112 - muse/awl/aslider.cpp | 241 - muse/awl/aslider.h | 135 - muse/awl/awl.cpp | 27 - muse/awl/awl.h | 30 - muse/awl/awlplugin.cpp | 127 - muse/awl/awlplugin.h | 273 - muse/awl/checkbox.cpp | 36 - muse/awl/checkbox.h | 55 - muse/awl/clock.xpm | 24 - muse/awl/combobox.cpp | 36 - muse/awl/combobox.h | 55 - muse/awl/drawbar.cpp | 130 - muse/awl/drawbar.h | 54 - muse/awl/fastlog.h | 39 - muse/awl/floatentry.cpp | 317 - muse/awl/floatentry.h | 112 - muse/awl/knob.cpp | 281 - muse/awl/knob.h | 85 - muse/awl/ltest.cpp | 14 - muse/awl/metronom.xpm | 24 - muse/awl/midimeter.cpp | 137 - muse/awl/midimeter.h | 56 - muse/awl/midimslider.cpp | 143 - muse/awl/midimslider.h | 56 - muse/awl/midipanentry.cpp | 47 - muse/awl/midipanentry.h | 48 - muse/awl/midipanknob.cpp | 37 - muse/awl/midipanknob.h | 55 - muse/awl/midivolentry.cpp | 50 - muse/awl/midivolentry.h | 47 - muse/awl/mslider.cpp | 273 - muse/awl/mslider.h | 68 - muse/awl/panentry.cpp | 35 - muse/awl/panentry.h | 40 - muse/awl/panknob.cpp | 38 - muse/awl/panknob.h | 46 - muse/awl/pitchedit.cpp | 89 - muse/awl/pitchedit.h | 50 - muse/awl/pitchlabel.cpp | 106 - muse/awl/pitchlabel.h | 51 - muse/awl/posedit.cpp | 441 - muse/awl/posedit.h | 72 - muse/awl/poslabel.cpp | 100 - muse/awl/poslabel.h | 56 - muse/awl/sigedit.cpp | 224 - muse/awl/sigedit.h | 66 - muse/awl/slider.cpp | 251 - muse/awl/slider.h | 81 - muse/awl/tcanvas.cpp | 1871 - muse/awl/tcanvas.h | 293 - muse/awl/tempoedit.cpp | 88 - muse/awl/tempoedit.h | 55 - muse/awl/tempolabel.cpp | 72 - muse/awl/tempolabel.h | 48 - muse/awl/utils.cpp | 48 - muse/awl/utils.h | 29 - muse/awl/volentry.cpp | 37 - muse/awl/volentry.h | 41 - muse/awl/volknob.cpp | 39 - muse/awl/volknob.h | 46 - muse/awl/volslider.cpp | 85 - muse/awl/volslider.h | 57 - muse/cmake/TargetDoc.cmake | 125 - muse/cmake/UsePkgConfig1.cmake | 45 - muse/config.h.in | 29 - muse/doc/README.de | 69 - muse/doc/README.instruments | 108 - muse/doc/README.ladspaguis | 63 - muse/doc/README.realtime | 19 - muse/doc/README.shortcuts | 159 - muse/doc/README.softsynth | 86 - muse/doc/README.translate | 57 - muse/doc/dimpl.odt | Bin 37053 -> 0 bytes muse/doc/manual-de.odt | Bin 50551 -> 0 bytes muse/doc/pics/main0.png | Bin 34023 -> 0 bytes muse/doc/pics/main1.png | Bin 69465 -> 0 bytes muse/doc/pics/main2.png | Bin 39892 -> 0 bytes muse/doc/pics/mixer1.png | Bin 23134 -> 0 bytes muse/doc/pics/pianoroll1.png | Bin 35895 -> 0 bytes muse/doc/pics/pianoroll2.png | Bin 37144 -> 0 bytes muse/doc/pics/select_project.png | Bin 40300 -> 0 bytes muse/doc/pics/select_template.png | Bin 31420 -> 0 bytes muse/grepmidi/CMakeLists.txt | 24 - muse/grepmidi/grepmidi.cpp | 348 - muse/midiplugins/CMakeLists.txt | 36 - muse/midiplugins/drumglue/CMakeLists.txt | 50 - muse/midiplugins/drumglue/drumglue.cpp | 250 - muse/midiplugins/drumglue/drumglue.h | 86 - muse/midiplugins/drumglue/drumgluegui.cpp | 68 - muse/midiplugins/drumglue/drumgluegui.h | 41 - muse/midiplugins/drumglue/drumgluegui.ui | 91 - muse/midiplugins/drumglue/globalinstrumentview.cpp | 153 - muse/midiplugins/drumglue/globalinstrumentview.h | 41 - muse/midiplugins/drumglue/globalinstrumentview.ui | 102 - muse/midiplugins/drumglue/outputinstrumentview.cpp | 45 - muse/midiplugins/drumglue/outputinstrumentview.h | 31 - muse/midiplugins/drumglue/outputinstrumentview.ui | 292 - muse/midiplugins/dump/CMakeLists.txt | 40 - muse/midiplugins/dump/dump.cpp | 48 - muse/midiplugins/dump/dump.h | 28 - muse/midiplugins/filter/CMakeLists.txt | 49 - muse/midiplugins/filter/ctrlcombo.cpp | 56 - muse/midiplugins/filter/ctrlcombo.h | 24 - muse/midiplugins/filter/filter.cpp | 167 - muse/midiplugins/filter/filter.h | 51 - muse/midiplugins/filter/filtergui.cpp | 187 - muse/midiplugins/filter/filtergui.h | 57 - muse/midiplugins/filter/filtergui.ui | 269 - muse/midiplugins/libmidiplugin/CMakeLists.txt | 26 - muse/midiplugins/libmidiplugin/evdata.h | 64 - muse/midiplugins/libmidiplugin/mempi.cpp | 81 - muse/midiplugins/libmidiplugin/mempi.h | 97 - muse/midiplugins/libmidiplugin/midievent.cpp | 21 - muse/midiplugins/libmidiplugin/midievent.h | 87 - muse/midiplugins/metronom/CMakeLists.txt | 46 - muse/midiplugins/metronom/metronom.cpp | 167 - muse/midiplugins/metronom/metronom.h | 53 - muse/midiplugins/metronom/metronomgui.cpp | 75 - muse/midiplugins/metronom/metronomgui.h | 36 - muse/midiplugins/metronom/metronomgui.ui | 150 - muse/midiplugins/splitlayer/CMakeLists.txt | 45 - muse/midiplugins/splitlayer/splitlayer.cpp | 209 - muse/midiplugins/splitlayer/splitlayer.h | 69 - muse/midiplugins/splitlayer/splitlayergui.cpp | 263 - muse/midiplugins/splitlayer/splitlayergui.h | 65 - muse/midiplugins/transform/CMakeLists.txt | 45 - muse/midiplugins/transform/transform.cpp | 904 - muse/midiplugins/transform/transform.h | 126 - muse/midiplugins/transform/transform.ui | 616 - muse/midiplugins/trigg/CMakeLists.txt | 47 - muse/midiplugins/trigg/trigg.cpp | 131 - muse/midiplugins/trigg/trigg.h | 49 - muse/midiplugins/trigg/trigggui.cpp | 56 - muse/midiplugins/trigg/trigggui.h | 48 - muse/midiplugins/trigg/trigggui.ui | 109 - muse/muse.pro | 240 - muse/muse/CMakeLists.txt | 226 - muse/muse/aboutbox.ui | 612 - muse/muse/arranger.cpp | 1382 - muse/muse/arranger.h | 175 - muse/muse/astrip.cpp | 791 - muse/muse/astrip.h | 101 - muse/muse/audio.cpp | 655 - muse/muse/audio.h | 306 - muse/muse/audiodev.h | 57 - muse/muse/audiogroup.cpp | 47 - muse/muse/audiogroup.h | 46 - muse/muse/audioinput.cpp | 131 - muse/muse/audioinput.h | 53 - muse/muse/audiooutput.cpp | 191 - muse/muse/audiooutput.h | 55 - muse/muse/audioprefetch.cpp | 199 - muse/muse/audioprefetch.h | 54 - muse/muse/audiotrack.cpp | 582 - muse/muse/audiotrack.h | 105 - muse/muse/audiowriteback.cpp | 101 - muse/muse/audiowriteback.h | 44 - muse/muse/auxplugin.cpp | 190 - muse/muse/auxplugin.h | 84 - muse/muse/canvas.cpp | 1187 - muse/muse/canvas.h | 124 - muse/muse/cliplist/cliplist.cpp | 251 - muse/muse/cliplist/cliplist.h | 47 - muse/muse/cobject.cpp | 55 - muse/muse/cobject.h | 46 - muse/muse/conf.cpp | 694 - muse/muse/conf.h | 46 - muse/muse/configmidifile.ui | 153 - muse/muse/configtrack.cpp | 265 - muse/muse/configtrack.h | 61 - muse/muse/configtrack.ui | 299 - muse/muse/ctrl.cpp | 450 - muse/muse/ctrl.h | 236 - muse/muse/ctrl/CMakeLists.txt | 46 - muse/muse/ctrl/configmidictrl.cpp | 202 - muse/muse/ctrl/configmidictrl.h | 51 - muse/muse/ctrl/configmidictrl.ui | 204 - muse/muse/ctrl/ctrldialog.cpp | 191 - muse/muse/ctrl/ctrldialog.h | 49 - muse/muse/ctrl/ctrldialog.ui | 126 - muse/muse/ctrl/ctrledit.cpp | 184 - muse/muse/ctrl/ctrledit.h | 76 - muse/muse/ctrl/ctrleditor.cpp | 492 - muse/muse/ctrl/ctrleditor.h | 76 - muse/muse/ctrl/definemidictrl.cpp | 110 - muse/muse/ctrl/definemidictrl.h | 51 - muse/muse/ctrl/definemidictrl.ui | 285 - muse/muse/debug.h | 44 - muse/muse/default_click.h | 1213 - muse/muse/device.h | 56 - muse/muse/driver.h | 64 - muse/muse/dssihost.cpp | 891 - muse/muse/dssihost.h | 121 - muse/muse/dummyaudio.cpp | 294 - muse/muse/editor.cpp | 38 - muse/muse/editor.h | 44 - muse/muse/esettings.cpp | 773 - muse/muse/esettings.h | 361 - muse/muse/evdata.h | 85 - muse/muse/event.cpp | 222 - muse/muse/event.h | 139 - muse/muse/eventbase.h | 100 - muse/muse/eventlist.cpp | 93 - muse/muse/exportmidi.cpp | 376 - muse/muse/exportmidi.h | 41 - muse/muse/exportmididialog.ui | 176 - muse/muse/extmidieditor.cpp | 422 - muse/muse/extmidieditor.h | 120 - muse/muse/fastlog.h | 38 - muse/muse/fifo.cpp | 183 - muse/muse/fifo.h | 105 - muse/muse/gconfig.cpp | 121 - muse/muse/gconfig.h | 133 - muse/muse/globaldefs.h | 37 - muse/muse/globals.cpp | 133 - muse/muse/globals.h | 86 - muse/muse/gui.h | 54 - muse/muse/help.cpp | 101 - muse/muse/help.h | 36 - muse/muse/helper.cpp | 47 - muse/muse/helper.h | 27 - muse/muse/icons.cpp | 341 - muse/muse/icons.h | 134 - muse/muse/importmidi.cpp | 589 - muse/muse/importmidi.h | 46 - muse/muse/importmidi.ui | 200 - muse/muse/instruments/CMakeLists.txt | 41 - muse/muse/instruments/editinstrument.cpp | 844 - muse/muse/instruments/editinstrument.h | 70 - muse/muse/instruments/editinstrument.ui | 998 - muse/muse/instruments/midictrledit.cpp | 418 - muse/muse/instruments/midictrledit.h | 58 - muse/muse/instruments/minstrument.cpp | 631 - muse/muse/instruments/minstrument.h | 160 - muse/muse/jack.cpp | 886 - muse/muse/jackaudio.h | 90 - muse/muse/ladspa.h | 599 - muse/muse/ladspaplugin.cpp | 235 - muse/muse/ladspaplugin.h | 127 - muse/muse/liste/CMakeLists.txt | 48 - muse/muse/liste/ctrllistedit.cpp | 569 - muse/muse/liste/ctrllistedit.h | 96 - muse/muse/liste/ctrllistedit.ui | 334 - muse/muse/liste/ieventdialog.cpp | 428 - muse/muse/liste/ieventdialog.h | 117 - muse/muse/liste/listedit.cpp | 298 - muse/muse/liste/listedit.h | 98 - muse/muse/liste/partlistedit.cpp | 434 - muse/muse/liste/partlistedit.h | 79 - muse/muse/liste/partlistedit.ui | 166 - muse/muse/liste/tracklistedit.cpp | 65 - muse/muse/liste/tracklistedit.h | 50 - muse/muse/liste/tracklistedit.ui | 146 - muse/muse/marker/CMakeLists.txt | 45 - muse/muse/marker/markerview.cpp | 413 - muse/muse/marker/markerview.h | 98 - muse/muse/master/CMakeLists.txt | 37 - muse/muse/master/master.cpp | 233 - muse/muse/master/master.h | 63 - muse/muse/master/masteredit.cpp | 302 - muse/muse/master/masteredit.h | 107 - muse/muse/midi.cpp | 633 - muse/muse/midi.h | 68 - muse/muse/midictrl.cpp | 372 - muse/muse/midictrl.h | 168 - muse/muse/midiedit/CMakeLists.txt | 71 - muse/muse/midiedit/citem.cpp | 82 - muse/muse/midiedit/citem.h | 70 - muse/muse/midiedit/cmd.h | 32 - muse/muse/midiedit/dcanvas.cpp | 723 - muse/muse/midiedit/dcanvas.h | 77 - muse/muse/midiedit/drumedit.cpp | 450 - muse/muse/midiedit/drumedit.h | 93 - muse/muse/midiedit/drummap.cpp | 219 - muse/muse/midiedit/drummap.h | 81 - muse/muse/midiedit/ecanvas.cpp | 1549 - muse/muse/midiedit/ecanvas.h | 173 - muse/muse/midiedit/gatetime.cpp | 105 - muse/muse/midiedit/gatetime.h | 62 - muse/muse/midiedit/gatetime.ui | 85 - muse/muse/midiedit/midicmd.cpp | 135 - muse/muse/midiedit/midicmd.h | 81 - muse/muse/midiedit/midicmd.ui | 76 - muse/muse/midiedit/midieditor.cpp | 444 - muse/muse/midiedit/midieditor.h | 147 - muse/muse/midiedit/miditracker.cpp | 234 - muse/muse/midiedit/miditracker.h | 76 - muse/muse/midiedit/pianoroll.cpp | 526 - muse/muse/midiedit/pianoroll.h | 126 - muse/muse/midiedit/prcanvas.cpp | 773 - muse/muse/midiedit/prcanvas.h | 75 - muse/muse/midiedit/quantconfig.cpp | 68 - muse/muse/midiedit/quantconfig.h | 42 - muse/muse/midiedit/quantconfig.ui | 151 - muse/muse/midiedit/trackpattern.cpp | 627 - muse/muse/midiedit/trackpattern.h | 261 - muse/muse/midiedit/velocity.cpp | 108 - muse/muse/midiedit/velocity.h | 62 - muse/muse/midiedit/velocity.ui | 86 - muse/muse/midievent.cpp | 129 - muse/muse/midievent.h | 100 - muse/muse/midieventbase.cpp | 159 - muse/muse/midieventbase.h | 76 - muse/muse/midififo.cpp | 103 - muse/muse/midififo.h | 92 - muse/muse/midifile.cpp | 673 - muse/muse/midifile.h | 121 - muse/muse/midiinport.cpp | 241 - muse/muse/midiinport.h | 67 - muse/muse/midiout.cpp | 398 - muse/muse/midiout.h | 67 - muse/muse/midioutport.cpp | 262 - muse/muse/midioutport.h | 70 - muse/muse/midiplugin.cpp | 625 - muse/muse/midiplugin.h | 168 - muse/muse/midiportinfo.ui | 92 - muse/muse/midirack.cpp | 208 - muse/muse/midirack.h | 48 - muse/muse/midirc.cpp | 180 - muse/muse/midirc.h | 65 - muse/muse/midisynti.cpp | 225 - muse/muse/midisynti.h | 62 - muse/muse/miditrack.cpp | 716 - muse/muse/miditrack.h | 127 - muse/muse/miditrackbase.cpp | 136 - muse/muse/miditrackbase.h | 53 - muse/muse/miditrackinfo.ui | 292 - muse/muse/miditransform.cpp | 1534 - muse/muse/miditransform.h | 113 - muse/muse/mixer.cpp | 397 - muse/muse/mixer.h | 95 - muse/muse/mstrip.cpp | 1211 - muse/muse/mstrip.h | 191 - muse/muse/mtc.cpp | 131 - muse/muse/mtc.h | 68 - muse/muse/muse.cpp | 3029 - muse/muse/muse.h | 318 - muse/muse/muse.qrc | 85 - muse/muse/part.cpp | 361 - muse/muse/part.h | 151 - muse/muse/partdrag.cpp | 199 - muse/muse/partdrag.h | 69 - muse/muse/pipeline.cpp | 221 - muse/muse/pipeline.h | 59 - muse/muse/plugin.cpp | 466 - muse/muse/plugin.h | 218 - muse/muse/plugingui.cpp | 770 - muse/muse/plugingui.h | 122 - muse/muse/port.h | 76 - muse/muse/preferences.cpp | 932 - muse/muse/preferences.h | 79 - muse/muse/preferences.ui | 2400 - muse/muse/projectdialog.cpp | 471 - muse/muse/projectdialog.h | 73 - muse/muse/projectdialog.ui | 269 - muse/muse/projectpropsdialog.cpp | 64 - muse/muse/projectpropsdialog.h | 46 - muse/muse/projectpropsdialog.ui | 188 - muse/muse/rack.cpp | 445 - muse/muse/rack.h | 66 - muse/muse/revision.cpp | 27 - muse/muse/revision.h | 1 - muse/muse/route.cpp | 417 - muse/muse/route.h | 108 - muse/muse/routedialog.cpp | 196 - muse/muse/routedialog.h | 53 - muse/muse/routedialog.ui | 170 - muse/muse/selectfilter.h | 51 - muse/muse/seqmsg.cpp | 621 - muse/muse/shortcuts.cpp | 1169 - muse/muse/shortcuts.h | 135 - muse/muse/song.cpp | 1552 - muse/muse/song.h | 416 - muse/muse/songfile.cpp | 489 - muse/muse/songpart.cpp | 371 - muse/muse/songtrack.cpp | 715 - muse/muse/strip.cpp | 123 - muse/muse/strip.h | 75 - muse/muse/style.qss | 66 - muse/muse/sync.cpp | 499 - muse/muse/sync.h | 37 - muse/muse/synth.cpp | 588 - muse/muse/synth.h | 227 - muse/muse/templatedialog.cpp | 259 - muse/muse/templatedialog.h | 51 - muse/muse/templatedialog.ui | 188 - muse/muse/thread.cpp | 354 - muse/muse/thread.h | 109 - muse/muse/ticksynth.cpp | 181 - muse/muse/ticksynth.h | 29 - muse/muse/tllineedit.cpp | 70 - muse/muse/tllineedit.h | 48 - muse/muse/tlswidget.cpp | 355 - muse/muse/tlswidget.h | 83 - muse/muse/tlwidget.cpp | 641 - muse/muse/tlwidget.h | 105 - muse/muse/tlwlayout.cpp | 144 - muse/muse/tlwlayout.h | 51 - muse/muse/track.cpp | 1062 - muse/muse/track.h | 345 - muse/muse/trackdrag.cpp | 61 - muse/muse/trackdrag.h | 42 - muse/muse/trackinfo.cpp | 553 - muse/muse/trackinfo.h | 203 - muse/muse/transport.cpp | 411 - muse/muse/transport.h | 74 - muse/muse/transport.ui | 856 - muse/muse/transpose.cpp | 92 - muse/muse/transpose.h | 40 - muse/muse/transpose.ui | 193 - muse/muse/trelement.h | 63 - muse/muse/undo.cpp | 614 - muse/muse/undo.h | 103 - muse/muse/value.cpp | 73 - muse/muse/vst.cpp | 1063 - muse/muse/vst.h | 172 - muse/muse/wave.cpp | 1087 - muse/muse/wave.h | 162 - muse/muse/waveedit/CMakeLists.txt | 34 - muse/muse/waveedit/waveedit.cpp | 289 - muse/muse/waveedit/waveedit.h | 88 - muse/muse/waveedit/waveview.cpp | 1124 - muse/muse/waveedit/waveview.h | 127 - muse/muse/waveevent.cpp | 137 - muse/muse/waveevent.h | 61 - muse/muse/wavetrack.cpp | 427 - muse/muse/wavetrack.h | 84 - muse/muse/widgets/CMakeLists.txt | 88 - muse/muse/widgets/action.h | 42 - muse/muse/widgets/bigtime.cpp | 267 - muse/muse/widgets/bigtime.h | 64 - muse/muse/widgets/cliplisteditorbase.h | 138 - muse/muse/widgets/cliplisteditorbase.ui | 146 - muse/muse/widgets/comboQuant.cpp | 69 - muse/muse/widgets/comboQuant.h | 43 - muse/muse/widgets/combobox.cpp | 81 - muse/muse/widgets/combobox.h | 57 - muse/muse/widgets/comment.cpp | 91 - muse/muse/widgets/comment.h | 69 - muse/muse/widgets/comment.ui | 97 - muse/muse/widgets/ctrlcombo.cpp | 68 - muse/muse/widgets/ctrlcombo.h | 32 - muse/muse/widgets/dentry.cpp | 208 - muse/muse/widgets/dentry.h | 79 - muse/muse/widgets/doublelabel.cpp | 144 - muse/muse/widgets/doublelabel.h | 68 - muse/muse/widgets/editmetadialogbase.cpp | 110 - muse/muse/widgets/editmetadialogbase.ui | 137 - muse/muse/widgets/fdialogbuttons.ui | 167 - muse/muse/widgets/filedialog.cpp | 193 - muse/muse/widgets/filedialog.h | 65 - muse/muse/widgets/floatlabel.cpp | 144 - muse/muse/widgets/floatlabel.h | 68 - muse/muse/widgets/fontsel.cpp | 138 - muse/muse/widgets/fontsel.h | 57 - muse/muse/widgets/greendotbutton.h | 38 - muse/muse/widgets/intlabel.h | 56 - muse/muse/widgets/menutitle.cpp | 50 - muse/muse/widgets/menutitle.h | 41 - muse/muse/widgets/midisync.cpp | 128 - muse/muse/widgets/midisync.h | 49 - muse/muse/widgets/midisync.ui | 711 - muse/muse/widgets/mittransposebase.h | 111 - muse/muse/widgets/mittransposebase.ui | 112 - muse/muse/widgets/mixdowndialog.cpp | 133 - muse/muse/widgets/mixdowndialog.h | 48 - muse/muse/widgets/mixdowndialog.ui | 212 - muse/muse/widgets/noteinfo.cpp | 207 - muse/muse/widgets/noteinfo.h | 68 - muse/muse/widgets/outportcombo.cpp | 52 - muse/muse/widgets/outportcombo.h | 39 - muse/muse/widgets/quantcombo.cpp | 80 - muse/muse/widgets/quantcombo.h | 46 - muse/muse/widgets/rastercombo.cpp | 82 - muse/muse/widgets/rastercombo.h | 46 - muse/muse/widgets/recordbutton.h | 38 - muse/muse/widgets/shortcutcapturedialog.cpp | 97 - muse/muse/widgets/shortcutcapturedialog.h | 52 - muse/muse/widgets/shortcutcapturedialog.ui | 162 - muse/muse/widgets/shortcutconfig.cpp | 167 - muse/muse/widgets/shortcutconfig.h | 50 - muse/muse/widgets/shortcutconfig.ui | 180 - muse/muse/widgets/siglabel.cpp | 165 - muse/muse/widgets/siglabel.h | 50 - muse/muse/widgets/simplebutton.cpp | 65 - muse/muse/widgets/simplebutton.h | 41 - muse/muse/widgets/splitter.cpp | 107 - muse/muse/widgets/splitter.h | 62 - muse/muse/widgets/synthwizardbase.h | 58 - muse/muse/widgets/tb1.cpp | 180 - muse/muse/widgets/tb1.h | 71 - muse/muse/widgets/tools.cpp | 100 - muse/muse/widgets/tools.h | 58 - muse/muse/widgets/transformbase.ui | 993 - muse/muse/widgets/utils.cpp | 451 - muse/muse/widgets/utils.h | 58 - muse/muse/widgets/wtrackinfobase.ui | 166 - muse/muse/xpm/activeoff.svg | 120 - muse/muse/xpm/activeon.svg | 120 - muse/muse/xpm/addtrack_addmiditrack.xpm | 26 - muse/muse/xpm/addtrack_audiogroup.xpm | 35 - muse/muse/xpm/addtrack_audioinput.xpm | 33 - muse/muse/xpm/addtrack_audiooutput.xpm | 44 - muse/muse/xpm/addtrack_auxsend.xpm | 28 - muse/muse/xpm/addtrack_drumtrack.xpm | 41 - muse/muse/xpm/addtrack_wavetrack.xpm | 36 - muse/muse/xpm/audio_bounce_to_file.xpm | 24 - muse/muse/xpm/audio_bounce_to_track.xpm | 27 - muse/muse/xpm/audio_restartaudio.xpm | 69 - muse/muse/xpm/back.xpm | 27 - muse/muse/xpm/bold.xpm | 16 - muse/muse/xpm/buttondown.xpm | 27 - muse/muse/xpm/cafter.xpm | 29 - muse/muse/xpm/cliplistS.xpm | 28 - muse/muse/xpm/cmark.xpm | 23 - muse/muse/xpm/config.xpm | 36 - muse/muse/xpm/configure.xpm | 36 - muse/muse/xpm/ctrl.xpm | 27 - muse/muse/xpm/cut.xpm | 29 - muse/muse/xpm/darkgreendot.svg | 117 - muse/muse/xpm/delete.xpm | 27 - muse/muse/xpm/down.xpm | 15 - muse/muse/xpm/draw.xpm | 25 - muse/muse/xpm/edit_drumms.xpm | 45 - muse/muse/xpm/edit_list.xpm | 31 - muse/muse/xpm/edit_mastertrack.xpm | 38 - muse/muse/xpm/edit_midi.xpm | 26 - muse/muse/xpm/edit_pianoroll.xpm | 28 - muse/muse/xpm/edit_track_add.xpm | 24 - muse/muse/xpm/edit_track_del.xpm | 25 - muse/muse/xpm/editcopy.xpm | 102 - muse/muse/xpm/editcut.xpm | 33 - muse/muse/xpm/editcutS.xpm | 24 - muse/muse/xpm/editmute.xpm | 33 - muse/muse/xpm/editpaste.xpm | 210 - muse/muse/xpm/fforward.xpm | 17 - muse/muse/xpm/filenew.png | Bin 575 -> 0 bytes muse/muse/xpm/filenewS.xpm | 29 - muse/muse/xpm/fileopen.png | Bin 887 -> 0 bytes muse/muse/xpm/filesave.png | Bin 762 -> 0 bytes muse/muse/xpm/flag.xpm | 28 - muse/muse/xpm/flagS.xpm | 19 - muse/muse/xpm/folder_new.png | Bin 1278 -> 0 bytes muse/muse/xpm/forward.xpm | 28 - muse/muse/xpm/frewind.xpm | 17 - muse/muse/xpm/glue.xpm | 49 - muse/muse/xpm/greendot.svg | 117 - muse/muse/xpm/gv.xpm | 23 - muse/muse/xpm/home.xpm | 27 - muse/muse/xpm/initS.xpm | 23 - muse/muse/xpm/inputpluginS.xpm | 22 - muse/muse/xpm/italic.xpm | 16 - muse/muse/xpm/listS.xpm | 26 - muse/muse/xpm/lmark.xpm | 23 - muse/muse/xpm/localoffS.xpm | 22 - muse/muse/xpm/lock.xpm | 86 - muse/muse/xpm/loop.xpm | 29 - muse/muse/xpm/master.xpm | 15 - muse/muse/xpm/mastertrackS.xpm | 25 - muse/muse/xpm/mastertrack_graphic.xpm | 28 - muse/muse/xpm/mastertrack_list.xpm | 27 - muse/muse/xpm/meta.xpm | 27 - muse/muse/xpm/midi_edit_instrument.xpm | 27 - muse/muse/xpm/midi_init_instr.xpm | 28 - muse/muse/xpm/midi_local_off.xpm | 105 - muse/muse/xpm/midi_plugS.xpm | 22 - muse/muse/xpm/midi_reset_instr.xpm | 55 - muse/muse/xpm/midi_transform.xpm | 30 - muse/muse/xpm/midi_transpose.xpm | 31 - muse/muse/xpm/midiin.xpm | 23 - muse/muse/xpm/miditransformS.xpm | 22 - muse/muse/xpm/miditransposeS.xpm | 25 - muse/muse/xpm/minus.xpm | 24 - muse/muse/xpm/mixerS.xpm | 21 - muse/muse/xpm/mixeraudioS.xpm | 22 - muse/muse/xpm/mono.svg | 70 - muse/muse/xpm/muse_icon.xpm | 411 - muse/muse/xpm/muse_icon_64x64.png | Bin 7493 -> 0 bytes muse/muse/xpm/mutebutton_off.xpm | 165 - muse/muse/xpm/mutebutton_on.xpm | 352 - muse/muse/xpm/newmutebutton.xpm | 69 - muse/muse/xpm/off.svg | 114 - muse/muse/xpm/off.xpm | 25 - muse/muse/xpm/on.svg | 114 - muse/muse/xpm/pafter.xpm | 29 - muse/muse/xpm/panic.xpm | 50 - muse/muse/xpm/pencil.xpm | 27 - muse/muse/xpm/piano.xpm | 24 - muse/muse/xpm/pitch.xpm | 28 - muse/muse/xpm/play.xpm | 17 - muse/muse/xpm/plus.xpm | 21 - muse/muse/xpm/pointer.xpm | 28 - muse/muse/xpm/punchin.xpm | 17 - muse/muse/xpm/punchout.xpm | 18 - muse/muse/xpm/quant.xpm | 28 - muse/muse/xpm/recordOff.svg | 117 - muse/muse/xpm/recordOn.svg | 117 - muse/muse/xpm/redo.xpm | 92 - muse/muse/xpm/resetS.xpm | 22 - muse/muse/xpm/rmark.xpm | 23 - muse/muse/xpm/select.xpm | 21 - muse/muse/xpm/select_all.xpm | 21 - muse/muse/xpm/select_all_parts_on_track.xpm | 39 - muse/muse/xpm/select_deselect_all.xpm | 22 - muse/muse/xpm/select_inside_loop.xpm | 21 - muse/muse/xpm/select_invert_selection.xpm | 21 - muse/muse/xpm/select_outside_loop.xpm | 21 - muse/muse/xpm/settings_appearance_settings.xpm | 66 - muse/muse/xpm/settings_configureshortcuts.xpm | 36 - muse/muse/xpm/settings_follow_song.xpm | 30 - muse/muse/xpm/settings_globalsettings.xpm | 89 - muse/muse/xpm/settings_metronome.xpm | 99 - muse/muse/xpm/settings_midifileexport.xpm | 30 - muse/muse/xpm/settings_midiport_softsynths.xpm | 29 - muse/muse/xpm/settings_midisync.xpm | 53 - muse/muse/xpm/solobutton.xpm | 39 - muse/muse/xpm/solobutton_off.xpm | 146 - muse/muse/xpm/solobutton_on.xpm | 300 - muse/muse/xpm/speaker.xpm | 23 - muse/muse/xpm/splash.png | Bin 45374 -> 0 bytes muse/muse/xpm/start.xpm | 17 - muse/muse/xpm/steprec.xpm | 24 - muse/muse/xpm/stereo.svg | 68 - muse/muse/xpm/stick.xpm | 33 - muse/muse/xpm/stop.xpm | 17 - muse/muse/xpm/sysex.xpm | 27 - muse/muse/xpm/toc.xpm | 27 - muse/muse/xpm/track_add.xpm | 23 - muse/muse/xpm/track_delete.xpm | 23 - muse/muse/xpm/underlined.xpm | 16 - muse/muse/xpm/undo.xpm | 93 - muse/muse/xpm/up.xpm | 15 - muse/muse/xpm/view_bigtime_window.xpm | 22 - muse/muse/xpm/view_cliplist.xpm | 32 - muse/muse/xpm/view_marker.xpm | 37 - muse/muse/xpm/view_mixer.xpm | 26 - muse/muse/xpm/view_transport_window.xpm | 24 - muse/muse/xpm/wave.xpm | 33 - muse/packaging/muse_icon.png | Bin 7493 -> 0 bytes muse/packaging/muse_mdk.spec | 274 - muse/pch.txt | 68 - muse/plugins/CMakeLists.txt | 22 - muse/plugins/doublechorus/CMakeLists.txt | 33 - muse/plugins/doublechorus/doublechorus.cpp | 173 - muse/plugins/doublechorus/doublechorusmodel.cpp | 214 - muse/plugins/doublechorus/doublechorusmodel.h | 72 - muse/plugins/doublechorus/simplechorusmodel.cpp | 157 - muse/plugins/doublechorus/simplechorusmodel.h | 96 - muse/plugins/freeverb/CMakeLists.txt | 33 - muse/plugins/freeverb/allpass.h | 47 - muse/plugins/freeverb/comb.h | 63 - muse/plugins/freeverb/denormals.h | 38 - muse/plugins/freeverb/freeverb.cpp | 166 - muse/plugins/freeverb/readme.txt | 147 - muse/plugins/freeverb/revmodel.cpp | 232 - muse/plugins/freeverb/revmodel.h | 79 - muse/plugins/freeverb/tuning.h | 60 - muse/plugins/pandelay/CMakeLists.txt | 33 - muse/plugins/pandelay/ladspapandelay.cpp | 100 - muse/plugins/pandelay/ladspapandelay.h | 55 - muse/plugins/pandelay/pandelay.cpp | 170 - muse/plugins/pandelay/pandelaymodel.cpp | 154 - muse/plugins/pandelay/pandelaymodel.h | 93 - muse/share/CMakeLists.txt | 22 - muse/share/instruments/Access_Virus.idf | 1045 - muse/share/instruments/Alesis-Ion.idf | 731 - muse/share/instruments/Alesis-QS-78R.idf | 700 - muse/share/instruments/AlesisQS6.idf | 658 - muse/share/instruments/CMakeLists.txt | 22 - muse/share/instruments/Hammond_XB-1.idf | 88 - muse/share/instruments/MC303.idf | 528 - muse/share/instruments/MC505.idf | 560 - muse/share/instruments/Quasimidi-Sirius.idf | 735 - muse/share/instruments/Roland-E28.idf | 320 - muse/share/instruments/Roland-JV-1010-All.idf | 1502 - muse/share/instruments/Roland-JV-1010-Catagory.idf | 1234 - muse/share/instruments/Roland-JV-1010-Country.idf | 297 - muse/share/instruments/Roland-JV-1010-Presets.idf | 971 - muse/share/instruments/Roland-JV-1010-Session.idf | 326 - muse/share/instruments/Roland-SCD70.idf | 1513 - muse/share/instruments/Roland-XP30.idf | 1592 - muse/share/instruments/Roland_FantomXR.idf | 1419 - muse/share/instruments/Roland_SRX-02.idf | 66 - muse/share/instruments/Roland_SRX-09.idf | 454 - muse/share/instruments/Waldorf_Microwave-I.idf | 141 - muse/share/instruments/Yamaha-P50m.idf | 75 - muse/share/instruments/Yamaha-P80.idf | 71 - muse/share/instruments/Yamaha-PSR275.idf | 585 - muse/share/instruments/Yamaha-PSR530.idf | 759 - muse/share/instruments/Yamaha-S90.idf | 4304 - muse/share/instruments/ZynAdd-1_4.idf | 22 - muse/share/instruments/emuproteus2000.idf | 1088 - muse/share/instruments/gm.idf | 209 - muse/share/instruments/gs.idf | 236 - muse/share/instruments/ns5r.idf | 568 - muse/share/instruments/xg.idf | 629 - muse/share/locale/CMakeLists.txt | 21 - muse/share/locale/muse_de.qm | Bin 64327 -> 0 bytes muse/share/locale/muse_de.ts | 5804 - muse/share/locale/muse_es.qm | Bin 53833 -> 0 bytes muse/share/locale/muse_es.ts | 11154 -- muse/share/locale/muse_fr.qm | Bin 53135 -> 0 bytes muse/share/locale/muse_fr.ts | 9584 - muse/share/locale/muse_ru.qm | Bin 50217 -> 0 bytes muse/share/locale/muse_ru.ts | 7823 - muse/share/locale/muse_sv_SE.qm | Bin 59265 -> 0 bytes muse/share/locale/muse_sv_SE.ts | 12410 -- muse/share/plugins/1050.ui | 297 - muse/share/plugins/1436.ui | 1090 - muse/share/plugins/2142.ui | 525 - muse/share/plugins/CMakeLists.txt | 22 - muse/share/templates/CMakeLists.txt | 30 - muse/share/templates/audio.med | 395 - muse/share/templates/default.med | 132 - muse/share/templates/empty.med | 10 - muse/share/templates/midiGM.med | 409 - muse/share/templates/monorecord.med | 430 - muse/share/templates/ns5r.med | 266 - muse/share/templates/synti.med | 353 - muse/share/wallpapers/CMakeLists.txt | 22 - muse/share/wallpapers/gray.gif | Bin 6699 -> 0 bytes muse/share/wallpapers/gray_rock.gif | Bin 23780 -> 0 bytes muse/share/wallpapers/gray_stucco.gif | Bin 20903 -> 0 bytes muse/share/wallpapers/paper1.jpg | Bin 1662 -> 0 bytes muse/share/wallpapers/paper2.jpg | Bin 1875 -> 0 bytes muse/share/wallpapers/stone1.gif | Bin 1252 -> 0 bytes muse/synti/CMakeLists.txt | 42 - muse/synti/README | 14 - muse/synti/deicsonze/ARCH_ALIN | 24945 --- muse/synti/deicsonze/CMakeLists.txt | 59 - muse/synti/deicsonze/README | 57 - muse/synti/deicsonze/SutulaBank.dei | 177644 ------------------ muse/synti/deicsonze/TODO | 13 - muse/synti/deicsonze/deicsonze.cpp | 4356 - muse/synti/deicsonze/deicsonze.h | 603 - muse/synti/deicsonze/deicsonzefilter.cpp | 67 - muse/synti/deicsonze/deicsonzefilter.h | 59 - muse/synti/deicsonze/deicsonzegui.cpp | 4545 - muse/synti/deicsonze/deicsonzegui.h | 562 - muse/synti/deicsonze/deicsonzegui.ui | 10237 - muse/synti/deicsonze/deicsonzeplugin.cpp | 499 - muse/synti/deicsonze/deicsonzeplugin.h | 40 - muse/synti/deicsonze/deicsonzepreset.cpp | 1194 - muse/synti/deicsonze/deicsonzepreset.h | 563 - muse/synti/deicsonze/pics/SHold.fig | 12 - muse/synti/deicsonze/pics/SHold.png | Bin 394 -> 0 bytes muse/synti/deicsonze/pics/algo1.fig | 31 - muse/synti/deicsonze/pics/algo1.png | Bin 1010 -> 0 bytes muse/synti/deicsonze/pics/algo2.fig | 29 - muse/synti/deicsonze/pics/algo2.png | Bin 1840 -> 0 bytes muse/synti/deicsonze/pics/algo3.fig | 29 - muse/synti/deicsonze/pics/algo3.png | Bin 1841 -> 0 bytes muse/synti/deicsonze/pics/algo4.fig | 29 - muse/synti/deicsonze/pics/algo4.png | Bin 1952 -> 0 bytes muse/synti/deicsonze/pics/algo5.fig | 34 - muse/synti/deicsonze/pics/algo5.png | Bin 1542 -> 0 bytes muse/synti/deicsonze/pics/algo6.fig | 37 - muse/synti/deicsonze/pics/algo6.png | Bin 1672 -> 0 bytes muse/synti/deicsonze/pics/algo7.fig | 35 - muse/synti/deicsonze/pics/algo7.png | Bin 1623 -> 0 bytes muse/synti/deicsonze/pics/algo8.fig | 34 - muse/synti/deicsonze/pics/algo8.png | Bin 1631 -> 0 bytes muse/synti/deicsonze/pics/sawUp.fig | 13 - muse/synti/deicsonze/pics/sawUp.png | Bin 416 -> 0 bytes muse/synti/deicsonze/pics/square.fig | 14 - muse/synti/deicsonze/pics/square.png | Bin 354 -> 0 bytes muse/synti/deicsonze/pics/triangl.fig | 13 - muse/synti/deicsonze/pics/triangl.png | Bin 435 -> 0 bytes muse/synti/deicsonze/pics/wave1.fig | 29 - muse/synti/deicsonze/pics/wave1.gnuplot | 2 - muse/synti/deicsonze/pics/wave1.png | Bin 569 -> 0 bytes muse/synti/deicsonze/pics/wave2.fig | 31 - muse/synti/deicsonze/pics/wave2.gnuplot | 2 - muse/synti/deicsonze/pics/wave2.png | Bin 543 -> 0 bytes muse/synti/deicsonze/pics/wave3.fig | 29 - muse/synti/deicsonze/pics/wave3.gnuplot | 2 - muse/synti/deicsonze/pics/wave3.png | Bin 539 -> 0 bytes muse/synti/deicsonze/pics/wave4.fig | 29 - muse/synti/deicsonze/pics/wave4.gnuplot | 2 - muse/synti/deicsonze/pics/wave4.png | Bin 532 -> 0 bytes muse/synti/deicsonze/pics/wave5.fig | 29 - muse/synti/deicsonze/pics/wave5.gnuplot | 2 - muse/synti/deicsonze/pics/wave5.png | Bin 576 -> 0 bytes muse/synti/deicsonze/pics/wave6.fig | 29 - muse/synti/deicsonze/pics/wave6.gnuplot | 2 - muse/synti/deicsonze/pics/wave6.png | Bin 550 -> 0 bytes muse/synti/deicsonze/pics/wave7.fig | 29 - muse/synti/deicsonze/pics/wave7.gnuplot | 2 - muse/synti/deicsonze/pics/wave7.png | Bin 596 -> 0 bytes muse/synti/deicsonze/pics/wave8.fig | 29 - muse/synti/deicsonze/pics/wave8.gnuplot | 2 - muse/synti/deicsonze/pics/wave8.png | Bin 591 -> 0 bytes muse/synti/fluid/CMakeLists.txt | 50 - muse/synti/fluid/fluid.cpp | 518 - muse/synti/fluid/fluid.h | 80 - muse/synti/fluid/fluidgui.cpp | 68 - muse/synti/fluid/fluidgui.h | 31 - muse/synti/fluid/fluidgui.ui | 115 - muse/synti/fluidsynth/CMakeLists.txt | 51 - muse/synti/fluidsynth/README.txt | 45 - muse/synti/fluidsynth/TODO | 13 - muse/synti/fluidsynth/fluidsynthgui.cpp | 596 - muse/synti/fluidsynth/fluidsynthgui.h | 136 - muse/synti/fluidsynth/fluidsynthgui.ui | 641 - muse/synti/fluidsynth/fluidsynti.cpp | 1174 - muse/synti/fluidsynth/fluidsynti.h | 141 - muse/synti/libsynti/CMakeLists.txt | 39 - muse/synti/libsynti/evdata.h | 66 - muse/synti/libsynti/gui.cpp | 124 - muse/synti/libsynti/gui.h | 72 - muse/synti/libsynti/mess.cpp | 123 - muse/synti/libsynti/mess.h | 105 - muse/synti/libsynti/mess2.cpp | 128 - muse/synti/libsynti/mess2.h | 57 - muse/synti/libsynti/midievent.cpp | 21 - muse/synti/libsynti/midievent.h | 55 - muse/synti/libsynti/mono.cpp | 47 - muse/synti/libsynti/mono.h | 47 - muse/synti/libsynti/poly.cpp | 35 - muse/synti/libsynti/poly.h | 39 - muse/synti/mus/CMakeLists.txt | 28 - muse/synti/mus/mus.cpp | 276 - muse/synti/organ/CMakeLists.txt | 50 - muse/synti/organ/organ.cpp | 621 - muse/synti/organ/organ.h | 151 - muse/synti/organ/organgui.cpp | 184 - muse/synti/organ/organgui.h | 48 - muse/synti/organ/organgui.ui | 791 - muse/synti/organ/reverb.cpp | 163 - muse/synti/organ/reverb.h | 204 - muse/synti/organ/routing.cpp | 1343 - muse/synti/s1/CMakeLists.txt | 34 - muse/synti/s1/s1.cpp | 156 - muse/synti/simpledrums/CMakeLists.txt | 52 - muse/synti/simpledrums/COPYING | 3 - muse/synti/simpledrums/README | 43 - muse/synti/simpledrums/ReleaseNotes.txt | 18 - muse/synti/simpledrums/common.h | 110 - muse/synti/simpledrums/simpledrums.cpp | 1719 - muse/synti/simpledrums/simpledrums.h | 173 - muse/synti/simpledrums/simpledrumsgui.cpp | 881 - muse/synti/simpledrums/simpledrumsgui.h | 206 - muse/synti/simpledrums/simpledrumsguibase.ui | 23 - muse/synti/simpledrums/ssplugin.cpp | 456 - muse/synti/simpledrums/ssplugin.h | 171 - muse/synti/simpledrums/sspluginchooserbase.ui | 106 - muse/synti/simpledrums/ssplugingui.cpp | 530 - muse/synti/simpledrums/ssplugingui.h | 198 - muse/synti/vam/CMakeLists.txt | 50 - muse/synti/vam/COPYING | 340 - muse/synti/vam/ChangeLog | 16 - muse/synti/vam/README | 42 - muse/synti/vam/TODO | 3 - muse/synti/vam/vam.cpp | 801 - muse/synti/vam/vam.h | 37 - muse/synti/vam/vamgui.cpp | 618 - muse/synti/vam/vamgui.h | 77 - muse/synti/vam/vamgui.ui | 1535 - muse/synti/zynaddsubfx/CMakeLists.txt | 100 - muse/synti/zynaddsubfx/COPYING | 347 - muse/synti/zynaddsubfx/DSP/AnalogFilter.C | 358 - muse/synti/zynaddsubfx/DSP/AnalogFilter.h | 72 - muse/synti/zynaddsubfx/DSP/FFTwrapper.C | 99 - muse/synti/zynaddsubfx/DSP/FFTwrapper.h | 59 - muse/synti/zynaddsubfx/DSP/Filter.C | 72 - muse/synti/zynaddsubfx/DSP/Filter.h | 51 - muse/synti/zynaddsubfx/DSP/Filter_.h | 42 - muse/synti/zynaddsubfx/DSP/FormantFilter.C | 163 - muse/synti/zynaddsubfx/DSP/FormantFilter.h | 67 - muse/synti/zynaddsubfx/DSP/SVFilter.C | 152 - muse/synti/zynaddsubfx/DSP/SVFilter.h | 67 - muse/synti/zynaddsubfx/Effects/Alienwah.C | 244 - muse/synti/zynaddsubfx/Effects/Alienwah.h | 77 - muse/synti/zynaddsubfx/Effects/Chorus.C | 277 - muse/synti/zynaddsubfx/Effects/Chorus.h | 73 - muse/synti/zynaddsubfx/Effects/Distorsion.C | 384 - muse/synti/zynaddsubfx/Effects/Distorsion.h | 73 - muse/synti/zynaddsubfx/Effects/DynamicFilter.C | 318 - muse/synti/zynaddsubfx/Effects/DynamicFilter.h | 72 - muse/synti/zynaddsubfx/Effects/EQ.C | 198 - muse/synti/zynaddsubfx/Effects/EQ.h | 58 - muse/synti/zynaddsubfx/Effects/Echo.C | 240 - muse/synti/zynaddsubfx/Effects/Echo.h | 71 - muse/synti/zynaddsubfx/Effects/Effect.C | 24 - muse/synti/zynaddsubfx/Effects/Effect.h | 61 - muse/synti/zynaddsubfx/Effects/EffectLFO.C | 110 - muse/synti/zynaddsubfx/Effects/EffectLFO.h | 50 - muse/synti/zynaddsubfx/Effects/EffectMgr.C | 292 - muse/synti/zynaddsubfx/Effects/EffectMgr.h | 87 - muse/synti/zynaddsubfx/Effects/Phaser.C | 260 - muse/synti/zynaddsubfx/Effects/Phaser.h | 70 - muse/synti/zynaddsubfx/Effects/Reverb.C | 438 - muse/synti/zynaddsubfx/Effects/Reverb.h | 127 - muse/synti/zynaddsubfx/Input/ALSAMidiIn.C | 96 - muse/synti/zynaddsubfx/Input/ALSAMidiIn.h | 42 - muse/synti/zynaddsubfx/Input/MidiIn.C | 73 - muse/synti/zynaddsubfx/Input/MidiIn.h | 42 - muse/synti/zynaddsubfx/Input/NULLMidiIn.C | 43 - muse/synti/zynaddsubfx/Input/NULLMidiIn.h | 40 - muse/synti/zynaddsubfx/Input/OSSMidiIn.C | 115 - muse/synti/zynaddsubfx/Input/OSSMidiIn.h | 48 - muse/synti/zynaddsubfx/Input/WINMidiIn.C | 83 - muse/synti/zynaddsubfx/Input/WINMidiIn.h | 34 - muse/synti/zynaddsubfx/Misc/Bank.C | 565 - muse/synti/zynaddsubfx/Misc/Bank.h | 100 - muse/synti/zynaddsubfx/Misc/Config.C | 303 - muse/synti/zynaddsubfx/Misc/Config.h | 67 - muse/synti/zynaddsubfx/Misc/Dump.C | 99 - muse/synti/zynaddsubfx/Misc/Dump.h | 43 - muse/synti/zynaddsubfx/Misc/Master.C | 680 - muse/synti/zynaddsubfx/Misc/Master.h | 167 - muse/synti/zynaddsubfx/Misc/Microtonal.C | 514 - muse/synti/zynaddsubfx/Misc/Microtonal.h | 111 - muse/synti/zynaddsubfx/Misc/Part.C | 881 - muse/synti/zynaddsubfx/Misc/Part.h | 176 - muse/synti/zynaddsubfx/Misc/Util.C | 112 - muse/synti/zynaddsubfx/Misc/Util.h | 45 - muse/synti/zynaddsubfx/Misc/XMLwrapper.C | 533 - muse/synti/zynaddsubfx/Misc/XMLwrapper.h | 175 - muse/synti/zynaddsubfx/Output/Recorder.C | 138 - muse/synti/zynaddsubfx/Output/Recorder.h | 52 - muse/synti/zynaddsubfx/Params/ADnoteParameters.C | 637 - muse/synti/zynaddsubfx/Params/ADnoteParameters.h | 282 - muse/synti/zynaddsubfx/Params/Controller.C | 300 - muse/synti/zynaddsubfx/Params/Controller.h | 179 - muse/synti/zynaddsubfx/Params/EnvelopeParams.C | 227 - muse/synti/zynaddsubfx/Params/EnvelopeParams.h | 86 - muse/synti/zynaddsubfx/Params/FilterParams.C | 344 - muse/synti/zynaddsubfx/Params/FilterParams.h | 100 - muse/synti/zynaddsubfx/Params/LFOParams.C | 91 - muse/synti/zynaddsubfx/Params/LFOParams.h | 64 - muse/synti/zynaddsubfx/Params/PADnoteParameters.C | 742 - muse/synti/zynaddsubfx/Params/PADnoteParameters.h | 169 - muse/synti/zynaddsubfx/Params/Presets.C | 129 - muse/synti/zynaddsubfx/Params/Presets.h | 58 - muse/synti/zynaddsubfx/Params/PresetsStore.C | 181 - muse/synti/zynaddsubfx/Params/PresetsStore.h | 63 - muse/synti/zynaddsubfx/Params/SUBnoteParameters.C | 238 - muse/synti/zynaddsubfx/Params/SUBnoteParameters.h | 105 - muse/synti/zynaddsubfx/Seq/MIDIEvents.C | 85 - muse/synti/zynaddsubfx/Seq/MIDIEvents.h | 66 - muse/synti/zynaddsubfx/Seq/MIDIFile.C | 389 - muse/synti/zynaddsubfx/Seq/MIDIFile.h | 90 - muse/synti/zynaddsubfx/Seq/Sequencer.C | 165 - muse/synti/zynaddsubfx/Seq/Sequencer.h | 84 - muse/synti/zynaddsubfx/Synth/ADnote.C | 984 - muse/synti/zynaddsubfx/Synth/ADnote.h | 258 - muse/synti/zynaddsubfx/Synth/Envelope.C | 165 - muse/synti/zynaddsubfx/Synth/Envelope.h | 58 - muse/synti/zynaddsubfx/Synth/LFO.C | 145 - muse/synti/zynaddsubfx/Synth/LFO.h | 52 - muse/synti/zynaddsubfx/Synth/OscilGen.C | 1182 - muse/synti/zynaddsubfx/Synth/OscilGen.h | 176 - muse/synti/zynaddsubfx/Synth/PADnote.C | 342 - muse/synti/zynaddsubfx/Synth/PADnote.h | 106 - muse/synti/zynaddsubfx/Synth/Resonance.C | 231 - muse/synti/zynaddsubfx/Synth/Resonance.h | 68 - muse/synti/zynaddsubfx/Synth/SUBnote.C | 419 - muse/synti/zynaddsubfx/Synth/SUBnote.h | 98 - muse/synti/zynaddsubfx/UI/ADnoteUI.fl | 1107 - muse/synti/zynaddsubfx/UI/BankUI.fl | 352 - muse/synti/zynaddsubfx/UI/CMakeLists.txt | 54 - muse/synti/zynaddsubfx/UI/ConfigUI.fl | 443 - muse/synti/zynaddsubfx/UI/EffUI.fl | 2310 - muse/synti/zynaddsubfx/UI/EnvelopeUI.fl | 851 - muse/synti/zynaddsubfx/UI/FilterUI.fl | 624 - muse/synti/zynaddsubfx/UI/LFOUI.fl | 176 - muse/synti/zynaddsubfx/UI/MasterUI.fl | 1798 - muse/synti/zynaddsubfx/UI/MicrotonalUI.fl | 270 - muse/synti/zynaddsubfx/UI/OscilGenUI.fl | 1131 - muse/synti/zynaddsubfx/UI/PADnoteUI.fl | 1086 - muse/synti/zynaddsubfx/UI/PartUI.fl | 1086 - muse/synti/zynaddsubfx/UI/PresetsUI.fl | 200 - muse/synti/zynaddsubfx/UI/ResonanceUI.fl | 392 - muse/synti/zynaddsubfx/UI/SUBnoteUI.fl | 449 - muse/synti/zynaddsubfx/UI/SeqUI.fl | 73 - muse/synti/zynaddsubfx/UI/VirKeyboard.fl | 400 - muse/synti/zynaddsubfx/UI/WidgetPDial.fl | 131 - .../zynaddsubfx/banks/Arpeggios/0001-Arpeggio1.xiz | Bin 2199 -> 0 bytes .../zynaddsubfx/banks/Arpeggios/0002-Arpeggio2.xiz | Bin 1984 -> 0 bytes .../zynaddsubfx/banks/Arpeggios/0003-Arpeggio3.xiz | Bin 2015 -> 0 bytes .../zynaddsubfx/banks/Arpeggios/0004-Arpeggio4.xiz | Bin 2300 -> 0 bytes .../zynaddsubfx/banks/Arpeggios/0005-Arpeggio5.xiz | Bin 2125 -> 0 bytes .../zynaddsubfx/banks/Arpeggios/0006-Aporggio6.xiz | Bin 2287 -> 0 bytes .../zynaddsubfx/banks/Arpeggios/0007-Arpeggio7.xiz | Bin 3361 -> 0 bytes .../zynaddsubfx/banks/Arpeggios/0008-Arpeggio8.xiz | Bin 2077 -> 0 bytes .../zynaddsubfx/banks/Arpeggios/0009-Arpeggio9.xiz | Bin 2245 -> 0 bytes .../banks/Arpeggios/0010-Arpeggio10.xiz | Bin 2093 -> 0 bytes .../banks/Arpeggios/0011-Arpeggio11.xiz | Bin 2142 -> 0 bytes .../zynaddsubfx/banks/Arpeggios/0033-Sequence1.xiz | Bin 1958 -> 0 bytes .../zynaddsubfx/banks/Arpeggios/0034-Sequence2.xiz | Bin 2148 -> 0 bytes .../banks/Arpeggios/0036-Echoed Synth.xiz | Bin 2109 -> 0 bytes .../zynaddsubfx/banks/Arpeggios/0037-Echo FX.xiz | Bin 1986 -> 0 bytes .../banks/Arpeggios/0039-Soft Arpeggio1.xiz | Bin 2135 -> 0 bytes .../banks/Arpeggios/0040-Soft Arpeggio2.xiz | Bin 2093 -> 0 bytes .../banks/Arpeggios/0041-Soft Arpeggio3.xiz | Bin 1987 -> 0 bytes .../banks/Arpeggios/0042-Soft Arpeggio4.xiz | Bin 2183 -> 0 bytes .../banks/Arpeggios/0043-Soft Arpeggio5.xiz | Bin 2131 -> 0 bytes .../banks/Arpeggios/0065-Hyper Organ1.xiz | Bin 2247 -> 0 bytes .../banks/Arpeggios/0066-Hyper Arpeggio.xiz | Bin 1976 -> 0 bytes .../banks/Arpeggios/0068-Glass Arpeggio.xiz | Bin 2165 -> 0 bytes muse/synti/zynaddsubfx/banks/Bass/0001-Bass 1.xiz | Bin 1758 -> 0 bytes muse/synti/zynaddsubfx/banks/Bass/0002-Bass 2.xiz | Bin 1843 -> 0 bytes .../banks/Bass/0003-Bass 3 _analog_.xiz | Bin 3124 -> 0 bytes muse/synti/zynaddsubfx/banks/Bass/0004-Bass 4.xiz | Bin 1838 -> 0 bytes muse/synti/zynaddsubfx/banks/Bass/0005-Bass 5.xiz | Bin 1774 -> 0 bytes .../zynaddsubfx/banks/Bass/0006-Analogue Bass.xiz | Bin 1832 -> 0 bytes .../synti/zynaddsubfx/banks/Bass/0033-Wah Bass.xiz | Bin 1824 -> 0 bytes .../zynaddsubfx/banks/Bass/0035-FM Bass 1.xiz | Bin 2001 -> 0 bytes .../zynaddsubfx/banks/Bass/0036-FM Bass 2.xiz | Bin 2031 -> 0 bytes .../zynaddsubfx/banks/Brass/0001-FM Thrumpet.xiz | Bin 2098 -> 0 bytes .../zynaddsubfx/banks/Brass/0003-Synth Brazz 1.xiz | Bin 1950 -> 0 bytes .../zynaddsubfx/banks/Brass/0004-Synth Brazz 2.xiz | Bin 2018 -> 0 bytes .../zynaddsubfx/banks/Brass/0005-Synth Brass 3.xiz | Bin 2158 -> 0 bytes .../zynaddsubfx/banks/Brass/0006-Synth Brass 4.xiz | Bin 2236 -> 0 bytes .../zynaddsubfx/banks/Brass/0007-Synth Brass 5.xiz | Bin 2337 -> 0 bytes .../zynaddsubfx/banks/Brass/0008-Brass Pad.xiz | Bin 1855 -> 0 bytes .../zynaddsubfx/banks/Brass/0009-Wah Brass.xiz | Bin 1904 -> 0 bytes .../zynaddsubfx/banks/Brass/0010-Solo Synth1.xiz | Bin 1777 -> 0 bytes .../synti/zynaddsubfx/banks/Brass/0011-Brazz 1.xiz | Bin 2108 -> 0 bytes .../synti/zynaddsubfx/banks/Brass/0012-Brazz 2.xiz | Bin 2400 -> 0 bytes .../banks/Brass/0033-Analog Brass 1.xiz | Bin 1767 -> 0 bytes .../banks/Brass/0034-Analog Brass 2.xiz | Bin 1810 -> 0 bytes .../banks/Brass/0035-Analog Brass 3.xiz | Bin 2149 -> 0 bytes .../banks/Brass/0036-Analog Brass 4.xiz | Bin 2128 -> 0 bytes .../zynaddsubfx/banks/Brass/0065-Simple Brass.xiz | Bin 1806 -> 0 bytes .../zynaddsubfx/banks/Brass/0066-Fat Brass.xiz | Bin 2114 -> 0 bytes .../banks/Choir and Voice/0001-AHH Choir 1.xiz | Bin 3771 -> 0 bytes .../banks/Choir and Voice/0002-AHH Choir 2.xiz | Bin 3823 -> 0 bytes .../banks/Choir and Voice/0003-EHH Choir 1.xiz | Bin 3746 -> 0 bytes .../banks/Choir and Voice/0004-Voice OOH.xiz | Bin 2134 -> 0 bytes .../banks/Choir and Voice/0005-Choir Pad1.xiz | Bin 1738 -> 0 bytes .../banks/Choir and Voice/0006-Choir Pad2.xiz | Bin 1744 -> 0 bytes .../banks/Choir and Voice/0007-Choir Pad3.xiz | Bin 3571 -> 0 bytes .../banks/Choir and Voice/0008-Choir Pad4.xiz | Bin 1725 -> 0 bytes .../banks/Choir and Voice/0009-Choir Pad5.xiz | Bin 1072 -> 0 bytes .../banks/Choir and Voice/0010-Choir Pad6.xiz | Bin 1723 -> 0 bytes .../banks/Choir and Voice/0033-Choir.xiz | Bin 1008 -> 0 bytes .../Choir and Voice/0034-Slow Morph_Choir.xiz | Bin 1088 -> 0 bytes .../banks/Choir and Voice/0035-Wah Choir.xiz | Bin 1159 -> 0 bytes .../banks/Choir and Voice/0036-Eooooo.xiz | Bin 1893 -> 0 bytes .../banks/Choir and Voice/0037-Voiced Synth.xiz | Bin 3428 -> 0 bytes .../banks/Choir and Voice/0039-Ohh Choir.xiz | Bin 1716 -> 0 bytes .../banks/Choir and Voice/0065-Vocal Morph 1.xiz | Bin 2763 -> 0 bytes .../banks/Choir and Voice/0066-Vocal Morph 2.xiz | Bin 2692 -> 0 bytes .../banks/Choir and Voice/0067-Vocal Morph 3.xiz | Bin 2774 -> 0 bytes .../banks/Choir and Voice/0068-Vocal Morph 4.xiz | Bin 2792 -> 0 bytes .../banks/Choir and Voice/0069-Vocal Morph 5.xiz | Bin 2869 -> 0 bytes .../banks/Choir and Voice/0070-Vocal Morph 6.xiz | Bin 2668 -> 0 bytes .../banks/Choir and Voice/0071-Vocal Morph 7.xiz | Bin 3102 -> 0 bytes .../zynaddsubfx/banks/Drums/0001-Drums Kit1.xiz | Bin 4765 -> 0 bytes muse/synti/zynaddsubfx/banks/Dual/.qped | 21 - .../synti/zynaddsubfx/banks/Dual/0001-Layered1.xiz | Bin 5615 -> 0 bytes .../synti/zynaddsubfx/banks/Dual/0002-Layered2.xiz | Bin 3015 -> 0 bytes .../zynaddsubfx/banks/Dual/0005-Organ and Saw.xiz | Bin 2112 -> 0 bytes .../banks/Dual/0007-Organ Choir Pad1.xiz | Bin 3642 -> 0 bytes .../banks/Dual/0008-Organ Choir Pad2.xiz | Bin 2264 -> 0 bytes .../banks/Dual/0033-Rhodes Strings1.xiz | Bin 2795 -> 0 bytes .../banks/Dual/0034-Rhodes Strings2.xiz | Bin 3096 -> 0 bytes .../banks/Dual/0035-Rhodes Strings3.xiz | Bin 4909 -> 0 bytes .../banks/Dual/0036-Rhodes Strings4.xiz | Bin 2711 -> 0 bytes .../banks/Dual/0065-Dream of the Saw.xiz | Bin 2348 -> 0 bytes .../zynaddsubfx/banks/Fantasy/0001-Emptyness1.xiz | Bin 1814 -> 0 bytes .../zynaddsubfx/banks/Fantasy/0002-Emptyness2.xiz | Bin 1830 -> 0 bytes .../zynaddsubfx/banks/Fantasy/0003-Space Synth.xiz | Bin 2146 -> 0 bytes .../zynaddsubfx/banks/Fantasy/0004-Weird Pad.xiz | Bin 1332 -> 0 bytes .../banks/Fantasy/0006-Space SynthBrass.xiz | Bin 2326 -> 0 bytes .../banks/Fantasy/0008-Space Voice1.xiz | Bin 3058 -> 0 bytes .../banks/Fantasy/0009-Space Voice2.xiz | Bin 3199 -> 0 bytes .../banks/Fantasy/0010-Space Voice3.xiz | Bin 2501 -> 0 bytes .../banks/Fantasy/0011-Space Choir1.xiz | Bin 1839 -> 0 bytes .../banks/Fantasy/0012-Space Choir2.xiz | Bin 1796 -> 0 bytes .../banks/Fantasy/0014-Glass Voices.xiz | Bin 1268 -> 0 bytes .../banks/Fantasy/0015-Strange Voice.xiz | Bin 1980 -> 0 bytes .../banks/Fantasy/0033-ImpossibleDream1.xiz | Bin 2575 -> 0 bytes .../banks/Fantasy/0034-ImpossibleDream2.xiz | Bin 3215 -> 0 bytes .../banks/Fantasy/0035-ImpossibleDream3.xiz | Bin 2774 -> 0 bytes .../banks/Fantasy/0036-ImpossibleDream4.xiz | Bin 2492 -> 0 bytes .../banks/Fantasy/0037-ImpossibleDream5.xiz | Bin 2647 -> 0 bytes .../banks/Fantasy/0040-Delayed Echo.xiz | Bin 2383 -> 0 bytes .../banks/Fantasy/0041-Fade Down Echo.xiz | Bin 2400 -> 0 bytes .../banks/Fantasy/0042-Rhodes Space1.xiz | Bin 2960 -> 0 bytes .../banks/Fantasy/0043-Rhodes Space2.xiz | Bin 2973 -> 0 bytes .../banks/Fantasy/0065-Long SpaceChoir1.xiz | Bin 3468 -> 0 bytes .../banks/Fantasy/0066-Long SpaceChoir2.xiz | Bin 1881 -> 0 bytes .../banks/Guitar/0001-Dist Guitar 1.xiz | Bin 2183 -> 0 bytes .../banks/Guitar/0002-Dist Guitar 2.xiz | Bin 2373 -> 0 bytes .../banks/Guitar/0003-Dist Guitar 3.xiz | Bin 2387 -> 0 bytes .../banks/Guitar/0004-Dist Guitar 4.xiz | Bin 2415 -> 0 bytes .../banks/Guitar/0005-Dist Guitar 5.xiz | Bin 2521 -> 0 bytes .../banks/Guitar/0033-Trash Guitar 1.xiz | Bin 2407 -> 0 bytes .../banks/Guitar/0034-Trash Guitar 2.xiz | Bin 2458 -> 0 bytes muse/synti/zynaddsubfx/banks/Guitar/0035-Short.xiz | Bin 2332 -> 0 bytes .../banks/Guitar/0065-Clean Guitar1.xiz | Bin 2009 -> 0 bytes .../synti/zynaddsubfx/banks/Misc/0001-Memories.xiz | Bin 2329 -> 0 bytes muse/synti/zynaddsubfx/banks/Misc/0002-Bells 1.xiz | Bin 1778 -> 0 bytes muse/synti/zynaddsubfx/banks/Misc/0003-Bells 2.xiz | Bin 1797 -> 0 bytes muse/synti/zynaddsubfx/banks/Misc/0004-Bells 3.xiz | Bin 1777 -> 0 bytes .../zynaddsubfx/banks/Misc/0006-SuperSaw 1.xiz | Bin 2020 -> 0 bytes .../zynaddsubfx/banks/Misc/0007-SuperSaw 2.xiz | Bin 2094 -> 0 bytes .../zynaddsubfx/banks/Misc/0008-SuperSaw 3.xiz | Bin 2035 -> 0 bytes .../zynaddsubfx/banks/Misc/0009-SuperSaw 4.xiz | Bin 2152 -> 0 bytes .../zynaddsubfx/banks/Misc/0010-SuperSaw 5.xiz | Bin 1753 -> 0 bytes .../zynaddsubfx/banks/Misc/0033-Trash Synth 1.xiz | Bin 2104 -> 0 bytes .../zynaddsubfx/banks/Misc/0034-Trash Synth 2.xiz | Bin 2179 -> 0 bytes .../zynaddsubfx/banks/Misc/0035-Trash Synth 3.xiz | Bin 2175 -> 0 bytes .../zynaddsubfx/banks/Noises/0001-Synth Effect.xiz | Bin 2032 -> 0 bytes .../zynaddsubfx/banks/Noises/0002-Ioioioioioi.xiz | Bin 2179 -> 0 bytes .../synti/zynaddsubfx/banks/Noises/0003-Noise1.xiz | Bin 1030 -> 0 bytes .../synti/zynaddsubfx/banks/Noises/0004-Noise2.xiz | Bin 2896 -> 0 bytes muse/synti/zynaddsubfx/banks/Noises/0006-Wind.xiz | Bin 1030 -> 0 bytes .../banks/Noises/0033-Metal Sound 1.xiz | Bin 1737 -> 0 bytes .../banks/Noises/0034-Metal Sound 2.xiz | Bin 1763 -> 0 bytes .../banks/Noises/0035-Metal Sound 3.xiz | Bin 1814 -> 0 bytes .../banks/Noises/0037-Metal Sound 4.xiz | Bin 1743 -> 0 bytes .../banks/Noises/0038-Metal Sound 5.xiz | Bin 1847 -> 0 bytes .../zynaddsubfx/banks/Noises/0065-Short noise.xiz | Bin 1800 -> 0 bytes .../synti/zynaddsubfx/banks/Organ/0001-Organ 1.xiz | Bin 1948 -> 0 bytes .../synti/zynaddsubfx/banks/Organ/0002-Organ 2.xiz | Bin 2050 -> 0 bytes .../synti/zynaddsubfx/banks/Organ/0003-Organ 3.xiz | Bin 2145 -> 0 bytes .../synti/zynaddsubfx/banks/Organ/0004-Organ 4.xiz | Bin 1935 -> 0 bytes .../synti/zynaddsubfx/banks/Organ/0005-Organ 5.xiz | Bin 1941 -> 0 bytes .../synti/zynaddsubfx/banks/Organ/0006-Organ 6.xiz | Bin 2053 -> 0 bytes .../synti/zynaddsubfx/banks/Organ/0007-Organ 7.xiz | Bin 2078 -> 0 bytes .../synti/zynaddsubfx/banks/Organ/0008-Organ 8.xiz | Bin 3466 -> 0 bytes .../synti/zynaddsubfx/banks/Organ/0009-Organ 9.xiz | Bin 1932 -> 0 bytes .../zynaddsubfx/banks/Organ/0010-Organ 10.xiz | Bin 1926 -> 0 bytes .../zynaddsubfx/banks/Organ/0011-Organ 11.xiz | Bin 2060 -> 0 bytes .../banks/Organ/0033-Cathedral Organ1.xiz | Bin 2029 -> 0 bytes .../banks/Organ/0034-Cathedral Organ2.xiz | Bin 2116 -> 0 bytes .../banks/Organ/0035-Cathedral Organ3.xiz | Bin 1991 -> 0 bytes .../banks/Organ/0037-Church Organ 1.xiz | Bin 1748 -> 0 bytes .../banks/Organ/0038-Church Organ 2.xiz | Bin 3212 -> 0 bytes .../banks/Organ/0039-Church Organ 3.xiz | Bin 1979 -> 0 bytes .../banks/Organ/0041-Church Organ Soft.xiz | Bin 1849 -> 0 bytes .../zynaddsubfx/banks/Organ/0065-Nice Organ 1.xiz | Bin 1839 -> 0 bytes .../zynaddsubfx/banks/Organ/0066-Nice Organ 2.xiz | Bin 1942 -> 0 bytes .../zynaddsubfx/banks/Organ/0067-Sub_Organ.xiz | Bin 988 -> 0 bytes .../zynaddsubfx/banks/Organ/0068-Square Organ.xiz | Bin 1898 -> 0 bytes .../zynaddsubfx/banks/Organ/0069-Soft Organ 1.xiz | Bin 1935 -> 0 bytes .../zynaddsubfx/banks/Organ/0070-Soft Organ 2.xiz | Bin 1932 -> 0 bytes .../zynaddsubfx/banks/Organ/0071-Synth Organ.xiz | Bin 2138 -> 0 bytes .../zynaddsubfx/banks/Organ/0072-Fantasy Organ.xiz | Bin 2372 -> 0 bytes .../banks/Organ/0097-Accordion Pad 1.xiz | Bin 3337 -> 0 bytes .../banks/Organ/0098-Accordion Pad 2.xiz | Bin 1991 -> 0 bytes .../banks/Organ/0099-Synth Accordion1.xiz | Bin 1894 -> 0 bytes .../banks/Organ/0100-Synth Accordion2.xiz | Bin 2075 -> 0 bytes .../zynaddsubfx/banks/Organ/0101-Accordion 1.xiz | Bin 2134 -> 0 bytes .../synti/zynaddsubfx/banks/Pads/0001-Sine Pad.xiz | Bin 971 -> 0 bytes .../zynaddsubfx/banks/Pads/0002-sin2x pad.xiz | Bin 1742 -> 0 bytes .../zynaddsubfx/banks/Pads/0003-Analog Pad 1.xiz | Bin 1794 -> 0 bytes .../zynaddsubfx/banks/Pads/0004-Analog Pad 2.xiz | Bin 6572 -> 0 bytes .../zynaddsubfx/banks/Pads/0005-Square Pad 1.xiz | Bin 1876 -> 0 bytes .../zynaddsubfx/banks/Pads/0006-Square Pad 2.xiz | Bin 1943 -> 0 bytes .../zynaddsubfx/banks/Pads/0008-Resonance Pad1.xiz | Bin 1941 -> 0 bytes .../zynaddsubfx/banks/Pads/0009-Resonance Pad2.xiz | Bin 2207 -> 0 bytes .../zynaddsubfx/banks/Pads/0033-Synth Pad 1.xiz | Bin 1744 -> 0 bytes .../zynaddsubfx/banks/Pads/0034-Synth Pad 2.xiz | Bin 1757 -> 0 bytes .../zynaddsubfx/banks/Pads/0035-Synth Pad 3.xiz | Bin 1731 -> 0 bytes .../zynaddsubfx/banks/Pads/0036-Synth Pad 4.xiz | Bin 3172 -> 0 bytes .../synti/zynaddsubfx/banks/Pads/0065-Soft Pad.xiz | Bin 1734 -> 0 bytes .../zynaddsubfx/banks/Pads/0066-Flanged Pad 1.xiz | Bin 1828 -> 0 bytes .../zynaddsubfx/banks/Plucked/0001-Plucked 1.xiz | Bin 2017 -> 0 bytes .../zynaddsubfx/banks/Plucked/0002-Plucked 2.xiz | Bin 2173 -> 0 bytes .../zynaddsubfx/banks/Plucked/0003-Plucked 3.xiz | Bin 1839 -> 0 bytes .../zynaddsubfx/banks/Plucked/0004-Plucked 4.xiz | Bin 3443 -> 0 bytes .../zynaddsubfx/banks/Plucked/0005-Plucked 5.xiz | Bin 2147 -> 0 bytes .../zynaddsubfx/banks/Plucked/0006-Plucked 6.xiz | Bin 3441 -> 0 bytes .../banks/Plucked/0033-Plucked String1.xiz | Bin 3539 -> 0 bytes .../banks/Plucked/0034-Plucked String2.xiz | Bin 3551 -> 0 bytes .../zynaddsubfx/banks/Plucked/0036-Plucked Wah.xiz | Bin 2389 -> 0 bytes .../banks/Reed and Wind/0001-Flute 1.xiz | Bin 1688 -> 0 bytes .../banks/Reed and Wind/0002-Flute 2.xiz | Bin 2794 -> 0 bytes .../banks/Reed and Wind/0003-Flute 3.xiz | Bin 2798 -> 0 bytes .../banks/Reed and Wind/0005-FM Reed.xiz | Bin 1899 -> 0 bytes .../banks/Reed and Wind/0006-Clarinet.xiz | Bin 3290 -> 0 bytes .../banks/Reed and Wind/0007-Breathy1.xiz | Bin 3369 -> 0 bytes .../banks/Reed and Wind/0033-Reed 1.xiz | Bin 3250 -> 0 bytes .../banks/Reed and Wind/0034-Reed 2.xiz | Bin 3283 -> 0 bytes .../banks/Reed and Wind/0035-Reed 3.xiz | Bin 3193 -> 0 bytes .../banks/Reed and Wind/0036-Reed 4.xiz | Bin 3299 -> 0 bytes .../banks/Reed and Wind/0037-Reed 5.xiz | Bin 3276 -> 0 bytes .../banks/Reed and Wind/0038-Reed 6.xiz | Bin 3290 -> 0 bytes .../banks/Reed and Wind/0039-Reed 7.xiz | Bin 1806 -> 0 bytes .../banks/Reed and Wind/0065-Fat Reed1.xiz | Bin 1854 -> 0 bytes .../banks/Reed and Wind/0066-Fat Reed2.xiz | Bin 3618 -> 0 bytes .../banks/Reed and Wind/0067-Fat Reed3 square.xiz | Bin 3549 -> 0 bytes .../zynaddsubfx/banks/Rhodes/0001-DX Rhodes 1.xiz | Bin 2130 -> 0 bytes .../zynaddsubfx/banks/Rhodes/0002-DX Rhodes 2.xiz | Bin 2104 -> 0 bytes .../zynaddsubfx/banks/Rhodes/0003-DX Rhodes 3.xiz | Bin 2274 -> 0 bytes .../zynaddsubfx/banks/Rhodes/0004-DX Rhodes 4.xiz | Bin 2132 -> 0 bytes .../zynaddsubfx/banks/Rhodes/0005-DX Rhodes 5.xiz | Bin 2147 -> 0 bytes .../zynaddsubfx/banks/Rhodes/0007-Dig Rhodes.xiz | Bin 2337 -> 0 bytes .../banks/Rhodes/0008-Synth Rhodes1.xiz | Bin 2157 -> 0 bytes .../banks/Rhodes/0009-Synth Rhodes2.xiz | Bin 1991 -> 0 bytes .../banks/Rhodes/0010-Synth Rhodes3.xiz | Bin 2410 -> 0 bytes .../zynaddsubfx/banks/Rhodes/0012-Ice Rhodes1.xiz | Bin 2128 -> 0 bytes .../zynaddsubfx/banks/Rhodes/0013-Ice Rhodes2.xiz | Bin 2129 -> 0 bytes .../zynaddsubfx/banks/Rhodes/0014-Ice Rhodes3.xiz | Bin 2160 -> 0 bytes .../zynaddsubfx/banks/Rhodes/0033-FM Rhodes 1.xiz | Bin 2212 -> 0 bytes .../zynaddsubfx/banks/Rhodes/0034-FM Rhodes 2.xiz | Bin 2111 -> 0 bytes .../zynaddsubfx/banks/Rhodes/0035-FM Rhodes 3.xiz | Bin 2139 -> 0 bytes .../zynaddsubfx/banks/Rhodes/0036-FM Rhodes 4.xiz | Bin 2473 -> 0 bytes .../zynaddsubfx/banks/Rhodes/0037-FM Rhodes 5.xiz | Bin 2164 -> 0 bytes .../zynaddsubfx/banks/Rhodes/0038-FM Rhodes 6.xiz | Bin 2082 -> 0 bytes .../zynaddsubfx/banks/Rhodes/0041-Soft Rhodes.xiz | Bin 2271 -> 0 bytes .../zynaddsubfx/banks/Rhodes/0042-Hard Rhodes1.xiz | Bin 2550 -> 0 bytes .../zynaddsubfx/banks/Rhodes/0043-Hard Rhodes2.xiz | Bin 2133 -> 0 bytes .../zynaddsubfx/banks/Rhodes/0044-Echo Rhodes.xiz | Bin 2406 -> 0 bytes .../banks/Rhodes/0045-A long time ago.xiz | Bin 2313 -> 0 bytes .../zynaddsubfx/banks/Rhodes/0065-Steel Rhodes.xiz | Bin 2513 -> 0 bytes .../banks/Splited/0001-Strings and Reed1.xiz | Bin 4170 -> 0 bytes .../banks/Splited/0002-Strings and Reed2.xiz | Bin 4202 -> 0 bytes .../banks/Splited/0003-Strings and Flute.xiz | Bin 3368 -> 0 bytes .../banks/Splited/0033-Choir and Reed.xiz | Bin 5546 -> 0 bytes .../banks/Strings/0001-Saw Strings 1.xiz | Bin 1931 -> 0 bytes .../banks/Strings/0002-Saw Strings 2.xiz | Bin 2083 -> 0 bytes .../banks/Strings/0003-Saw Strings 3.xiz | Bin 2030 -> 0 bytes .../banks/Strings/0004-Saw Strings 4.xiz | Bin 2191 -> 0 bytes .../banks/Strings/0005-Saw Strings 5.xiz | Bin 1983 -> 0 bytes .../banks/Strings/0006-Saw Strings 6.xiz | Bin 2072 -> 0 bytes .../banks/Strings/0007-Saw Strings 7.xiz | Bin 1981 -> 0 bytes .../banks/Strings/0008-Saw Strings 8.xiz | Bin 2002 -> 0 bytes .../banks/Strings/0011-Strings Pad1.xiz | Bin 1716 -> 0 bytes .../banks/Strings/0012-Strings Pad2.xiz | Bin 1726 -> 0 bytes .../banks/Strings/0013-Strings Pad3.xiz | Bin 1726 -> 0 bytes .../zynaddsubfx/banks/Strings/0016-Sweep Pad 1.xiz | Bin 1738 -> 0 bytes .../banks/Strings/0017-Sweep Pad 1 Fat.xiz | Bin 1742 -> 0 bytes .../zynaddsubfx/banks/Strings/0018-Sweep Pad 2.xiz | Bin 1757 -> 0 bytes .../banks/Strings/0019-Sweep Pad 3Wah.xiz | Bin 1712 -> 0 bytes .../zynaddsubfx/banks/Strings/0020-Sweep Pad 4.xiz | Bin 1723 -> 0 bytes .../zynaddsubfx/banks/Strings/0033-Strings1.xiz | Bin 2211 -> 0 bytes .../banks/Strings/0034-Dark Strings.xiz | Bin 1977 -> 0 bytes .../zynaddsubfx/banks/Strings/0035-Octave Pad.xiz | Bin 2281 -> 0 bytes .../zynaddsubfx/banks/Strings/0036-Fast Attack.xiz | Bin 2258 -> 0 bytes .../zynaddsubfx/banks/Strings/0038-Fat Saw.xiz | Bin 2051 -> 0 bytes .../synti/zynaddsubfx/banks/Strings/0041-Saw 1.xiz | Bin 1824 -> 0 bytes .../synti/zynaddsubfx/banks/Strings/0042-Saw 2.xiz | Bin 1803 -> 0 bytes .../synti/zynaddsubfx/banks/Strings/0043-Saw 3.xiz | Bin 1829 -> 0 bytes .../zynaddsubfx/banks/Strings/0044-Saw Pad.xiz | Bin 1758 -> 0 bytes .../banks/Strings/0045-Soft Saw Pad.xiz | Bin 1889 -> 0 bytes .../zynaddsubfx/banks/Strings/0046-Echoed Saw.xiz | Bin 1962 -> 0 bytes .../banks/Strings/0047-Vibratto Saw1.xiz | Bin 1864 -> 0 bytes muse/synti/zynaddsubfx/banks/Strings/0048-Wah1.xiz | Bin 2006 -> 0 bytes .../banks/Strings/0050-Synth Violin 1.xiz | Bin 3207 -> 0 bytes .../banks/Strings/0051-Synth Violin 2 Fat.xiz | Bin 3584 -> 0 bytes .../banks/Strings/0065-Simple Strings.xiz | Bin 1825 -> 0 bytes .../banks/Strings/0066-Dual Strings.xiz | Bin 2469 -> 0 bytes .../banks/Strings/0067-Dual StringsOct.xiz | Bin 2505 -> 0 bytes .../zynaddsubfx/banks/Synth/0001-Soft Synth 1.xiz | Bin 2177 -> 0 bytes .../zynaddsubfx/banks/Synth/0002-Soft Synth 2.xiz | Bin 2121 -> 0 bytes .../zynaddsubfx/banks/Synth/0004-Pulse Pad 1.xiz | Bin 1928 -> 0 bytes .../zynaddsubfx/banks/Synth/0005-Pulse Pad 2.xiz | Bin 1949 -> 0 bytes .../banks/Synth/0007-Analog Filter 1.xiz | Bin 1847 -> 0 bytes .../banks/Synth/0008-Analog Filter 2.xiz | Bin 2028 -> 0 bytes .../zynaddsubfx/banks/Synth/0033-Phased Pad 1.xiz | Bin 1971 -> 0 bytes .../zynaddsubfx/banks/Synth/0034-Phased Pad 2.xiz | Bin 1959 -> 0 bytes .../zynaddsubfx/banks/Synth/0035-Phased Pad 3.xiz | Bin 2237 -> 0 bytes .../banks/Synth/0037-Resonance Synth.xiz | Bin 1986 -> 0 bytes .../banks/Synth/0039-Multi-phase synth.xiz | Bin 2093 -> 0 bytes .../zynaddsubfx/banks/Synth/0065-Computer Lead.xiz | Bin 1800 -> 0 bytes .../banks/Synth/0067-Detuned Harmonic.xiz | Bin 1851 -> 0 bytes .../zynaddsubfx/banks/Synth/0097-FM Synth.xiz | Bin 2652 -> 0 bytes .../banks/SynthPiano/0001-Soft Piano 1.xiz | Bin 1105 -> 0 bytes .../banks/SynthPiano/0002-Soft Piano 2.xiz | Bin 1067 -> 0 bytes .../banks/SynthPiano/0004-Fantasy Bell.xiz | Bin 2137 -> 0 bytes .../banks/SynthPiano/0005-Synth Piano1.xiz | Bin 1867 -> 0 bytes .../banks/SynthPiano/0006-Synth Piano2.xiz | Bin 1935 -> 0 bytes .../banks/SynthPiano/0007-Termollo1.xiz | Bin 1891 -> 0 bytes .../banks/SynthPiano/0008-Termollo2.xiz | Bin 1993 -> 0 bytes .../banks/SynthPiano/0009-Termollo3.xiz | Bin 1872 -> 0 bytes .../zynaddsubfx/banks/SynthPiano/0011-Drop1.xiz | Bin 1708 -> 0 bytes .../zynaddsubfx/banks/SynthPiano/0012-Drop2.xiz | Bin 1862 -> 0 bytes .../banks/SynthPiano/0033-Analog Piano 1.xiz | Bin 1809 -> 0 bytes .../banks/SynthPiano/0034-Analog Piano 2.xiz | Bin 1981 -> 0 bytes .../banks/SynthPiano/0035-Analog Piano 3.xiz | Bin 1887 -> 0 bytes .../banks/SynthPiano/0037-FM Synth1.xiz | Bin 2208 -> 0 bytes .../banks/SynthPiano/0039-BinaryPiano1.xiz | Bin 1772 -> 0 bytes .../banks/SynthPiano/0040-BinaryPiano2.xiz | Bin 1788 -> 0 bytes .../banks/SynthPiano/0065-Synth Piano 1.xiz | Bin 1738 -> 0 bytes .../banks/SynthPiano/0066-Synth Piano 2.xiz | Bin 1772 -> 0 bytes .../banks/SynthPiano/0067-Synth Piano 3.xiz | Bin 1808 -> 0 bytes .../banks/SynthPiano/0068-Synth Piano 3 fat.xiz | Bin 1815 -> 0 bytes .../banks/SynthPiano/0069-Synth Piano 3 det.xiz | Bin 1810 -> 0 bytes .../banks/SynthPiano/0070-Synth Piano 4.xiz | Bin 1946 -> 0 bytes .../banks/SynthPiano/0071-Synth Piano 5.xiz | Bin 2962 -> 0 bytes muse/synti/zynaddsubfx/globals.h | 212 - muse/synti/zynaddsubfx/main.cpp | 462 - muse_qt4_evolution/CMakeLists.txt | 335 + muse_qt4_evolution/COPYING | 280 + muse_qt4_evolution/ChangeLog | 2760 + muse_qt4_evolution/Doxyfile.in | 1271 + muse_qt4_evolution/NEWS | 12 + muse_qt4_evolution/README | 117 + muse_qt4_evolution/Reference | 59 + muse_qt4_evolution/al/CMakeLists.txt | 32 + muse_qt4_evolution/al/al.cpp | 29 + muse_qt4_evolution/al/al.h | 34 + muse_qt4_evolution/al/dsp.cpp | 120 + muse_qt4_evolution/al/dsp.h | 83 + muse_qt4_evolution/al/dspSSE.cpp | 531 + muse_qt4_evolution/al/dspXMM.cpp | 115 + muse_qt4_evolution/al/marker.cpp | 86 + muse_qt4_evolution/al/marker.h | 67 + muse_qt4_evolution/al/pos.cpp | 616 + muse_qt4_evolution/al/pos.h | 129 + muse_qt4_evolution/al/sig.cpp | 407 + muse_qt4_evolution/al/sig.h | 103 + muse_qt4_evolution/al/tempo.cpp | 393 + muse_qt4_evolution/al/tempo.h | 101 + muse_qt4_evolution/al/xml.cpp | 362 + muse_qt4_evolution/al/xml.h | 69 + muse_qt4_evolution/all.h | 123 + muse_qt4_evolution/awl/CMakeLists.txt | 112 + muse_qt4_evolution/awl/aslider.cpp | 241 + muse_qt4_evolution/awl/aslider.h | 135 + muse_qt4_evolution/awl/awl.cpp | 27 + muse_qt4_evolution/awl/awl.h | 30 + muse_qt4_evolution/awl/awlplugin.cpp | 127 + muse_qt4_evolution/awl/awlplugin.h | 273 + muse_qt4_evolution/awl/checkbox.cpp | 36 + muse_qt4_evolution/awl/checkbox.h | 55 + muse_qt4_evolution/awl/clock.xpm | 24 + muse_qt4_evolution/awl/combobox.cpp | 36 + muse_qt4_evolution/awl/combobox.h | 55 + muse_qt4_evolution/awl/drawbar.cpp | 130 + muse_qt4_evolution/awl/drawbar.h | 54 + muse_qt4_evolution/awl/fastlog.h | 39 + muse_qt4_evolution/awl/floatentry.cpp | 317 + muse_qt4_evolution/awl/floatentry.h | 112 + muse_qt4_evolution/awl/knob.cpp | 281 + muse_qt4_evolution/awl/knob.h | 85 + muse_qt4_evolution/awl/ltest.cpp | 14 + muse_qt4_evolution/awl/metronom.xpm | 24 + muse_qt4_evolution/awl/midimeter.cpp | 137 + muse_qt4_evolution/awl/midimeter.h | 56 + muse_qt4_evolution/awl/midimslider.cpp | 143 + muse_qt4_evolution/awl/midimslider.h | 56 + muse_qt4_evolution/awl/midipanentry.cpp | 47 + muse_qt4_evolution/awl/midipanentry.h | 48 + muse_qt4_evolution/awl/midipanknob.cpp | 37 + muse_qt4_evolution/awl/midipanknob.h | 55 + muse_qt4_evolution/awl/midivolentry.cpp | 50 + muse_qt4_evolution/awl/midivolentry.h | 47 + muse_qt4_evolution/awl/mslider.cpp | 273 + muse_qt4_evolution/awl/mslider.h | 68 + muse_qt4_evolution/awl/panentry.cpp | 35 + muse_qt4_evolution/awl/panentry.h | 40 + muse_qt4_evolution/awl/panknob.cpp | 38 + muse_qt4_evolution/awl/panknob.h | 46 + muse_qt4_evolution/awl/pitchedit.cpp | 89 + muse_qt4_evolution/awl/pitchedit.h | 50 + muse_qt4_evolution/awl/pitchlabel.cpp | 106 + muse_qt4_evolution/awl/pitchlabel.h | 51 + muse_qt4_evolution/awl/posedit.cpp | 441 + muse_qt4_evolution/awl/posedit.h | 72 + muse_qt4_evolution/awl/poslabel.cpp | 100 + muse_qt4_evolution/awl/poslabel.h | 56 + muse_qt4_evolution/awl/sigedit.cpp | 224 + muse_qt4_evolution/awl/sigedit.h | 66 + muse_qt4_evolution/awl/slider.cpp | 251 + muse_qt4_evolution/awl/slider.h | 81 + muse_qt4_evolution/awl/tcanvas.cpp | 1871 + muse_qt4_evolution/awl/tcanvas.h | 293 + muse_qt4_evolution/awl/tempoedit.cpp | 88 + muse_qt4_evolution/awl/tempoedit.h | 55 + muse_qt4_evolution/awl/tempolabel.cpp | 72 + muse_qt4_evolution/awl/tempolabel.h | 48 + muse_qt4_evolution/awl/utils.cpp | 48 + muse_qt4_evolution/awl/utils.h | 29 + muse_qt4_evolution/awl/volentry.cpp | 37 + muse_qt4_evolution/awl/volentry.h | 41 + muse_qt4_evolution/awl/volknob.cpp | 39 + muse_qt4_evolution/awl/volknob.h | 46 + muse_qt4_evolution/awl/volslider.cpp | 85 + muse_qt4_evolution/awl/volslider.h | 57 + muse_qt4_evolution/cmake/TargetDoc.cmake | 125 + muse_qt4_evolution/cmake/UsePkgConfig1.cmake | 45 + muse_qt4_evolution/config.h.in | 29 + muse_qt4_evolution/doc/README.de | 69 + muse_qt4_evolution/doc/README.instruments | 108 + muse_qt4_evolution/doc/README.ladspaguis | 63 + muse_qt4_evolution/doc/README.realtime | 19 + muse_qt4_evolution/doc/README.shortcuts | 159 + muse_qt4_evolution/doc/README.softsynth | 86 + muse_qt4_evolution/doc/README.translate | 57 + muse_qt4_evolution/doc/dimpl.odt | Bin 0 -> 37053 bytes muse_qt4_evolution/doc/manual-de.odt | Bin 0 -> 50551 bytes muse_qt4_evolution/doc/pics/main0.png | Bin 0 -> 34023 bytes muse_qt4_evolution/doc/pics/main1.png | Bin 0 -> 69465 bytes muse_qt4_evolution/doc/pics/main2.png | Bin 0 -> 39892 bytes muse_qt4_evolution/doc/pics/mixer1.png | Bin 0 -> 23134 bytes muse_qt4_evolution/doc/pics/pianoroll1.png | Bin 0 -> 35895 bytes muse_qt4_evolution/doc/pics/pianoroll2.png | Bin 0 -> 37144 bytes muse_qt4_evolution/doc/pics/select_project.png | Bin 0 -> 40300 bytes muse_qt4_evolution/doc/pics/select_template.png | Bin 0 -> 31420 bytes muse_qt4_evolution/grepmidi/CMakeLists.txt | 24 + muse_qt4_evolution/grepmidi/grepmidi.cpp | 348 + muse_qt4_evolution/midiplugins/CMakeLists.txt | 36 + .../midiplugins/drumglue/CMakeLists.txt | 50 + .../midiplugins/drumglue/drumglue.cpp | 250 + muse_qt4_evolution/midiplugins/drumglue/drumglue.h | 86 + .../midiplugins/drumglue/drumgluegui.cpp | 68 + .../midiplugins/drumglue/drumgluegui.h | 41 + .../midiplugins/drumglue/drumgluegui.ui | 91 + .../midiplugins/drumglue/globalinstrumentview.cpp | 153 + .../midiplugins/drumglue/globalinstrumentview.h | 41 + .../midiplugins/drumglue/globalinstrumentview.ui | 102 + .../midiplugins/drumglue/outputinstrumentview.cpp | 45 + .../midiplugins/drumglue/outputinstrumentview.h | 31 + .../midiplugins/drumglue/outputinstrumentview.ui | 292 + muse_qt4_evolution/midiplugins/dump/CMakeLists.txt | 40 + muse_qt4_evolution/midiplugins/dump/dump.cpp | 48 + muse_qt4_evolution/midiplugins/dump/dump.h | 28 + .../midiplugins/filter/CMakeLists.txt | 49 + .../midiplugins/filter/ctrlcombo.cpp | 56 + muse_qt4_evolution/midiplugins/filter/ctrlcombo.h | 24 + muse_qt4_evolution/midiplugins/filter/filter.cpp | 167 + muse_qt4_evolution/midiplugins/filter/filter.h | 51 + .../midiplugins/filter/filtergui.cpp | 187 + muse_qt4_evolution/midiplugins/filter/filtergui.h | 57 + muse_qt4_evolution/midiplugins/filter/filtergui.ui | 269 + .../midiplugins/libmidiplugin/CMakeLists.txt | 26 + .../midiplugins/libmidiplugin/evdata.h | 64 + .../midiplugins/libmidiplugin/mempi.cpp | 81 + .../midiplugins/libmidiplugin/mempi.h | 97 + .../midiplugins/libmidiplugin/midievent.cpp | 21 + .../midiplugins/libmidiplugin/midievent.h | 87 + .../midiplugins/metronom/CMakeLists.txt | 46 + .../midiplugins/metronom/metronom.cpp | 167 + muse_qt4_evolution/midiplugins/metronom/metronom.h | 53 + .../midiplugins/metronom/metronomgui.cpp | 75 + .../midiplugins/metronom/metronomgui.h | 36 + .../midiplugins/metronom/metronomgui.ui | 150 + .../midiplugins/splitlayer/CMakeLists.txt | 45 + .../midiplugins/splitlayer/splitlayer.cpp | 209 + .../midiplugins/splitlayer/splitlayer.h | 69 + .../midiplugins/splitlayer/splitlayergui.cpp | 263 + .../midiplugins/splitlayer/splitlayergui.h | 65 + .../midiplugins/transform/CMakeLists.txt | 45 + .../midiplugins/transform/transform.cpp | 904 + .../midiplugins/transform/transform.h | 126 + .../midiplugins/transform/transform.ui | 616 + .../midiplugins/trigg/CMakeLists.txt | 47 + muse_qt4_evolution/midiplugins/trigg/trigg.cpp | 131 + muse_qt4_evolution/midiplugins/trigg/trigg.h | 49 + muse_qt4_evolution/midiplugins/trigg/trigggui.cpp | 56 + muse_qt4_evolution/midiplugins/trigg/trigggui.h | 48 + muse_qt4_evolution/midiplugins/trigg/trigggui.ui | 109 + muse_qt4_evolution/muse.pro | 240 + muse_qt4_evolution/muse/CMakeLists.txt | 226 + muse_qt4_evolution/muse/aboutbox.ui | 612 + muse_qt4_evolution/muse/arranger.cpp | 1382 + muse_qt4_evolution/muse/arranger.h | 175 + muse_qt4_evolution/muse/astrip.cpp | 791 + muse_qt4_evolution/muse/astrip.h | 101 + muse_qt4_evolution/muse/audio.cpp | 655 + muse_qt4_evolution/muse/audio.h | 306 + muse_qt4_evolution/muse/audiodev.h | 57 + muse_qt4_evolution/muse/audiogroup.cpp | 47 + muse_qt4_evolution/muse/audiogroup.h | 46 + muse_qt4_evolution/muse/audioinput.cpp | 131 + muse_qt4_evolution/muse/audioinput.h | 53 + muse_qt4_evolution/muse/audiooutput.cpp | 191 + muse_qt4_evolution/muse/audiooutput.h | 55 + muse_qt4_evolution/muse/audioprefetch.cpp | 199 + muse_qt4_evolution/muse/audioprefetch.h | 54 + muse_qt4_evolution/muse/audiotrack.cpp | 582 + muse_qt4_evolution/muse/audiotrack.h | 105 + muse_qt4_evolution/muse/audiowriteback.cpp | 101 + muse_qt4_evolution/muse/audiowriteback.h | 44 + muse_qt4_evolution/muse/auxplugin.cpp | 190 + muse_qt4_evolution/muse/auxplugin.h | 84 + muse_qt4_evolution/muse/canvas.cpp | 1187 + muse_qt4_evolution/muse/canvas.h | 124 + muse_qt4_evolution/muse/cliplist/cliplist.cpp | 251 + muse_qt4_evolution/muse/cliplist/cliplist.h | 47 + muse_qt4_evolution/muse/cobject.cpp | 55 + muse_qt4_evolution/muse/cobject.h | 46 + muse_qt4_evolution/muse/conf.cpp | 694 + muse_qt4_evolution/muse/conf.h | 46 + muse_qt4_evolution/muse/configmidifile.ui | 153 + muse_qt4_evolution/muse/configtrack.cpp | 265 + muse_qt4_evolution/muse/configtrack.h | 61 + muse_qt4_evolution/muse/configtrack.ui | 299 + muse_qt4_evolution/muse/ctrl.cpp | 450 + muse_qt4_evolution/muse/ctrl.h | 236 + muse_qt4_evolution/muse/ctrl/CMakeLists.txt | 46 + muse_qt4_evolution/muse/ctrl/configmidictrl.cpp | 202 + muse_qt4_evolution/muse/ctrl/configmidictrl.h | 51 + muse_qt4_evolution/muse/ctrl/configmidictrl.ui | 204 + muse_qt4_evolution/muse/ctrl/ctrldialog.cpp | 191 + muse_qt4_evolution/muse/ctrl/ctrldialog.h | 49 + muse_qt4_evolution/muse/ctrl/ctrldialog.ui | 126 + muse_qt4_evolution/muse/ctrl/ctrledit.cpp | 184 + muse_qt4_evolution/muse/ctrl/ctrledit.h | 76 + muse_qt4_evolution/muse/ctrl/ctrleditor.cpp | 492 + muse_qt4_evolution/muse/ctrl/ctrleditor.h | 76 + muse_qt4_evolution/muse/ctrl/definemidictrl.cpp | 110 + muse_qt4_evolution/muse/ctrl/definemidictrl.h | 51 + muse_qt4_evolution/muse/ctrl/definemidictrl.ui | 285 + muse_qt4_evolution/muse/debug.h | 44 + muse_qt4_evolution/muse/default_click.h | 1213 + muse_qt4_evolution/muse/device.h | 56 + muse_qt4_evolution/muse/driver.h | 64 + muse_qt4_evolution/muse/dssihost.cpp | 891 + muse_qt4_evolution/muse/dssihost.h | 121 + muse_qt4_evolution/muse/dummyaudio.cpp | 294 + muse_qt4_evolution/muse/editor.cpp | 38 + muse_qt4_evolution/muse/editor.h | 44 + muse_qt4_evolution/muse/esettings.cpp | 773 + muse_qt4_evolution/muse/esettings.h | 361 + muse_qt4_evolution/muse/evdata.h | 85 + muse_qt4_evolution/muse/event.cpp | 222 + muse_qt4_evolution/muse/event.h | 139 + muse_qt4_evolution/muse/eventbase.h | 100 + muse_qt4_evolution/muse/eventlist.cpp | 93 + muse_qt4_evolution/muse/exportmidi.cpp | 376 + muse_qt4_evolution/muse/exportmidi.h | 41 + muse_qt4_evolution/muse/exportmididialog.ui | 176 + muse_qt4_evolution/muse/extmidieditor.cpp | 422 + muse_qt4_evolution/muse/extmidieditor.h | 120 + muse_qt4_evolution/muse/fastlog.h | 38 + muse_qt4_evolution/muse/fifo.cpp | 183 + muse_qt4_evolution/muse/fifo.h | 105 + muse_qt4_evolution/muse/gconfig.cpp | 121 + muse_qt4_evolution/muse/gconfig.h | 133 + muse_qt4_evolution/muse/globaldefs.h | 37 + muse_qt4_evolution/muse/globals.cpp | 133 + muse_qt4_evolution/muse/globals.h | 86 + muse_qt4_evolution/muse/gui.h | 54 + muse_qt4_evolution/muse/help.cpp | 101 + muse_qt4_evolution/muse/help.h | 36 + muse_qt4_evolution/muse/helper.cpp | 47 + muse_qt4_evolution/muse/helper.h | 27 + muse_qt4_evolution/muse/icons.cpp | 341 + muse_qt4_evolution/muse/icons.h | 134 + muse_qt4_evolution/muse/importmidi.cpp | 589 + muse_qt4_evolution/muse/importmidi.h | 46 + muse_qt4_evolution/muse/importmidi.ui | 200 + muse_qt4_evolution/muse/instruments/CMakeLists.txt | 41 + .../muse/instruments/editinstrument.cpp | 844 + .../muse/instruments/editinstrument.h | 70 + .../muse/instruments/editinstrument.ui | 998 + .../muse/instruments/midictrledit.cpp | 418 + muse_qt4_evolution/muse/instruments/midictrledit.h | 58 + .../muse/instruments/minstrument.cpp | 631 + muse_qt4_evolution/muse/instruments/minstrument.h | 160 + muse_qt4_evolution/muse/jack.cpp | 886 + muse_qt4_evolution/muse/jackaudio.h | 90 + muse_qt4_evolution/muse/ladspa.h | 599 + muse_qt4_evolution/muse/ladspaplugin.cpp | 235 + muse_qt4_evolution/muse/ladspaplugin.h | 127 + muse_qt4_evolution/muse/liste/CMakeLists.txt | 48 + muse_qt4_evolution/muse/liste/ctrllistedit.cpp | 569 + muse_qt4_evolution/muse/liste/ctrllistedit.h | 96 + muse_qt4_evolution/muse/liste/ctrllistedit.ui | 334 + muse_qt4_evolution/muse/liste/ieventdialog.cpp | 428 + muse_qt4_evolution/muse/liste/ieventdialog.h | 117 + muse_qt4_evolution/muse/liste/listedit.cpp | 298 + muse_qt4_evolution/muse/liste/listedit.h | 98 + muse_qt4_evolution/muse/liste/partlistedit.cpp | 434 + muse_qt4_evolution/muse/liste/partlistedit.h | 79 + muse_qt4_evolution/muse/liste/partlistedit.ui | 166 + muse_qt4_evolution/muse/liste/tracklistedit.cpp | 65 + muse_qt4_evolution/muse/liste/tracklistedit.h | 50 + muse_qt4_evolution/muse/liste/tracklistedit.ui | 146 + muse_qt4_evolution/muse/marker/CMakeLists.txt | 45 + muse_qt4_evolution/muse/marker/markerview.cpp | 413 + muse_qt4_evolution/muse/marker/markerview.h | 98 + muse_qt4_evolution/muse/master/CMakeLists.txt | 37 + muse_qt4_evolution/muse/master/master.cpp | 233 + muse_qt4_evolution/muse/master/master.h | 63 + muse_qt4_evolution/muse/master/masteredit.cpp | 302 + muse_qt4_evolution/muse/master/masteredit.h | 107 + muse_qt4_evolution/muse/midi.cpp | 633 + muse_qt4_evolution/muse/midi.h | 68 + muse_qt4_evolution/muse/midictrl.cpp | 372 + muse_qt4_evolution/muse/midictrl.h | 168 + muse_qt4_evolution/muse/midiedit/CMakeLists.txt | 71 + muse_qt4_evolution/muse/midiedit/citem.cpp | 82 + muse_qt4_evolution/muse/midiedit/citem.h | 70 + muse_qt4_evolution/muse/midiedit/cmd.h | 32 + muse_qt4_evolution/muse/midiedit/dcanvas.cpp | 723 + muse_qt4_evolution/muse/midiedit/dcanvas.h | 77 + muse_qt4_evolution/muse/midiedit/drumedit.cpp | 450 + muse_qt4_evolution/muse/midiedit/drumedit.h | 93 + muse_qt4_evolution/muse/midiedit/drummap.cpp | 219 + muse_qt4_evolution/muse/midiedit/drummap.h | 81 + muse_qt4_evolution/muse/midiedit/ecanvas.cpp | 1549 + muse_qt4_evolution/muse/midiedit/ecanvas.h | 173 + muse_qt4_evolution/muse/midiedit/gatetime.cpp | 105 + muse_qt4_evolution/muse/midiedit/gatetime.h | 62 + muse_qt4_evolution/muse/midiedit/gatetime.ui | 85 + muse_qt4_evolution/muse/midiedit/midicmd.cpp | 135 + muse_qt4_evolution/muse/midiedit/midicmd.h | 81 + muse_qt4_evolution/muse/midiedit/midicmd.ui | 76 + muse_qt4_evolution/muse/midiedit/midieditor.cpp | 444 + muse_qt4_evolution/muse/midiedit/midieditor.h | 147 + muse_qt4_evolution/muse/midiedit/miditracker.cpp | 234 + muse_qt4_evolution/muse/midiedit/miditracker.h | 76 + muse_qt4_evolution/muse/midiedit/pianoroll.cpp | 526 + muse_qt4_evolution/muse/midiedit/pianoroll.h | 126 + muse_qt4_evolution/muse/midiedit/prcanvas.cpp | 773 + muse_qt4_evolution/muse/midiedit/prcanvas.h | 75 + muse_qt4_evolution/muse/midiedit/quantconfig.cpp | 68 + muse_qt4_evolution/muse/midiedit/quantconfig.h | 42 + muse_qt4_evolution/muse/midiedit/quantconfig.ui | 151 + muse_qt4_evolution/muse/midiedit/trackpattern.cpp | 627 + muse_qt4_evolution/muse/midiedit/trackpattern.h | 261 + muse_qt4_evolution/muse/midiedit/velocity.cpp | 108 + muse_qt4_evolution/muse/midiedit/velocity.h | 62 + muse_qt4_evolution/muse/midiedit/velocity.ui | 86 + muse_qt4_evolution/muse/midievent.cpp | 129 + muse_qt4_evolution/muse/midievent.h | 100 + muse_qt4_evolution/muse/midieventbase.cpp | 159 + muse_qt4_evolution/muse/midieventbase.h | 76 + muse_qt4_evolution/muse/midififo.cpp | 103 + muse_qt4_evolution/muse/midififo.h | 92 + muse_qt4_evolution/muse/midifile.cpp | 673 + muse_qt4_evolution/muse/midifile.h | 121 + muse_qt4_evolution/muse/midiinport.cpp | 241 + muse_qt4_evolution/muse/midiinport.h | 67 + muse_qt4_evolution/muse/midiout.cpp | 398 + muse_qt4_evolution/muse/midiout.h | 67 + muse_qt4_evolution/muse/midioutport.cpp | 262 + muse_qt4_evolution/muse/midioutport.h | 70 + muse_qt4_evolution/muse/midiplugin.cpp | 625 + muse_qt4_evolution/muse/midiplugin.h | 168 + muse_qt4_evolution/muse/midiportinfo.ui | 92 + muse_qt4_evolution/muse/midirack.cpp | 208 + muse_qt4_evolution/muse/midirack.h | 48 + muse_qt4_evolution/muse/midirc.cpp | 180 + muse_qt4_evolution/muse/midirc.h | 65 + muse_qt4_evolution/muse/midisynti.cpp | 225 + muse_qt4_evolution/muse/midisynti.h | 62 + muse_qt4_evolution/muse/miditrack.cpp | 716 + muse_qt4_evolution/muse/miditrack.h | 127 + muse_qt4_evolution/muse/miditrackbase.cpp | 136 + muse_qt4_evolution/muse/miditrackbase.h | 53 + muse_qt4_evolution/muse/miditrackinfo.ui | 292 + muse_qt4_evolution/muse/miditransform.cpp | 1534 + muse_qt4_evolution/muse/miditransform.h | 113 + muse_qt4_evolution/muse/mixer.cpp | 397 + muse_qt4_evolution/muse/mixer.h | 95 + muse_qt4_evolution/muse/mstrip.cpp | 1211 + muse_qt4_evolution/muse/mstrip.h | 191 + muse_qt4_evolution/muse/mtc.cpp | 131 + muse_qt4_evolution/muse/mtc.h | 68 + muse_qt4_evolution/muse/muse.cpp | 3029 + muse_qt4_evolution/muse/muse.h | 318 + muse_qt4_evolution/muse/muse.qrc | 85 + muse_qt4_evolution/muse/part.cpp | 361 + muse_qt4_evolution/muse/part.h | 151 + muse_qt4_evolution/muse/partdrag.cpp | 199 + muse_qt4_evolution/muse/partdrag.h | 69 + muse_qt4_evolution/muse/pipeline.cpp | 221 + muse_qt4_evolution/muse/pipeline.h | 59 + muse_qt4_evolution/muse/plugin.cpp | 466 + muse_qt4_evolution/muse/plugin.h | 218 + muse_qt4_evolution/muse/plugingui.cpp | 770 + muse_qt4_evolution/muse/plugingui.h | 122 + muse_qt4_evolution/muse/port.h | 76 + muse_qt4_evolution/muse/preferences.cpp | 932 + muse_qt4_evolution/muse/preferences.h | 79 + muse_qt4_evolution/muse/preferences.ui | 2400 + muse_qt4_evolution/muse/projectdialog.cpp | 471 + muse_qt4_evolution/muse/projectdialog.h | 73 + muse_qt4_evolution/muse/projectdialog.ui | 269 + muse_qt4_evolution/muse/projectpropsdialog.cpp | 64 + muse_qt4_evolution/muse/projectpropsdialog.h | 46 + muse_qt4_evolution/muse/projectpropsdialog.ui | 188 + muse_qt4_evolution/muse/rack.cpp | 445 + muse_qt4_evolution/muse/rack.h | 66 + muse_qt4_evolution/muse/revision.cpp | 27 + muse_qt4_evolution/muse/revision.h | 1 + muse_qt4_evolution/muse/route.cpp | 417 + muse_qt4_evolution/muse/route.h | 108 + muse_qt4_evolution/muse/routedialog.cpp | 196 + muse_qt4_evolution/muse/routedialog.h | 53 + muse_qt4_evolution/muse/routedialog.ui | 170 + muse_qt4_evolution/muse/selectfilter.h | 51 + muse_qt4_evolution/muse/seqmsg.cpp | 621 + muse_qt4_evolution/muse/shortcuts.cpp | 1169 + muse_qt4_evolution/muse/shortcuts.h | 135 + muse_qt4_evolution/muse/song.cpp | 1552 + muse_qt4_evolution/muse/song.h | 416 + muse_qt4_evolution/muse/songfile.cpp | 489 + muse_qt4_evolution/muse/songpart.cpp | 371 + muse_qt4_evolution/muse/songtrack.cpp | 715 + muse_qt4_evolution/muse/strip.cpp | 123 + muse_qt4_evolution/muse/strip.h | 75 + muse_qt4_evolution/muse/style.qss | 66 + muse_qt4_evolution/muse/sync.cpp | 499 + muse_qt4_evolution/muse/sync.h | 37 + muse_qt4_evolution/muse/synth.cpp | 588 + muse_qt4_evolution/muse/synth.h | 227 + muse_qt4_evolution/muse/templatedialog.cpp | 259 + muse_qt4_evolution/muse/templatedialog.h | 51 + muse_qt4_evolution/muse/templatedialog.ui | 188 + muse_qt4_evolution/muse/thread.cpp | 354 + muse_qt4_evolution/muse/thread.h | 109 + muse_qt4_evolution/muse/ticksynth.cpp | 181 + muse_qt4_evolution/muse/ticksynth.h | 29 + muse_qt4_evolution/muse/tllineedit.cpp | 70 + muse_qt4_evolution/muse/tllineedit.h | 48 + muse_qt4_evolution/muse/tlswidget.cpp | 355 + muse_qt4_evolution/muse/tlswidget.h | 83 + muse_qt4_evolution/muse/tlwidget.cpp | 641 + muse_qt4_evolution/muse/tlwidget.h | 105 + muse_qt4_evolution/muse/tlwlayout.cpp | 144 + muse_qt4_evolution/muse/tlwlayout.h | 51 + muse_qt4_evolution/muse/track.cpp | 1062 + muse_qt4_evolution/muse/track.h | 345 + muse_qt4_evolution/muse/trackdrag.cpp | 61 + muse_qt4_evolution/muse/trackdrag.h | 42 + muse_qt4_evolution/muse/trackinfo.cpp | 553 + muse_qt4_evolution/muse/trackinfo.h | 203 + muse_qt4_evolution/muse/transport.cpp | 411 + muse_qt4_evolution/muse/transport.h | 74 + muse_qt4_evolution/muse/transport.ui | 856 + muse_qt4_evolution/muse/transpose.cpp | 92 + muse_qt4_evolution/muse/transpose.h | 40 + muse_qt4_evolution/muse/transpose.ui | 193 + muse_qt4_evolution/muse/trelement.h | 63 + muse_qt4_evolution/muse/undo.cpp | 614 + muse_qt4_evolution/muse/undo.h | 103 + muse_qt4_evolution/muse/value.cpp | 73 + muse_qt4_evolution/muse/vst.cpp | 1063 + muse_qt4_evolution/muse/vst.h | 172 + muse_qt4_evolution/muse/wave.cpp | 1087 + muse_qt4_evolution/muse/wave.h | 162 + muse_qt4_evolution/muse/waveedit/CMakeLists.txt | 34 + muse_qt4_evolution/muse/waveedit/waveedit.cpp | 289 + muse_qt4_evolution/muse/waveedit/waveedit.h | 88 + muse_qt4_evolution/muse/waveedit/waveview.cpp | 1124 + muse_qt4_evolution/muse/waveedit/waveview.h | 127 + muse_qt4_evolution/muse/waveevent.cpp | 137 + muse_qt4_evolution/muse/waveevent.h | 61 + muse_qt4_evolution/muse/wavetrack.cpp | 427 + muse_qt4_evolution/muse/wavetrack.h | 84 + muse_qt4_evolution/muse/widgets/CMakeLists.txt | 88 + muse_qt4_evolution/muse/widgets/action.h | 42 + muse_qt4_evolution/muse/widgets/bigtime.cpp | 267 + muse_qt4_evolution/muse/widgets/bigtime.h | 64 + .../muse/widgets/cliplisteditorbase.h | 138 + .../muse/widgets/cliplisteditorbase.ui | 146 + muse_qt4_evolution/muse/widgets/comboQuant.cpp | 69 + muse_qt4_evolution/muse/widgets/comboQuant.h | 43 + muse_qt4_evolution/muse/widgets/combobox.cpp | 81 + muse_qt4_evolution/muse/widgets/combobox.h | 57 + muse_qt4_evolution/muse/widgets/comment.cpp | 91 + muse_qt4_evolution/muse/widgets/comment.h | 69 + muse_qt4_evolution/muse/widgets/comment.ui | 97 + muse_qt4_evolution/muse/widgets/ctrlcombo.cpp | 68 + muse_qt4_evolution/muse/widgets/ctrlcombo.h | 32 + muse_qt4_evolution/muse/widgets/dentry.cpp | 208 + muse_qt4_evolution/muse/widgets/dentry.h | 79 + muse_qt4_evolution/muse/widgets/doublelabel.cpp | 144 + muse_qt4_evolution/muse/widgets/doublelabel.h | 68 + .../muse/widgets/editmetadialogbase.cpp | 110 + .../muse/widgets/editmetadialogbase.ui | 137 + muse_qt4_evolution/muse/widgets/fdialogbuttons.ui | 167 + muse_qt4_evolution/muse/widgets/filedialog.cpp | 193 + muse_qt4_evolution/muse/widgets/filedialog.h | 65 + muse_qt4_evolution/muse/widgets/floatlabel.cpp | 144 + muse_qt4_evolution/muse/widgets/floatlabel.h | 68 + muse_qt4_evolution/muse/widgets/fontsel.cpp | 138 + muse_qt4_evolution/muse/widgets/fontsel.h | 57 + muse_qt4_evolution/muse/widgets/greendotbutton.h | 38 + muse_qt4_evolution/muse/widgets/intlabel.h | 56 + muse_qt4_evolution/muse/widgets/menutitle.cpp | 50 + muse_qt4_evolution/muse/widgets/menutitle.h | 41 + muse_qt4_evolution/muse/widgets/midisync.cpp | 128 + muse_qt4_evolution/muse/widgets/midisync.h | 49 + muse_qt4_evolution/muse/widgets/midisync.ui | 711 + muse_qt4_evolution/muse/widgets/mittransposebase.h | 111 + .../muse/widgets/mittransposebase.ui | 112 + muse_qt4_evolution/muse/widgets/mixdowndialog.cpp | 133 + muse_qt4_evolution/muse/widgets/mixdowndialog.h | 48 + muse_qt4_evolution/muse/widgets/mixdowndialog.ui | 212 + muse_qt4_evolution/muse/widgets/noteinfo.cpp | 207 + muse_qt4_evolution/muse/widgets/noteinfo.h | 68 + muse_qt4_evolution/muse/widgets/outportcombo.cpp | 52 + muse_qt4_evolution/muse/widgets/outportcombo.h | 39 + muse_qt4_evolution/muse/widgets/quantcombo.cpp | 80 + muse_qt4_evolution/muse/widgets/quantcombo.h | 46 + muse_qt4_evolution/muse/widgets/rastercombo.cpp | 82 + muse_qt4_evolution/muse/widgets/rastercombo.h | 46 + muse_qt4_evolution/muse/widgets/recordbutton.h | 38 + .../muse/widgets/shortcutcapturedialog.cpp | 97 + .../muse/widgets/shortcutcapturedialog.h | 52 + .../muse/widgets/shortcutcapturedialog.ui | 162 + muse_qt4_evolution/muse/widgets/shortcutconfig.cpp | 167 + muse_qt4_evolution/muse/widgets/shortcutconfig.h | 50 + muse_qt4_evolution/muse/widgets/shortcutconfig.ui | 180 + muse_qt4_evolution/muse/widgets/siglabel.cpp | 165 + muse_qt4_evolution/muse/widgets/siglabel.h | 50 + muse_qt4_evolution/muse/widgets/simplebutton.cpp | 65 + muse_qt4_evolution/muse/widgets/simplebutton.h | 41 + muse_qt4_evolution/muse/widgets/splitter.cpp | 107 + muse_qt4_evolution/muse/widgets/splitter.h | 62 + muse_qt4_evolution/muse/widgets/synthwizardbase.h | 58 + muse_qt4_evolution/muse/widgets/tb1.cpp | 180 + muse_qt4_evolution/muse/widgets/tb1.h | 71 + muse_qt4_evolution/muse/widgets/tools.cpp | 100 + muse_qt4_evolution/muse/widgets/tools.h | 58 + muse_qt4_evolution/muse/widgets/transformbase.ui | 993 + muse_qt4_evolution/muse/widgets/utils.cpp | 451 + muse_qt4_evolution/muse/widgets/utils.h | 58 + muse_qt4_evolution/muse/widgets/wtrackinfobase.ui | 166 + muse_qt4_evolution/muse/xpm/activeoff.svg | 120 + muse_qt4_evolution/muse/xpm/activeon.svg | 120 + .../muse/xpm/addtrack_addmiditrack.xpm | 26 + .../muse/xpm/addtrack_audiogroup.xpm | 35 + .../muse/xpm/addtrack_audioinput.xpm | 33 + .../muse/xpm/addtrack_audiooutput.xpm | 44 + muse_qt4_evolution/muse/xpm/addtrack_auxsend.xpm | 28 + muse_qt4_evolution/muse/xpm/addtrack_drumtrack.xpm | 41 + muse_qt4_evolution/muse/xpm/addtrack_wavetrack.xpm | 36 + .../muse/xpm/audio_bounce_to_file.xpm | 24 + .../muse/xpm/audio_bounce_to_track.xpm | 27 + muse_qt4_evolution/muse/xpm/audio_restartaudio.xpm | 69 + muse_qt4_evolution/muse/xpm/back.xpm | 27 + muse_qt4_evolution/muse/xpm/bold.xpm | 16 + muse_qt4_evolution/muse/xpm/buttondown.xpm | 27 + muse_qt4_evolution/muse/xpm/cafter.xpm | 29 + muse_qt4_evolution/muse/xpm/cliplistS.xpm | 28 + muse_qt4_evolution/muse/xpm/cmark.xpm | 23 + muse_qt4_evolution/muse/xpm/config.xpm | 36 + muse_qt4_evolution/muse/xpm/configure.xpm | 36 + muse_qt4_evolution/muse/xpm/ctrl.xpm | 27 + muse_qt4_evolution/muse/xpm/cut.xpm | 29 + muse_qt4_evolution/muse/xpm/darkgreendot.svg | 117 + muse_qt4_evolution/muse/xpm/delete.xpm | 27 + muse_qt4_evolution/muse/xpm/down.xpm | 15 + muse_qt4_evolution/muse/xpm/draw.xpm | 25 + muse_qt4_evolution/muse/xpm/edit_drumms.xpm | 45 + muse_qt4_evolution/muse/xpm/edit_list.xpm | 31 + muse_qt4_evolution/muse/xpm/edit_mastertrack.xpm | 38 + muse_qt4_evolution/muse/xpm/edit_midi.xpm | 26 + muse_qt4_evolution/muse/xpm/edit_pianoroll.xpm | 28 + muse_qt4_evolution/muse/xpm/edit_track_add.xpm | 24 + muse_qt4_evolution/muse/xpm/edit_track_del.xpm | 25 + muse_qt4_evolution/muse/xpm/editcopy.xpm | 102 + muse_qt4_evolution/muse/xpm/editcut.xpm | 33 + muse_qt4_evolution/muse/xpm/editcutS.xpm | 24 + muse_qt4_evolution/muse/xpm/editmute.xpm | 33 + muse_qt4_evolution/muse/xpm/editpaste.xpm | 210 + muse_qt4_evolution/muse/xpm/fforward.xpm | 17 + muse_qt4_evolution/muse/xpm/filenew.png | Bin 0 -> 575 bytes muse_qt4_evolution/muse/xpm/filenewS.xpm | 29 + muse_qt4_evolution/muse/xpm/fileopen.png | Bin 0 -> 887 bytes muse_qt4_evolution/muse/xpm/filesave.png | Bin 0 -> 762 bytes muse_qt4_evolution/muse/xpm/flag.xpm | 28 + muse_qt4_evolution/muse/xpm/flagS.xpm | 19 + muse_qt4_evolution/muse/xpm/folder_new.png | Bin 0 -> 1278 bytes muse_qt4_evolution/muse/xpm/forward.xpm | 28 + muse_qt4_evolution/muse/xpm/frewind.xpm | 17 + muse_qt4_evolution/muse/xpm/glue.xpm | 49 + muse_qt4_evolution/muse/xpm/greendot.svg | 117 + muse_qt4_evolution/muse/xpm/gv.xpm | 23 + muse_qt4_evolution/muse/xpm/home.xpm | 27 + muse_qt4_evolution/muse/xpm/initS.xpm | 23 + muse_qt4_evolution/muse/xpm/inputpluginS.xpm | 22 + muse_qt4_evolution/muse/xpm/italic.xpm | 16 + muse_qt4_evolution/muse/xpm/listS.xpm | 26 + muse_qt4_evolution/muse/xpm/lmark.xpm | 23 + muse_qt4_evolution/muse/xpm/localoffS.xpm | 22 + muse_qt4_evolution/muse/xpm/lock.xpm | 86 + muse_qt4_evolution/muse/xpm/loop.xpm | 29 + muse_qt4_evolution/muse/xpm/master.xpm | 15 + muse_qt4_evolution/muse/xpm/mastertrackS.xpm | 25 + .../muse/xpm/mastertrack_graphic.xpm | 28 + muse_qt4_evolution/muse/xpm/mastertrack_list.xpm | 27 + muse_qt4_evolution/muse/xpm/meta.xpm | 27 + .../muse/xpm/midi_edit_instrument.xpm | 27 + muse_qt4_evolution/muse/xpm/midi_init_instr.xpm | 28 + muse_qt4_evolution/muse/xpm/midi_local_off.xpm | 105 + muse_qt4_evolution/muse/xpm/midi_plugS.xpm | 22 + muse_qt4_evolution/muse/xpm/midi_reset_instr.xpm | 55 + muse_qt4_evolution/muse/xpm/midi_transform.xpm | 30 + muse_qt4_evolution/muse/xpm/midi_transpose.xpm | 31 + muse_qt4_evolution/muse/xpm/midiin.xpm | 23 + muse_qt4_evolution/muse/xpm/miditransformS.xpm | 22 + muse_qt4_evolution/muse/xpm/miditransposeS.xpm | 25 + muse_qt4_evolution/muse/xpm/minus.xpm | 24 + muse_qt4_evolution/muse/xpm/mixerS.xpm | 21 + muse_qt4_evolution/muse/xpm/mixeraudioS.xpm | 22 + muse_qt4_evolution/muse/xpm/mono.svg | 70 + muse_qt4_evolution/muse/xpm/muse_icon.xpm | 411 + muse_qt4_evolution/muse/xpm/muse_icon_64x64.png | Bin 0 -> 7493 bytes muse_qt4_evolution/muse/xpm/mutebutton_off.xpm | 165 + muse_qt4_evolution/muse/xpm/mutebutton_on.xpm | 352 + muse_qt4_evolution/muse/xpm/newmutebutton.xpm | 69 + muse_qt4_evolution/muse/xpm/off.svg | 114 + muse_qt4_evolution/muse/xpm/off.xpm | 25 + muse_qt4_evolution/muse/xpm/on.svg | 114 + muse_qt4_evolution/muse/xpm/pafter.xpm | 29 + muse_qt4_evolution/muse/xpm/panic.xpm | 50 + muse_qt4_evolution/muse/xpm/pencil.xpm | 27 + muse_qt4_evolution/muse/xpm/piano.xpm | 24 + muse_qt4_evolution/muse/xpm/pitch.xpm | 28 + muse_qt4_evolution/muse/xpm/play.xpm | 17 + muse_qt4_evolution/muse/xpm/plus.xpm | 21 + muse_qt4_evolution/muse/xpm/pointer.xpm | 28 + muse_qt4_evolution/muse/xpm/punchin.xpm | 17 + muse_qt4_evolution/muse/xpm/punchout.xpm | 18 + muse_qt4_evolution/muse/xpm/quant.xpm | 28 + muse_qt4_evolution/muse/xpm/recordOff.svg | 117 + muse_qt4_evolution/muse/xpm/recordOn.svg | 117 + muse_qt4_evolution/muse/xpm/redo.xpm | 92 + muse_qt4_evolution/muse/xpm/resetS.xpm | 22 + muse_qt4_evolution/muse/xpm/rmark.xpm | 23 + muse_qt4_evolution/muse/xpm/select.xpm | 21 + muse_qt4_evolution/muse/xpm/select_all.xpm | 21 + .../muse/xpm/select_all_parts_on_track.xpm | 39 + .../muse/xpm/select_deselect_all.xpm | 22 + muse_qt4_evolution/muse/xpm/select_inside_loop.xpm | 21 + .../muse/xpm/select_invert_selection.xpm | 21 + .../muse/xpm/select_outside_loop.xpm | 21 + .../muse/xpm/settings_appearance_settings.xpm | 66 + .../muse/xpm/settings_configureshortcuts.xpm | 36 + .../muse/xpm/settings_follow_song.xpm | 30 + .../muse/xpm/settings_globalsettings.xpm | 89 + muse_qt4_evolution/muse/xpm/settings_metronome.xpm | 99 + .../muse/xpm/settings_midifileexport.xpm | 30 + .../muse/xpm/settings_midiport_softsynths.xpm | 29 + muse_qt4_evolution/muse/xpm/settings_midisync.xpm | 53 + muse_qt4_evolution/muse/xpm/solobutton.xpm | 39 + muse_qt4_evolution/muse/xpm/solobutton_off.xpm | 146 + muse_qt4_evolution/muse/xpm/solobutton_on.xpm | 300 + muse_qt4_evolution/muse/xpm/speaker.xpm | 23 + muse_qt4_evolution/muse/xpm/splash.png | Bin 0 -> 45374 bytes muse_qt4_evolution/muse/xpm/start.xpm | 17 + muse_qt4_evolution/muse/xpm/steprec.xpm | 24 + muse_qt4_evolution/muse/xpm/stereo.svg | 68 + muse_qt4_evolution/muse/xpm/stick.xpm | 33 + muse_qt4_evolution/muse/xpm/stop.xpm | 17 + muse_qt4_evolution/muse/xpm/sysex.xpm | 27 + muse_qt4_evolution/muse/xpm/toc.xpm | 27 + muse_qt4_evolution/muse/xpm/track_add.xpm | 23 + muse_qt4_evolution/muse/xpm/track_delete.xpm | 23 + muse_qt4_evolution/muse/xpm/underlined.xpm | 16 + muse_qt4_evolution/muse/xpm/undo.xpm | 93 + muse_qt4_evolution/muse/xpm/up.xpm | 15 + .../muse/xpm/view_bigtime_window.xpm | 22 + muse_qt4_evolution/muse/xpm/view_cliplist.xpm | 32 + muse_qt4_evolution/muse/xpm/view_marker.xpm | 37 + muse_qt4_evolution/muse/xpm/view_mixer.xpm | 26 + .../muse/xpm/view_transport_window.xpm | 24 + muse_qt4_evolution/muse/xpm/wave.xpm | 33 + muse_qt4_evolution/packaging/muse_icon.png | Bin 0 -> 7493 bytes muse_qt4_evolution/packaging/muse_mdk.spec | 274 + muse_qt4_evolution/pch.txt | 68 + muse_qt4_evolution/plugins/CMakeLists.txt | 22 + .../plugins/doublechorus/CMakeLists.txt | 33 + .../plugins/doublechorus/doublechorus.cpp | 173 + .../plugins/doublechorus/doublechorusmodel.cpp | 214 + .../plugins/doublechorus/doublechorusmodel.h | 72 + .../plugins/doublechorus/simplechorusmodel.cpp | 157 + .../plugins/doublechorus/simplechorusmodel.h | 96 + muse_qt4_evolution/plugins/freeverb/CMakeLists.txt | 33 + muse_qt4_evolution/plugins/freeverb/allpass.h | 47 + muse_qt4_evolution/plugins/freeverb/comb.h | 63 + muse_qt4_evolution/plugins/freeverb/denormals.h | 38 + muse_qt4_evolution/plugins/freeverb/freeverb.cpp | 166 + muse_qt4_evolution/plugins/freeverb/readme.txt | 147 + muse_qt4_evolution/plugins/freeverb/revmodel.cpp | 232 + muse_qt4_evolution/plugins/freeverb/revmodel.h | 79 + muse_qt4_evolution/plugins/freeverb/tuning.h | 60 + muse_qt4_evolution/plugins/pandelay/CMakeLists.txt | 33 + .../plugins/pandelay/ladspapandelay.cpp | 100 + .../plugins/pandelay/ladspapandelay.h | 55 + muse_qt4_evolution/plugins/pandelay/pandelay.cpp | 170 + .../plugins/pandelay/pandelaymodel.cpp | 154 + .../plugins/pandelay/pandelaymodel.h | 93 + muse_qt4_evolution/share/CMakeLists.txt | 22 + .../share/instruments/Access_Virus.idf | 1045 + .../share/instruments/Alesis-Ion.idf | 731 + .../share/instruments/Alesis-QS-78R.idf | 700 + muse_qt4_evolution/share/instruments/AlesisQS6.idf | 658 + .../share/instruments/CMakeLists.txt | 22 + .../share/instruments/Hammond_XB-1.idf | 88 + muse_qt4_evolution/share/instruments/MC303.idf | 528 + muse_qt4_evolution/share/instruments/MC505.idf | 560 + .../share/instruments/Quasimidi-Sirius.idf | 735 + .../share/instruments/Roland-E28.idf | 320 + .../share/instruments/Roland-JV-1010-All.idf | 1502 + .../share/instruments/Roland-JV-1010-Catagory.idf | 1234 + .../share/instruments/Roland-JV-1010-Country.idf | 297 + .../share/instruments/Roland-JV-1010-Presets.idf | 971 + .../share/instruments/Roland-JV-1010-Session.idf | 326 + .../share/instruments/Roland-SCD70.idf | 1513 + .../share/instruments/Roland-XP30.idf | 1592 + .../share/instruments/Roland_FantomXR.idf | 1419 + .../share/instruments/Roland_SRX-02.idf | 66 + .../share/instruments/Roland_SRX-09.idf | 454 + .../share/instruments/Waldorf_Microwave-I.idf | 141 + .../share/instruments/Yamaha-P50m.idf | 75 + .../share/instruments/Yamaha-P80.idf | 71 + .../share/instruments/Yamaha-PSR275.idf | 585 + .../share/instruments/Yamaha-PSR530.idf | 759 + .../share/instruments/Yamaha-S90.idf | 4304 + .../share/instruments/ZynAdd-1_4.idf | 22 + .../share/instruments/emuproteus2000.idf | 1088 + muse_qt4_evolution/share/instruments/gm.idf | 209 + muse_qt4_evolution/share/instruments/gs.idf | 236 + muse_qt4_evolution/share/instruments/ns5r.idf | 568 + muse_qt4_evolution/share/instruments/xg.idf | 629 + muse_qt4_evolution/share/locale/CMakeLists.txt | 21 + muse_qt4_evolution/share/locale/muse_de.qm | Bin 0 -> 64327 bytes muse_qt4_evolution/share/locale/muse_de.ts | 5804 + muse_qt4_evolution/share/locale/muse_es.qm | Bin 0 -> 53833 bytes muse_qt4_evolution/share/locale/muse_es.ts | 11154 ++ muse_qt4_evolution/share/locale/muse_fr.qm | Bin 0 -> 53135 bytes muse_qt4_evolution/share/locale/muse_fr.ts | 9584 + muse_qt4_evolution/share/locale/muse_ru.qm | Bin 0 -> 50217 bytes muse_qt4_evolution/share/locale/muse_ru.ts | 7823 + muse_qt4_evolution/share/locale/muse_sv_SE.qm | Bin 0 -> 59265 bytes muse_qt4_evolution/share/locale/muse_sv_SE.ts | 12410 ++ muse_qt4_evolution/share/plugins/1050.ui | 297 + muse_qt4_evolution/share/plugins/1436.ui | 1090 + muse_qt4_evolution/share/plugins/2142.ui | 525 + muse_qt4_evolution/share/plugins/CMakeLists.txt | 22 + muse_qt4_evolution/share/templates/CMakeLists.txt | 30 + muse_qt4_evolution/share/templates/audio.med | 395 + muse_qt4_evolution/share/templates/default.med | 132 + muse_qt4_evolution/share/templates/empty.med | 10 + muse_qt4_evolution/share/templates/midiGM.med | 409 + muse_qt4_evolution/share/templates/monorecord.med | 430 + muse_qt4_evolution/share/templates/ns5r.med | 266 + muse_qt4_evolution/share/templates/synti.med | 353 + muse_qt4_evolution/share/wallpapers/CMakeLists.txt | 22 + muse_qt4_evolution/share/wallpapers/gray.gif | Bin 0 -> 6699 bytes muse_qt4_evolution/share/wallpapers/gray_rock.gif | Bin 0 -> 23780 bytes .../share/wallpapers/gray_stucco.gif | Bin 0 -> 20903 bytes muse_qt4_evolution/share/wallpapers/paper1.jpg | Bin 0 -> 1662 bytes muse_qt4_evolution/share/wallpapers/paper2.jpg | Bin 0 -> 1875 bytes muse_qt4_evolution/share/wallpapers/stone1.gif | Bin 0 -> 1252 bytes muse_qt4_evolution/synti/CMakeLists.txt | 42 + muse_qt4_evolution/synti/README | 14 + muse_qt4_evolution/synti/deicsonze/ARCH_ALIN | 24945 +++ muse_qt4_evolution/synti/deicsonze/CMakeLists.txt | 59 + muse_qt4_evolution/synti/deicsonze/README | 57 + muse_qt4_evolution/synti/deicsonze/SutulaBank.dei | 177644 ++++++++++++++++++ muse_qt4_evolution/synti/deicsonze/TODO | 13 + muse_qt4_evolution/synti/deicsonze/deicsonze.cpp | 4356 + muse_qt4_evolution/synti/deicsonze/deicsonze.h | 603 + .../synti/deicsonze/deicsonzefilter.cpp | 67 + .../synti/deicsonze/deicsonzefilter.h | 59 + .../synti/deicsonze/deicsonzegui.cpp | 4545 + muse_qt4_evolution/synti/deicsonze/deicsonzegui.h | 562 + muse_qt4_evolution/synti/deicsonze/deicsonzegui.ui | 10237 + .../synti/deicsonze/deicsonzeplugin.cpp | 499 + .../synti/deicsonze/deicsonzeplugin.h | 40 + .../synti/deicsonze/deicsonzepreset.cpp | 1194 + .../synti/deicsonze/deicsonzepreset.h | 563 + muse_qt4_evolution/synti/deicsonze/pics/SHold.fig | 12 + muse_qt4_evolution/synti/deicsonze/pics/SHold.png | Bin 0 -> 394 bytes muse_qt4_evolution/synti/deicsonze/pics/algo1.fig | 31 + muse_qt4_evolution/synti/deicsonze/pics/algo1.png | Bin 0 -> 1010 bytes muse_qt4_evolution/synti/deicsonze/pics/algo2.fig | 29 + muse_qt4_evolution/synti/deicsonze/pics/algo2.png | Bin 0 -> 1840 bytes muse_qt4_evolution/synti/deicsonze/pics/algo3.fig | 29 + muse_qt4_evolution/synti/deicsonze/pics/algo3.png | Bin 0 -> 1841 bytes muse_qt4_evolution/synti/deicsonze/pics/algo4.fig | 29 + muse_qt4_evolution/synti/deicsonze/pics/algo4.png | Bin 0 -> 1952 bytes muse_qt4_evolution/synti/deicsonze/pics/algo5.fig | 34 + muse_qt4_evolution/synti/deicsonze/pics/algo5.png | Bin 0 -> 1542 bytes muse_qt4_evolution/synti/deicsonze/pics/algo6.fig | 37 + muse_qt4_evolution/synti/deicsonze/pics/algo6.png | Bin 0 -> 1672 bytes muse_qt4_evolution/synti/deicsonze/pics/algo7.fig | 35 + muse_qt4_evolution/synti/deicsonze/pics/algo7.png | Bin 0 -> 1623 bytes muse_qt4_evolution/synti/deicsonze/pics/algo8.fig | 34 + muse_qt4_evolution/synti/deicsonze/pics/algo8.png | Bin 0 -> 1631 bytes muse_qt4_evolution/synti/deicsonze/pics/sawUp.fig | 13 + muse_qt4_evolution/synti/deicsonze/pics/sawUp.png | Bin 0 -> 416 bytes muse_qt4_evolution/synti/deicsonze/pics/square.fig | 14 + muse_qt4_evolution/synti/deicsonze/pics/square.png | Bin 0 -> 354 bytes .../synti/deicsonze/pics/triangl.fig | 13 + .../synti/deicsonze/pics/triangl.png | Bin 0 -> 435 bytes muse_qt4_evolution/synti/deicsonze/pics/wave1.fig | 29 + .../synti/deicsonze/pics/wave1.gnuplot | 2 + muse_qt4_evolution/synti/deicsonze/pics/wave1.png | Bin 0 -> 569 bytes muse_qt4_evolution/synti/deicsonze/pics/wave2.fig | 31 + .../synti/deicsonze/pics/wave2.gnuplot | 2 + muse_qt4_evolution/synti/deicsonze/pics/wave2.png | Bin 0 -> 543 bytes muse_qt4_evolution/synti/deicsonze/pics/wave3.fig | 29 + .../synti/deicsonze/pics/wave3.gnuplot | 2 + muse_qt4_evolution/synti/deicsonze/pics/wave3.png | Bin 0 -> 539 bytes muse_qt4_evolution/synti/deicsonze/pics/wave4.fig | 29 + .../synti/deicsonze/pics/wave4.gnuplot | 2 + muse_qt4_evolution/synti/deicsonze/pics/wave4.png | Bin 0 -> 532 bytes muse_qt4_evolution/synti/deicsonze/pics/wave5.fig | 29 + .../synti/deicsonze/pics/wave5.gnuplot | 2 + muse_qt4_evolution/synti/deicsonze/pics/wave5.png | Bin 0 -> 576 bytes muse_qt4_evolution/synti/deicsonze/pics/wave6.fig | 29 + .../synti/deicsonze/pics/wave6.gnuplot | 2 + muse_qt4_evolution/synti/deicsonze/pics/wave6.png | Bin 0 -> 550 bytes muse_qt4_evolution/synti/deicsonze/pics/wave7.fig | 29 + .../synti/deicsonze/pics/wave7.gnuplot | 2 + muse_qt4_evolution/synti/deicsonze/pics/wave7.png | Bin 0 -> 596 bytes muse_qt4_evolution/synti/deicsonze/pics/wave8.fig | 29 + .../synti/deicsonze/pics/wave8.gnuplot | 2 + muse_qt4_evolution/synti/deicsonze/pics/wave8.png | Bin 0 -> 591 bytes muse_qt4_evolution/synti/fluid/CMakeLists.txt | 50 + muse_qt4_evolution/synti/fluid/fluid.cpp | 518 + muse_qt4_evolution/synti/fluid/fluid.h | 80 + muse_qt4_evolution/synti/fluid/fluidgui.cpp | 68 + muse_qt4_evolution/synti/fluid/fluidgui.h | 31 + muse_qt4_evolution/synti/fluid/fluidgui.ui | 115 + muse_qt4_evolution/synti/fluidsynth/CMakeLists.txt | 51 + muse_qt4_evolution/synti/fluidsynth/README.txt | 45 + muse_qt4_evolution/synti/fluidsynth/TODO | 13 + .../synti/fluidsynth/fluidsynthgui.cpp | 596 + .../synti/fluidsynth/fluidsynthgui.h | 136 + .../synti/fluidsynth/fluidsynthgui.ui | 641 + muse_qt4_evolution/synti/fluidsynth/fluidsynti.cpp | 1174 + muse_qt4_evolution/synti/fluidsynth/fluidsynti.h | 141 + muse_qt4_evolution/synti/libsynti/CMakeLists.txt | 39 + muse_qt4_evolution/synti/libsynti/evdata.h | 66 + muse_qt4_evolution/synti/libsynti/gui.cpp | 124 + muse_qt4_evolution/synti/libsynti/gui.h | 72 + muse_qt4_evolution/synti/libsynti/mess.cpp | 123 + muse_qt4_evolution/synti/libsynti/mess.h | 105 + muse_qt4_evolution/synti/libsynti/mess2.cpp | 128 + muse_qt4_evolution/synti/libsynti/mess2.h | 57 + muse_qt4_evolution/synti/libsynti/midievent.cpp | 21 + muse_qt4_evolution/synti/libsynti/midievent.h | 55 + muse_qt4_evolution/synti/libsynti/mono.cpp | 47 + muse_qt4_evolution/synti/libsynti/mono.h | 47 + muse_qt4_evolution/synti/libsynti/poly.cpp | 35 + muse_qt4_evolution/synti/libsynti/poly.h | 39 + muse_qt4_evolution/synti/mus/CMakeLists.txt | 28 + muse_qt4_evolution/synti/mus/mus.cpp | 276 + muse_qt4_evolution/synti/organ/CMakeLists.txt | 50 + muse_qt4_evolution/synti/organ/organ.cpp | 621 + muse_qt4_evolution/synti/organ/organ.h | 151 + muse_qt4_evolution/synti/organ/organgui.cpp | 184 + muse_qt4_evolution/synti/organ/organgui.h | 48 + muse_qt4_evolution/synti/organ/organgui.ui | 791 + muse_qt4_evolution/synti/organ/reverb.cpp | 163 + muse_qt4_evolution/synti/organ/reverb.h | 204 + muse_qt4_evolution/synti/organ/routing.cpp | 1343 + muse_qt4_evolution/synti/s1/CMakeLists.txt | 34 + muse_qt4_evolution/synti/s1/s1.cpp | 156 + .../synti/simpledrums/CMakeLists.txt | 52 + muse_qt4_evolution/synti/simpledrums/COPYING | 3 + muse_qt4_evolution/synti/simpledrums/README | 43 + .../synti/simpledrums/ReleaseNotes.txt | 18 + muse_qt4_evolution/synti/simpledrums/common.h | 110 + .../synti/simpledrums/simpledrums.cpp | 1719 + muse_qt4_evolution/synti/simpledrums/simpledrums.h | 173 + .../synti/simpledrums/simpledrumsgui.cpp | 881 + .../synti/simpledrums/simpledrumsgui.h | 206 + .../synti/simpledrums/simpledrumsguibase.ui | 23 + muse_qt4_evolution/synti/simpledrums/ssplugin.cpp | 456 + muse_qt4_evolution/synti/simpledrums/ssplugin.h | 171 + .../synti/simpledrums/sspluginchooserbase.ui | 106 + .../synti/simpledrums/ssplugingui.cpp | 530 + muse_qt4_evolution/synti/simpledrums/ssplugingui.h | 198 + muse_qt4_evolution/synti/vam/CMakeLists.txt | 50 + muse_qt4_evolution/synti/vam/COPYING | 340 + muse_qt4_evolution/synti/vam/ChangeLog | 16 + muse_qt4_evolution/synti/vam/README | 42 + muse_qt4_evolution/synti/vam/TODO | 3 + muse_qt4_evolution/synti/vam/vam.cpp | 801 + muse_qt4_evolution/synti/vam/vam.h | 37 + muse_qt4_evolution/synti/vam/vamgui.cpp | 618 + muse_qt4_evolution/synti/vam/vamgui.h | 77 + muse_qt4_evolution/synti/vam/vamgui.ui | 1535 + .../synti/zynaddsubfx/CMakeLists.txt | 100 + muse_qt4_evolution/synti/zynaddsubfx/COPYING | 347 + .../synti/zynaddsubfx/DSP/AnalogFilter.C | 358 + .../synti/zynaddsubfx/DSP/AnalogFilter.h | 72 + .../synti/zynaddsubfx/DSP/FFTwrapper.C | 99 + .../synti/zynaddsubfx/DSP/FFTwrapper.h | 59 + muse_qt4_evolution/synti/zynaddsubfx/DSP/Filter.C | 72 + muse_qt4_evolution/synti/zynaddsubfx/DSP/Filter.h | 51 + muse_qt4_evolution/synti/zynaddsubfx/DSP/Filter_.h | 42 + .../synti/zynaddsubfx/DSP/FormantFilter.C | 163 + .../synti/zynaddsubfx/DSP/FormantFilter.h | 67 + .../synti/zynaddsubfx/DSP/SVFilter.C | 152 + .../synti/zynaddsubfx/DSP/SVFilter.h | 67 + .../synti/zynaddsubfx/Effects/Alienwah.C | 244 + .../synti/zynaddsubfx/Effects/Alienwah.h | 77 + .../synti/zynaddsubfx/Effects/Chorus.C | 277 + .../synti/zynaddsubfx/Effects/Chorus.h | 73 + .../synti/zynaddsubfx/Effects/Distorsion.C | 384 + .../synti/zynaddsubfx/Effects/Distorsion.h | 73 + .../synti/zynaddsubfx/Effects/DynamicFilter.C | 318 + .../synti/zynaddsubfx/Effects/DynamicFilter.h | 72 + muse_qt4_evolution/synti/zynaddsubfx/Effects/EQ.C | 198 + muse_qt4_evolution/synti/zynaddsubfx/Effects/EQ.h | 58 + .../synti/zynaddsubfx/Effects/Echo.C | 240 + .../synti/zynaddsubfx/Effects/Echo.h | 71 + .../synti/zynaddsubfx/Effects/Effect.C | 24 + .../synti/zynaddsubfx/Effects/Effect.h | 61 + .../synti/zynaddsubfx/Effects/EffectLFO.C | 110 + .../synti/zynaddsubfx/Effects/EffectLFO.h | 50 + .../synti/zynaddsubfx/Effects/EffectMgr.C | 292 + .../synti/zynaddsubfx/Effects/EffectMgr.h | 87 + .../synti/zynaddsubfx/Effects/Phaser.C | 260 + .../synti/zynaddsubfx/Effects/Phaser.h | 70 + .../synti/zynaddsubfx/Effects/Reverb.C | 438 + .../synti/zynaddsubfx/Effects/Reverb.h | 127 + .../synti/zynaddsubfx/Input/ALSAMidiIn.C | 96 + .../synti/zynaddsubfx/Input/ALSAMidiIn.h | 42 + .../synti/zynaddsubfx/Input/MidiIn.C | 73 + .../synti/zynaddsubfx/Input/MidiIn.h | 42 + .../synti/zynaddsubfx/Input/NULLMidiIn.C | 43 + .../synti/zynaddsubfx/Input/NULLMidiIn.h | 40 + .../synti/zynaddsubfx/Input/OSSMidiIn.C | 115 + .../synti/zynaddsubfx/Input/OSSMidiIn.h | 48 + .../synti/zynaddsubfx/Input/WINMidiIn.C | 83 + .../synti/zynaddsubfx/Input/WINMidiIn.h | 34 + muse_qt4_evolution/synti/zynaddsubfx/Misc/Bank.C | 565 + muse_qt4_evolution/synti/zynaddsubfx/Misc/Bank.h | 100 + muse_qt4_evolution/synti/zynaddsubfx/Misc/Config.C | 303 + muse_qt4_evolution/synti/zynaddsubfx/Misc/Config.h | 67 + muse_qt4_evolution/synti/zynaddsubfx/Misc/Dump.C | 99 + muse_qt4_evolution/synti/zynaddsubfx/Misc/Dump.h | 43 + muse_qt4_evolution/synti/zynaddsubfx/Misc/Master.C | 680 + muse_qt4_evolution/synti/zynaddsubfx/Misc/Master.h | 167 + .../synti/zynaddsubfx/Misc/Microtonal.C | 514 + .../synti/zynaddsubfx/Misc/Microtonal.h | 111 + muse_qt4_evolution/synti/zynaddsubfx/Misc/Part.C | 881 + muse_qt4_evolution/synti/zynaddsubfx/Misc/Part.h | 176 + muse_qt4_evolution/synti/zynaddsubfx/Misc/Util.C | 112 + muse_qt4_evolution/synti/zynaddsubfx/Misc/Util.h | 45 + .../synti/zynaddsubfx/Misc/XMLwrapper.C | 533 + .../synti/zynaddsubfx/Misc/XMLwrapper.h | 175 + .../synti/zynaddsubfx/Output/Recorder.C | 138 + .../synti/zynaddsubfx/Output/Recorder.h | 52 + .../synti/zynaddsubfx/Params/ADnoteParameters.C | 637 + .../synti/zynaddsubfx/Params/ADnoteParameters.h | 282 + .../synti/zynaddsubfx/Params/Controller.C | 300 + .../synti/zynaddsubfx/Params/Controller.h | 179 + .../synti/zynaddsubfx/Params/EnvelopeParams.C | 227 + .../synti/zynaddsubfx/Params/EnvelopeParams.h | 86 + .../synti/zynaddsubfx/Params/FilterParams.C | 344 + .../synti/zynaddsubfx/Params/FilterParams.h | 100 + .../synti/zynaddsubfx/Params/LFOParams.C | 91 + .../synti/zynaddsubfx/Params/LFOParams.h | 64 + .../synti/zynaddsubfx/Params/PADnoteParameters.C | 742 + .../synti/zynaddsubfx/Params/PADnoteParameters.h | 169 + .../synti/zynaddsubfx/Params/Presets.C | 129 + .../synti/zynaddsubfx/Params/Presets.h | 58 + .../synti/zynaddsubfx/Params/PresetsStore.C | 181 + .../synti/zynaddsubfx/Params/PresetsStore.h | 63 + .../synti/zynaddsubfx/Params/SUBnoteParameters.C | 238 + .../synti/zynaddsubfx/Params/SUBnoteParameters.h | 105 + .../synti/zynaddsubfx/Seq/MIDIEvents.C | 85 + .../synti/zynaddsubfx/Seq/MIDIEvents.h | 66 + .../synti/zynaddsubfx/Seq/MIDIFile.C | 389 + .../synti/zynaddsubfx/Seq/MIDIFile.h | 90 + .../synti/zynaddsubfx/Seq/Sequencer.C | 165 + .../synti/zynaddsubfx/Seq/Sequencer.h | 84 + .../synti/zynaddsubfx/Synth/ADnote.C | 984 + .../synti/zynaddsubfx/Synth/ADnote.h | 258 + .../synti/zynaddsubfx/Synth/Envelope.C | 165 + .../synti/zynaddsubfx/Synth/Envelope.h | 58 + muse_qt4_evolution/synti/zynaddsubfx/Synth/LFO.C | 145 + muse_qt4_evolution/synti/zynaddsubfx/Synth/LFO.h | 52 + .../synti/zynaddsubfx/Synth/OscilGen.C | 1182 + .../synti/zynaddsubfx/Synth/OscilGen.h | 176 + .../synti/zynaddsubfx/Synth/PADnote.C | 342 + .../synti/zynaddsubfx/Synth/PADnote.h | 106 + .../synti/zynaddsubfx/Synth/Resonance.C | 231 + .../synti/zynaddsubfx/Synth/Resonance.h | 68 + .../synti/zynaddsubfx/Synth/SUBnote.C | 419 + .../synti/zynaddsubfx/Synth/SUBnote.h | 98 + .../synti/zynaddsubfx/UI/ADnoteUI.fl | 1107 + muse_qt4_evolution/synti/zynaddsubfx/UI/BankUI.fl | 352 + .../synti/zynaddsubfx/UI/CMakeLists.txt | 54 + .../synti/zynaddsubfx/UI/ConfigUI.fl | 443 + muse_qt4_evolution/synti/zynaddsubfx/UI/EffUI.fl | 2310 + .../synti/zynaddsubfx/UI/EnvelopeUI.fl | 851 + .../synti/zynaddsubfx/UI/FilterUI.fl | 624 + muse_qt4_evolution/synti/zynaddsubfx/UI/LFOUI.fl | 176 + .../synti/zynaddsubfx/UI/MasterUI.fl | 1798 + .../synti/zynaddsubfx/UI/MicrotonalUI.fl | 270 + .../synti/zynaddsubfx/UI/OscilGenUI.fl | 1131 + .../synti/zynaddsubfx/UI/PADnoteUI.fl | 1086 + muse_qt4_evolution/synti/zynaddsubfx/UI/PartUI.fl | 1086 + .../synti/zynaddsubfx/UI/PresetsUI.fl | 200 + .../synti/zynaddsubfx/UI/ResonanceUI.fl | 392 + .../synti/zynaddsubfx/UI/SUBnoteUI.fl | 449 + muse_qt4_evolution/synti/zynaddsubfx/UI/SeqUI.fl | 73 + .../synti/zynaddsubfx/UI/VirKeyboard.fl | 400 + .../synti/zynaddsubfx/UI/WidgetPDial.fl | 131 + .../zynaddsubfx/banks/Arpeggios/0001-Arpeggio1.xiz | Bin 0 -> 2199 bytes .../zynaddsubfx/banks/Arpeggios/0002-Arpeggio2.xiz | Bin 0 -> 1984 bytes .../zynaddsubfx/banks/Arpeggios/0003-Arpeggio3.xiz | Bin 0 -> 2015 bytes .../zynaddsubfx/banks/Arpeggios/0004-Arpeggio4.xiz | Bin 0 -> 2300 bytes .../zynaddsubfx/banks/Arpeggios/0005-Arpeggio5.xiz | Bin 0 -> 2125 bytes .../zynaddsubfx/banks/Arpeggios/0006-Aporggio6.xiz | Bin 0 -> 2287 bytes .../zynaddsubfx/banks/Arpeggios/0007-Arpeggio7.xiz | Bin 0 -> 3361 bytes .../zynaddsubfx/banks/Arpeggios/0008-Arpeggio8.xiz | Bin 0 -> 2077 bytes .../zynaddsubfx/banks/Arpeggios/0009-Arpeggio9.xiz | Bin 0 -> 2245 bytes .../banks/Arpeggios/0010-Arpeggio10.xiz | Bin 0 -> 2093 bytes .../banks/Arpeggios/0011-Arpeggio11.xiz | Bin 0 -> 2142 bytes .../zynaddsubfx/banks/Arpeggios/0033-Sequence1.xiz | Bin 0 -> 1958 bytes .../zynaddsubfx/banks/Arpeggios/0034-Sequence2.xiz | Bin 0 -> 2148 bytes .../banks/Arpeggios/0036-Echoed Synth.xiz | Bin 0 -> 2109 bytes .../zynaddsubfx/banks/Arpeggios/0037-Echo FX.xiz | Bin 0 -> 1986 bytes .../banks/Arpeggios/0039-Soft Arpeggio1.xiz | Bin 0 -> 2135 bytes .../banks/Arpeggios/0040-Soft Arpeggio2.xiz | Bin 0 -> 2093 bytes .../banks/Arpeggios/0041-Soft Arpeggio3.xiz | Bin 0 -> 1987 bytes .../banks/Arpeggios/0042-Soft Arpeggio4.xiz | Bin 0 -> 2183 bytes .../banks/Arpeggios/0043-Soft Arpeggio5.xiz | Bin 0 -> 2131 bytes .../banks/Arpeggios/0065-Hyper Organ1.xiz | Bin 0 -> 2247 bytes .../banks/Arpeggios/0066-Hyper Arpeggio.xiz | Bin 0 -> 1976 bytes .../banks/Arpeggios/0068-Glass Arpeggio.xiz | Bin 0 -> 2165 bytes .../synti/zynaddsubfx/banks/Bass/0001-Bass 1.xiz | Bin 0 -> 1758 bytes .../synti/zynaddsubfx/banks/Bass/0002-Bass 2.xiz | Bin 0 -> 1843 bytes .../banks/Bass/0003-Bass 3 _analog_.xiz | Bin 0 -> 3124 bytes .../synti/zynaddsubfx/banks/Bass/0004-Bass 4.xiz | Bin 0 -> 1838 bytes .../synti/zynaddsubfx/banks/Bass/0005-Bass 5.xiz | Bin 0 -> 1774 bytes .../zynaddsubfx/banks/Bass/0006-Analogue Bass.xiz | Bin 0 -> 1832 bytes .../synti/zynaddsubfx/banks/Bass/0033-Wah Bass.xiz | Bin 0 -> 1824 bytes .../zynaddsubfx/banks/Bass/0035-FM Bass 1.xiz | Bin 0 -> 2001 bytes .../zynaddsubfx/banks/Bass/0036-FM Bass 2.xiz | Bin 0 -> 2031 bytes .../zynaddsubfx/banks/Brass/0001-FM Thrumpet.xiz | Bin 0 -> 2098 bytes .../zynaddsubfx/banks/Brass/0003-Synth Brazz 1.xiz | Bin 0 -> 1950 bytes .../zynaddsubfx/banks/Brass/0004-Synth Brazz 2.xiz | Bin 0 -> 2018 bytes .../zynaddsubfx/banks/Brass/0005-Synth Brass 3.xiz | Bin 0 -> 2158 bytes .../zynaddsubfx/banks/Brass/0006-Synth Brass 4.xiz | Bin 0 -> 2236 bytes .../zynaddsubfx/banks/Brass/0007-Synth Brass 5.xiz | Bin 0 -> 2337 bytes .../zynaddsubfx/banks/Brass/0008-Brass Pad.xiz | Bin 0 -> 1855 bytes .../zynaddsubfx/banks/Brass/0009-Wah Brass.xiz | Bin 0 -> 1904 bytes .../zynaddsubfx/banks/Brass/0010-Solo Synth1.xiz | Bin 0 -> 1777 bytes .../synti/zynaddsubfx/banks/Brass/0011-Brazz 1.xiz | Bin 0 -> 2108 bytes .../synti/zynaddsubfx/banks/Brass/0012-Brazz 2.xiz | Bin 0 -> 2400 bytes .../banks/Brass/0033-Analog Brass 1.xiz | Bin 0 -> 1767 bytes .../banks/Brass/0034-Analog Brass 2.xiz | Bin 0 -> 1810 bytes .../banks/Brass/0035-Analog Brass 3.xiz | Bin 0 -> 2149 bytes .../banks/Brass/0036-Analog Brass 4.xiz | Bin 0 -> 2128 bytes .../zynaddsubfx/banks/Brass/0065-Simple Brass.xiz | Bin 0 -> 1806 bytes .../zynaddsubfx/banks/Brass/0066-Fat Brass.xiz | Bin 0 -> 2114 bytes .../banks/Choir and Voice/0001-AHH Choir 1.xiz | Bin 0 -> 3771 bytes .../banks/Choir and Voice/0002-AHH Choir 2.xiz | Bin 0 -> 3823 bytes .../banks/Choir and Voice/0003-EHH Choir 1.xiz | Bin 0 -> 3746 bytes .../banks/Choir and Voice/0004-Voice OOH.xiz | Bin 0 -> 2134 bytes .../banks/Choir and Voice/0005-Choir Pad1.xiz | Bin 0 -> 1738 bytes .../banks/Choir and Voice/0006-Choir Pad2.xiz | Bin 0 -> 1744 bytes .../banks/Choir and Voice/0007-Choir Pad3.xiz | Bin 0 -> 3571 bytes .../banks/Choir and Voice/0008-Choir Pad4.xiz | Bin 0 -> 1725 bytes .../banks/Choir and Voice/0009-Choir Pad5.xiz | Bin 0 -> 1072 bytes .../banks/Choir and Voice/0010-Choir Pad6.xiz | Bin 0 -> 1723 bytes .../banks/Choir and Voice/0033-Choir.xiz | Bin 0 -> 1008 bytes .../Choir and Voice/0034-Slow Morph_Choir.xiz | Bin 0 -> 1088 bytes .../banks/Choir and Voice/0035-Wah Choir.xiz | Bin 0 -> 1159 bytes .../banks/Choir and Voice/0036-Eooooo.xiz | Bin 0 -> 1893 bytes .../banks/Choir and Voice/0037-Voiced Synth.xiz | Bin 0 -> 3428 bytes .../banks/Choir and Voice/0039-Ohh Choir.xiz | Bin 0 -> 1716 bytes .../banks/Choir and Voice/0065-Vocal Morph 1.xiz | Bin 0 -> 2763 bytes .../banks/Choir and Voice/0066-Vocal Morph 2.xiz | Bin 0 -> 2692 bytes .../banks/Choir and Voice/0067-Vocal Morph 3.xiz | Bin 0 -> 2774 bytes .../banks/Choir and Voice/0068-Vocal Morph 4.xiz | Bin 0 -> 2792 bytes .../banks/Choir and Voice/0069-Vocal Morph 5.xiz | Bin 0 -> 2869 bytes .../banks/Choir and Voice/0070-Vocal Morph 6.xiz | Bin 0 -> 2668 bytes .../banks/Choir and Voice/0071-Vocal Morph 7.xiz | Bin 0 -> 3102 bytes .../zynaddsubfx/banks/Drums/0001-Drums Kit1.xiz | Bin 0 -> 4765 bytes .../synti/zynaddsubfx/banks/Dual/.qped | 21 + .../synti/zynaddsubfx/banks/Dual/0001-Layered1.xiz | Bin 0 -> 5615 bytes .../synti/zynaddsubfx/banks/Dual/0002-Layered2.xiz | Bin 0 -> 3015 bytes .../zynaddsubfx/banks/Dual/0005-Organ and Saw.xiz | Bin 0 -> 2112 bytes .../banks/Dual/0007-Organ Choir Pad1.xiz | Bin 0 -> 3642 bytes .../banks/Dual/0008-Organ Choir Pad2.xiz | Bin 0 -> 2264 bytes .../banks/Dual/0033-Rhodes Strings1.xiz | Bin 0 -> 2795 bytes .../banks/Dual/0034-Rhodes Strings2.xiz | Bin 0 -> 3096 bytes .../banks/Dual/0035-Rhodes Strings3.xiz | Bin 0 -> 4909 bytes .../banks/Dual/0036-Rhodes Strings4.xiz | Bin 0 -> 2711 bytes .../banks/Dual/0065-Dream of the Saw.xiz | Bin 0 -> 2348 bytes .../zynaddsubfx/banks/Fantasy/0001-Emptyness1.xiz | Bin 0 -> 1814 bytes .../zynaddsubfx/banks/Fantasy/0002-Emptyness2.xiz | Bin 0 -> 1830 bytes .../zynaddsubfx/banks/Fantasy/0003-Space Synth.xiz | Bin 0 -> 2146 bytes .../zynaddsubfx/banks/Fantasy/0004-Weird Pad.xiz | Bin 0 -> 1332 bytes .../banks/Fantasy/0006-Space SynthBrass.xiz | Bin 0 -> 2326 bytes .../banks/Fantasy/0008-Space Voice1.xiz | Bin 0 -> 3058 bytes .../banks/Fantasy/0009-Space Voice2.xiz | Bin 0 -> 3199 bytes .../banks/Fantasy/0010-Space Voice3.xiz | Bin 0 -> 2501 bytes .../banks/Fantasy/0011-Space Choir1.xiz | Bin 0 -> 1839 bytes .../banks/Fantasy/0012-Space Choir2.xiz | Bin 0 -> 1796 bytes .../banks/Fantasy/0014-Glass Voices.xiz | Bin 0 -> 1268 bytes .../banks/Fantasy/0015-Strange Voice.xiz | Bin 0 -> 1980 bytes .../banks/Fantasy/0033-ImpossibleDream1.xiz | Bin 0 -> 2575 bytes .../banks/Fantasy/0034-ImpossibleDream2.xiz | Bin 0 -> 3215 bytes .../banks/Fantasy/0035-ImpossibleDream3.xiz | Bin 0 -> 2774 bytes .../banks/Fantasy/0036-ImpossibleDream4.xiz | Bin 0 -> 2492 bytes .../banks/Fantasy/0037-ImpossibleDream5.xiz | Bin 0 -> 2647 bytes .../banks/Fantasy/0040-Delayed Echo.xiz | Bin 0 -> 2383 bytes .../banks/Fantasy/0041-Fade Down Echo.xiz | Bin 0 -> 2400 bytes .../banks/Fantasy/0042-Rhodes Space1.xiz | Bin 0 -> 2960 bytes .../banks/Fantasy/0043-Rhodes Space2.xiz | Bin 0 -> 2973 bytes .../banks/Fantasy/0065-Long SpaceChoir1.xiz | Bin 0 -> 3468 bytes .../banks/Fantasy/0066-Long SpaceChoir2.xiz | Bin 0 -> 1881 bytes .../banks/Guitar/0001-Dist Guitar 1.xiz | Bin 0 -> 2183 bytes .../banks/Guitar/0002-Dist Guitar 2.xiz | Bin 0 -> 2373 bytes .../banks/Guitar/0003-Dist Guitar 3.xiz | Bin 0 -> 2387 bytes .../banks/Guitar/0004-Dist Guitar 4.xiz | Bin 0 -> 2415 bytes .../banks/Guitar/0005-Dist Guitar 5.xiz | Bin 0 -> 2521 bytes .../banks/Guitar/0033-Trash Guitar 1.xiz | Bin 0 -> 2407 bytes .../banks/Guitar/0034-Trash Guitar 2.xiz | Bin 0 -> 2458 bytes .../synti/zynaddsubfx/banks/Guitar/0035-Short.xiz | Bin 0 -> 2332 bytes .../banks/Guitar/0065-Clean Guitar1.xiz | Bin 0 -> 2009 bytes .../synti/zynaddsubfx/banks/Misc/0001-Memories.xiz | Bin 0 -> 2329 bytes .../synti/zynaddsubfx/banks/Misc/0002-Bells 1.xiz | Bin 0 -> 1778 bytes .../synti/zynaddsubfx/banks/Misc/0003-Bells 2.xiz | Bin 0 -> 1797 bytes .../synti/zynaddsubfx/banks/Misc/0004-Bells 3.xiz | Bin 0 -> 1777 bytes .../zynaddsubfx/banks/Misc/0006-SuperSaw 1.xiz | Bin 0 -> 2020 bytes .../zynaddsubfx/banks/Misc/0007-SuperSaw 2.xiz | Bin 0 -> 2094 bytes .../zynaddsubfx/banks/Misc/0008-SuperSaw 3.xiz | Bin 0 -> 2035 bytes .../zynaddsubfx/banks/Misc/0009-SuperSaw 4.xiz | Bin 0 -> 2152 bytes .../zynaddsubfx/banks/Misc/0010-SuperSaw 5.xiz | Bin 0 -> 1753 bytes .../zynaddsubfx/banks/Misc/0033-Trash Synth 1.xiz | Bin 0 -> 2104 bytes .../zynaddsubfx/banks/Misc/0034-Trash Synth 2.xiz | Bin 0 -> 2179 bytes .../zynaddsubfx/banks/Misc/0035-Trash Synth 3.xiz | Bin 0 -> 2175 bytes .../zynaddsubfx/banks/Noises/0001-Synth Effect.xiz | Bin 0 -> 2032 bytes .../zynaddsubfx/banks/Noises/0002-Ioioioioioi.xiz | Bin 0 -> 2179 bytes .../synti/zynaddsubfx/banks/Noises/0003-Noise1.xiz | Bin 0 -> 1030 bytes .../synti/zynaddsubfx/banks/Noises/0004-Noise2.xiz | Bin 0 -> 2896 bytes .../synti/zynaddsubfx/banks/Noises/0006-Wind.xiz | Bin 0 -> 1030 bytes .../banks/Noises/0033-Metal Sound 1.xiz | Bin 0 -> 1737 bytes .../banks/Noises/0034-Metal Sound 2.xiz | Bin 0 -> 1763 bytes .../banks/Noises/0035-Metal Sound 3.xiz | Bin 0 -> 1814 bytes .../banks/Noises/0037-Metal Sound 4.xiz | Bin 0 -> 1743 bytes .../banks/Noises/0038-Metal Sound 5.xiz | Bin 0 -> 1847 bytes .../zynaddsubfx/banks/Noises/0065-Short noise.xiz | Bin 0 -> 1800 bytes .../synti/zynaddsubfx/banks/Organ/0001-Organ 1.xiz | Bin 0 -> 1948 bytes .../synti/zynaddsubfx/banks/Organ/0002-Organ 2.xiz | Bin 0 -> 2050 bytes .../synti/zynaddsubfx/banks/Organ/0003-Organ 3.xiz | Bin 0 -> 2145 bytes .../synti/zynaddsubfx/banks/Organ/0004-Organ 4.xiz | Bin 0 -> 1935 bytes .../synti/zynaddsubfx/banks/Organ/0005-Organ 5.xiz | Bin 0 -> 1941 bytes .../synti/zynaddsubfx/banks/Organ/0006-Organ 6.xiz | Bin 0 -> 2053 bytes .../synti/zynaddsubfx/banks/Organ/0007-Organ 7.xiz | Bin 0 -> 2078 bytes .../synti/zynaddsubfx/banks/Organ/0008-Organ 8.xiz | Bin 0 -> 3466 bytes .../synti/zynaddsubfx/banks/Organ/0009-Organ 9.xiz | Bin 0 -> 1932 bytes .../zynaddsubfx/banks/Organ/0010-Organ 10.xiz | Bin 0 -> 1926 bytes .../zynaddsubfx/banks/Organ/0011-Organ 11.xiz | Bin 0 -> 2060 bytes .../banks/Organ/0033-Cathedral Organ1.xiz | Bin 0 -> 2029 bytes .../banks/Organ/0034-Cathedral Organ2.xiz | Bin 0 -> 2116 bytes .../banks/Organ/0035-Cathedral Organ3.xiz | Bin 0 -> 1991 bytes .../banks/Organ/0037-Church Organ 1.xiz | Bin 0 -> 1748 bytes .../banks/Organ/0038-Church Organ 2.xiz | Bin 0 -> 3212 bytes .../banks/Organ/0039-Church Organ 3.xiz | Bin 0 -> 1979 bytes .../banks/Organ/0041-Church Organ Soft.xiz | Bin 0 -> 1849 bytes .../zynaddsubfx/banks/Organ/0065-Nice Organ 1.xiz | Bin 0 -> 1839 bytes .../zynaddsubfx/banks/Organ/0066-Nice Organ 2.xiz | Bin 0 -> 1942 bytes .../zynaddsubfx/banks/Organ/0067-Sub_Organ.xiz | Bin 0 -> 988 bytes .../zynaddsubfx/banks/Organ/0068-Square Organ.xiz | Bin 0 -> 1898 bytes .../zynaddsubfx/banks/Organ/0069-Soft Organ 1.xiz | Bin 0 -> 1935 bytes .../zynaddsubfx/banks/Organ/0070-Soft Organ 2.xiz | Bin 0 -> 1932 bytes .../zynaddsubfx/banks/Organ/0071-Synth Organ.xiz | Bin 0 -> 2138 bytes .../zynaddsubfx/banks/Organ/0072-Fantasy Organ.xiz | Bin 0 -> 2372 bytes .../banks/Organ/0097-Accordion Pad 1.xiz | Bin 0 -> 3337 bytes .../banks/Organ/0098-Accordion Pad 2.xiz | Bin 0 -> 1991 bytes .../banks/Organ/0099-Synth Accordion1.xiz | Bin 0 -> 1894 bytes .../banks/Organ/0100-Synth Accordion2.xiz | Bin 0 -> 2075 bytes .../zynaddsubfx/banks/Organ/0101-Accordion 1.xiz | Bin 0 -> 2134 bytes .../synti/zynaddsubfx/banks/Pads/0001-Sine Pad.xiz | Bin 0 -> 971 bytes .../zynaddsubfx/banks/Pads/0002-sin2x pad.xiz | Bin 0 -> 1742 bytes .../zynaddsubfx/banks/Pads/0003-Analog Pad 1.xiz | Bin 0 -> 1794 bytes .../zynaddsubfx/banks/Pads/0004-Analog Pad 2.xiz | Bin 0 -> 6572 bytes .../zynaddsubfx/banks/Pads/0005-Square Pad 1.xiz | Bin 0 -> 1876 bytes .../zynaddsubfx/banks/Pads/0006-Square Pad 2.xiz | Bin 0 -> 1943 bytes .../zynaddsubfx/banks/Pads/0008-Resonance Pad1.xiz | Bin 0 -> 1941 bytes .../zynaddsubfx/banks/Pads/0009-Resonance Pad2.xiz | Bin 0 -> 2207 bytes .../zynaddsubfx/banks/Pads/0033-Synth Pad 1.xiz | Bin 0 -> 1744 bytes .../zynaddsubfx/banks/Pads/0034-Synth Pad 2.xiz | Bin 0 -> 1757 bytes .../zynaddsubfx/banks/Pads/0035-Synth Pad 3.xiz | Bin 0 -> 1731 bytes .../zynaddsubfx/banks/Pads/0036-Synth Pad 4.xiz | Bin 0 -> 3172 bytes .../synti/zynaddsubfx/banks/Pads/0065-Soft Pad.xiz | Bin 0 -> 1734 bytes .../zynaddsubfx/banks/Pads/0066-Flanged Pad 1.xiz | Bin 0 -> 1828 bytes .../zynaddsubfx/banks/Plucked/0001-Plucked 1.xiz | Bin 0 -> 2017 bytes .../zynaddsubfx/banks/Plucked/0002-Plucked 2.xiz | Bin 0 -> 2173 bytes .../zynaddsubfx/banks/Plucked/0003-Plucked 3.xiz | Bin 0 -> 1839 bytes .../zynaddsubfx/banks/Plucked/0004-Plucked 4.xiz | Bin 0 -> 3443 bytes .../zynaddsubfx/banks/Plucked/0005-Plucked 5.xiz | Bin 0 -> 2147 bytes .../zynaddsubfx/banks/Plucked/0006-Plucked 6.xiz | Bin 0 -> 3441 bytes .../banks/Plucked/0033-Plucked String1.xiz | Bin 0 -> 3539 bytes .../banks/Plucked/0034-Plucked String2.xiz | Bin 0 -> 3551 bytes .../zynaddsubfx/banks/Plucked/0036-Plucked Wah.xiz | Bin 0 -> 2389 bytes .../banks/Reed and Wind/0001-Flute 1.xiz | Bin 0 -> 1688 bytes .../banks/Reed and Wind/0002-Flute 2.xiz | Bin 0 -> 2794 bytes .../banks/Reed and Wind/0003-Flute 3.xiz | Bin 0 -> 2798 bytes .../banks/Reed and Wind/0005-FM Reed.xiz | Bin 0 -> 1899 bytes .../banks/Reed and Wind/0006-Clarinet.xiz | Bin 0 -> 3290 bytes .../banks/Reed and Wind/0007-Breathy1.xiz | Bin 0 -> 3369 bytes .../banks/Reed and Wind/0033-Reed 1.xiz | Bin 0 -> 3250 bytes .../banks/Reed and Wind/0034-Reed 2.xiz | Bin 0 -> 3283 bytes .../banks/Reed and Wind/0035-Reed 3.xiz | Bin 0 -> 3193 bytes .../banks/Reed and Wind/0036-Reed 4.xiz | Bin 0 -> 3299 bytes .../banks/Reed and Wind/0037-Reed 5.xiz | Bin 0 -> 3276 bytes .../banks/Reed and Wind/0038-Reed 6.xiz | Bin 0 -> 3290 bytes .../banks/Reed and Wind/0039-Reed 7.xiz | Bin 0 -> 1806 bytes .../banks/Reed and Wind/0065-Fat Reed1.xiz | Bin 0 -> 1854 bytes .../banks/Reed and Wind/0066-Fat Reed2.xiz | Bin 0 -> 3618 bytes .../banks/Reed and Wind/0067-Fat Reed3 square.xiz | Bin 0 -> 3549 bytes .../zynaddsubfx/banks/Rhodes/0001-DX Rhodes 1.xiz | Bin 0 -> 2130 bytes .../zynaddsubfx/banks/Rhodes/0002-DX Rhodes 2.xiz | Bin 0 -> 2104 bytes .../zynaddsubfx/banks/Rhodes/0003-DX Rhodes 3.xiz | Bin 0 -> 2274 bytes .../zynaddsubfx/banks/Rhodes/0004-DX Rhodes 4.xiz | Bin 0 -> 2132 bytes .../zynaddsubfx/banks/Rhodes/0005-DX Rhodes 5.xiz | Bin 0 -> 2147 bytes .../zynaddsubfx/banks/Rhodes/0007-Dig Rhodes.xiz | Bin 0 -> 2337 bytes .../banks/Rhodes/0008-Synth Rhodes1.xiz | Bin 0 -> 2157 bytes .../banks/Rhodes/0009-Synth Rhodes2.xiz | Bin 0 -> 1991 bytes .../banks/Rhodes/0010-Synth Rhodes3.xiz | Bin 0 -> 2410 bytes .../zynaddsubfx/banks/Rhodes/0012-Ice Rhodes1.xiz | Bin 0 -> 2128 bytes .../zynaddsubfx/banks/Rhodes/0013-Ice Rhodes2.xiz | Bin 0 -> 2129 bytes .../zynaddsubfx/banks/Rhodes/0014-Ice Rhodes3.xiz | Bin 0 -> 2160 bytes .../zynaddsubfx/banks/Rhodes/0033-FM Rhodes 1.xiz | Bin 0 -> 2212 bytes .../zynaddsubfx/banks/Rhodes/0034-FM Rhodes 2.xiz | Bin 0 -> 2111 bytes .../zynaddsubfx/banks/Rhodes/0035-FM Rhodes 3.xiz | Bin 0 -> 2139 bytes .../zynaddsubfx/banks/Rhodes/0036-FM Rhodes 4.xiz | Bin 0 -> 2473 bytes .../zynaddsubfx/banks/Rhodes/0037-FM Rhodes 5.xiz | Bin 0 -> 2164 bytes .../zynaddsubfx/banks/Rhodes/0038-FM Rhodes 6.xiz | Bin 0 -> 2082 bytes .../zynaddsubfx/banks/Rhodes/0041-Soft Rhodes.xiz | Bin 0 -> 2271 bytes .../zynaddsubfx/banks/Rhodes/0042-Hard Rhodes1.xiz | Bin 0 -> 2550 bytes .../zynaddsubfx/banks/Rhodes/0043-Hard Rhodes2.xiz | Bin 0 -> 2133 bytes .../zynaddsubfx/banks/Rhodes/0044-Echo Rhodes.xiz | Bin 0 -> 2406 bytes .../banks/Rhodes/0045-A long time ago.xiz | Bin 0 -> 2313 bytes .../zynaddsubfx/banks/Rhodes/0065-Steel Rhodes.xiz | Bin 0 -> 2513 bytes .../banks/Splited/0001-Strings and Reed1.xiz | Bin 0 -> 4170 bytes .../banks/Splited/0002-Strings and Reed2.xiz | Bin 0 -> 4202 bytes .../banks/Splited/0003-Strings and Flute.xiz | Bin 0 -> 3368 bytes .../banks/Splited/0033-Choir and Reed.xiz | Bin 0 -> 5546 bytes .../banks/Strings/0001-Saw Strings 1.xiz | Bin 0 -> 1931 bytes .../banks/Strings/0002-Saw Strings 2.xiz | Bin 0 -> 2083 bytes .../banks/Strings/0003-Saw Strings 3.xiz | Bin 0 -> 2030 bytes .../banks/Strings/0004-Saw Strings 4.xiz | Bin 0 -> 2191 bytes .../banks/Strings/0005-Saw Strings 5.xiz | Bin 0 -> 1983 bytes .../banks/Strings/0006-Saw Strings 6.xiz | Bin 0 -> 2072 bytes .../banks/Strings/0007-Saw Strings 7.xiz | Bin 0 -> 1981 bytes .../banks/Strings/0008-Saw Strings 8.xiz | Bin 0 -> 2002 bytes .../banks/Strings/0011-Strings Pad1.xiz | Bin 0 -> 1716 bytes .../banks/Strings/0012-Strings Pad2.xiz | Bin 0 -> 1726 bytes .../banks/Strings/0013-Strings Pad3.xiz | Bin 0 -> 1726 bytes .../zynaddsubfx/banks/Strings/0016-Sweep Pad 1.xiz | Bin 0 -> 1738 bytes .../banks/Strings/0017-Sweep Pad 1 Fat.xiz | Bin 0 -> 1742 bytes .../zynaddsubfx/banks/Strings/0018-Sweep Pad 2.xiz | Bin 0 -> 1757 bytes .../banks/Strings/0019-Sweep Pad 3Wah.xiz | Bin 0 -> 1712 bytes .../zynaddsubfx/banks/Strings/0020-Sweep Pad 4.xiz | Bin 0 -> 1723 bytes .../zynaddsubfx/banks/Strings/0033-Strings1.xiz | Bin 0 -> 2211 bytes .../banks/Strings/0034-Dark Strings.xiz | Bin 0 -> 1977 bytes .../zynaddsubfx/banks/Strings/0035-Octave Pad.xiz | Bin 0 -> 2281 bytes .../zynaddsubfx/banks/Strings/0036-Fast Attack.xiz | Bin 0 -> 2258 bytes .../zynaddsubfx/banks/Strings/0038-Fat Saw.xiz | Bin 0 -> 2051 bytes .../synti/zynaddsubfx/banks/Strings/0041-Saw 1.xiz | Bin 0 -> 1824 bytes .../synti/zynaddsubfx/banks/Strings/0042-Saw 2.xiz | Bin 0 -> 1803 bytes .../synti/zynaddsubfx/banks/Strings/0043-Saw 3.xiz | Bin 0 -> 1829 bytes .../zynaddsubfx/banks/Strings/0044-Saw Pad.xiz | Bin 0 -> 1758 bytes .../banks/Strings/0045-Soft Saw Pad.xiz | Bin 0 -> 1889 bytes .../zynaddsubfx/banks/Strings/0046-Echoed Saw.xiz | Bin 0 -> 1962 bytes .../banks/Strings/0047-Vibratto Saw1.xiz | Bin 0 -> 1864 bytes .../synti/zynaddsubfx/banks/Strings/0048-Wah1.xiz | Bin 0 -> 2006 bytes .../banks/Strings/0050-Synth Violin 1.xiz | Bin 0 -> 3207 bytes .../banks/Strings/0051-Synth Violin 2 Fat.xiz | Bin 0 -> 3584 bytes .../banks/Strings/0065-Simple Strings.xiz | Bin 0 -> 1825 bytes .../banks/Strings/0066-Dual Strings.xiz | Bin 0 -> 2469 bytes .../banks/Strings/0067-Dual StringsOct.xiz | Bin 0 -> 2505 bytes .../zynaddsubfx/banks/Synth/0001-Soft Synth 1.xiz | Bin 0 -> 2177 bytes .../zynaddsubfx/banks/Synth/0002-Soft Synth 2.xiz | Bin 0 -> 2121 bytes .../zynaddsubfx/banks/Synth/0004-Pulse Pad 1.xiz | Bin 0 -> 1928 bytes .../zynaddsubfx/banks/Synth/0005-Pulse Pad 2.xiz | Bin 0 -> 1949 bytes .../banks/Synth/0007-Analog Filter 1.xiz | Bin 0 -> 1847 bytes .../banks/Synth/0008-Analog Filter 2.xiz | Bin 0 -> 2028 bytes .../zynaddsubfx/banks/Synth/0033-Phased Pad 1.xiz | Bin 0 -> 1971 bytes .../zynaddsubfx/banks/Synth/0034-Phased Pad 2.xiz | Bin 0 -> 1959 bytes .../zynaddsubfx/banks/Synth/0035-Phased Pad 3.xiz | Bin 0 -> 2237 bytes .../banks/Synth/0037-Resonance Synth.xiz | Bin 0 -> 1986 bytes .../banks/Synth/0039-Multi-phase synth.xiz | Bin 0 -> 2093 bytes .../zynaddsubfx/banks/Synth/0065-Computer Lead.xiz | Bin 0 -> 1800 bytes .../banks/Synth/0067-Detuned Harmonic.xiz | Bin 0 -> 1851 bytes .../zynaddsubfx/banks/Synth/0097-FM Synth.xiz | Bin 0 -> 2652 bytes .../banks/SynthPiano/0001-Soft Piano 1.xiz | Bin 0 -> 1105 bytes .../banks/SynthPiano/0002-Soft Piano 2.xiz | Bin 0 -> 1067 bytes .../banks/SynthPiano/0004-Fantasy Bell.xiz | Bin 0 -> 2137 bytes .../banks/SynthPiano/0005-Synth Piano1.xiz | Bin 0 -> 1867 bytes .../banks/SynthPiano/0006-Synth Piano2.xiz | Bin 0 -> 1935 bytes .../banks/SynthPiano/0007-Termollo1.xiz | Bin 0 -> 1891 bytes .../banks/SynthPiano/0008-Termollo2.xiz | Bin 0 -> 1993 bytes .../banks/SynthPiano/0009-Termollo3.xiz | Bin 0 -> 1872 bytes .../zynaddsubfx/banks/SynthPiano/0011-Drop1.xiz | Bin 0 -> 1708 bytes .../zynaddsubfx/banks/SynthPiano/0012-Drop2.xiz | Bin 0 -> 1862 bytes .../banks/SynthPiano/0033-Analog Piano 1.xiz | Bin 0 -> 1809 bytes .../banks/SynthPiano/0034-Analog Piano 2.xiz | Bin 0 -> 1981 bytes .../banks/SynthPiano/0035-Analog Piano 3.xiz | Bin 0 -> 1887 bytes .../banks/SynthPiano/0037-FM Synth1.xiz | Bin 0 -> 2208 bytes .../banks/SynthPiano/0039-BinaryPiano1.xiz | Bin 0 -> 1772 bytes .../banks/SynthPiano/0040-BinaryPiano2.xiz | Bin 0 -> 1788 bytes .../banks/SynthPiano/0065-Synth Piano 1.xiz | Bin 0 -> 1738 bytes .../banks/SynthPiano/0066-Synth Piano 2.xiz | Bin 0 -> 1772 bytes .../banks/SynthPiano/0067-Synth Piano 3.xiz | Bin 0 -> 1808 bytes .../banks/SynthPiano/0068-Synth Piano 3 fat.xiz | Bin 0 -> 1815 bytes .../banks/SynthPiano/0069-Synth Piano 3 det.xiz | Bin 0 -> 1810 bytes .../banks/SynthPiano/0070-Synth Piano 4.xiz | Bin 0 -> 1946 bytes .../banks/SynthPiano/0071-Synth Piano 5.xiz | Bin 0 -> 2962 bytes muse_qt4_evolution/synti/zynaddsubfx/globals.h | 212 + muse_qt4_evolution/synti/zynaddsubfx/main.cpp | 462 + 2628 files changed, 471408 insertions(+), 471408 deletions(-) delete mode 100644 muse/CMakeLists.txt delete mode 100644 muse/COPYING delete mode 100644 muse/ChangeLog delete mode 100644 muse/Doxyfile.in delete mode 100644 muse/NEWS delete mode 100644 muse/README delete mode 100644 muse/Reference delete mode 100644 muse/al/CMakeLists.txt delete mode 100644 muse/al/al.cpp delete mode 100644 muse/al/al.h delete mode 100644 muse/al/dsp.cpp delete mode 100644 muse/al/dsp.h delete mode 100644 muse/al/dspSSE.cpp delete mode 100644 muse/al/dspXMM.cpp delete mode 100644 muse/al/marker.cpp delete mode 100644 muse/al/marker.h delete mode 100644 muse/al/pos.cpp delete mode 100644 muse/al/pos.h delete mode 100644 muse/al/sig.cpp delete mode 100644 muse/al/sig.h delete mode 100644 muse/al/tempo.cpp delete mode 100644 muse/al/tempo.h delete mode 100644 muse/al/xml.cpp delete mode 100644 muse/al/xml.h delete mode 100644 muse/all.h delete mode 100644 muse/awl/CMakeLists.txt delete mode 100644 muse/awl/aslider.cpp delete mode 100644 muse/awl/aslider.h delete mode 100644 muse/awl/awl.cpp delete mode 100644 muse/awl/awl.h delete mode 100644 muse/awl/awlplugin.cpp delete mode 100644 muse/awl/awlplugin.h delete mode 100644 muse/awl/checkbox.cpp delete mode 100644 muse/awl/checkbox.h delete mode 100644 muse/awl/clock.xpm delete mode 100644 muse/awl/combobox.cpp delete mode 100644 muse/awl/combobox.h delete mode 100644 muse/awl/drawbar.cpp delete mode 100644 muse/awl/drawbar.h delete mode 100644 muse/awl/fastlog.h delete mode 100644 muse/awl/floatentry.cpp delete mode 100644 muse/awl/floatentry.h delete mode 100644 muse/awl/knob.cpp delete mode 100644 muse/awl/knob.h delete mode 100644 muse/awl/ltest.cpp delete mode 100644 muse/awl/metronom.xpm delete mode 100644 muse/awl/midimeter.cpp delete mode 100644 muse/awl/midimeter.h delete mode 100644 muse/awl/midimslider.cpp delete mode 100644 muse/awl/midimslider.h delete mode 100644 muse/awl/midipanentry.cpp delete mode 100644 muse/awl/midipanentry.h delete mode 100644 muse/awl/midipanknob.cpp delete mode 100644 muse/awl/midipanknob.h delete mode 100644 muse/awl/midivolentry.cpp delete mode 100644 muse/awl/midivolentry.h delete mode 100644 muse/awl/mslider.cpp delete mode 100644 muse/awl/mslider.h delete mode 100644 muse/awl/panentry.cpp delete mode 100644 muse/awl/panentry.h delete mode 100644 muse/awl/panknob.cpp delete mode 100644 muse/awl/panknob.h delete mode 100644 muse/awl/pitchedit.cpp delete mode 100644 muse/awl/pitchedit.h delete mode 100644 muse/awl/pitchlabel.cpp delete mode 100644 muse/awl/pitchlabel.h delete mode 100644 muse/awl/posedit.cpp delete mode 100644 muse/awl/posedit.h delete mode 100644 muse/awl/poslabel.cpp delete mode 100644 muse/awl/poslabel.h delete mode 100644 muse/awl/sigedit.cpp delete mode 100644 muse/awl/sigedit.h delete mode 100644 muse/awl/slider.cpp delete mode 100644 muse/awl/slider.h delete mode 100644 muse/awl/tcanvas.cpp delete mode 100644 muse/awl/tcanvas.h delete mode 100644 muse/awl/tempoedit.cpp delete mode 100644 muse/awl/tempoedit.h delete mode 100644 muse/awl/tempolabel.cpp delete mode 100644 muse/awl/tempolabel.h delete mode 100644 muse/awl/utils.cpp delete mode 100644 muse/awl/utils.h delete mode 100644 muse/awl/volentry.cpp delete mode 100644 muse/awl/volentry.h delete mode 100644 muse/awl/volknob.cpp delete mode 100644 muse/awl/volknob.h delete mode 100644 muse/awl/volslider.cpp delete mode 100644 muse/awl/volslider.h delete mode 100644 muse/cmake/TargetDoc.cmake delete mode 100644 muse/cmake/UsePkgConfig1.cmake delete mode 100644 muse/config.h.in delete mode 100644 muse/doc/README.de delete mode 100644 muse/doc/README.instruments delete mode 100644 muse/doc/README.ladspaguis delete mode 100644 muse/doc/README.realtime delete mode 100644 muse/doc/README.shortcuts delete mode 100644 muse/doc/README.softsynth delete mode 100644 muse/doc/README.translate delete mode 100644 muse/doc/dimpl.odt delete mode 100644 muse/doc/manual-de.odt delete mode 100644 muse/doc/pics/main0.png delete mode 100644 muse/doc/pics/main1.png delete mode 100644 muse/doc/pics/main2.png delete mode 100644 muse/doc/pics/mixer1.png delete mode 100644 muse/doc/pics/pianoroll1.png delete mode 100644 muse/doc/pics/pianoroll2.png delete mode 100644 muse/doc/pics/select_project.png delete mode 100644 muse/doc/pics/select_template.png delete mode 100644 muse/grepmidi/CMakeLists.txt delete mode 100644 muse/grepmidi/grepmidi.cpp delete mode 100644 muse/midiplugins/CMakeLists.txt delete mode 100644 muse/midiplugins/drumglue/CMakeLists.txt delete mode 100644 muse/midiplugins/drumglue/drumglue.cpp delete mode 100644 muse/midiplugins/drumglue/drumglue.h delete mode 100644 muse/midiplugins/drumglue/drumgluegui.cpp delete mode 100644 muse/midiplugins/drumglue/drumgluegui.h delete mode 100644 muse/midiplugins/drumglue/drumgluegui.ui delete mode 100644 muse/midiplugins/drumglue/globalinstrumentview.cpp delete mode 100644 muse/midiplugins/drumglue/globalinstrumentview.h delete mode 100644 muse/midiplugins/drumglue/globalinstrumentview.ui delete mode 100644 muse/midiplugins/drumglue/outputinstrumentview.cpp delete mode 100644 muse/midiplugins/drumglue/outputinstrumentview.h delete mode 100644 muse/midiplugins/drumglue/outputinstrumentview.ui delete mode 100644 muse/midiplugins/dump/CMakeLists.txt delete mode 100644 muse/midiplugins/dump/dump.cpp delete mode 100644 muse/midiplugins/dump/dump.h delete mode 100644 muse/midiplugins/filter/CMakeLists.txt delete mode 100644 muse/midiplugins/filter/ctrlcombo.cpp delete mode 100644 muse/midiplugins/filter/ctrlcombo.h delete mode 100644 muse/midiplugins/filter/filter.cpp delete mode 100644 muse/midiplugins/filter/filter.h delete mode 100644 muse/midiplugins/filter/filtergui.cpp delete mode 100644 muse/midiplugins/filter/filtergui.h delete mode 100644 muse/midiplugins/filter/filtergui.ui delete mode 100644 muse/midiplugins/libmidiplugin/CMakeLists.txt delete mode 100644 muse/midiplugins/libmidiplugin/evdata.h delete mode 100644 muse/midiplugins/libmidiplugin/mempi.cpp delete mode 100644 muse/midiplugins/libmidiplugin/mempi.h delete mode 100644 muse/midiplugins/libmidiplugin/midievent.cpp delete mode 100644 muse/midiplugins/libmidiplugin/midievent.h delete mode 100644 muse/midiplugins/metronom/CMakeLists.txt delete mode 100644 muse/midiplugins/metronom/metronom.cpp delete mode 100644 muse/midiplugins/metronom/metronom.h delete mode 100644 muse/midiplugins/metronom/metronomgui.cpp delete mode 100644 muse/midiplugins/metronom/metronomgui.h delete mode 100644 muse/midiplugins/metronom/metronomgui.ui delete mode 100644 muse/midiplugins/splitlayer/CMakeLists.txt delete mode 100644 muse/midiplugins/splitlayer/splitlayer.cpp delete mode 100644 muse/midiplugins/splitlayer/splitlayer.h delete mode 100644 muse/midiplugins/splitlayer/splitlayergui.cpp delete mode 100644 muse/midiplugins/splitlayer/splitlayergui.h delete mode 100644 muse/midiplugins/transform/CMakeLists.txt delete mode 100644 muse/midiplugins/transform/transform.cpp delete mode 100644 muse/midiplugins/transform/transform.h delete mode 100644 muse/midiplugins/transform/transform.ui delete mode 100644 muse/midiplugins/trigg/CMakeLists.txt delete mode 100644 muse/midiplugins/trigg/trigg.cpp delete mode 100644 muse/midiplugins/trigg/trigg.h delete mode 100644 muse/midiplugins/trigg/trigggui.cpp delete mode 100644 muse/midiplugins/trigg/trigggui.h delete mode 100644 muse/midiplugins/trigg/trigggui.ui delete mode 100644 muse/muse.pro delete mode 100644 muse/muse/CMakeLists.txt delete mode 100644 muse/muse/aboutbox.ui delete mode 100644 muse/muse/arranger.cpp delete mode 100644 muse/muse/arranger.h delete mode 100644 muse/muse/astrip.cpp delete mode 100644 muse/muse/astrip.h delete mode 100644 muse/muse/audio.cpp delete mode 100644 muse/muse/audio.h delete mode 100644 muse/muse/audiodev.h delete mode 100644 muse/muse/audiogroup.cpp delete mode 100644 muse/muse/audiogroup.h delete mode 100644 muse/muse/audioinput.cpp delete mode 100644 muse/muse/audioinput.h delete mode 100644 muse/muse/audiooutput.cpp delete mode 100644 muse/muse/audiooutput.h delete mode 100644 muse/muse/audioprefetch.cpp delete mode 100644 muse/muse/audioprefetch.h delete mode 100644 muse/muse/audiotrack.cpp delete mode 100644 muse/muse/audiotrack.h delete mode 100644 muse/muse/audiowriteback.cpp delete mode 100644 muse/muse/audiowriteback.h delete mode 100644 muse/muse/auxplugin.cpp delete mode 100644 muse/muse/auxplugin.h delete mode 100644 muse/muse/canvas.cpp delete mode 100644 muse/muse/canvas.h delete mode 100644 muse/muse/cliplist/cliplist.cpp delete mode 100644 muse/muse/cliplist/cliplist.h delete mode 100644 muse/muse/cobject.cpp delete mode 100644 muse/muse/cobject.h delete mode 100644 muse/muse/conf.cpp delete mode 100644 muse/muse/conf.h delete mode 100644 muse/muse/configmidifile.ui delete mode 100644 muse/muse/configtrack.cpp delete mode 100644 muse/muse/configtrack.h delete mode 100644 muse/muse/configtrack.ui delete mode 100644 muse/muse/ctrl.cpp delete mode 100644 muse/muse/ctrl.h delete mode 100644 muse/muse/ctrl/CMakeLists.txt delete mode 100644 muse/muse/ctrl/configmidictrl.cpp delete mode 100644 muse/muse/ctrl/configmidictrl.h delete mode 100644 muse/muse/ctrl/configmidictrl.ui delete mode 100644 muse/muse/ctrl/ctrldialog.cpp delete mode 100644 muse/muse/ctrl/ctrldialog.h delete mode 100644 muse/muse/ctrl/ctrldialog.ui delete mode 100644 muse/muse/ctrl/ctrledit.cpp delete mode 100644 muse/muse/ctrl/ctrledit.h delete mode 100644 muse/muse/ctrl/ctrleditor.cpp delete mode 100644 muse/muse/ctrl/ctrleditor.h delete mode 100644 muse/muse/ctrl/definemidictrl.cpp delete mode 100644 muse/muse/ctrl/definemidictrl.h delete mode 100644 muse/muse/ctrl/definemidictrl.ui delete mode 100644 muse/muse/debug.h delete mode 100644 muse/muse/default_click.h delete mode 100644 muse/muse/device.h delete mode 100644 muse/muse/driver.h delete mode 100644 muse/muse/dssihost.cpp delete mode 100644 muse/muse/dssihost.h delete mode 100644 muse/muse/dummyaudio.cpp delete mode 100644 muse/muse/editor.cpp delete mode 100644 muse/muse/editor.h delete mode 100644 muse/muse/esettings.cpp delete mode 100644 muse/muse/esettings.h delete mode 100644 muse/muse/evdata.h delete mode 100644 muse/muse/event.cpp delete mode 100644 muse/muse/event.h delete mode 100644 muse/muse/eventbase.h delete mode 100644 muse/muse/eventlist.cpp delete mode 100644 muse/muse/exportmidi.cpp delete mode 100644 muse/muse/exportmidi.h delete mode 100644 muse/muse/exportmididialog.ui delete mode 100644 muse/muse/extmidieditor.cpp delete mode 100644 muse/muse/extmidieditor.h delete mode 100644 muse/muse/fastlog.h delete mode 100644 muse/muse/fifo.cpp delete mode 100644 muse/muse/fifo.h delete mode 100644 muse/muse/gconfig.cpp delete mode 100644 muse/muse/gconfig.h delete mode 100644 muse/muse/globaldefs.h delete mode 100644 muse/muse/globals.cpp delete mode 100644 muse/muse/globals.h delete mode 100644 muse/muse/gui.h delete mode 100644 muse/muse/help.cpp delete mode 100644 muse/muse/help.h delete mode 100644 muse/muse/helper.cpp delete mode 100644 muse/muse/helper.h delete mode 100644 muse/muse/icons.cpp delete mode 100644 muse/muse/icons.h delete mode 100644 muse/muse/importmidi.cpp delete mode 100644 muse/muse/importmidi.h delete mode 100644 muse/muse/importmidi.ui delete mode 100644 muse/muse/instruments/CMakeLists.txt delete mode 100644 muse/muse/instruments/editinstrument.cpp delete mode 100644 muse/muse/instruments/editinstrument.h delete mode 100644 muse/muse/instruments/editinstrument.ui delete mode 100644 muse/muse/instruments/midictrledit.cpp delete mode 100644 muse/muse/instruments/midictrledit.h delete mode 100644 muse/muse/instruments/minstrument.cpp delete mode 100644 muse/muse/instruments/minstrument.h delete mode 100644 muse/muse/jack.cpp delete mode 100644 muse/muse/jackaudio.h delete mode 100644 muse/muse/ladspa.h delete mode 100644 muse/muse/ladspaplugin.cpp delete mode 100644 muse/muse/ladspaplugin.h delete mode 100644 muse/muse/liste/CMakeLists.txt delete mode 100644 muse/muse/liste/ctrllistedit.cpp delete mode 100644 muse/muse/liste/ctrllistedit.h delete mode 100644 muse/muse/liste/ctrllistedit.ui delete mode 100644 muse/muse/liste/ieventdialog.cpp delete mode 100644 muse/muse/liste/ieventdialog.h delete mode 100644 muse/muse/liste/listedit.cpp delete mode 100644 muse/muse/liste/listedit.h delete mode 100644 muse/muse/liste/partlistedit.cpp delete mode 100644 muse/muse/liste/partlistedit.h delete mode 100644 muse/muse/liste/partlistedit.ui delete mode 100644 muse/muse/liste/tracklistedit.cpp delete mode 100644 muse/muse/liste/tracklistedit.h delete mode 100644 muse/muse/liste/tracklistedit.ui delete mode 100644 muse/muse/marker/CMakeLists.txt delete mode 100644 muse/muse/marker/markerview.cpp delete mode 100644 muse/muse/marker/markerview.h delete mode 100644 muse/muse/master/CMakeLists.txt delete mode 100644 muse/muse/master/master.cpp delete mode 100644 muse/muse/master/master.h delete mode 100644 muse/muse/master/masteredit.cpp delete mode 100644 muse/muse/master/masteredit.h delete mode 100644 muse/muse/midi.cpp delete mode 100644 muse/muse/midi.h delete mode 100644 muse/muse/midictrl.cpp delete mode 100644 muse/muse/midictrl.h delete mode 100644 muse/muse/midiedit/CMakeLists.txt delete mode 100644 muse/muse/midiedit/citem.cpp delete mode 100644 muse/muse/midiedit/citem.h delete mode 100644 muse/muse/midiedit/cmd.h delete mode 100644 muse/muse/midiedit/dcanvas.cpp delete mode 100644 muse/muse/midiedit/dcanvas.h delete mode 100644 muse/muse/midiedit/drumedit.cpp delete mode 100644 muse/muse/midiedit/drumedit.h delete mode 100644 muse/muse/midiedit/drummap.cpp delete mode 100644 muse/muse/midiedit/drummap.h delete mode 100644 muse/muse/midiedit/ecanvas.cpp delete mode 100644 muse/muse/midiedit/ecanvas.h delete mode 100644 muse/muse/midiedit/gatetime.cpp delete mode 100644 muse/muse/midiedit/gatetime.h delete mode 100644 muse/muse/midiedit/gatetime.ui delete mode 100644 muse/muse/midiedit/midicmd.cpp delete mode 100644 muse/muse/midiedit/midicmd.h delete mode 100644 muse/muse/midiedit/midicmd.ui delete mode 100644 muse/muse/midiedit/midieditor.cpp delete mode 100644 muse/muse/midiedit/midieditor.h delete mode 100644 muse/muse/midiedit/miditracker.cpp delete mode 100644 muse/muse/midiedit/miditracker.h delete mode 100644 muse/muse/midiedit/pianoroll.cpp delete mode 100644 muse/muse/midiedit/pianoroll.h delete mode 100644 muse/muse/midiedit/prcanvas.cpp delete mode 100644 muse/muse/midiedit/prcanvas.h delete mode 100644 muse/muse/midiedit/quantconfig.cpp delete mode 100644 muse/muse/midiedit/quantconfig.h delete mode 100644 muse/muse/midiedit/quantconfig.ui delete mode 100644 muse/muse/midiedit/trackpattern.cpp delete mode 100644 muse/muse/midiedit/trackpattern.h delete mode 100644 muse/muse/midiedit/velocity.cpp delete mode 100644 muse/muse/midiedit/velocity.h delete mode 100644 muse/muse/midiedit/velocity.ui delete mode 100644 muse/muse/midievent.cpp delete mode 100644 muse/muse/midievent.h delete mode 100644 muse/muse/midieventbase.cpp delete mode 100644 muse/muse/midieventbase.h delete mode 100644 muse/muse/midififo.cpp delete mode 100644 muse/muse/midififo.h delete mode 100644 muse/muse/midifile.cpp delete mode 100644 muse/muse/midifile.h delete mode 100644 muse/muse/midiinport.cpp delete mode 100644 muse/muse/midiinport.h delete mode 100644 muse/muse/midiout.cpp delete mode 100644 muse/muse/midiout.h delete mode 100644 muse/muse/midioutport.cpp delete mode 100644 muse/muse/midioutport.h delete mode 100644 muse/muse/midiplugin.cpp delete mode 100644 muse/muse/midiplugin.h delete mode 100644 muse/muse/midiportinfo.ui delete mode 100644 muse/muse/midirack.cpp delete mode 100644 muse/muse/midirack.h delete mode 100644 muse/muse/midirc.cpp delete mode 100644 muse/muse/midirc.h delete mode 100644 muse/muse/midisynti.cpp delete mode 100644 muse/muse/midisynti.h delete mode 100644 muse/muse/miditrack.cpp delete mode 100644 muse/muse/miditrack.h delete mode 100644 muse/muse/miditrackbase.cpp delete mode 100644 muse/muse/miditrackbase.h delete mode 100644 muse/muse/miditrackinfo.ui delete mode 100644 muse/muse/miditransform.cpp delete mode 100644 muse/muse/miditransform.h delete mode 100644 muse/muse/mixer.cpp delete mode 100644 muse/muse/mixer.h delete mode 100644 muse/muse/mstrip.cpp delete mode 100644 muse/muse/mstrip.h delete mode 100644 muse/muse/mtc.cpp delete mode 100644 muse/muse/mtc.h delete mode 100644 muse/muse/muse.cpp delete mode 100644 muse/muse/muse.h delete mode 100644 muse/muse/muse.qrc delete mode 100644 muse/muse/part.cpp delete mode 100644 muse/muse/part.h delete mode 100644 muse/muse/partdrag.cpp delete mode 100644 muse/muse/partdrag.h delete mode 100644 muse/muse/pipeline.cpp delete mode 100644 muse/muse/pipeline.h delete mode 100644 muse/muse/plugin.cpp delete mode 100644 muse/muse/plugin.h delete mode 100644 muse/muse/plugingui.cpp delete mode 100644 muse/muse/plugingui.h delete mode 100644 muse/muse/port.h delete mode 100644 muse/muse/preferences.cpp delete mode 100644 muse/muse/preferences.h delete mode 100644 muse/muse/preferences.ui delete mode 100644 muse/muse/projectdialog.cpp delete mode 100644 muse/muse/projectdialog.h delete mode 100644 muse/muse/projectdialog.ui delete mode 100644 muse/muse/projectpropsdialog.cpp delete mode 100644 muse/muse/projectpropsdialog.h delete mode 100644 muse/muse/projectpropsdialog.ui delete mode 100644 muse/muse/rack.cpp delete mode 100644 muse/muse/rack.h delete mode 100644 muse/muse/revision.cpp delete mode 100644 muse/muse/revision.h delete mode 100644 muse/muse/route.cpp delete mode 100644 muse/muse/route.h delete mode 100644 muse/muse/routedialog.cpp delete mode 100644 muse/muse/routedialog.h delete mode 100644 muse/muse/routedialog.ui delete mode 100644 muse/muse/selectfilter.h delete mode 100644 muse/muse/seqmsg.cpp delete mode 100644 muse/muse/shortcuts.cpp delete mode 100644 muse/muse/shortcuts.h delete mode 100644 muse/muse/song.cpp delete mode 100644 muse/muse/song.h delete mode 100644 muse/muse/songfile.cpp delete mode 100644 muse/muse/songpart.cpp delete mode 100644 muse/muse/songtrack.cpp delete mode 100644 muse/muse/strip.cpp delete mode 100644 muse/muse/strip.h delete mode 100644 muse/muse/style.qss delete mode 100644 muse/muse/sync.cpp delete mode 100644 muse/muse/sync.h delete mode 100644 muse/muse/synth.cpp delete mode 100644 muse/muse/synth.h delete mode 100644 muse/muse/templatedialog.cpp delete mode 100644 muse/muse/templatedialog.h delete mode 100644 muse/muse/templatedialog.ui delete mode 100644 muse/muse/thread.cpp delete mode 100644 muse/muse/thread.h delete mode 100644 muse/muse/ticksynth.cpp delete mode 100644 muse/muse/ticksynth.h delete mode 100644 muse/muse/tllineedit.cpp delete mode 100644 muse/muse/tllineedit.h delete mode 100644 muse/muse/tlswidget.cpp delete mode 100644 muse/muse/tlswidget.h delete mode 100644 muse/muse/tlwidget.cpp delete mode 100644 muse/muse/tlwidget.h delete mode 100644 muse/muse/tlwlayout.cpp delete mode 100644 muse/muse/tlwlayout.h delete mode 100644 muse/muse/track.cpp delete mode 100644 muse/muse/track.h delete mode 100644 muse/muse/trackdrag.cpp delete mode 100644 muse/muse/trackdrag.h delete mode 100644 muse/muse/trackinfo.cpp delete mode 100644 muse/muse/trackinfo.h delete mode 100644 muse/muse/transport.cpp delete mode 100644 muse/muse/transport.h delete mode 100644 muse/muse/transport.ui delete mode 100644 muse/muse/transpose.cpp delete mode 100644 muse/muse/transpose.h delete mode 100644 muse/muse/transpose.ui delete mode 100644 muse/muse/trelement.h delete mode 100644 muse/muse/undo.cpp delete mode 100644 muse/muse/undo.h delete mode 100644 muse/muse/value.cpp delete mode 100644 muse/muse/vst.cpp delete mode 100644 muse/muse/vst.h delete mode 100644 muse/muse/wave.cpp delete mode 100644 muse/muse/wave.h delete mode 100644 muse/muse/waveedit/CMakeLists.txt delete mode 100644 muse/muse/waveedit/waveedit.cpp delete mode 100644 muse/muse/waveedit/waveedit.h delete mode 100644 muse/muse/waveedit/waveview.cpp delete mode 100644 muse/muse/waveedit/waveview.h delete mode 100644 muse/muse/waveevent.cpp delete mode 100644 muse/muse/waveevent.h delete mode 100644 muse/muse/wavetrack.cpp delete mode 100644 muse/muse/wavetrack.h delete mode 100644 muse/muse/widgets/CMakeLists.txt delete mode 100644 muse/muse/widgets/action.h delete mode 100644 muse/muse/widgets/bigtime.cpp delete mode 100644 muse/muse/widgets/bigtime.h delete mode 100644 muse/muse/widgets/cliplisteditorbase.h delete mode 100644 muse/muse/widgets/cliplisteditorbase.ui delete mode 100644 muse/muse/widgets/comboQuant.cpp delete mode 100644 muse/muse/widgets/comboQuant.h delete mode 100644 muse/muse/widgets/combobox.cpp delete mode 100644 muse/muse/widgets/combobox.h delete mode 100644 muse/muse/widgets/comment.cpp delete mode 100644 muse/muse/widgets/comment.h delete mode 100644 muse/muse/widgets/comment.ui delete mode 100644 muse/muse/widgets/ctrlcombo.cpp delete mode 100644 muse/muse/widgets/ctrlcombo.h delete mode 100644 muse/muse/widgets/dentry.cpp delete mode 100644 muse/muse/widgets/dentry.h delete mode 100644 muse/muse/widgets/doublelabel.cpp delete mode 100644 muse/muse/widgets/doublelabel.h delete mode 100644 muse/muse/widgets/editmetadialogbase.cpp delete mode 100644 muse/muse/widgets/editmetadialogbase.ui delete mode 100644 muse/muse/widgets/fdialogbuttons.ui delete mode 100644 muse/muse/widgets/filedialog.cpp delete mode 100644 muse/muse/widgets/filedialog.h delete mode 100644 muse/muse/widgets/floatlabel.cpp delete mode 100644 muse/muse/widgets/floatlabel.h delete mode 100644 muse/muse/widgets/fontsel.cpp delete mode 100644 muse/muse/widgets/fontsel.h delete mode 100644 muse/muse/widgets/greendotbutton.h delete mode 100644 muse/muse/widgets/intlabel.h delete mode 100644 muse/muse/widgets/menutitle.cpp delete mode 100644 muse/muse/widgets/menutitle.h delete mode 100644 muse/muse/widgets/midisync.cpp delete mode 100644 muse/muse/widgets/midisync.h delete mode 100644 muse/muse/widgets/midisync.ui delete mode 100644 muse/muse/widgets/mittransposebase.h delete mode 100644 muse/muse/widgets/mittransposebase.ui delete mode 100644 muse/muse/widgets/mixdowndialog.cpp delete mode 100644 muse/muse/widgets/mixdowndialog.h delete mode 100644 muse/muse/widgets/mixdowndialog.ui delete mode 100644 muse/muse/widgets/noteinfo.cpp delete mode 100644 muse/muse/widgets/noteinfo.h delete mode 100644 muse/muse/widgets/outportcombo.cpp delete mode 100644 muse/muse/widgets/outportcombo.h delete mode 100644 muse/muse/widgets/quantcombo.cpp delete mode 100644 muse/muse/widgets/quantcombo.h delete mode 100644 muse/muse/widgets/rastercombo.cpp delete mode 100644 muse/muse/widgets/rastercombo.h delete mode 100644 muse/muse/widgets/recordbutton.h delete mode 100644 muse/muse/widgets/shortcutcapturedialog.cpp delete mode 100644 muse/muse/widgets/shortcutcapturedialog.h delete mode 100644 muse/muse/widgets/shortcutcapturedialog.ui delete mode 100644 muse/muse/widgets/shortcutconfig.cpp delete mode 100644 muse/muse/widgets/shortcutconfig.h delete mode 100644 muse/muse/widgets/shortcutconfig.ui delete mode 100644 muse/muse/widgets/siglabel.cpp delete mode 100644 muse/muse/widgets/siglabel.h delete mode 100644 muse/muse/widgets/simplebutton.cpp delete mode 100644 muse/muse/widgets/simplebutton.h delete mode 100644 muse/muse/widgets/splitter.cpp delete mode 100644 muse/muse/widgets/splitter.h delete mode 100644 muse/muse/widgets/synthwizardbase.h delete mode 100644 muse/muse/widgets/tb1.cpp delete mode 100644 muse/muse/widgets/tb1.h delete mode 100644 muse/muse/widgets/tools.cpp delete mode 100644 muse/muse/widgets/tools.h delete mode 100644 muse/muse/widgets/transformbase.ui delete mode 100644 muse/muse/widgets/utils.cpp delete mode 100644 muse/muse/widgets/utils.h delete mode 100644 muse/muse/widgets/wtrackinfobase.ui delete mode 100644 muse/muse/xpm/activeoff.svg delete mode 100644 muse/muse/xpm/activeon.svg delete mode 100644 muse/muse/xpm/addtrack_addmiditrack.xpm delete mode 100644 muse/muse/xpm/addtrack_audiogroup.xpm delete mode 100644 muse/muse/xpm/addtrack_audioinput.xpm delete mode 100644 muse/muse/xpm/addtrack_audiooutput.xpm delete mode 100644 muse/muse/xpm/addtrack_auxsend.xpm delete mode 100644 muse/muse/xpm/addtrack_drumtrack.xpm delete mode 100644 muse/muse/xpm/addtrack_wavetrack.xpm delete mode 100644 muse/muse/xpm/audio_bounce_to_file.xpm delete mode 100644 muse/muse/xpm/audio_bounce_to_track.xpm delete mode 100644 muse/muse/xpm/audio_restartaudio.xpm delete mode 100644 muse/muse/xpm/back.xpm delete mode 100644 muse/muse/xpm/bold.xpm delete mode 100644 muse/muse/xpm/buttondown.xpm delete mode 100644 muse/muse/xpm/cafter.xpm delete mode 100644 muse/muse/xpm/cliplistS.xpm delete mode 100644 muse/muse/xpm/cmark.xpm delete mode 100644 muse/muse/xpm/config.xpm delete mode 100644 muse/muse/xpm/configure.xpm delete mode 100644 muse/muse/xpm/ctrl.xpm delete mode 100644 muse/muse/xpm/cut.xpm delete mode 100644 muse/muse/xpm/darkgreendot.svg delete mode 100644 muse/muse/xpm/delete.xpm delete mode 100644 muse/muse/xpm/down.xpm delete mode 100644 muse/muse/xpm/draw.xpm delete mode 100644 muse/muse/xpm/edit_drumms.xpm delete mode 100644 muse/muse/xpm/edit_list.xpm delete mode 100644 muse/muse/xpm/edit_mastertrack.xpm delete mode 100644 muse/muse/xpm/edit_midi.xpm delete mode 100644 muse/muse/xpm/edit_pianoroll.xpm delete mode 100644 muse/muse/xpm/edit_track_add.xpm delete mode 100644 muse/muse/xpm/edit_track_del.xpm delete mode 100644 muse/muse/xpm/editcopy.xpm delete mode 100644 muse/muse/xpm/editcut.xpm delete mode 100644 muse/muse/xpm/editcutS.xpm delete mode 100644 muse/muse/xpm/editmute.xpm delete mode 100644 muse/muse/xpm/editpaste.xpm delete mode 100644 muse/muse/xpm/fforward.xpm delete mode 100644 muse/muse/xpm/filenew.png delete mode 100644 muse/muse/xpm/filenewS.xpm delete mode 100644 muse/muse/xpm/fileopen.png delete mode 100644 muse/muse/xpm/filesave.png delete mode 100644 muse/muse/xpm/flag.xpm delete mode 100644 muse/muse/xpm/flagS.xpm delete mode 100644 muse/muse/xpm/folder_new.png delete mode 100644 muse/muse/xpm/forward.xpm delete mode 100644 muse/muse/xpm/frewind.xpm delete mode 100644 muse/muse/xpm/glue.xpm delete mode 100644 muse/muse/xpm/greendot.svg delete mode 100644 muse/muse/xpm/gv.xpm delete mode 100644 muse/muse/xpm/home.xpm delete mode 100644 muse/muse/xpm/initS.xpm delete mode 100644 muse/muse/xpm/inputpluginS.xpm delete mode 100644 muse/muse/xpm/italic.xpm delete mode 100644 muse/muse/xpm/listS.xpm delete mode 100644 muse/muse/xpm/lmark.xpm delete mode 100644 muse/muse/xpm/localoffS.xpm delete mode 100644 muse/muse/xpm/lock.xpm delete mode 100644 muse/muse/xpm/loop.xpm delete mode 100644 muse/muse/xpm/master.xpm delete mode 100644 muse/muse/xpm/mastertrackS.xpm delete mode 100644 muse/muse/xpm/mastertrack_graphic.xpm delete mode 100644 muse/muse/xpm/mastertrack_list.xpm delete mode 100644 muse/muse/xpm/meta.xpm delete mode 100644 muse/muse/xpm/midi_edit_instrument.xpm delete mode 100644 muse/muse/xpm/midi_init_instr.xpm delete mode 100644 muse/muse/xpm/midi_local_off.xpm delete mode 100644 muse/muse/xpm/midi_plugS.xpm delete mode 100644 muse/muse/xpm/midi_reset_instr.xpm delete mode 100644 muse/muse/xpm/midi_transform.xpm delete mode 100644 muse/muse/xpm/midi_transpose.xpm delete mode 100644 muse/muse/xpm/midiin.xpm delete mode 100644 muse/muse/xpm/miditransformS.xpm delete mode 100644 muse/muse/xpm/miditransposeS.xpm delete mode 100644 muse/muse/xpm/minus.xpm delete mode 100644 muse/muse/xpm/mixerS.xpm delete mode 100644 muse/muse/xpm/mixeraudioS.xpm delete mode 100644 muse/muse/xpm/mono.svg delete mode 100644 muse/muse/xpm/muse_icon.xpm delete mode 100644 muse/muse/xpm/muse_icon_64x64.png delete mode 100644 muse/muse/xpm/mutebutton_off.xpm delete mode 100644 muse/muse/xpm/mutebutton_on.xpm delete mode 100644 muse/muse/xpm/newmutebutton.xpm delete mode 100644 muse/muse/xpm/off.svg delete mode 100644 muse/muse/xpm/off.xpm delete mode 100644 muse/muse/xpm/on.svg delete mode 100644 muse/muse/xpm/pafter.xpm delete mode 100644 muse/muse/xpm/panic.xpm delete mode 100644 muse/muse/xpm/pencil.xpm delete mode 100644 muse/muse/xpm/piano.xpm delete mode 100644 muse/muse/xpm/pitch.xpm delete mode 100644 muse/muse/xpm/play.xpm delete mode 100644 muse/muse/xpm/plus.xpm delete mode 100644 muse/muse/xpm/pointer.xpm delete mode 100644 muse/muse/xpm/punchin.xpm delete mode 100644 muse/muse/xpm/punchout.xpm delete mode 100644 muse/muse/xpm/quant.xpm delete mode 100644 muse/muse/xpm/recordOff.svg delete mode 100644 muse/muse/xpm/recordOn.svg delete mode 100644 muse/muse/xpm/redo.xpm delete mode 100644 muse/muse/xpm/resetS.xpm delete mode 100644 muse/muse/xpm/rmark.xpm delete mode 100644 muse/muse/xpm/select.xpm delete mode 100644 muse/muse/xpm/select_all.xpm delete mode 100644 muse/muse/xpm/select_all_parts_on_track.xpm delete mode 100644 muse/muse/xpm/select_deselect_all.xpm delete mode 100644 muse/muse/xpm/select_inside_loop.xpm delete mode 100644 muse/muse/xpm/select_invert_selection.xpm delete mode 100644 muse/muse/xpm/select_outside_loop.xpm delete mode 100644 muse/muse/xpm/settings_appearance_settings.xpm delete mode 100644 muse/muse/xpm/settings_configureshortcuts.xpm delete mode 100644 muse/muse/xpm/settings_follow_song.xpm delete mode 100644 muse/muse/xpm/settings_globalsettings.xpm delete mode 100644 muse/muse/xpm/settings_metronome.xpm delete mode 100644 muse/muse/xpm/settings_midifileexport.xpm delete mode 100644 muse/muse/xpm/settings_midiport_softsynths.xpm delete mode 100644 muse/muse/xpm/settings_midisync.xpm delete mode 100644 muse/muse/xpm/solobutton.xpm delete mode 100644 muse/muse/xpm/solobutton_off.xpm delete mode 100644 muse/muse/xpm/solobutton_on.xpm delete mode 100644 muse/muse/xpm/speaker.xpm delete mode 100644 muse/muse/xpm/splash.png delete mode 100644 muse/muse/xpm/start.xpm delete mode 100644 muse/muse/xpm/steprec.xpm delete mode 100644 muse/muse/xpm/stereo.svg delete mode 100644 muse/muse/xpm/stick.xpm delete mode 100644 muse/muse/xpm/stop.xpm delete mode 100644 muse/muse/xpm/sysex.xpm delete mode 100644 muse/muse/xpm/toc.xpm delete mode 100644 muse/muse/xpm/track_add.xpm delete mode 100644 muse/muse/xpm/track_delete.xpm delete mode 100644 muse/muse/xpm/underlined.xpm delete mode 100644 muse/muse/xpm/undo.xpm delete mode 100644 muse/muse/xpm/up.xpm delete mode 100644 muse/muse/xpm/view_bigtime_window.xpm delete mode 100644 muse/muse/xpm/view_cliplist.xpm delete mode 100644 muse/muse/xpm/view_marker.xpm delete mode 100644 muse/muse/xpm/view_mixer.xpm delete mode 100644 muse/muse/xpm/view_transport_window.xpm delete mode 100644 muse/muse/xpm/wave.xpm delete mode 100644 muse/packaging/muse_icon.png delete mode 100755 muse/packaging/muse_mdk.spec delete mode 100644 muse/pch.txt delete mode 100644 muse/plugins/CMakeLists.txt delete mode 100644 muse/plugins/doublechorus/CMakeLists.txt delete mode 100644 muse/plugins/doublechorus/doublechorus.cpp delete mode 100644 muse/plugins/doublechorus/doublechorusmodel.cpp delete mode 100644 muse/plugins/doublechorus/doublechorusmodel.h delete mode 100644 muse/plugins/doublechorus/simplechorusmodel.cpp delete mode 100644 muse/plugins/doublechorus/simplechorusmodel.h delete mode 100644 muse/plugins/freeverb/CMakeLists.txt delete mode 100644 muse/plugins/freeverb/allpass.h delete mode 100644 muse/plugins/freeverb/comb.h delete mode 100644 muse/plugins/freeverb/denormals.h delete mode 100644 muse/plugins/freeverb/freeverb.cpp delete mode 100644 muse/plugins/freeverb/readme.txt delete mode 100644 muse/plugins/freeverb/revmodel.cpp delete mode 100644 muse/plugins/freeverb/revmodel.h delete mode 100644 muse/plugins/freeverb/tuning.h delete mode 100644 muse/plugins/pandelay/CMakeLists.txt delete mode 100644 muse/plugins/pandelay/ladspapandelay.cpp delete mode 100644 muse/plugins/pandelay/ladspapandelay.h delete mode 100644 muse/plugins/pandelay/pandelay.cpp delete mode 100644 muse/plugins/pandelay/pandelaymodel.cpp delete mode 100644 muse/plugins/pandelay/pandelaymodel.h delete mode 100644 muse/share/CMakeLists.txt delete mode 100644 muse/share/instruments/Access_Virus.idf delete mode 100644 muse/share/instruments/Alesis-Ion.idf delete mode 100644 muse/share/instruments/Alesis-QS-78R.idf delete mode 100644 muse/share/instruments/AlesisQS6.idf delete mode 100644 muse/share/instruments/CMakeLists.txt delete mode 100644 muse/share/instruments/Hammond_XB-1.idf delete mode 100644 muse/share/instruments/MC303.idf delete mode 100644 muse/share/instruments/MC505.idf delete mode 100644 muse/share/instruments/Quasimidi-Sirius.idf delete mode 100644 muse/share/instruments/Roland-E28.idf delete mode 100644 muse/share/instruments/Roland-JV-1010-All.idf delete mode 100644 muse/share/instruments/Roland-JV-1010-Catagory.idf delete mode 100644 muse/share/instruments/Roland-JV-1010-Country.idf delete mode 100644 muse/share/instruments/Roland-JV-1010-Presets.idf delete mode 100644 muse/share/instruments/Roland-JV-1010-Session.idf delete mode 100644 muse/share/instruments/Roland-SCD70.idf delete mode 100644 muse/share/instruments/Roland-XP30.idf delete mode 100644 muse/share/instruments/Roland_FantomXR.idf delete mode 100644 muse/share/instruments/Roland_SRX-02.idf delete mode 100644 muse/share/instruments/Roland_SRX-09.idf delete mode 100644 muse/share/instruments/Waldorf_Microwave-I.idf delete mode 100644 muse/share/instruments/Yamaha-P50m.idf delete mode 100644 muse/share/instruments/Yamaha-P80.idf delete mode 100644 muse/share/instruments/Yamaha-PSR275.idf delete mode 100644 muse/share/instruments/Yamaha-PSR530.idf delete mode 100644 muse/share/instruments/Yamaha-S90.idf delete mode 100644 muse/share/instruments/ZynAdd-1_4.idf delete mode 100644 muse/share/instruments/emuproteus2000.idf delete mode 100644 muse/share/instruments/gm.idf delete mode 100644 muse/share/instruments/gs.idf delete mode 100644 muse/share/instruments/ns5r.idf delete mode 100644 muse/share/instruments/xg.idf delete mode 100644 muse/share/locale/CMakeLists.txt delete mode 100644 muse/share/locale/muse_de.qm delete mode 100644 muse/share/locale/muse_de.ts delete mode 100644 muse/share/locale/muse_es.qm delete mode 100644 muse/share/locale/muse_es.ts delete mode 100644 muse/share/locale/muse_fr.qm delete mode 100644 muse/share/locale/muse_fr.ts delete mode 100644 muse/share/locale/muse_ru.qm delete mode 100644 muse/share/locale/muse_ru.ts delete mode 100644 muse/share/locale/muse_sv_SE.qm delete mode 100644 muse/share/locale/muse_sv_SE.ts delete mode 100644 muse/share/plugins/1050.ui delete mode 100644 muse/share/plugins/1436.ui delete mode 100644 muse/share/plugins/2142.ui delete mode 100644 muse/share/plugins/CMakeLists.txt delete mode 100644 muse/share/templates/CMakeLists.txt delete mode 100644 muse/share/templates/audio.med delete mode 100644 muse/share/templates/default.med delete mode 100644 muse/share/templates/empty.med delete mode 100644 muse/share/templates/midiGM.med delete mode 100644 muse/share/templates/monorecord.med delete mode 100644 muse/share/templates/ns5r.med delete mode 100644 muse/share/templates/synti.med delete mode 100644 muse/share/wallpapers/CMakeLists.txt delete mode 100644 muse/share/wallpapers/gray.gif delete mode 100644 muse/share/wallpapers/gray_rock.gif delete mode 100644 muse/share/wallpapers/gray_stucco.gif delete mode 100644 muse/share/wallpapers/paper1.jpg delete mode 100644 muse/share/wallpapers/paper2.jpg delete mode 100644 muse/share/wallpapers/stone1.gif delete mode 100644 muse/synti/CMakeLists.txt delete mode 100644 muse/synti/README delete mode 100644 muse/synti/deicsonze/ARCH_ALIN delete mode 100644 muse/synti/deicsonze/CMakeLists.txt delete mode 100644 muse/synti/deicsonze/README delete mode 100644 muse/synti/deicsonze/SutulaBank.dei delete mode 100644 muse/synti/deicsonze/TODO delete mode 100644 muse/synti/deicsonze/deicsonze.cpp delete mode 100644 muse/synti/deicsonze/deicsonze.h delete mode 100644 muse/synti/deicsonze/deicsonzefilter.cpp delete mode 100644 muse/synti/deicsonze/deicsonzefilter.h delete mode 100644 muse/synti/deicsonze/deicsonzegui.cpp delete mode 100644 muse/synti/deicsonze/deicsonzegui.h delete mode 100644 muse/synti/deicsonze/deicsonzegui.ui delete mode 100644 muse/synti/deicsonze/deicsonzeplugin.cpp delete mode 100644 muse/synti/deicsonze/deicsonzeplugin.h delete mode 100644 muse/synti/deicsonze/deicsonzepreset.cpp delete mode 100644 muse/synti/deicsonze/deicsonzepreset.h delete mode 100644 muse/synti/deicsonze/pics/SHold.fig delete mode 100644 muse/synti/deicsonze/pics/SHold.png delete mode 100644 muse/synti/deicsonze/pics/algo1.fig delete mode 100644 muse/synti/deicsonze/pics/algo1.png delete mode 100644 muse/synti/deicsonze/pics/algo2.fig delete mode 100644 muse/synti/deicsonze/pics/algo2.png delete mode 100644 muse/synti/deicsonze/pics/algo3.fig delete mode 100644 muse/synti/deicsonze/pics/algo3.png delete mode 100644 muse/synti/deicsonze/pics/algo4.fig delete mode 100644 muse/synti/deicsonze/pics/algo4.png delete mode 100644 muse/synti/deicsonze/pics/algo5.fig delete mode 100644 muse/synti/deicsonze/pics/algo5.png delete mode 100644 muse/synti/deicsonze/pics/algo6.fig delete mode 100644 muse/synti/deicsonze/pics/algo6.png delete mode 100644 muse/synti/deicsonze/pics/algo7.fig delete mode 100644 muse/synti/deicsonze/pics/algo7.png delete mode 100644 muse/synti/deicsonze/pics/algo8.fig delete mode 100644 muse/synti/deicsonze/pics/algo8.png delete mode 100644 muse/synti/deicsonze/pics/sawUp.fig delete mode 100644 muse/synti/deicsonze/pics/sawUp.png delete mode 100644 muse/synti/deicsonze/pics/square.fig delete mode 100644 muse/synti/deicsonze/pics/square.png delete mode 100644 muse/synti/deicsonze/pics/triangl.fig delete mode 100644 muse/synti/deicsonze/pics/triangl.png delete mode 100644 muse/synti/deicsonze/pics/wave1.fig delete mode 100644 muse/synti/deicsonze/pics/wave1.gnuplot delete mode 100644 muse/synti/deicsonze/pics/wave1.png delete mode 100644 muse/synti/deicsonze/pics/wave2.fig delete mode 100644 muse/synti/deicsonze/pics/wave2.gnuplot delete mode 100644 muse/synti/deicsonze/pics/wave2.png delete mode 100644 muse/synti/deicsonze/pics/wave3.fig delete mode 100644 muse/synti/deicsonze/pics/wave3.gnuplot delete mode 100644 muse/synti/deicsonze/pics/wave3.png delete mode 100644 muse/synti/deicsonze/pics/wave4.fig delete mode 100644 muse/synti/deicsonze/pics/wave4.gnuplot delete mode 100644 muse/synti/deicsonze/pics/wave4.png delete mode 100644 muse/synti/deicsonze/pics/wave5.fig delete mode 100644 muse/synti/deicsonze/pics/wave5.gnuplot delete mode 100644 muse/synti/deicsonze/pics/wave5.png delete mode 100644 muse/synti/deicsonze/pics/wave6.fig delete mode 100644 muse/synti/deicsonze/pics/wave6.gnuplot delete mode 100644 muse/synti/deicsonze/pics/wave6.png delete mode 100644 muse/synti/deicsonze/pics/wave7.fig delete mode 100644 muse/synti/deicsonze/pics/wave7.gnuplot delete mode 100644 muse/synti/deicsonze/pics/wave7.png delete mode 100644 muse/synti/deicsonze/pics/wave8.fig delete mode 100644 muse/synti/deicsonze/pics/wave8.gnuplot delete mode 100644 muse/synti/deicsonze/pics/wave8.png delete mode 100644 muse/synti/fluid/CMakeLists.txt delete mode 100644 muse/synti/fluid/fluid.cpp delete mode 100644 muse/synti/fluid/fluid.h delete mode 100644 muse/synti/fluid/fluidgui.cpp delete mode 100644 muse/synti/fluid/fluidgui.h delete mode 100644 muse/synti/fluid/fluidgui.ui delete mode 100644 muse/synti/fluidsynth/CMakeLists.txt delete mode 100644 muse/synti/fluidsynth/README.txt delete mode 100644 muse/synti/fluidsynth/TODO delete mode 100644 muse/synti/fluidsynth/fluidsynthgui.cpp delete mode 100644 muse/synti/fluidsynth/fluidsynthgui.h delete mode 100644 muse/synti/fluidsynth/fluidsynthgui.ui delete mode 100644 muse/synti/fluidsynth/fluidsynti.cpp delete mode 100644 muse/synti/fluidsynth/fluidsynti.h delete mode 100644 muse/synti/libsynti/CMakeLists.txt delete mode 100644 muse/synti/libsynti/evdata.h delete mode 100644 muse/synti/libsynti/gui.cpp delete mode 100644 muse/synti/libsynti/gui.h delete mode 100644 muse/synti/libsynti/mess.cpp delete mode 100644 muse/synti/libsynti/mess.h delete mode 100644 muse/synti/libsynti/mess2.cpp delete mode 100644 muse/synti/libsynti/mess2.h delete mode 100644 muse/synti/libsynti/midievent.cpp delete mode 100644 muse/synti/libsynti/midievent.h delete mode 100644 muse/synti/libsynti/mono.cpp delete mode 100644 muse/synti/libsynti/mono.h delete mode 100644 muse/synti/libsynti/poly.cpp delete mode 100644 muse/synti/libsynti/poly.h delete mode 100644 muse/synti/mus/CMakeLists.txt delete mode 100644 muse/synti/mus/mus.cpp delete mode 100644 muse/synti/organ/CMakeLists.txt delete mode 100644 muse/synti/organ/organ.cpp delete mode 100644 muse/synti/organ/organ.h delete mode 100644 muse/synti/organ/organgui.cpp delete mode 100644 muse/synti/organ/organgui.h delete mode 100644 muse/synti/organ/organgui.ui delete mode 100644 muse/synti/organ/reverb.cpp delete mode 100644 muse/synti/organ/reverb.h delete mode 100644 muse/synti/organ/routing.cpp delete mode 100644 muse/synti/s1/CMakeLists.txt delete mode 100644 muse/synti/s1/s1.cpp delete mode 100644 muse/synti/simpledrums/CMakeLists.txt delete mode 100644 muse/synti/simpledrums/COPYING delete mode 100644 muse/synti/simpledrums/README delete mode 100644 muse/synti/simpledrums/ReleaseNotes.txt delete mode 100644 muse/synti/simpledrums/common.h delete mode 100644 muse/synti/simpledrums/simpledrums.cpp delete mode 100644 muse/synti/simpledrums/simpledrums.h delete mode 100644 muse/synti/simpledrums/simpledrumsgui.cpp delete mode 100644 muse/synti/simpledrums/simpledrumsgui.h delete mode 100644 muse/synti/simpledrums/simpledrumsguibase.ui delete mode 100644 muse/synti/simpledrums/ssplugin.cpp delete mode 100644 muse/synti/simpledrums/ssplugin.h delete mode 100644 muse/synti/simpledrums/sspluginchooserbase.ui delete mode 100644 muse/synti/simpledrums/ssplugingui.cpp delete mode 100644 muse/synti/simpledrums/ssplugingui.h delete mode 100644 muse/synti/vam/CMakeLists.txt delete mode 100644 muse/synti/vam/COPYING delete mode 100644 muse/synti/vam/ChangeLog delete mode 100644 muse/synti/vam/README delete mode 100644 muse/synti/vam/TODO delete mode 100644 muse/synti/vam/vam.cpp delete mode 100644 muse/synti/vam/vam.h delete mode 100644 muse/synti/vam/vamgui.cpp delete mode 100644 muse/synti/vam/vamgui.h delete mode 100644 muse/synti/vam/vamgui.ui delete mode 100644 muse/synti/zynaddsubfx/CMakeLists.txt delete mode 100644 muse/synti/zynaddsubfx/COPYING delete mode 100644 muse/synti/zynaddsubfx/DSP/AnalogFilter.C delete mode 100644 muse/synti/zynaddsubfx/DSP/AnalogFilter.h delete mode 100644 muse/synti/zynaddsubfx/DSP/FFTwrapper.C delete mode 100644 muse/synti/zynaddsubfx/DSP/FFTwrapper.h delete mode 100644 muse/synti/zynaddsubfx/DSP/Filter.C delete mode 100644 muse/synti/zynaddsubfx/DSP/Filter.h delete mode 100644 muse/synti/zynaddsubfx/DSP/Filter_.h delete mode 100644 muse/synti/zynaddsubfx/DSP/FormantFilter.C delete mode 100644 muse/synti/zynaddsubfx/DSP/FormantFilter.h delete mode 100644 muse/synti/zynaddsubfx/DSP/SVFilter.C delete mode 100644 muse/synti/zynaddsubfx/DSP/SVFilter.h delete mode 100644 muse/synti/zynaddsubfx/Effects/Alienwah.C delete mode 100644 muse/synti/zynaddsubfx/Effects/Alienwah.h delete mode 100644 muse/synti/zynaddsubfx/Effects/Chorus.C delete mode 100644 muse/synti/zynaddsubfx/Effects/Chorus.h delete mode 100644 muse/synti/zynaddsubfx/Effects/Distorsion.C delete mode 100644 muse/synti/zynaddsubfx/Effects/Distorsion.h delete mode 100644 muse/synti/zynaddsubfx/Effects/DynamicFilter.C delete mode 100644 muse/synti/zynaddsubfx/Effects/DynamicFilter.h delete mode 100644 muse/synti/zynaddsubfx/Effects/EQ.C delete mode 100644 muse/synti/zynaddsubfx/Effects/EQ.h delete mode 100644 muse/synti/zynaddsubfx/Effects/Echo.C delete mode 100644 muse/synti/zynaddsubfx/Effects/Echo.h delete mode 100644 muse/synti/zynaddsubfx/Effects/Effect.C delete mode 100644 muse/synti/zynaddsubfx/Effects/Effect.h delete mode 100644 muse/synti/zynaddsubfx/Effects/EffectLFO.C delete mode 100644 muse/synti/zynaddsubfx/Effects/EffectLFO.h delete mode 100644 muse/synti/zynaddsubfx/Effects/EffectMgr.C delete mode 100644 muse/synti/zynaddsubfx/Effects/EffectMgr.h delete mode 100644 muse/synti/zynaddsubfx/Effects/Phaser.C delete mode 100644 muse/synti/zynaddsubfx/Effects/Phaser.h delete mode 100644 muse/synti/zynaddsubfx/Effects/Reverb.C delete mode 100644 muse/synti/zynaddsubfx/Effects/Reverb.h delete mode 100644 muse/synti/zynaddsubfx/Input/ALSAMidiIn.C delete mode 100644 muse/synti/zynaddsubfx/Input/ALSAMidiIn.h delete mode 100644 muse/synti/zynaddsubfx/Input/MidiIn.C delete mode 100644 muse/synti/zynaddsubfx/Input/MidiIn.h delete mode 100644 muse/synti/zynaddsubfx/Input/NULLMidiIn.C delete mode 100644 muse/synti/zynaddsubfx/Input/NULLMidiIn.h delete mode 100644 muse/synti/zynaddsubfx/Input/OSSMidiIn.C delete mode 100644 muse/synti/zynaddsubfx/Input/OSSMidiIn.h delete mode 100644 muse/synti/zynaddsubfx/Input/WINMidiIn.C delete mode 100644 muse/synti/zynaddsubfx/Input/WINMidiIn.h delete mode 100644 muse/synti/zynaddsubfx/Misc/Bank.C delete mode 100644 muse/synti/zynaddsubfx/Misc/Bank.h delete mode 100644 muse/synti/zynaddsubfx/Misc/Config.C delete mode 100644 muse/synti/zynaddsubfx/Misc/Config.h delete mode 100644 muse/synti/zynaddsubfx/Misc/Dump.C delete mode 100644 muse/synti/zynaddsubfx/Misc/Dump.h delete mode 100644 muse/synti/zynaddsubfx/Misc/Master.C delete mode 100644 muse/synti/zynaddsubfx/Misc/Master.h delete mode 100644 muse/synti/zynaddsubfx/Misc/Microtonal.C delete mode 100644 muse/synti/zynaddsubfx/Misc/Microtonal.h delete mode 100644 muse/synti/zynaddsubfx/Misc/Part.C delete mode 100644 muse/synti/zynaddsubfx/Misc/Part.h delete mode 100644 muse/synti/zynaddsubfx/Misc/Util.C delete mode 100644 muse/synti/zynaddsubfx/Misc/Util.h delete mode 100644 muse/synti/zynaddsubfx/Misc/XMLwrapper.C delete mode 100644 muse/synti/zynaddsubfx/Misc/XMLwrapper.h delete mode 100644 muse/synti/zynaddsubfx/Output/Recorder.C delete mode 100644 muse/synti/zynaddsubfx/Output/Recorder.h delete mode 100644 muse/synti/zynaddsubfx/Params/ADnoteParameters.C delete mode 100644 muse/synti/zynaddsubfx/Params/ADnoteParameters.h delete mode 100644 muse/synti/zynaddsubfx/Params/Controller.C delete mode 100644 muse/synti/zynaddsubfx/Params/Controller.h delete mode 100644 muse/synti/zynaddsubfx/Params/EnvelopeParams.C delete mode 100644 muse/synti/zynaddsubfx/Params/EnvelopeParams.h delete mode 100644 muse/synti/zynaddsubfx/Params/FilterParams.C delete mode 100644 muse/synti/zynaddsubfx/Params/FilterParams.h delete mode 100644 muse/synti/zynaddsubfx/Params/LFOParams.C delete mode 100644 muse/synti/zynaddsubfx/Params/LFOParams.h delete mode 100644 muse/synti/zynaddsubfx/Params/PADnoteParameters.C delete mode 100644 muse/synti/zynaddsubfx/Params/PADnoteParameters.h delete mode 100644 muse/synti/zynaddsubfx/Params/Presets.C delete mode 100644 muse/synti/zynaddsubfx/Params/Presets.h delete mode 100644 muse/synti/zynaddsubfx/Params/PresetsStore.C delete mode 100644 muse/synti/zynaddsubfx/Params/PresetsStore.h delete mode 100644 muse/synti/zynaddsubfx/Params/SUBnoteParameters.C delete mode 100644 muse/synti/zynaddsubfx/Params/SUBnoteParameters.h delete mode 100644 muse/synti/zynaddsubfx/Seq/MIDIEvents.C delete mode 100644 muse/synti/zynaddsubfx/Seq/MIDIEvents.h delete mode 100644 muse/synti/zynaddsubfx/Seq/MIDIFile.C delete mode 100644 muse/synti/zynaddsubfx/Seq/MIDIFile.h delete mode 100644 muse/synti/zynaddsubfx/Seq/Sequencer.C delete mode 100644 muse/synti/zynaddsubfx/Seq/Sequencer.h delete mode 100644 muse/synti/zynaddsubfx/Synth/ADnote.C delete mode 100644 muse/synti/zynaddsubfx/Synth/ADnote.h delete mode 100644 muse/synti/zynaddsubfx/Synth/Envelope.C delete mode 100644 muse/synti/zynaddsubfx/Synth/Envelope.h delete mode 100644 muse/synti/zynaddsubfx/Synth/LFO.C delete mode 100644 muse/synti/zynaddsubfx/Synth/LFO.h delete mode 100644 muse/synti/zynaddsubfx/Synth/OscilGen.C delete mode 100644 muse/synti/zynaddsubfx/Synth/OscilGen.h delete mode 100644 muse/synti/zynaddsubfx/Synth/PADnote.C delete mode 100644 muse/synti/zynaddsubfx/Synth/PADnote.h delete mode 100644 muse/synti/zynaddsubfx/Synth/Resonance.C delete mode 100644 muse/synti/zynaddsubfx/Synth/Resonance.h delete mode 100644 muse/synti/zynaddsubfx/Synth/SUBnote.C delete mode 100644 muse/synti/zynaddsubfx/Synth/SUBnote.h delete mode 100644 muse/synti/zynaddsubfx/UI/ADnoteUI.fl delete mode 100644 muse/synti/zynaddsubfx/UI/BankUI.fl delete mode 100644 muse/synti/zynaddsubfx/UI/CMakeLists.txt delete mode 100644 muse/synti/zynaddsubfx/UI/ConfigUI.fl delete mode 100644 muse/synti/zynaddsubfx/UI/EffUI.fl delete mode 100644 muse/synti/zynaddsubfx/UI/EnvelopeUI.fl delete mode 100644 muse/synti/zynaddsubfx/UI/FilterUI.fl delete mode 100644 muse/synti/zynaddsubfx/UI/LFOUI.fl delete mode 100644 muse/synti/zynaddsubfx/UI/MasterUI.fl delete mode 100644 muse/synti/zynaddsubfx/UI/MicrotonalUI.fl delete mode 100644 muse/synti/zynaddsubfx/UI/OscilGenUI.fl delete mode 100644 muse/synti/zynaddsubfx/UI/PADnoteUI.fl delete mode 100644 muse/synti/zynaddsubfx/UI/PartUI.fl delete mode 100644 muse/synti/zynaddsubfx/UI/PresetsUI.fl delete mode 100644 muse/synti/zynaddsubfx/UI/ResonanceUI.fl delete mode 100644 muse/synti/zynaddsubfx/UI/SUBnoteUI.fl delete mode 100644 muse/synti/zynaddsubfx/UI/SeqUI.fl delete mode 100644 muse/synti/zynaddsubfx/UI/VirKeyboard.fl delete mode 100644 muse/synti/zynaddsubfx/UI/WidgetPDial.fl delete mode 100644 muse/synti/zynaddsubfx/banks/Arpeggios/0001-Arpeggio1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Arpeggios/0002-Arpeggio2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Arpeggios/0003-Arpeggio3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Arpeggios/0004-Arpeggio4.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Arpeggios/0005-Arpeggio5.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Arpeggios/0006-Aporggio6.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Arpeggios/0007-Arpeggio7.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Arpeggios/0008-Arpeggio8.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Arpeggios/0009-Arpeggio9.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Arpeggios/0010-Arpeggio10.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Arpeggios/0011-Arpeggio11.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Arpeggios/0033-Sequence1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Arpeggios/0034-Sequence2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Arpeggios/0036-Echoed Synth.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Arpeggios/0037-Echo FX.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Arpeggios/0039-Soft Arpeggio1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Arpeggios/0040-Soft Arpeggio2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Arpeggios/0041-Soft Arpeggio3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Arpeggios/0042-Soft Arpeggio4.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Arpeggios/0043-Soft Arpeggio5.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Arpeggios/0065-Hyper Organ1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Arpeggios/0066-Hyper Arpeggio.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Arpeggios/0068-Glass Arpeggio.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Bass/0001-Bass 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Bass/0002-Bass 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Bass/0003-Bass 3 _analog_.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Bass/0004-Bass 4.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Bass/0005-Bass 5.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Bass/0006-Analogue Bass.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Bass/0033-Wah Bass.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Bass/0035-FM Bass 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Bass/0036-FM Bass 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Brass/0001-FM Thrumpet.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Brass/0003-Synth Brazz 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Brass/0004-Synth Brazz 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Brass/0005-Synth Brass 3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Brass/0006-Synth Brass 4.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Brass/0007-Synth Brass 5.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Brass/0008-Brass Pad.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Brass/0009-Wah Brass.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Brass/0010-Solo Synth1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Brass/0011-Brazz 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Brass/0012-Brazz 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Brass/0033-Analog Brass 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Brass/0034-Analog Brass 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Brass/0035-Analog Brass 3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Brass/0036-Analog Brass 4.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Brass/0065-Simple Brass.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Brass/0066-Fat Brass.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Choir and Voice/0001-AHH Choir 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Choir and Voice/0002-AHH Choir 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Choir and Voice/0003-EHH Choir 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Choir and Voice/0004-Voice OOH.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Choir and Voice/0005-Choir Pad1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Choir and Voice/0006-Choir Pad2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Choir and Voice/0007-Choir Pad3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Choir and Voice/0008-Choir Pad4.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Choir and Voice/0009-Choir Pad5.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Choir and Voice/0010-Choir Pad6.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Choir and Voice/0033-Choir.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Choir and Voice/0034-Slow Morph_Choir.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Choir and Voice/0035-Wah Choir.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Choir and Voice/0036-Eooooo.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Choir and Voice/0037-Voiced Synth.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Choir and Voice/0039-Ohh Choir.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Choir and Voice/0065-Vocal Morph 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Choir and Voice/0066-Vocal Morph 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Choir and Voice/0067-Vocal Morph 3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Choir and Voice/0068-Vocal Morph 4.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Choir and Voice/0069-Vocal Morph 5.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Choir and Voice/0070-Vocal Morph 6.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Choir and Voice/0071-Vocal Morph 7.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Drums/0001-Drums Kit1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Dual/.qped delete mode 100644 muse/synti/zynaddsubfx/banks/Dual/0001-Layered1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Dual/0002-Layered2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Dual/0005-Organ and Saw.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Dual/0007-Organ Choir Pad1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Dual/0008-Organ Choir Pad2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Dual/0033-Rhodes Strings1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Dual/0034-Rhodes Strings2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Dual/0035-Rhodes Strings3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Dual/0036-Rhodes Strings4.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Dual/0065-Dream of the Saw.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Fantasy/0001-Emptyness1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Fantasy/0002-Emptyness2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Fantasy/0003-Space Synth.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Fantasy/0004-Weird Pad.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Fantasy/0006-Space SynthBrass.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Fantasy/0008-Space Voice1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Fantasy/0009-Space Voice2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Fantasy/0010-Space Voice3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Fantasy/0011-Space Choir1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Fantasy/0012-Space Choir2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Fantasy/0014-Glass Voices.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Fantasy/0015-Strange Voice.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Fantasy/0033-ImpossibleDream1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Fantasy/0034-ImpossibleDream2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Fantasy/0035-ImpossibleDream3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Fantasy/0036-ImpossibleDream4.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Fantasy/0037-ImpossibleDream5.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Fantasy/0040-Delayed Echo.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Fantasy/0041-Fade Down Echo.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Fantasy/0042-Rhodes Space1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Fantasy/0043-Rhodes Space2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Fantasy/0065-Long SpaceChoir1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Fantasy/0066-Long SpaceChoir2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Guitar/0001-Dist Guitar 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Guitar/0002-Dist Guitar 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Guitar/0003-Dist Guitar 3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Guitar/0004-Dist Guitar 4.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Guitar/0005-Dist Guitar 5.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Guitar/0033-Trash Guitar 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Guitar/0034-Trash Guitar 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Guitar/0035-Short.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Guitar/0065-Clean Guitar1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Misc/0001-Memories.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Misc/0002-Bells 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Misc/0003-Bells 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Misc/0004-Bells 3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Misc/0006-SuperSaw 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Misc/0007-SuperSaw 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Misc/0008-SuperSaw 3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Misc/0009-SuperSaw 4.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Misc/0010-SuperSaw 5.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Misc/0033-Trash Synth 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Misc/0034-Trash Synth 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Misc/0035-Trash Synth 3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Noises/0001-Synth Effect.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Noises/0002-Ioioioioioi.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Noises/0003-Noise1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Noises/0004-Noise2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Noises/0006-Wind.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Noises/0033-Metal Sound 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Noises/0034-Metal Sound 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Noises/0035-Metal Sound 3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Noises/0037-Metal Sound 4.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Noises/0038-Metal Sound 5.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Noises/0065-Short noise.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0001-Organ 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0002-Organ 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0003-Organ 3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0004-Organ 4.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0005-Organ 5.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0006-Organ 6.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0007-Organ 7.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0008-Organ 8.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0009-Organ 9.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0010-Organ 10.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0011-Organ 11.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0033-Cathedral Organ1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0034-Cathedral Organ2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0035-Cathedral Organ3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0037-Church Organ 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0038-Church Organ 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0039-Church Organ 3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0041-Church Organ Soft.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0065-Nice Organ 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0066-Nice Organ 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0067-Sub_Organ.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0068-Square Organ.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0069-Soft Organ 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0070-Soft Organ 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0071-Synth Organ.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0072-Fantasy Organ.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0097-Accordion Pad 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0098-Accordion Pad 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0099-Synth Accordion1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0100-Synth Accordion2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Organ/0101-Accordion 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Pads/0001-Sine Pad.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Pads/0002-sin2x pad.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Pads/0003-Analog Pad 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Pads/0004-Analog Pad 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Pads/0005-Square Pad 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Pads/0006-Square Pad 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Pads/0008-Resonance Pad1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Pads/0009-Resonance Pad2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Pads/0033-Synth Pad 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Pads/0034-Synth Pad 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Pads/0035-Synth Pad 3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Pads/0036-Synth Pad 4.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Pads/0065-Soft Pad.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Pads/0066-Flanged Pad 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Plucked/0001-Plucked 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Plucked/0002-Plucked 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Plucked/0003-Plucked 3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Plucked/0004-Plucked 4.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Plucked/0005-Plucked 5.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Plucked/0006-Plucked 6.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Plucked/0033-Plucked String1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Plucked/0034-Plucked String2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Plucked/0036-Plucked Wah.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Reed and Wind/0001-Flute 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Reed and Wind/0002-Flute 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Reed and Wind/0003-Flute 3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Reed and Wind/0005-FM Reed.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Reed and Wind/0006-Clarinet.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Reed and Wind/0007-Breathy1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Reed and Wind/0033-Reed 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Reed and Wind/0034-Reed 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Reed and Wind/0035-Reed 3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Reed and Wind/0036-Reed 4.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Reed and Wind/0037-Reed 5.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Reed and Wind/0038-Reed 6.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Reed and Wind/0039-Reed 7.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Reed and Wind/0065-Fat Reed1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Reed and Wind/0066-Fat Reed2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Reed and Wind/0067-Fat Reed3 square.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Rhodes/0001-DX Rhodes 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Rhodes/0002-DX Rhodes 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Rhodes/0003-DX Rhodes 3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Rhodes/0004-DX Rhodes 4.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Rhodes/0005-DX Rhodes 5.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Rhodes/0007-Dig Rhodes.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Rhodes/0008-Synth Rhodes1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Rhodes/0009-Synth Rhodes2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Rhodes/0010-Synth Rhodes3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Rhodes/0012-Ice Rhodes1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Rhodes/0013-Ice Rhodes2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Rhodes/0014-Ice Rhodes3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Rhodes/0033-FM Rhodes 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Rhodes/0034-FM Rhodes 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Rhodes/0035-FM Rhodes 3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Rhodes/0036-FM Rhodes 4.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Rhodes/0037-FM Rhodes 5.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Rhodes/0038-FM Rhodes 6.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Rhodes/0041-Soft Rhodes.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Rhodes/0042-Hard Rhodes1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Rhodes/0043-Hard Rhodes2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Rhodes/0044-Echo Rhodes.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Rhodes/0045-A long time ago.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Rhodes/0065-Steel Rhodes.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Splited/0001-Strings and Reed1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Splited/0002-Strings and Reed2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Splited/0003-Strings and Flute.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Splited/0033-Choir and Reed.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0001-Saw Strings 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0002-Saw Strings 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0003-Saw Strings 3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0004-Saw Strings 4.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0005-Saw Strings 5.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0006-Saw Strings 6.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0007-Saw Strings 7.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0008-Saw Strings 8.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0011-Strings Pad1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0012-Strings Pad2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0013-Strings Pad3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0016-Sweep Pad 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0017-Sweep Pad 1 Fat.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0018-Sweep Pad 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0019-Sweep Pad 3Wah.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0020-Sweep Pad 4.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0033-Strings1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0034-Dark Strings.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0035-Octave Pad.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0036-Fast Attack.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0038-Fat Saw.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0041-Saw 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0042-Saw 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0043-Saw 3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0044-Saw Pad.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0045-Soft Saw Pad.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0046-Echoed Saw.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0047-Vibratto Saw1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0048-Wah1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0050-Synth Violin 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0051-Synth Violin 2 Fat.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0065-Simple Strings.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0066-Dual Strings.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Strings/0067-Dual StringsOct.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Synth/0001-Soft Synth 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Synth/0002-Soft Synth 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Synth/0004-Pulse Pad 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Synth/0005-Pulse Pad 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Synth/0007-Analog Filter 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Synth/0008-Analog Filter 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Synth/0033-Phased Pad 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Synth/0034-Phased Pad 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Synth/0035-Phased Pad 3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Synth/0037-Resonance Synth.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Synth/0039-Multi-phase synth.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Synth/0065-Computer Lead.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Synth/0067-Detuned Harmonic.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/Synth/0097-FM Synth.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/SynthPiano/0001-Soft Piano 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/SynthPiano/0002-Soft Piano 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/SynthPiano/0004-Fantasy Bell.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/SynthPiano/0005-Synth Piano1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/SynthPiano/0006-Synth Piano2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/SynthPiano/0007-Termollo1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/SynthPiano/0008-Termollo2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/SynthPiano/0009-Termollo3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/SynthPiano/0011-Drop1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/SynthPiano/0012-Drop2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/SynthPiano/0033-Analog Piano 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/SynthPiano/0034-Analog Piano 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/SynthPiano/0035-Analog Piano 3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/SynthPiano/0037-FM Synth1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/SynthPiano/0039-BinaryPiano1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/SynthPiano/0040-BinaryPiano2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/SynthPiano/0065-Synth Piano 1.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/SynthPiano/0066-Synth Piano 2.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/SynthPiano/0067-Synth Piano 3.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/SynthPiano/0068-Synth Piano 3 fat.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/SynthPiano/0069-Synth Piano 3 det.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/SynthPiano/0070-Synth Piano 4.xiz delete mode 100644 muse/synti/zynaddsubfx/banks/SynthPiano/0071-Synth Piano 5.xiz delete mode 100644 muse/synti/zynaddsubfx/globals.h delete mode 100644 muse/synti/zynaddsubfx/main.cpp create mode 100644 muse_qt4_evolution/CMakeLists.txt create mode 100644 muse_qt4_evolution/COPYING create mode 100644 muse_qt4_evolution/ChangeLog create mode 100644 muse_qt4_evolution/Doxyfile.in create mode 100644 muse_qt4_evolution/NEWS create mode 100644 muse_qt4_evolution/README create mode 100644 muse_qt4_evolution/Reference create mode 100644 muse_qt4_evolution/al/CMakeLists.txt create mode 100644 muse_qt4_evolution/al/al.cpp create mode 100644 muse_qt4_evolution/al/al.h create mode 100644 muse_qt4_evolution/al/dsp.cpp create mode 100644 muse_qt4_evolution/al/dsp.h create mode 100644 muse_qt4_evolution/al/dspSSE.cpp create mode 100644 muse_qt4_evolution/al/dspXMM.cpp create mode 100644 muse_qt4_evolution/al/marker.cpp create mode 100644 muse_qt4_evolution/al/marker.h create mode 100644 muse_qt4_evolution/al/pos.cpp create mode 100644 muse_qt4_evolution/al/pos.h create mode 100644 muse_qt4_evolution/al/sig.cpp create mode 100644 muse_qt4_evolution/al/sig.h create mode 100644 muse_qt4_evolution/al/tempo.cpp create mode 100644 muse_qt4_evolution/al/tempo.h create mode 100644 muse_qt4_evolution/al/xml.cpp create mode 100644 muse_qt4_evolution/al/xml.h create mode 100644 muse_qt4_evolution/all.h create mode 100644 muse_qt4_evolution/awl/CMakeLists.txt create mode 100644 muse_qt4_evolution/awl/aslider.cpp create mode 100644 muse_qt4_evolution/awl/aslider.h create mode 100644 muse_qt4_evolution/awl/awl.cpp create mode 100644 muse_qt4_evolution/awl/awl.h create mode 100644 muse_qt4_evolution/awl/awlplugin.cpp create mode 100644 muse_qt4_evolution/awl/awlplugin.h create mode 100644 muse_qt4_evolution/awl/checkbox.cpp create mode 100644 muse_qt4_evolution/awl/checkbox.h create mode 100644 muse_qt4_evolution/awl/clock.xpm create mode 100644 muse_qt4_evolution/awl/combobox.cpp create mode 100644 muse_qt4_evolution/awl/combobox.h create mode 100644 muse_qt4_evolution/awl/drawbar.cpp create mode 100644 muse_qt4_evolution/awl/drawbar.h create mode 100644 muse_qt4_evolution/awl/fastlog.h create mode 100644 muse_qt4_evolution/awl/floatentry.cpp create mode 100644 muse_qt4_evolution/awl/floatentry.h create mode 100644 muse_qt4_evolution/awl/knob.cpp create mode 100644 muse_qt4_evolution/awl/knob.h create mode 100644 muse_qt4_evolution/awl/ltest.cpp create mode 100644 muse_qt4_evolution/awl/metronom.xpm create mode 100644 muse_qt4_evolution/awl/midimeter.cpp create mode 100644 muse_qt4_evolution/awl/midimeter.h create mode 100644 muse_qt4_evolution/awl/midimslider.cpp create mode 100644 muse_qt4_evolution/awl/midimslider.h create mode 100644 muse_qt4_evolution/awl/midipanentry.cpp create mode 100644 muse_qt4_evolution/awl/midipanentry.h create mode 100644 muse_qt4_evolution/awl/midipanknob.cpp create mode 100644 muse_qt4_evolution/awl/midipanknob.h create mode 100644 muse_qt4_evolution/awl/midivolentry.cpp create mode 100644 muse_qt4_evolution/awl/midivolentry.h create mode 100644 muse_qt4_evolution/awl/mslider.cpp create mode 100644 muse_qt4_evolution/awl/mslider.h create mode 100644 muse_qt4_evolution/awl/panentry.cpp create mode 100644 muse_qt4_evolution/awl/panentry.h create mode 100644 muse_qt4_evolution/awl/panknob.cpp create mode 100644 muse_qt4_evolution/awl/panknob.h create mode 100644 muse_qt4_evolution/awl/pitchedit.cpp create mode 100644 muse_qt4_evolution/awl/pitchedit.h create mode 100644 muse_qt4_evolution/awl/pitchlabel.cpp create mode 100644 muse_qt4_evolution/awl/pitchlabel.h create mode 100644 muse_qt4_evolution/awl/posedit.cpp create mode 100644 muse_qt4_evolution/awl/posedit.h create mode 100644 muse_qt4_evolution/awl/poslabel.cpp create mode 100644 muse_qt4_evolution/awl/poslabel.h create mode 100644 muse_qt4_evolution/awl/sigedit.cpp create mode 100644 muse_qt4_evolution/awl/sigedit.h create mode 100644 muse_qt4_evolution/awl/slider.cpp create mode 100644 muse_qt4_evolution/awl/slider.h create mode 100644 muse_qt4_evolution/awl/tcanvas.cpp create mode 100644 muse_qt4_evolution/awl/tcanvas.h create mode 100644 muse_qt4_evolution/awl/tempoedit.cpp create mode 100644 muse_qt4_evolution/awl/tempoedit.h create mode 100644 muse_qt4_evolution/awl/tempolabel.cpp create mode 100644 muse_qt4_evolution/awl/tempolabel.h create mode 100644 muse_qt4_evolution/awl/utils.cpp create mode 100644 muse_qt4_evolution/awl/utils.h create mode 100644 muse_qt4_evolution/awl/volentry.cpp create mode 100644 muse_qt4_evolution/awl/volentry.h create mode 100644 muse_qt4_evolution/awl/volknob.cpp create mode 100644 muse_qt4_evolution/awl/volknob.h create mode 100644 muse_qt4_evolution/awl/volslider.cpp create mode 100644 muse_qt4_evolution/awl/volslider.h create mode 100644 muse_qt4_evolution/cmake/TargetDoc.cmake create mode 100644 muse_qt4_evolution/cmake/UsePkgConfig1.cmake create mode 100644 muse_qt4_evolution/config.h.in create mode 100644 muse_qt4_evolution/doc/README.de create mode 100644 muse_qt4_evolution/doc/README.instruments create mode 100644 muse_qt4_evolution/doc/README.ladspaguis create mode 100644 muse_qt4_evolution/doc/README.realtime create mode 100644 muse_qt4_evolution/doc/README.shortcuts create mode 100644 muse_qt4_evolution/doc/README.softsynth create mode 100644 muse_qt4_evolution/doc/README.translate create mode 100644 muse_qt4_evolution/doc/dimpl.odt create mode 100644 muse_qt4_evolution/doc/manual-de.odt create mode 100644 muse_qt4_evolution/doc/pics/main0.png create mode 100644 muse_qt4_evolution/doc/pics/main1.png create mode 100644 muse_qt4_evolution/doc/pics/main2.png create mode 100644 muse_qt4_evolution/doc/pics/mixer1.png create mode 100644 muse_qt4_evolution/doc/pics/pianoroll1.png create mode 100644 muse_qt4_evolution/doc/pics/pianoroll2.png create mode 100644 muse_qt4_evolution/doc/pics/select_project.png create mode 100644 muse_qt4_evolution/doc/pics/select_template.png create mode 100644 muse_qt4_evolution/grepmidi/CMakeLists.txt create mode 100644 muse_qt4_evolution/grepmidi/grepmidi.cpp create mode 100644 muse_qt4_evolution/midiplugins/CMakeLists.txt create mode 100644 muse_qt4_evolution/midiplugins/drumglue/CMakeLists.txt create mode 100644 muse_qt4_evolution/midiplugins/drumglue/drumglue.cpp create mode 100644 muse_qt4_evolution/midiplugins/drumglue/drumglue.h create mode 100644 muse_qt4_evolution/midiplugins/drumglue/drumgluegui.cpp create mode 100644 muse_qt4_evolution/midiplugins/drumglue/drumgluegui.h create mode 100644 muse_qt4_evolution/midiplugins/drumglue/drumgluegui.ui create mode 100644 muse_qt4_evolution/midiplugins/drumglue/globalinstrumentview.cpp create mode 100644 muse_qt4_evolution/midiplugins/drumglue/globalinstrumentview.h create mode 100644 muse_qt4_evolution/midiplugins/drumglue/globalinstrumentview.ui create mode 100644 muse_qt4_evolution/midiplugins/drumglue/outputinstrumentview.cpp create mode 100644 muse_qt4_evolution/midiplugins/drumglue/outputinstrumentview.h create mode 100644 muse_qt4_evolution/midiplugins/drumglue/outputinstrumentview.ui create mode 100644 muse_qt4_evolution/midiplugins/dump/CMakeLists.txt create mode 100644 muse_qt4_evolution/midiplugins/dump/dump.cpp create mode 100644 muse_qt4_evolution/midiplugins/dump/dump.h create mode 100644 muse_qt4_evolution/midiplugins/filter/CMakeLists.txt create mode 100644 muse_qt4_evolution/midiplugins/filter/ctrlcombo.cpp create mode 100644 muse_qt4_evolution/midiplugins/filter/ctrlcombo.h create mode 100644 muse_qt4_evolution/midiplugins/filter/filter.cpp create mode 100644 muse_qt4_evolution/midiplugins/filter/filter.h create mode 100644 muse_qt4_evolution/midiplugins/filter/filtergui.cpp create mode 100644 muse_qt4_evolution/midiplugins/filter/filtergui.h create mode 100644 muse_qt4_evolution/midiplugins/filter/filtergui.ui create mode 100644 muse_qt4_evolution/midiplugins/libmidiplugin/CMakeLists.txt create mode 100644 muse_qt4_evolution/midiplugins/libmidiplugin/evdata.h create mode 100644 muse_qt4_evolution/midiplugins/libmidiplugin/mempi.cpp create mode 100644 muse_qt4_evolution/midiplugins/libmidiplugin/mempi.h create mode 100644 muse_qt4_evolution/midiplugins/libmidiplugin/midievent.cpp create mode 100644 muse_qt4_evolution/midiplugins/libmidiplugin/midievent.h create mode 100644 muse_qt4_evolution/midiplugins/metronom/CMakeLists.txt create mode 100644 muse_qt4_evolution/midiplugins/metronom/metronom.cpp create mode 100644 muse_qt4_evolution/midiplugins/metronom/metronom.h create mode 100644 muse_qt4_evolution/midiplugins/metronom/metronomgui.cpp create mode 100644 muse_qt4_evolution/midiplugins/metronom/metronomgui.h create mode 100644 muse_qt4_evolution/midiplugins/metronom/metronomgui.ui create mode 100644 muse_qt4_evolution/midiplugins/splitlayer/CMakeLists.txt create mode 100644 muse_qt4_evolution/midiplugins/splitlayer/splitlayer.cpp create mode 100644 muse_qt4_evolution/midiplugins/splitlayer/splitlayer.h create mode 100644 muse_qt4_evolution/midiplugins/splitlayer/splitlayergui.cpp create mode 100644 muse_qt4_evolution/midiplugins/splitlayer/splitlayergui.h create mode 100644 muse_qt4_evolution/midiplugins/transform/CMakeLists.txt create mode 100644 muse_qt4_evolution/midiplugins/transform/transform.cpp create mode 100644 muse_qt4_evolution/midiplugins/transform/transform.h create mode 100644 muse_qt4_evolution/midiplugins/transform/transform.ui create mode 100644 muse_qt4_evolution/midiplugins/trigg/CMakeLists.txt create mode 100644 muse_qt4_evolution/midiplugins/trigg/trigg.cpp create mode 100644 muse_qt4_evolution/midiplugins/trigg/trigg.h create mode 100644 muse_qt4_evolution/midiplugins/trigg/trigggui.cpp create mode 100644 muse_qt4_evolution/midiplugins/trigg/trigggui.h create mode 100644 muse_qt4_evolution/midiplugins/trigg/trigggui.ui create mode 100644 muse_qt4_evolution/muse.pro create mode 100644 muse_qt4_evolution/muse/CMakeLists.txt create mode 100644 muse_qt4_evolution/muse/aboutbox.ui create mode 100644 muse_qt4_evolution/muse/arranger.cpp create mode 100644 muse_qt4_evolution/muse/arranger.h create mode 100644 muse_qt4_evolution/muse/astrip.cpp create mode 100644 muse_qt4_evolution/muse/astrip.h create mode 100644 muse_qt4_evolution/muse/audio.cpp create mode 100644 muse_qt4_evolution/muse/audio.h create mode 100644 muse_qt4_evolution/muse/audiodev.h create mode 100644 muse_qt4_evolution/muse/audiogroup.cpp create mode 100644 muse_qt4_evolution/muse/audiogroup.h create mode 100644 muse_qt4_evolution/muse/audioinput.cpp create mode 100644 muse_qt4_evolution/muse/audioinput.h create mode 100644 muse_qt4_evolution/muse/audiooutput.cpp create mode 100644 muse_qt4_evolution/muse/audiooutput.h create mode 100644 muse_qt4_evolution/muse/audioprefetch.cpp create mode 100644 muse_qt4_evolution/muse/audioprefetch.h create mode 100644 muse_qt4_evolution/muse/audiotrack.cpp create mode 100644 muse_qt4_evolution/muse/audiotrack.h create mode 100644 muse_qt4_evolution/muse/audiowriteback.cpp create mode 100644 muse_qt4_evolution/muse/audiowriteback.h create mode 100644 muse_qt4_evolution/muse/auxplugin.cpp create mode 100644 muse_qt4_evolution/muse/auxplugin.h create mode 100644 muse_qt4_evolution/muse/canvas.cpp create mode 100644 muse_qt4_evolution/muse/canvas.h create mode 100644 muse_qt4_evolution/muse/cliplist/cliplist.cpp create mode 100644 muse_qt4_evolution/muse/cliplist/cliplist.h create mode 100644 muse_qt4_evolution/muse/cobject.cpp create mode 100644 muse_qt4_evolution/muse/cobject.h create mode 100644 muse_qt4_evolution/muse/conf.cpp create mode 100644 muse_qt4_evolution/muse/conf.h create mode 100644 muse_qt4_evolution/muse/configmidifile.ui create mode 100644 muse_qt4_evolution/muse/configtrack.cpp create mode 100644 muse_qt4_evolution/muse/configtrack.h create mode 100644 muse_qt4_evolution/muse/configtrack.ui create mode 100644 muse_qt4_evolution/muse/ctrl.cpp create mode 100644 muse_qt4_evolution/muse/ctrl.h create mode 100644 muse_qt4_evolution/muse/ctrl/CMakeLists.txt create mode 100644 muse_qt4_evolution/muse/ctrl/configmidictrl.cpp create mode 100644 muse_qt4_evolution/muse/ctrl/configmidictrl.h create mode 100644 muse_qt4_evolution/muse/ctrl/configmidictrl.ui create mode 100644 muse_qt4_evolution/muse/ctrl/ctrldialog.cpp create mode 100644 muse_qt4_evolution/muse/ctrl/ctrldialog.h create mode 100644 muse_qt4_evolution/muse/ctrl/ctrldialog.ui create mode 100644 muse_qt4_evolution/muse/ctrl/ctrledit.cpp create mode 100644 muse_qt4_evolution/muse/ctrl/ctrledit.h create mode 100644 muse_qt4_evolution/muse/ctrl/ctrleditor.cpp create mode 100644 muse_qt4_evolution/muse/ctrl/ctrleditor.h create mode 100644 muse_qt4_evolution/muse/ctrl/definemidictrl.cpp create mode 100644 muse_qt4_evolution/muse/ctrl/definemidictrl.h create mode 100644 muse_qt4_evolution/muse/ctrl/definemidictrl.ui create mode 100644 muse_qt4_evolution/muse/debug.h create mode 100644 muse_qt4_evolution/muse/default_click.h create mode 100644 muse_qt4_evolution/muse/device.h create mode 100644 muse_qt4_evolution/muse/driver.h create mode 100644 muse_qt4_evolution/muse/dssihost.cpp create mode 100644 muse_qt4_evolution/muse/dssihost.h create mode 100644 muse_qt4_evolution/muse/dummyaudio.cpp create mode 100644 muse_qt4_evolution/muse/editor.cpp create mode 100644 muse_qt4_evolution/muse/editor.h create mode 100644 muse_qt4_evolution/muse/esettings.cpp create mode 100644 muse_qt4_evolution/muse/esettings.h create mode 100644 muse_qt4_evolution/muse/evdata.h create mode 100644 muse_qt4_evolution/muse/event.cpp create mode 100644 muse_qt4_evolution/muse/event.h create mode 100644 muse_qt4_evolution/muse/eventbase.h create mode 100644 muse_qt4_evolution/muse/eventlist.cpp create mode 100644 muse_qt4_evolution/muse/exportmidi.cpp create mode 100644 muse_qt4_evolution/muse/exportmidi.h create mode 100644 muse_qt4_evolution/muse/exportmididialog.ui create mode 100644 muse_qt4_evolution/muse/extmidieditor.cpp create mode 100644 muse_qt4_evolution/muse/extmidieditor.h create mode 100644 muse_qt4_evolution/muse/fastlog.h create mode 100644 muse_qt4_evolution/muse/fifo.cpp create mode 100644 muse_qt4_evolution/muse/fifo.h create mode 100644 muse_qt4_evolution/muse/gconfig.cpp create mode 100644 muse_qt4_evolution/muse/gconfig.h create mode 100644 muse_qt4_evolution/muse/globaldefs.h create mode 100644 muse_qt4_evolution/muse/globals.cpp create mode 100644 muse_qt4_evolution/muse/globals.h create mode 100644 muse_qt4_evolution/muse/gui.h create mode 100644 muse_qt4_evolution/muse/help.cpp create mode 100644 muse_qt4_evolution/muse/help.h create mode 100644 muse_qt4_evolution/muse/helper.cpp create mode 100644 muse_qt4_evolution/muse/helper.h create mode 100644 muse_qt4_evolution/muse/icons.cpp create mode 100644 muse_qt4_evolution/muse/icons.h create mode 100644 muse_qt4_evolution/muse/importmidi.cpp create mode 100644 muse_qt4_evolution/muse/importmidi.h create mode 100644 muse_qt4_evolution/muse/importmidi.ui create mode 100644 muse_qt4_evolution/muse/instruments/CMakeLists.txt create mode 100644 muse_qt4_evolution/muse/instruments/editinstrument.cpp create mode 100644 muse_qt4_evolution/muse/instruments/editinstrument.h create mode 100644 muse_qt4_evolution/muse/instruments/editinstrument.ui create mode 100644 muse_qt4_evolution/muse/instruments/midictrledit.cpp create mode 100644 muse_qt4_evolution/muse/instruments/midictrledit.h create mode 100644 muse_qt4_evolution/muse/instruments/minstrument.cpp create mode 100644 muse_qt4_evolution/muse/instruments/minstrument.h create mode 100644 muse_qt4_evolution/muse/jack.cpp create mode 100644 muse_qt4_evolution/muse/jackaudio.h create mode 100644 muse_qt4_evolution/muse/ladspa.h create mode 100644 muse_qt4_evolution/muse/ladspaplugin.cpp create mode 100644 muse_qt4_evolution/muse/ladspaplugin.h create mode 100644 muse_qt4_evolution/muse/liste/CMakeLists.txt create mode 100644 muse_qt4_evolution/muse/liste/ctrllistedit.cpp create mode 100644 muse_qt4_evolution/muse/liste/ctrllistedit.h create mode 100644 muse_qt4_evolution/muse/liste/ctrllistedit.ui create mode 100644 muse_qt4_evolution/muse/liste/ieventdialog.cpp create mode 100644 muse_qt4_evolution/muse/liste/ieventdialog.h create mode 100644 muse_qt4_evolution/muse/liste/listedit.cpp create mode 100644 muse_qt4_evolution/muse/liste/listedit.h create mode 100644 muse_qt4_evolution/muse/liste/partlistedit.cpp create mode 100644 muse_qt4_evolution/muse/liste/partlistedit.h create mode 100644 muse_qt4_evolution/muse/liste/partlistedit.ui create mode 100644 muse_qt4_evolution/muse/liste/tracklistedit.cpp create mode 100644 muse_qt4_evolution/muse/liste/tracklistedit.h create mode 100644 muse_qt4_evolution/muse/liste/tracklistedit.ui create mode 100644 muse_qt4_evolution/muse/marker/CMakeLists.txt create mode 100644 muse_qt4_evolution/muse/marker/markerview.cpp create mode 100644 muse_qt4_evolution/muse/marker/markerview.h create mode 100644 muse_qt4_evolution/muse/master/CMakeLists.txt create mode 100644 muse_qt4_evolution/muse/master/master.cpp create mode 100644 muse_qt4_evolution/muse/master/master.h create mode 100644 muse_qt4_evolution/muse/master/masteredit.cpp create mode 100644 muse_qt4_evolution/muse/master/masteredit.h create mode 100644 muse_qt4_evolution/muse/midi.cpp create mode 100644 muse_qt4_evolution/muse/midi.h create mode 100644 muse_qt4_evolution/muse/midictrl.cpp create mode 100644 muse_qt4_evolution/muse/midictrl.h create mode 100644 muse_qt4_evolution/muse/midiedit/CMakeLists.txt create mode 100644 muse_qt4_evolution/muse/midiedit/citem.cpp create mode 100644 muse_qt4_evolution/muse/midiedit/citem.h create mode 100644 muse_qt4_evolution/muse/midiedit/cmd.h create mode 100644 muse_qt4_evolution/muse/midiedit/dcanvas.cpp create mode 100644 muse_qt4_evolution/muse/midiedit/dcanvas.h create mode 100644 muse_qt4_evolution/muse/midiedit/drumedit.cpp create mode 100644 muse_qt4_evolution/muse/midiedit/drumedit.h create mode 100644 muse_qt4_evolution/muse/midiedit/drummap.cpp create mode 100644 muse_qt4_evolution/muse/midiedit/drummap.h create mode 100644 muse_qt4_evolution/muse/midiedit/ecanvas.cpp create mode 100644 muse_qt4_evolution/muse/midiedit/ecanvas.h create mode 100644 muse_qt4_evolution/muse/midiedit/gatetime.cpp create mode 100644 muse_qt4_evolution/muse/midiedit/gatetime.h create mode 100644 muse_qt4_evolution/muse/midiedit/gatetime.ui create mode 100644 muse_qt4_evolution/muse/midiedit/midicmd.cpp create mode 100644 muse_qt4_evolution/muse/midiedit/midicmd.h create mode 100644 muse_qt4_evolution/muse/midiedit/midicmd.ui create mode 100644 muse_qt4_evolution/muse/midiedit/midieditor.cpp create mode 100644 muse_qt4_evolution/muse/midiedit/midieditor.h create mode 100644 muse_qt4_evolution/muse/midiedit/miditracker.cpp create mode 100644 muse_qt4_evolution/muse/midiedit/miditracker.h create mode 100644 muse_qt4_evolution/muse/midiedit/pianoroll.cpp create mode 100644 muse_qt4_evolution/muse/midiedit/pianoroll.h create mode 100644 muse_qt4_evolution/muse/midiedit/prcanvas.cpp create mode 100644 muse_qt4_evolution/muse/midiedit/prcanvas.h create mode 100644 muse_qt4_evolution/muse/midiedit/quantconfig.cpp create mode 100644 muse_qt4_evolution/muse/midiedit/quantconfig.h create mode 100644 muse_qt4_evolution/muse/midiedit/quantconfig.ui create mode 100644 muse_qt4_evolution/muse/midiedit/trackpattern.cpp create mode 100644 muse_qt4_evolution/muse/midiedit/trackpattern.h create mode 100644 muse_qt4_evolution/muse/midiedit/velocity.cpp create mode 100644 muse_qt4_evolution/muse/midiedit/velocity.h create mode 100644 muse_qt4_evolution/muse/midiedit/velocity.ui create mode 100644 muse_qt4_evolution/muse/midievent.cpp create mode 100644 muse_qt4_evolution/muse/midievent.h create mode 100644 muse_qt4_evolution/muse/midieventbase.cpp create mode 100644 muse_qt4_evolution/muse/midieventbase.h create mode 100644 muse_qt4_evolution/muse/midififo.cpp create mode 100644 muse_qt4_evolution/muse/midififo.h create mode 100644 muse_qt4_evolution/muse/midifile.cpp create mode 100644 muse_qt4_evolution/muse/midifile.h create mode 100644 muse_qt4_evolution/muse/midiinport.cpp create mode 100644 muse_qt4_evolution/muse/midiinport.h create mode 100644 muse_qt4_evolution/muse/midiout.cpp create mode 100644 muse_qt4_evolution/muse/midiout.h create mode 100644 muse_qt4_evolution/muse/midioutport.cpp create mode 100644 muse_qt4_evolution/muse/midioutport.h create mode 100644 muse_qt4_evolution/muse/midiplugin.cpp create mode 100644 muse_qt4_evolution/muse/midiplugin.h create mode 100644 muse_qt4_evolution/muse/midiportinfo.ui create mode 100644 muse_qt4_evolution/muse/midirack.cpp create mode 100644 muse_qt4_evolution/muse/midirack.h create mode 100644 muse_qt4_evolution/muse/midirc.cpp create mode 100644 muse_qt4_evolution/muse/midirc.h create mode 100644 muse_qt4_evolution/muse/midisynti.cpp create mode 100644 muse_qt4_evolution/muse/midisynti.h create mode 100644 muse_qt4_evolution/muse/miditrack.cpp create mode 100644 muse_qt4_evolution/muse/miditrack.h create mode 100644 muse_qt4_evolution/muse/miditrackbase.cpp create mode 100644 muse_qt4_evolution/muse/miditrackbase.h create mode 100644 muse_qt4_evolution/muse/miditrackinfo.ui create mode 100644 muse_qt4_evolution/muse/miditransform.cpp create mode 100644 muse_qt4_evolution/muse/miditransform.h create mode 100644 muse_qt4_evolution/muse/mixer.cpp create mode 100644 muse_qt4_evolution/muse/mixer.h create mode 100644 muse_qt4_evolution/muse/mstrip.cpp create mode 100644 muse_qt4_evolution/muse/mstrip.h create mode 100644 muse_qt4_evolution/muse/mtc.cpp create mode 100644 muse_qt4_evolution/muse/mtc.h create mode 100644 muse_qt4_evolution/muse/muse.cpp create mode 100644 muse_qt4_evolution/muse/muse.h create mode 100644 muse_qt4_evolution/muse/muse.qrc create mode 100644 muse_qt4_evolution/muse/part.cpp create mode 100644 muse_qt4_evolution/muse/part.h create mode 100644 muse_qt4_evolution/muse/partdrag.cpp create mode 100644 muse_qt4_evolution/muse/partdrag.h create mode 100644 muse_qt4_evolution/muse/pipeline.cpp create mode 100644 muse_qt4_evolution/muse/pipeline.h create mode 100644 muse_qt4_evolution/muse/plugin.cpp create mode 100644 muse_qt4_evolution/muse/plugin.h create mode 100644 muse_qt4_evolution/muse/plugingui.cpp create mode 100644 muse_qt4_evolution/muse/plugingui.h create mode 100644 muse_qt4_evolution/muse/port.h create mode 100644 muse_qt4_evolution/muse/preferences.cpp create mode 100644 muse_qt4_evolution/muse/preferences.h create mode 100644 muse_qt4_evolution/muse/preferences.ui create mode 100644 muse_qt4_evolution/muse/projectdialog.cpp create mode 100644 muse_qt4_evolution/muse/projectdialog.h create mode 100644 muse_qt4_evolution/muse/projectdialog.ui create mode 100644 muse_qt4_evolution/muse/projectpropsdialog.cpp create mode 100644 muse_qt4_evolution/muse/projectpropsdialog.h create mode 100644 muse_qt4_evolution/muse/projectpropsdialog.ui create mode 100644 muse_qt4_evolution/muse/rack.cpp create mode 100644 muse_qt4_evolution/muse/rack.h create mode 100644 muse_qt4_evolution/muse/revision.cpp create mode 100644 muse_qt4_evolution/muse/revision.h create mode 100644 muse_qt4_evolution/muse/route.cpp create mode 100644 muse_qt4_evolution/muse/route.h create mode 100644 muse_qt4_evolution/muse/routedialog.cpp create mode 100644 muse_qt4_evolution/muse/routedialog.h create mode 100644 muse_qt4_evolution/muse/routedialog.ui create mode 100644 muse_qt4_evolution/muse/selectfilter.h create mode 100644 muse_qt4_evolution/muse/seqmsg.cpp create mode 100644 muse_qt4_evolution/muse/shortcuts.cpp create mode 100644 muse_qt4_evolution/muse/shortcuts.h create mode 100644 muse_qt4_evolution/muse/song.cpp create mode 100644 muse_qt4_evolution/muse/song.h create mode 100644 muse_qt4_evolution/muse/songfile.cpp create mode 100644 muse_qt4_evolution/muse/songpart.cpp create mode 100644 muse_qt4_evolution/muse/songtrack.cpp create mode 100644 muse_qt4_evolution/muse/strip.cpp create mode 100644 muse_qt4_evolution/muse/strip.h create mode 100644 muse_qt4_evolution/muse/style.qss create mode 100644 muse_qt4_evolution/muse/sync.cpp create mode 100644 muse_qt4_evolution/muse/sync.h create mode 100644 muse_qt4_evolution/muse/synth.cpp create mode 100644 muse_qt4_evolution/muse/synth.h create mode 100644 muse_qt4_evolution/muse/templatedialog.cpp create mode 100644 muse_qt4_evolution/muse/templatedialog.h create mode 100644 muse_qt4_evolution/muse/templatedialog.ui create mode 100644 muse_qt4_evolution/muse/thread.cpp create mode 100644 muse_qt4_evolution/muse/thread.h create mode 100644 muse_qt4_evolution/muse/ticksynth.cpp create mode 100644 muse_qt4_evolution/muse/ticksynth.h create mode 100644 muse_qt4_evolution/muse/tllineedit.cpp create mode 100644 muse_qt4_evolution/muse/tllineedit.h create mode 100644 muse_qt4_evolution/muse/tlswidget.cpp create mode 100644 muse_qt4_evolution/muse/tlswidget.h create mode 100644 muse_qt4_evolution/muse/tlwidget.cpp create mode 100644 muse_qt4_evolution/muse/tlwidget.h create mode 100644 muse_qt4_evolution/muse/tlwlayout.cpp create mode 100644 muse_qt4_evolution/muse/tlwlayout.h create mode 100644 muse_qt4_evolution/muse/track.cpp create mode 100644 muse_qt4_evolution/muse/track.h create mode 100644 muse_qt4_evolution/muse/trackdrag.cpp create mode 100644 muse_qt4_evolution/muse/trackdrag.h create mode 100644 muse_qt4_evolution/muse/trackinfo.cpp create mode 100644 muse_qt4_evolution/muse/trackinfo.h create mode 100644 muse_qt4_evolution/muse/transport.cpp create mode 100644 muse_qt4_evolution/muse/transport.h create mode 100644 muse_qt4_evolution/muse/transport.ui create mode 100644 muse_qt4_evolution/muse/transpose.cpp create mode 100644 muse_qt4_evolution/muse/transpose.h create mode 100644 muse_qt4_evolution/muse/transpose.ui create mode 100644 muse_qt4_evolution/muse/trelement.h create mode 100644 muse_qt4_evolution/muse/undo.cpp create mode 100644 muse_qt4_evolution/muse/undo.h create mode 100644 muse_qt4_evolution/muse/value.cpp create mode 100644 muse_qt4_evolution/muse/vst.cpp create mode 100644 muse_qt4_evolution/muse/vst.h create mode 100644 muse_qt4_evolution/muse/wave.cpp create mode 100644 muse_qt4_evolution/muse/wave.h create mode 100644 muse_qt4_evolution/muse/waveedit/CMakeLists.txt create mode 100644 muse_qt4_evolution/muse/waveedit/waveedit.cpp create mode 100644 muse_qt4_evolution/muse/waveedit/waveedit.h create mode 100644 muse_qt4_evolution/muse/waveedit/waveview.cpp create mode 100644 muse_qt4_evolution/muse/waveedit/waveview.h create mode 100644 muse_qt4_evolution/muse/waveevent.cpp create mode 100644 muse_qt4_evolution/muse/waveevent.h create mode 100644 muse_qt4_evolution/muse/wavetrack.cpp create mode 100644 muse_qt4_evolution/muse/wavetrack.h create mode 100644 muse_qt4_evolution/muse/widgets/CMakeLists.txt create mode 100644 muse_qt4_evolution/muse/widgets/action.h create mode 100644 muse_qt4_evolution/muse/widgets/bigtime.cpp create mode 100644 muse_qt4_evolution/muse/widgets/bigtime.h create mode 100644 muse_qt4_evolution/muse/widgets/cliplisteditorbase.h create mode 100644 muse_qt4_evolution/muse/widgets/cliplisteditorbase.ui create mode 100644 muse_qt4_evolution/muse/widgets/comboQuant.cpp create mode 100644 muse_qt4_evolution/muse/widgets/comboQuant.h create mode 100644 muse_qt4_evolution/muse/widgets/combobox.cpp create mode 100644 muse_qt4_evolution/muse/widgets/combobox.h create mode 100644 muse_qt4_evolution/muse/widgets/comment.cpp create mode 100644 muse_qt4_evolution/muse/widgets/comment.h create mode 100644 muse_qt4_evolution/muse/widgets/comment.ui create mode 100644 muse_qt4_evolution/muse/widgets/ctrlcombo.cpp create mode 100644 muse_qt4_evolution/muse/widgets/ctrlcombo.h create mode 100644 muse_qt4_evolution/muse/widgets/dentry.cpp create mode 100644 muse_qt4_evolution/muse/widgets/dentry.h create mode 100644 muse_qt4_evolution/muse/widgets/doublelabel.cpp create mode 100644 muse_qt4_evolution/muse/widgets/doublelabel.h create mode 100644 muse_qt4_evolution/muse/widgets/editmetadialogbase.cpp create mode 100644 muse_qt4_evolution/muse/widgets/editmetadialogbase.ui create mode 100644 muse_qt4_evolution/muse/widgets/fdialogbuttons.ui create mode 100644 muse_qt4_evolution/muse/widgets/filedialog.cpp create mode 100644 muse_qt4_evolution/muse/widgets/filedialog.h create mode 100644 muse_qt4_evolution/muse/widgets/floatlabel.cpp create mode 100644 muse_qt4_evolution/muse/widgets/floatlabel.h create mode 100644 muse_qt4_evolution/muse/widgets/fontsel.cpp create mode 100644 muse_qt4_evolution/muse/widgets/fontsel.h create mode 100644 muse_qt4_evolution/muse/widgets/greendotbutton.h create mode 100644 muse_qt4_evolution/muse/widgets/intlabel.h create mode 100644 muse_qt4_evolution/muse/widgets/menutitle.cpp create mode 100644 muse_qt4_evolution/muse/widgets/menutitle.h create mode 100644 muse_qt4_evolution/muse/widgets/midisync.cpp create mode 100644 muse_qt4_evolution/muse/widgets/midisync.h create mode 100644 muse_qt4_evolution/muse/widgets/midisync.ui create mode 100644 muse_qt4_evolution/muse/widgets/mittransposebase.h create mode 100644 muse_qt4_evolution/muse/widgets/mittransposebase.ui create mode 100644 muse_qt4_evolution/muse/widgets/mixdowndialog.cpp create mode 100644 muse_qt4_evolution/muse/widgets/mixdowndialog.h create mode 100644 muse_qt4_evolution/muse/widgets/mixdowndialog.ui create mode 100644 muse_qt4_evolution/muse/widgets/noteinfo.cpp create mode 100644 muse_qt4_evolution/muse/widgets/noteinfo.h create mode 100644 muse_qt4_evolution/muse/widgets/outportcombo.cpp create mode 100644 muse_qt4_evolution/muse/widgets/outportcombo.h create mode 100644 muse_qt4_evolution/muse/widgets/quantcombo.cpp create mode 100644 muse_qt4_evolution/muse/widgets/quantcombo.h create mode 100644 muse_qt4_evolution/muse/widgets/rastercombo.cpp create mode 100644 muse_qt4_evolution/muse/widgets/rastercombo.h create mode 100644 muse_qt4_evolution/muse/widgets/recordbutton.h create mode 100644 muse_qt4_evolution/muse/widgets/shortcutcapturedialog.cpp create mode 100644 muse_qt4_evolution/muse/widgets/shortcutcapturedialog.h create mode 100644 muse_qt4_evolution/muse/widgets/shortcutcapturedialog.ui create mode 100644 muse_qt4_evolution/muse/widgets/shortcutconfig.cpp create mode 100644 muse_qt4_evolution/muse/widgets/shortcutconfig.h create mode 100644 muse_qt4_evolution/muse/widgets/shortcutconfig.ui create mode 100644 muse_qt4_evolution/muse/widgets/siglabel.cpp create mode 100644 muse_qt4_evolution/muse/widgets/siglabel.h create mode 100644 muse_qt4_evolution/muse/widgets/simplebutton.cpp create mode 100644 muse_qt4_evolution/muse/widgets/simplebutton.h create mode 100644 muse_qt4_evolution/muse/widgets/splitter.cpp create mode 100644 muse_qt4_evolution/muse/widgets/splitter.h create mode 100644 muse_qt4_evolution/muse/widgets/synthwizardbase.h create mode 100644 muse_qt4_evolution/muse/widgets/tb1.cpp create mode 100644 muse_qt4_evolution/muse/widgets/tb1.h create mode 100644 muse_qt4_evolution/muse/widgets/tools.cpp create mode 100644 muse_qt4_evolution/muse/widgets/tools.h create mode 100644 muse_qt4_evolution/muse/widgets/transformbase.ui create mode 100644 muse_qt4_evolution/muse/widgets/utils.cpp create mode 100644 muse_qt4_evolution/muse/widgets/utils.h create mode 100644 muse_qt4_evolution/muse/widgets/wtrackinfobase.ui create mode 100644 muse_qt4_evolution/muse/xpm/activeoff.svg create mode 100644 muse_qt4_evolution/muse/xpm/activeon.svg create mode 100644 muse_qt4_evolution/muse/xpm/addtrack_addmiditrack.xpm create mode 100644 muse_qt4_evolution/muse/xpm/addtrack_audiogroup.xpm create mode 100644 muse_qt4_evolution/muse/xpm/addtrack_audioinput.xpm create mode 100644 muse_qt4_evolution/muse/xpm/addtrack_audiooutput.xpm create mode 100644 muse_qt4_evolution/muse/xpm/addtrack_auxsend.xpm create mode 100644 muse_qt4_evolution/muse/xpm/addtrack_drumtrack.xpm create mode 100644 muse_qt4_evolution/muse/xpm/addtrack_wavetrack.xpm create mode 100644 muse_qt4_evolution/muse/xpm/audio_bounce_to_file.xpm create mode 100644 muse_qt4_evolution/muse/xpm/audio_bounce_to_track.xpm create mode 100644 muse_qt4_evolution/muse/xpm/audio_restartaudio.xpm create mode 100644 muse_qt4_evolution/muse/xpm/back.xpm create mode 100644 muse_qt4_evolution/muse/xpm/bold.xpm create mode 100644 muse_qt4_evolution/muse/xpm/buttondown.xpm create mode 100644 muse_qt4_evolution/muse/xpm/cafter.xpm create mode 100644 muse_qt4_evolution/muse/xpm/cliplistS.xpm create mode 100644 muse_qt4_evolution/muse/xpm/cmark.xpm create mode 100644 muse_qt4_evolution/muse/xpm/config.xpm create mode 100644 muse_qt4_evolution/muse/xpm/configure.xpm create mode 100644 muse_qt4_evolution/muse/xpm/ctrl.xpm create mode 100644 muse_qt4_evolution/muse/xpm/cut.xpm create mode 100644 muse_qt4_evolution/muse/xpm/darkgreendot.svg create mode 100644 muse_qt4_evolution/muse/xpm/delete.xpm create mode 100644 muse_qt4_evolution/muse/xpm/down.xpm create mode 100644 muse_qt4_evolution/muse/xpm/draw.xpm create mode 100644 muse_qt4_evolution/muse/xpm/edit_drumms.xpm create mode 100644 muse_qt4_evolution/muse/xpm/edit_list.xpm create mode 100644 muse_qt4_evolution/muse/xpm/edit_mastertrack.xpm create mode 100644 muse_qt4_evolution/muse/xpm/edit_midi.xpm create mode 100644 muse_qt4_evolution/muse/xpm/edit_pianoroll.xpm create mode 100644 muse_qt4_evolution/muse/xpm/edit_track_add.xpm create mode 100644 muse_qt4_evolution/muse/xpm/edit_track_del.xpm create mode 100644 muse_qt4_evolution/muse/xpm/editcopy.xpm create mode 100644 muse_qt4_evolution/muse/xpm/editcut.xpm create mode 100644 muse_qt4_evolution/muse/xpm/editcutS.xpm create mode 100644 muse_qt4_evolution/muse/xpm/editmute.xpm create mode 100644 muse_qt4_evolution/muse/xpm/editpaste.xpm create mode 100644 muse_qt4_evolution/muse/xpm/fforward.xpm create mode 100644 muse_qt4_evolution/muse/xpm/filenew.png create mode 100644 muse_qt4_evolution/muse/xpm/filenewS.xpm create mode 100644 muse_qt4_evolution/muse/xpm/fileopen.png create mode 100644 muse_qt4_evolution/muse/xpm/filesave.png create mode 100644 muse_qt4_evolution/muse/xpm/flag.xpm create mode 100644 muse_qt4_evolution/muse/xpm/flagS.xpm create mode 100644 muse_qt4_evolution/muse/xpm/folder_new.png create mode 100644 muse_qt4_evolution/muse/xpm/forward.xpm create mode 100644 muse_qt4_evolution/muse/xpm/frewind.xpm create mode 100644 muse_qt4_evolution/muse/xpm/glue.xpm create mode 100644 muse_qt4_evolution/muse/xpm/greendot.svg create mode 100644 muse_qt4_evolution/muse/xpm/gv.xpm create mode 100644 muse_qt4_evolution/muse/xpm/home.xpm create mode 100644 muse_qt4_evolution/muse/xpm/initS.xpm create mode 100644 muse_qt4_evolution/muse/xpm/inputpluginS.xpm create mode 100644 muse_qt4_evolution/muse/xpm/italic.xpm create mode 100644 muse_qt4_evolution/muse/xpm/listS.xpm create mode 100644 muse_qt4_evolution/muse/xpm/lmark.xpm create mode 100644 muse_qt4_evolution/muse/xpm/localoffS.xpm create mode 100644 muse_qt4_evolution/muse/xpm/lock.xpm create mode 100644 muse_qt4_evolution/muse/xpm/loop.xpm create mode 100644 muse_qt4_evolution/muse/xpm/master.xpm create mode 100644 muse_qt4_evolution/muse/xpm/mastertrackS.xpm create mode 100644 muse_qt4_evolution/muse/xpm/mastertrack_graphic.xpm create mode 100644 muse_qt4_evolution/muse/xpm/mastertrack_list.xpm create mode 100644 muse_qt4_evolution/muse/xpm/meta.xpm create mode 100644 muse_qt4_evolution/muse/xpm/midi_edit_instrument.xpm create mode 100644 muse_qt4_evolution/muse/xpm/midi_init_instr.xpm create mode 100644 muse_qt4_evolution/muse/xpm/midi_local_off.xpm create mode 100644 muse_qt4_evolution/muse/xpm/midi_plugS.xpm create mode 100644 muse_qt4_evolution/muse/xpm/midi_reset_instr.xpm create mode 100644 muse_qt4_evolution/muse/xpm/midi_transform.xpm create mode 100644 muse_qt4_evolution/muse/xpm/midi_transpose.xpm create mode 100644 muse_qt4_evolution/muse/xpm/midiin.xpm create mode 100644 muse_qt4_evolution/muse/xpm/miditransformS.xpm create mode 100644 muse_qt4_evolution/muse/xpm/miditransposeS.xpm create mode 100644 muse_qt4_evolution/muse/xpm/minus.xpm create mode 100644 muse_qt4_evolution/muse/xpm/mixerS.xpm create mode 100644 muse_qt4_evolution/muse/xpm/mixeraudioS.xpm create mode 100644 muse_qt4_evolution/muse/xpm/mono.svg create mode 100644 muse_qt4_evolution/muse/xpm/muse_icon.xpm create mode 100644 muse_qt4_evolution/muse/xpm/muse_icon_64x64.png create mode 100644 muse_qt4_evolution/muse/xpm/mutebutton_off.xpm create mode 100644 muse_qt4_evolution/muse/xpm/mutebutton_on.xpm create mode 100644 muse_qt4_evolution/muse/xpm/newmutebutton.xpm create mode 100644 muse_qt4_evolution/muse/xpm/off.svg create mode 100644 muse_qt4_evolution/muse/xpm/off.xpm create mode 100644 muse_qt4_evolution/muse/xpm/on.svg create mode 100644 muse_qt4_evolution/muse/xpm/pafter.xpm create mode 100644 muse_qt4_evolution/muse/xpm/panic.xpm create mode 100644 muse_qt4_evolution/muse/xpm/pencil.xpm create mode 100644 muse_qt4_evolution/muse/xpm/piano.xpm create mode 100644 muse_qt4_evolution/muse/xpm/pitch.xpm create mode 100644 muse_qt4_evolution/muse/xpm/play.xpm create mode 100644 muse_qt4_evolution/muse/xpm/plus.xpm create mode 100644 muse_qt4_evolution/muse/xpm/pointer.xpm create mode 100644 muse_qt4_evolution/muse/xpm/punchin.xpm create mode 100644 muse_qt4_evolution/muse/xpm/punchout.xpm create mode 100644 muse_qt4_evolution/muse/xpm/quant.xpm create mode 100644 muse_qt4_evolution/muse/xpm/recordOff.svg create mode 100644 muse_qt4_evolution/muse/xpm/recordOn.svg create mode 100644 muse_qt4_evolution/muse/xpm/redo.xpm create mode 100644 muse_qt4_evolution/muse/xpm/resetS.xpm create mode 100644 muse_qt4_evolution/muse/xpm/rmark.xpm create mode 100644 muse_qt4_evolution/muse/xpm/select.xpm create mode 100644 muse_qt4_evolution/muse/xpm/select_all.xpm create mode 100644 muse_qt4_evolution/muse/xpm/select_all_parts_on_track.xpm create mode 100644 muse_qt4_evolution/muse/xpm/select_deselect_all.xpm create mode 100644 muse_qt4_evolution/muse/xpm/select_inside_loop.xpm create mode 100644 muse_qt4_evolution/muse/xpm/select_invert_selection.xpm create mode 100644 muse_qt4_evolution/muse/xpm/select_outside_loop.xpm create mode 100644 muse_qt4_evolution/muse/xpm/settings_appearance_settings.xpm create mode 100644 muse_qt4_evolution/muse/xpm/settings_configureshortcuts.xpm create mode 100644 muse_qt4_evolution/muse/xpm/settings_follow_song.xpm create mode 100644 muse_qt4_evolution/muse/xpm/settings_globalsettings.xpm create mode 100644 muse_qt4_evolution/muse/xpm/settings_metronome.xpm create mode 100644 muse_qt4_evolution/muse/xpm/settings_midifileexport.xpm create mode 100644 muse_qt4_evolution/muse/xpm/settings_midiport_softsynths.xpm create mode 100644 muse_qt4_evolution/muse/xpm/settings_midisync.xpm create mode 100644 muse_qt4_evolution/muse/xpm/solobutton.xpm create mode 100644 muse_qt4_evolution/muse/xpm/solobutton_off.xpm create mode 100644 muse_qt4_evolution/muse/xpm/solobutton_on.xpm create mode 100644 muse_qt4_evolution/muse/xpm/speaker.xpm create mode 100644 muse_qt4_evolution/muse/xpm/splash.png create mode 100644 muse_qt4_evolution/muse/xpm/start.xpm create mode 100644 muse_qt4_evolution/muse/xpm/steprec.xpm create mode 100644 muse_qt4_evolution/muse/xpm/stereo.svg create mode 100644 muse_qt4_evolution/muse/xpm/stick.xpm create mode 100644 muse_qt4_evolution/muse/xpm/stop.xpm create mode 100644 muse_qt4_evolution/muse/xpm/sysex.xpm create mode 100644 muse_qt4_evolution/muse/xpm/toc.xpm create mode 100644 muse_qt4_evolution/muse/xpm/track_add.xpm create mode 100644 muse_qt4_evolution/muse/xpm/track_delete.xpm create mode 100644 muse_qt4_evolution/muse/xpm/underlined.xpm create mode 100644 muse_qt4_evolution/muse/xpm/undo.xpm create mode 100644 muse_qt4_evolution/muse/xpm/up.xpm create mode 100644 muse_qt4_evolution/muse/xpm/view_bigtime_window.xpm create mode 100644 muse_qt4_evolution/muse/xpm/view_cliplist.xpm create mode 100644 muse_qt4_evolution/muse/xpm/view_marker.xpm create mode 100644 muse_qt4_evolution/muse/xpm/view_mixer.xpm create mode 100644 muse_qt4_evolution/muse/xpm/view_transport_window.xpm create mode 100644 muse_qt4_evolution/muse/xpm/wave.xpm create mode 100644 muse_qt4_evolution/packaging/muse_icon.png create mode 100755 muse_qt4_evolution/packaging/muse_mdk.spec create mode 100644 muse_qt4_evolution/pch.txt create mode 100644 muse_qt4_evolution/plugins/CMakeLists.txt create mode 100644 muse_qt4_evolution/plugins/doublechorus/CMakeLists.txt create mode 100644 muse_qt4_evolution/plugins/doublechorus/doublechorus.cpp create mode 100644 muse_qt4_evolution/plugins/doublechorus/doublechorusmodel.cpp create mode 100644 muse_qt4_evolution/plugins/doublechorus/doublechorusmodel.h create mode 100644 muse_qt4_evolution/plugins/doublechorus/simplechorusmodel.cpp create mode 100644 muse_qt4_evolution/plugins/doublechorus/simplechorusmodel.h create mode 100644 muse_qt4_evolution/plugins/freeverb/CMakeLists.txt create mode 100644 muse_qt4_evolution/plugins/freeverb/allpass.h create mode 100644 muse_qt4_evolution/plugins/freeverb/comb.h create mode 100644 muse_qt4_evolution/plugins/freeverb/denormals.h create mode 100644 muse_qt4_evolution/plugins/freeverb/freeverb.cpp create mode 100644 muse_qt4_evolution/plugins/freeverb/readme.txt create mode 100644 muse_qt4_evolution/plugins/freeverb/revmodel.cpp create mode 100644 muse_qt4_evolution/plugins/freeverb/revmodel.h create mode 100644 muse_qt4_evolution/plugins/freeverb/tuning.h create mode 100644 muse_qt4_evolution/plugins/pandelay/CMakeLists.txt create mode 100644 muse_qt4_evolution/plugins/pandelay/ladspapandelay.cpp create mode 100644 muse_qt4_evolution/plugins/pandelay/ladspapandelay.h create mode 100644 muse_qt4_evolution/plugins/pandelay/pandelay.cpp create mode 100644 muse_qt4_evolution/plugins/pandelay/pandelaymodel.cpp create mode 100644 muse_qt4_evolution/plugins/pandelay/pandelaymodel.h create mode 100644 muse_qt4_evolution/share/CMakeLists.txt create mode 100644 muse_qt4_evolution/share/instruments/Access_Virus.idf create mode 100644 muse_qt4_evolution/share/instruments/Alesis-Ion.idf create mode 100644 muse_qt4_evolution/share/instruments/Alesis-QS-78R.idf create mode 100644 muse_qt4_evolution/share/instruments/AlesisQS6.idf create mode 100644 muse_qt4_evolution/share/instruments/CMakeLists.txt create mode 100644 muse_qt4_evolution/share/instruments/Hammond_XB-1.idf create mode 100644 muse_qt4_evolution/share/instruments/MC303.idf create mode 100644 muse_qt4_evolution/share/instruments/MC505.idf create mode 100644 muse_qt4_evolution/share/instruments/Quasimidi-Sirius.idf create mode 100644 muse_qt4_evolution/share/instruments/Roland-E28.idf create mode 100644 muse_qt4_evolution/share/instruments/Roland-JV-1010-All.idf create mode 100644 muse_qt4_evolution/share/instruments/Roland-JV-1010-Catagory.idf create mode 100644 muse_qt4_evolution/share/instruments/Roland-JV-1010-Country.idf create mode 100644 muse_qt4_evolution/share/instruments/Roland-JV-1010-Presets.idf create mode 100644 muse_qt4_evolution/share/instruments/Roland-JV-1010-Session.idf create mode 100644 muse_qt4_evolution/share/instruments/Roland-SCD70.idf create mode 100644 muse_qt4_evolution/share/instruments/Roland-XP30.idf create mode 100644 muse_qt4_evolution/share/instruments/Roland_FantomXR.idf create mode 100644 muse_qt4_evolution/share/instruments/Roland_SRX-02.idf create mode 100644 muse_qt4_evolution/share/instruments/Roland_SRX-09.idf create mode 100644 muse_qt4_evolution/share/instruments/Waldorf_Microwave-I.idf create mode 100644 muse_qt4_evolution/share/instruments/Yamaha-P50m.idf create mode 100644 muse_qt4_evolution/share/instruments/Yamaha-P80.idf create mode 100644 muse_qt4_evolution/share/instruments/Yamaha-PSR275.idf create mode 100644 muse_qt4_evolution/share/instruments/Yamaha-PSR530.idf create mode 100644 muse_qt4_evolution/share/instruments/Yamaha-S90.idf create mode 100644 muse_qt4_evolution/share/instruments/ZynAdd-1_4.idf create mode 100644 muse_qt4_evolution/share/instruments/emuproteus2000.idf create mode 100644 muse_qt4_evolution/share/instruments/gm.idf create mode 100644 muse_qt4_evolution/share/instruments/gs.idf create mode 100644 muse_qt4_evolution/share/instruments/ns5r.idf create mode 100644 muse_qt4_evolution/share/instruments/xg.idf create mode 100644 muse_qt4_evolution/share/locale/CMakeLists.txt create mode 100644 muse_qt4_evolution/share/locale/muse_de.qm create mode 100644 muse_qt4_evolution/share/locale/muse_de.ts create mode 100644 muse_qt4_evolution/share/locale/muse_es.qm create mode 100644 muse_qt4_evolution/share/locale/muse_es.ts create mode 100644 muse_qt4_evolution/share/locale/muse_fr.qm create mode 100644 muse_qt4_evolution/share/locale/muse_fr.ts create mode 100644 muse_qt4_evolution/share/locale/muse_ru.qm create mode 100644 muse_qt4_evolution/share/locale/muse_ru.ts create mode 100644 muse_qt4_evolution/share/locale/muse_sv_SE.qm create mode 100644 muse_qt4_evolution/share/locale/muse_sv_SE.ts create mode 100644 muse_qt4_evolution/share/plugins/1050.ui create mode 100644 muse_qt4_evolution/share/plugins/1436.ui create mode 100644 muse_qt4_evolution/share/plugins/2142.ui create mode 100644 muse_qt4_evolution/share/plugins/CMakeLists.txt create mode 100644 muse_qt4_evolution/share/templates/CMakeLists.txt create mode 100644 muse_qt4_evolution/share/templates/audio.med create mode 100644 muse_qt4_evolution/share/templates/default.med create mode 100644 muse_qt4_evolution/share/templates/empty.med create mode 100644 muse_qt4_evolution/share/templates/midiGM.med create mode 100644 muse_qt4_evolution/share/templates/monorecord.med create mode 100644 muse_qt4_evolution/share/templates/ns5r.med create mode 100644 muse_qt4_evolution/share/templates/synti.med create mode 100644 muse_qt4_evolution/share/wallpapers/CMakeLists.txt create mode 100644 muse_qt4_evolution/share/wallpapers/gray.gif create mode 100644 muse_qt4_evolution/share/wallpapers/gray_rock.gif create mode 100644 muse_qt4_evolution/share/wallpapers/gray_stucco.gif create mode 100644 muse_qt4_evolution/share/wallpapers/paper1.jpg create mode 100644 muse_qt4_evolution/share/wallpapers/paper2.jpg create mode 100644 muse_qt4_evolution/share/wallpapers/stone1.gif create mode 100644 muse_qt4_evolution/synti/CMakeLists.txt create mode 100644 muse_qt4_evolution/synti/README create mode 100644 muse_qt4_evolution/synti/deicsonze/ARCH_ALIN create mode 100644 muse_qt4_evolution/synti/deicsonze/CMakeLists.txt create mode 100644 muse_qt4_evolution/synti/deicsonze/README create mode 100644 muse_qt4_evolution/synti/deicsonze/SutulaBank.dei create mode 100644 muse_qt4_evolution/synti/deicsonze/TODO create mode 100644 muse_qt4_evolution/synti/deicsonze/deicsonze.cpp create mode 100644 muse_qt4_evolution/synti/deicsonze/deicsonze.h create mode 100644 muse_qt4_evolution/synti/deicsonze/deicsonzefilter.cpp create mode 100644 muse_qt4_evolution/synti/deicsonze/deicsonzefilter.h create mode 100644 muse_qt4_evolution/synti/deicsonze/deicsonzegui.cpp create mode 100644 muse_qt4_evolution/synti/deicsonze/deicsonzegui.h create mode 100644 muse_qt4_evolution/synti/deicsonze/deicsonzegui.ui create mode 100644 muse_qt4_evolution/synti/deicsonze/deicsonzeplugin.cpp create mode 100644 muse_qt4_evolution/synti/deicsonze/deicsonzeplugin.h create mode 100644 muse_qt4_evolution/synti/deicsonze/deicsonzepreset.cpp create mode 100644 muse_qt4_evolution/synti/deicsonze/deicsonzepreset.h create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/SHold.fig create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/SHold.png create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/algo1.fig create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/algo1.png create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/algo2.fig create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/algo2.png create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/algo3.fig create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/algo3.png create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/algo4.fig create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/algo4.png create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/algo5.fig create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/algo5.png create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/algo6.fig create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/algo6.png create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/algo7.fig create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/algo7.png create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/algo8.fig create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/algo8.png create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/sawUp.fig create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/sawUp.png create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/square.fig create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/square.png create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/triangl.fig create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/triangl.png create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/wave1.fig create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/wave1.gnuplot create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/wave1.png create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/wave2.fig create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/wave2.gnuplot create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/wave2.png create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/wave3.fig create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/wave3.gnuplot create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/wave3.png create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/wave4.fig create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/wave4.gnuplot create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/wave4.png create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/wave5.fig create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/wave5.gnuplot create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/wave5.png create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/wave6.fig create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/wave6.gnuplot create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/wave6.png create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/wave7.fig create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/wave7.gnuplot create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/wave7.png create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/wave8.fig create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/wave8.gnuplot create mode 100644 muse_qt4_evolution/synti/deicsonze/pics/wave8.png create mode 100644 muse_qt4_evolution/synti/fluid/CMakeLists.txt create mode 100644 muse_qt4_evolution/synti/fluid/fluid.cpp create mode 100644 muse_qt4_evolution/synti/fluid/fluid.h create mode 100644 muse_qt4_evolution/synti/fluid/fluidgui.cpp create mode 100644 muse_qt4_evolution/synti/fluid/fluidgui.h create mode 100644 muse_qt4_evolution/synti/fluid/fluidgui.ui create mode 100644 muse_qt4_evolution/synti/fluidsynth/CMakeLists.txt create mode 100644 muse_qt4_evolution/synti/fluidsynth/README.txt create mode 100644 muse_qt4_evolution/synti/fluidsynth/TODO create mode 100644 muse_qt4_evolution/synti/fluidsynth/fluidsynthgui.cpp create mode 100644 muse_qt4_evolution/synti/fluidsynth/fluidsynthgui.h create mode 100644 muse_qt4_evolution/synti/fluidsynth/fluidsynthgui.ui create mode 100644 muse_qt4_evolution/synti/fluidsynth/fluidsynti.cpp create mode 100644 muse_qt4_evolution/synti/fluidsynth/fluidsynti.h create mode 100644 muse_qt4_evolution/synti/libsynti/CMakeLists.txt create mode 100644 muse_qt4_evolution/synti/libsynti/evdata.h create mode 100644 muse_qt4_evolution/synti/libsynti/gui.cpp create mode 100644 muse_qt4_evolution/synti/libsynti/gui.h create mode 100644 muse_qt4_evolution/synti/libsynti/mess.cpp create mode 100644 muse_qt4_evolution/synti/libsynti/mess.h create mode 100644 muse_qt4_evolution/synti/libsynti/mess2.cpp create mode 100644 muse_qt4_evolution/synti/libsynti/mess2.h create mode 100644 muse_qt4_evolution/synti/libsynti/midievent.cpp create mode 100644 muse_qt4_evolution/synti/libsynti/midievent.h create mode 100644 muse_qt4_evolution/synti/libsynti/mono.cpp create mode 100644 muse_qt4_evolution/synti/libsynti/mono.h create mode 100644 muse_qt4_evolution/synti/libsynti/poly.cpp create mode 100644 muse_qt4_evolution/synti/libsynti/poly.h create mode 100644 muse_qt4_evolution/synti/mus/CMakeLists.txt create mode 100644 muse_qt4_evolution/synti/mus/mus.cpp create mode 100644 muse_qt4_evolution/synti/organ/CMakeLists.txt create mode 100644 muse_qt4_evolution/synti/organ/organ.cpp create mode 100644 muse_qt4_evolution/synti/organ/organ.h create mode 100644 muse_qt4_evolution/synti/organ/organgui.cpp create mode 100644 muse_qt4_evolution/synti/organ/organgui.h create mode 100644 muse_qt4_evolution/synti/organ/organgui.ui create mode 100644 muse_qt4_evolution/synti/organ/reverb.cpp create mode 100644 muse_qt4_evolution/synti/organ/reverb.h create mode 100644 muse_qt4_evolution/synti/organ/routing.cpp create mode 100644 muse_qt4_evolution/synti/s1/CMakeLists.txt create mode 100644 muse_qt4_evolution/synti/s1/s1.cpp create mode 100644 muse_qt4_evolution/synti/simpledrums/CMakeLists.txt create mode 100644 muse_qt4_evolution/synti/simpledrums/COPYING create mode 100644 muse_qt4_evolution/synti/simpledrums/README create mode 100644 muse_qt4_evolution/synti/simpledrums/ReleaseNotes.txt create mode 100644 muse_qt4_evolution/synti/simpledrums/common.h create mode 100644 muse_qt4_evolution/synti/simpledrums/simpledrums.cpp create mode 100644 muse_qt4_evolution/synti/simpledrums/simpledrums.h create mode 100644 muse_qt4_evolution/synti/simpledrums/simpledrumsgui.cpp create mode 100644 muse_qt4_evolution/synti/simpledrums/simpledrumsgui.h create mode 100644 muse_qt4_evolution/synti/simpledrums/simpledrumsguibase.ui create mode 100644 muse_qt4_evolution/synti/simpledrums/ssplugin.cpp create mode 100644 muse_qt4_evolution/synti/simpledrums/ssplugin.h create mode 100644 muse_qt4_evolution/synti/simpledrums/sspluginchooserbase.ui create mode 100644 muse_qt4_evolution/synti/simpledrums/ssplugingui.cpp create mode 100644 muse_qt4_evolution/synti/simpledrums/ssplugingui.h create mode 100644 muse_qt4_evolution/synti/vam/CMakeLists.txt create mode 100644 muse_qt4_evolution/synti/vam/COPYING create mode 100644 muse_qt4_evolution/synti/vam/ChangeLog create mode 100644 muse_qt4_evolution/synti/vam/README create mode 100644 muse_qt4_evolution/synti/vam/TODO create mode 100644 muse_qt4_evolution/synti/vam/vam.cpp create mode 100644 muse_qt4_evolution/synti/vam/vam.h create mode 100644 muse_qt4_evolution/synti/vam/vamgui.cpp create mode 100644 muse_qt4_evolution/synti/vam/vamgui.h create mode 100644 muse_qt4_evolution/synti/vam/vamgui.ui create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/CMakeLists.txt create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/COPYING create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/DSP/AnalogFilter.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/DSP/AnalogFilter.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/DSP/FFTwrapper.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/DSP/FFTwrapper.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/DSP/Filter.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/DSP/Filter.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/DSP/Filter_.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/DSP/FormantFilter.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/DSP/FormantFilter.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/DSP/SVFilter.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/DSP/SVFilter.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Effects/Alienwah.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Effects/Alienwah.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Effects/Chorus.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Effects/Chorus.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Effects/Distorsion.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Effects/Distorsion.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Effects/DynamicFilter.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Effects/DynamicFilter.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Effects/EQ.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Effects/EQ.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Effects/Echo.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Effects/Echo.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Effects/Effect.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Effects/Effect.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Effects/EffectLFO.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Effects/EffectLFO.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Effects/EffectMgr.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Effects/EffectMgr.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Effects/Phaser.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Effects/Phaser.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Effects/Reverb.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Effects/Reverb.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Input/ALSAMidiIn.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Input/ALSAMidiIn.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Input/MidiIn.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Input/MidiIn.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Input/NULLMidiIn.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Input/NULLMidiIn.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Input/OSSMidiIn.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Input/OSSMidiIn.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Input/WINMidiIn.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Input/WINMidiIn.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Misc/Bank.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Misc/Bank.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Misc/Config.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Misc/Config.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Misc/Dump.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Misc/Dump.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Misc/Master.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Misc/Master.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Misc/Microtonal.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Misc/Microtonal.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Misc/Part.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Misc/Part.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Misc/Util.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Misc/Util.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Misc/XMLwrapper.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Misc/XMLwrapper.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Output/Recorder.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Output/Recorder.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Params/ADnoteParameters.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Params/ADnoteParameters.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Params/Controller.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Params/Controller.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Params/EnvelopeParams.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Params/EnvelopeParams.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Params/FilterParams.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Params/FilterParams.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Params/LFOParams.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Params/LFOParams.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Params/PADnoteParameters.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Params/PADnoteParameters.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Params/Presets.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Params/Presets.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Params/PresetsStore.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Params/PresetsStore.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Params/SUBnoteParameters.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Params/SUBnoteParameters.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Seq/MIDIEvents.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Seq/MIDIEvents.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Seq/MIDIFile.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Seq/MIDIFile.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Seq/Sequencer.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Seq/Sequencer.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Synth/ADnote.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Synth/ADnote.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Synth/Envelope.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Synth/Envelope.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Synth/LFO.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Synth/LFO.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Synth/OscilGen.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Synth/OscilGen.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Synth/PADnote.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Synth/PADnote.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Synth/Resonance.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Synth/Resonance.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Synth/SUBnote.C create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/Synth/SUBnote.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/ADnoteUI.fl create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/BankUI.fl create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/CMakeLists.txt create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/ConfigUI.fl create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/EffUI.fl create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/EnvelopeUI.fl create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/FilterUI.fl create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/LFOUI.fl create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/MasterUI.fl create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/MicrotonalUI.fl create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/OscilGenUI.fl create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/PADnoteUI.fl create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/PartUI.fl create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/PresetsUI.fl create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/ResonanceUI.fl create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/SUBnoteUI.fl create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/SeqUI.fl create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/VirKeyboard.fl create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/WidgetPDial.fl create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Arpeggios/0001-Arpeggio1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Arpeggios/0002-Arpeggio2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Arpeggios/0003-Arpeggio3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Arpeggios/0004-Arpeggio4.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Arpeggios/0005-Arpeggio5.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Arpeggios/0006-Aporggio6.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Arpeggios/0007-Arpeggio7.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Arpeggios/0008-Arpeggio8.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Arpeggios/0009-Arpeggio9.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Arpeggios/0010-Arpeggio10.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Arpeggios/0011-Arpeggio11.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Arpeggios/0033-Sequence1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Arpeggios/0034-Sequence2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Arpeggios/0036-Echoed Synth.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Arpeggios/0037-Echo FX.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Arpeggios/0039-Soft Arpeggio1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Arpeggios/0040-Soft Arpeggio2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Arpeggios/0041-Soft Arpeggio3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Arpeggios/0042-Soft Arpeggio4.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Arpeggios/0043-Soft Arpeggio5.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Arpeggios/0065-Hyper Organ1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Arpeggios/0066-Hyper Arpeggio.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Arpeggios/0068-Glass Arpeggio.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Bass/0001-Bass 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Bass/0002-Bass 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Bass/0003-Bass 3 _analog_.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Bass/0004-Bass 4.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Bass/0005-Bass 5.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Bass/0006-Analogue Bass.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Bass/0033-Wah Bass.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Bass/0035-FM Bass 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Bass/0036-FM Bass 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Brass/0001-FM Thrumpet.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Brass/0003-Synth Brazz 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Brass/0004-Synth Brazz 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Brass/0005-Synth Brass 3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Brass/0006-Synth Brass 4.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Brass/0007-Synth Brass 5.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Brass/0008-Brass Pad.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Brass/0009-Wah Brass.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Brass/0010-Solo Synth1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Brass/0011-Brazz 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Brass/0012-Brazz 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Brass/0033-Analog Brass 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Brass/0034-Analog Brass 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Brass/0035-Analog Brass 3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Brass/0036-Analog Brass 4.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Brass/0065-Simple Brass.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Brass/0066-Fat Brass.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Choir and Voice/0001-AHH Choir 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Choir and Voice/0002-AHH Choir 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Choir and Voice/0003-EHH Choir 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Choir and Voice/0004-Voice OOH.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Choir and Voice/0005-Choir Pad1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Choir and Voice/0006-Choir Pad2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Choir and Voice/0007-Choir Pad3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Choir and Voice/0008-Choir Pad4.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Choir and Voice/0009-Choir Pad5.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Choir and Voice/0010-Choir Pad6.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Choir and Voice/0033-Choir.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Choir and Voice/0034-Slow Morph_Choir.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Choir and Voice/0035-Wah Choir.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Choir and Voice/0036-Eooooo.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Choir and Voice/0037-Voiced Synth.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Choir and Voice/0039-Ohh Choir.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Choir and Voice/0065-Vocal Morph 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Choir and Voice/0066-Vocal Morph 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Choir and Voice/0067-Vocal Morph 3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Choir and Voice/0068-Vocal Morph 4.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Choir and Voice/0069-Vocal Morph 5.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Choir and Voice/0070-Vocal Morph 6.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Choir and Voice/0071-Vocal Morph 7.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Drums/0001-Drums Kit1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Dual/.qped create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Dual/0001-Layered1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Dual/0002-Layered2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Dual/0005-Organ and Saw.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Dual/0007-Organ Choir Pad1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Dual/0008-Organ Choir Pad2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Dual/0033-Rhodes Strings1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Dual/0034-Rhodes Strings2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Dual/0035-Rhodes Strings3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Dual/0036-Rhodes Strings4.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Dual/0065-Dream of the Saw.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Fantasy/0001-Emptyness1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Fantasy/0002-Emptyness2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Fantasy/0003-Space Synth.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Fantasy/0004-Weird Pad.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Fantasy/0006-Space SynthBrass.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Fantasy/0008-Space Voice1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Fantasy/0009-Space Voice2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Fantasy/0010-Space Voice3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Fantasy/0011-Space Choir1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Fantasy/0012-Space Choir2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Fantasy/0014-Glass Voices.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Fantasy/0015-Strange Voice.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Fantasy/0033-ImpossibleDream1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Fantasy/0034-ImpossibleDream2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Fantasy/0035-ImpossibleDream3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Fantasy/0036-ImpossibleDream4.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Fantasy/0037-ImpossibleDream5.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Fantasy/0040-Delayed Echo.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Fantasy/0041-Fade Down Echo.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Fantasy/0042-Rhodes Space1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Fantasy/0043-Rhodes Space2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Fantasy/0065-Long SpaceChoir1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Fantasy/0066-Long SpaceChoir2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Guitar/0001-Dist Guitar 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Guitar/0002-Dist Guitar 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Guitar/0003-Dist Guitar 3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Guitar/0004-Dist Guitar 4.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Guitar/0005-Dist Guitar 5.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Guitar/0033-Trash Guitar 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Guitar/0034-Trash Guitar 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Guitar/0035-Short.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Guitar/0065-Clean Guitar1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Misc/0001-Memories.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Misc/0002-Bells 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Misc/0003-Bells 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Misc/0004-Bells 3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Misc/0006-SuperSaw 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Misc/0007-SuperSaw 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Misc/0008-SuperSaw 3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Misc/0009-SuperSaw 4.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Misc/0010-SuperSaw 5.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Misc/0033-Trash Synth 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Misc/0034-Trash Synth 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Misc/0035-Trash Synth 3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Noises/0001-Synth Effect.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Noises/0002-Ioioioioioi.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Noises/0003-Noise1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Noises/0004-Noise2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Noises/0006-Wind.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Noises/0033-Metal Sound 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Noises/0034-Metal Sound 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Noises/0035-Metal Sound 3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Noises/0037-Metal Sound 4.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Noises/0038-Metal Sound 5.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Noises/0065-Short noise.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0001-Organ 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0002-Organ 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0003-Organ 3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0004-Organ 4.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0005-Organ 5.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0006-Organ 6.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0007-Organ 7.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0008-Organ 8.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0009-Organ 9.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0010-Organ 10.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0011-Organ 11.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0033-Cathedral Organ1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0034-Cathedral Organ2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0035-Cathedral Organ3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0037-Church Organ 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0038-Church Organ 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0039-Church Organ 3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0041-Church Organ Soft.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0065-Nice Organ 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0066-Nice Organ 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0067-Sub_Organ.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0068-Square Organ.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0069-Soft Organ 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0070-Soft Organ 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0071-Synth Organ.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0072-Fantasy Organ.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0097-Accordion Pad 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0098-Accordion Pad 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0099-Synth Accordion1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0100-Synth Accordion2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Organ/0101-Accordion 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Pads/0001-Sine Pad.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Pads/0002-sin2x pad.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Pads/0003-Analog Pad 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Pads/0004-Analog Pad 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Pads/0005-Square Pad 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Pads/0006-Square Pad 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Pads/0008-Resonance Pad1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Pads/0009-Resonance Pad2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Pads/0033-Synth Pad 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Pads/0034-Synth Pad 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Pads/0035-Synth Pad 3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Pads/0036-Synth Pad 4.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Pads/0065-Soft Pad.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Pads/0066-Flanged Pad 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Plucked/0001-Plucked 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Plucked/0002-Plucked 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Plucked/0003-Plucked 3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Plucked/0004-Plucked 4.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Plucked/0005-Plucked 5.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Plucked/0006-Plucked 6.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Plucked/0033-Plucked String1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Plucked/0034-Plucked String2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Plucked/0036-Plucked Wah.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Reed and Wind/0001-Flute 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Reed and Wind/0002-Flute 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Reed and Wind/0003-Flute 3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Reed and Wind/0005-FM Reed.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Reed and Wind/0006-Clarinet.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Reed and Wind/0007-Breathy1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Reed and Wind/0033-Reed 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Reed and Wind/0034-Reed 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Reed and Wind/0035-Reed 3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Reed and Wind/0036-Reed 4.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Reed and Wind/0037-Reed 5.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Reed and Wind/0038-Reed 6.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Reed and Wind/0039-Reed 7.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Reed and Wind/0065-Fat Reed1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Reed and Wind/0066-Fat Reed2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Reed and Wind/0067-Fat Reed3 square.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Rhodes/0001-DX Rhodes 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Rhodes/0002-DX Rhodes 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Rhodes/0003-DX Rhodes 3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Rhodes/0004-DX Rhodes 4.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Rhodes/0005-DX Rhodes 5.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Rhodes/0007-Dig Rhodes.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Rhodes/0008-Synth Rhodes1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Rhodes/0009-Synth Rhodes2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Rhodes/0010-Synth Rhodes3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Rhodes/0012-Ice Rhodes1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Rhodes/0013-Ice Rhodes2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Rhodes/0014-Ice Rhodes3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Rhodes/0033-FM Rhodes 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Rhodes/0034-FM Rhodes 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Rhodes/0035-FM Rhodes 3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Rhodes/0036-FM Rhodes 4.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Rhodes/0037-FM Rhodes 5.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Rhodes/0038-FM Rhodes 6.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Rhodes/0041-Soft Rhodes.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Rhodes/0042-Hard Rhodes1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Rhodes/0043-Hard Rhodes2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Rhodes/0044-Echo Rhodes.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Rhodes/0045-A long time ago.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Rhodes/0065-Steel Rhodes.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Splited/0001-Strings and Reed1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Splited/0002-Strings and Reed2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Splited/0003-Strings and Flute.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Splited/0033-Choir and Reed.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0001-Saw Strings 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0002-Saw Strings 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0003-Saw Strings 3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0004-Saw Strings 4.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0005-Saw Strings 5.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0006-Saw Strings 6.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0007-Saw Strings 7.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0008-Saw Strings 8.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0011-Strings Pad1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0012-Strings Pad2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0013-Strings Pad3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0016-Sweep Pad 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0017-Sweep Pad 1 Fat.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0018-Sweep Pad 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0019-Sweep Pad 3Wah.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0020-Sweep Pad 4.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0033-Strings1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0034-Dark Strings.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0035-Octave Pad.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0036-Fast Attack.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0038-Fat Saw.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0041-Saw 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0042-Saw 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0043-Saw 3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0044-Saw Pad.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0045-Soft Saw Pad.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0046-Echoed Saw.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0047-Vibratto Saw1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0048-Wah1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0050-Synth Violin 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0051-Synth Violin 2 Fat.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0065-Simple Strings.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0066-Dual Strings.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Strings/0067-Dual StringsOct.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Synth/0001-Soft Synth 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Synth/0002-Soft Synth 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Synth/0004-Pulse Pad 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Synth/0005-Pulse Pad 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Synth/0007-Analog Filter 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Synth/0008-Analog Filter 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Synth/0033-Phased Pad 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Synth/0034-Phased Pad 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Synth/0035-Phased Pad 3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Synth/0037-Resonance Synth.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Synth/0039-Multi-phase synth.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Synth/0065-Computer Lead.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Synth/0067-Detuned Harmonic.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/Synth/0097-FM Synth.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/SynthPiano/0001-Soft Piano 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/SynthPiano/0002-Soft Piano 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/SynthPiano/0004-Fantasy Bell.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/SynthPiano/0005-Synth Piano1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/SynthPiano/0006-Synth Piano2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/SynthPiano/0007-Termollo1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/SynthPiano/0008-Termollo2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/SynthPiano/0009-Termollo3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/SynthPiano/0011-Drop1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/SynthPiano/0012-Drop2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/SynthPiano/0033-Analog Piano 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/SynthPiano/0034-Analog Piano 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/SynthPiano/0035-Analog Piano 3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/SynthPiano/0037-FM Synth1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/SynthPiano/0039-BinaryPiano1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/SynthPiano/0040-BinaryPiano2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/SynthPiano/0065-Synth Piano 1.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/SynthPiano/0066-Synth Piano 2.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/SynthPiano/0067-Synth Piano 3.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/SynthPiano/0068-Synth Piano 3 fat.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/SynthPiano/0069-Synth Piano 3 det.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/SynthPiano/0070-Synth Piano 4.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/banks/SynthPiano/0071-Synth Piano 5.xiz create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/globals.h create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/main.cpp diff --git a/muse/CMakeLists.txt b/muse/CMakeLists.txt deleted file mode 100644 index 2d0f8a98..00000000 --- a/muse/CMakeLists.txt +++ /dev/null @@ -1,335 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2008 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -project(muse) -CMAKE_MINIMUM_REQUIRED(VERSION 2.4.1) -if (COMMAND cmake_policy) - cmake_policy(SET CMP0003 NEW) -endif(COMMAND cmake_policy) - -# set libdir if not use -DCMAKE_INSTALL_LIBDIR -if (NOT CMAKE_INSTALL_LIBDIR) - SET(CMAKE_INSTALL_LIBDIR "lib") -endif (NOT CMAKE_INSTALL_LIBDIR) - -#set(CMAKE_BUILD_TYPE debug) -#set(CMAKE_BUILD_TYPE release) - -# for debugging the make system uncomment next line: -# set(CMAKE_VERBOSE_MAKEFILE ON) - -set(CMAKE_INCLUDE_CURRENT_DIR TRUE) -set(CMAKE_BUILD_WITH_INSTALL_RPATH ON) -set(CMAKE_SKIP_RULE_DEPENDENCY TRUE) - -# The MusE version number. -SET(MusE_VERSION_MAJOR 2) -SET(MusE_VERSION_MINOR 0) -SET(MusE_VERSION_PATCH 1) -SET(MusE_VERSION "2.0.1") -SET(MusE_VERSION_FULL "2.0.1") -SET(MusE_INSTALL_NAME "muse-2.0") - -include ( ${PROJECT_SOURCE_DIR}/cmake/UsePkgConfig1.cmake ) -include ( ${PROJECT_SOURCE_DIR}/cmake/TargetDoc.cmake) - -option ( ENABLE_DSSI "enable Disposable Soft Synth Interface" ON) -option ( ENABLE_VST "enable VST/win support" OFF) -option ( ENABLE_FLUID "enable fluidsynth softsynth plugins" ON) -option ( ENABLE_ZYNADDSUBFX "enable zyaddsubfx softsynth plugin" ON) - -## -## Just print a notice if this is OS X -## -if (APPLE) - message("OS X found.") -else (APPLE) - if (UNIX) - message("Unix (probably linux) found") - endif(UNIX) - -endif (APPLE) - -## -## look for Qt4 -## - -set(QT_MIN_VERSION "4.3.0") -set(QT_USE_QTXML TRUE) -set(QT_USE_QTDESIGNER TRUE) -set(QT_USE_QTNSPLUGIN TRUE) -set(QT_USE_QTSVG TRUE) - -find_package(Qt4) - -if (NOT QT4_FOUND) - message(FATAL_ERROR "Fatal error: QT (version >= 4.3.0) required.\n" - "Cmake tries to detect QT4 by searching for 'qmake' in your PATH\n" - "If you have QT4 installed, make sure qmake is found in your PATH." - ) -endif (NOT QT4_FOUND) - -include(${QT_USE_FILE}) - -## -## find doxygen -## TODO - -## -## alsa >= 0.9.0 -## - -if (APPLE) - message("Disabling ALSA support due to OS X build.") -else (APPLE) -PKGCONFIG (alsa 0.9.0 ALSA_INCDIR ALSA_LIBDIR ALSA_LIB ALSA_CPP ) -if (NOT ALSA_INCDIR) - message(FATAL_ERROR "Fatal error: ALSA >= 1.0.0 required") -else (NOT ALSA_INCDIR) - message("Alsa found.") -endif (NOT ALSA_INCDIR) -endif (APPLE) - -## -## find packages for zyaddsubfx -## -## fftw3 -## mxml -## fltk + fluid -## -## problems with FLTK/CMake: -## - fltk is not found on kubuntu/ubuntu -## - cmake version > 2.4 crashes -## - there is an annoying (and wrong) usage message from cmake concerning FLTK -## - -if (ENABLE_ZYNADDSUBFX) - # HACK: - set (FLTK_INCLUDE_DIR "/usr/include") - set(FLTK_FLUID_EXECUTABLE "/usr/bin/fluid") - - include (FindFLTK) - if (NOT FLTK_FOUND) - message("fltk toolkit not found, zynaddsubfx not build") - set(ENABLE_ZYNADDSUBFX OFF) - else (NOT FLTK_FOUND) - message("fltk toolkit found") - endif (NOT FLTK_FOUND) - - PKGCONFIG (mxml 2.0 MXML_INCDIR MXML_LIBDIR MXML_LIB MXML_CPP ) - if (NOT MXML_INCDIR) - message("mxml >= 2.0 not found, zynaddsubfx not build") - set(ENABLE_ZYNADDSUBFX OFF) - else (NOT MXML_INCDIR) - message("mxml found.") - endif (NOT MXML_INCDIR) - # - # check for fftw3 library - # - PKGCONFIG (fftw3 3.1.2 FFTW_INCDIR FFTW_LIBDIR FFTW_LIB FFTW_CPP ) - if (NOT FFTW_INCDIR) - message("fftw3 >= 3.1.2 not found, zynaddsubfx not build") - set(ENABLE_ZYNADDSUBFX OFF) - else (NOT FFTW_INCDIR) - message("fftw3 found.") - endif (NOT FFTW_INCDIR) -endif (ENABLE_ZYNADDSUBFX) - - -## -## find sndfile >= 1.0.0 -## - -PKGCONFIG (sndfile 1.0.0 SNDFILE_INCDIR SNDFILE_LIBDIR SNDFILE_LIB SNDFILE_CPP ) -if (NOT SNDFILE_INCDIR) - message(FATAL_ERROR "Fatal error: libsndfile >= 1.0.0 required") -else (NOT SNDFILE_INCDIR) - message("sndfile found.") -endif (NOT SNDFILE_INCDIR) - -## -## find libsamplerate >= 0.1.0 -## - -PKGCONFIG (samplerate 0.1.0 SAMPLERATE_INCDIR SAMPLERATE_LIBDIR SAMPLERATE_LIB SAMPLERATE_CPP ) -if (NOT SAMPLERATE_INCDIR) - message(FATAL_ERROR "Fatal error: libsamplerate >= 0.1.0 required") -else (NOT SAMPLERATE_INCDIR) - message("samplerate found") -endif (NOT SAMPLERATE_INCDIR) - -## -## find jack >= 0.103.0 -## - -PKGCONFIG (jack 0.107.0 JACK_INCDIR JACK_LIBDIR JACK_LIB JACK_CPP ) -if (NOT JACK_INCDIR) - PKGCONFIG (jack 0.103.0 JACK_INCDIR JACK_LIBDIR JACK_LIB JACK_CPP ) - if (NOT JACK_INCDIR) - message(FATAL_ERROR "Fatal error: JACK >= 0.103 required") - else (NOT JACK_INCDIR) - message("JACK 0.103 found") - set(JACK103 ON) - endif (NOT JACK_INCDIR) -else (NOT JACK_INCDIR) - message("JACK 0.107 found") - set(JACK107 ON) -endif (NOT JACK_INCDIR) - -## -## check for dssi -## dssi >= 0.9.0 -## liblo >= 0.23 -## - -if (ENABLE_DSSI) - PKGCONFIG (dssi 0.9.0 DSSI_INCDIR DSSI_LIBDIR DSSI_LIB DSSI_CPP ) - if (NOT DSSI_INCDIR) - message("Error: dssi >= 0.9.0 not found, disabling feature") - set ( ENABLE_DSSI OFF ) - else (NOT DSSI_INCDIR) - PKGCONFIG (liblo 0.23 LIBLO_INCDIR LIBLO_LIBDIR LIBLO_LIB LIBLO_CPP ) - if (NOT LIBLO_INCDIR) - message("Error: liblo >= 0.23 not found, disabling DSSI") - set ( ENABLE_DSSI OFF ) - else (NOT LIBLO_INCDIR) - message("liblo >= 0.23 found.") - set (DSSI_SUPPORT TRUE) - message("DSSI enabled") - endif (NOT LIBLO_INCDIR) - endif (NOT DSSI_INCDIR) -else (ENABLE_DSSI) - message("DSSI disabled") -endif (ENABLE_DSSI) - -if (ENABLE_VST) - message("VST support enabled") - set (VST_SUPPORT TRUE) -else (ENABLE_VST) - message("VST support disabled") - set (VST_SUPPORT FALSE) -endif (ENABLE_VST) - -## -## TODO -## -## Optimizations -## - -SET (USE_SSE false) - -## -## check for fluidsynth -## - -if ( ENABLE_FLUID ) - PKGCONFIG (fluidsynth 1.0.0 FLUID_INCDIR FLUID_LIBDIR FLUID_LIB FLUID_CPP ) - if (NOT FLUID_INCDIR) - message("Error: fluidsynth >= 0.9.0 not found, disabling feature") - set ( ENABLE_FLUID OFF ) - else (NOT FLUID_INCDIR) - message("Fluidsynth found") - endif (NOT FLUID_INCDIR) -endif ( ENABLE_FLUID ) - -# -# produce config.h file -# -configure_file ( - ${PROJECT_SOURCE_DIR}/config.h.in - ${PROJECT_BINARY_DIR}/config.h - ) - -add_custom_command( - OUTPUT ${PROJECT_BINARY_DIR}/all.h - COMMAND cp ${PROJECT_SOURCE_DIR}/all.h ${PROJECT_BINARY_DIR}/all.h - DEPENDS ${PROJECT_SOURCE_DIR}/all.h - WORKING_DIRECTORY ${PROJECT_BINARY_DIR} - ) - -add_custom_command( - OUTPUT ${PROJECT_BINARY_DIR}/all-pic.h - COMMAND cp ${PROJECT_SOURCE_DIR}/all.h ${PROJECT_BINARY_DIR}/all-pic.h - DEPENDS ${PROJECT_SOURCE_DIR}/all.h - WORKING_DIRECTORY ${PROJECT_BINARY_DIR} - ) - -add_custom_command( - OUTPUT ${PROJECT_BINARY_DIR}/all-pic-debug.h - COMMAND cp ${PROJECT_SOURCE_DIR}/all.h ${PROJECT_BINARY_DIR}/all-pic-debug.h - DEPENDS ${PROJECT_SOURCE_DIR}/all.h - WORKING_DIRECTORY ${PROJECT_BINARY_DIR} - ) - -include_directories( - . - ${PROJECT_SOURCE_DIR} - ${PROJECT_SOURCE_DIR}/muse - ${PROJECT_SOURCE_DIR}/muse/widgets - ${PROJECT_BINARY_DIR} - ${PROJECT_BINARY_DIR}/muse - ${PROJECT_BINARY_DIR}/muse/widgets - ${PROJECT_BINARY_DIR}/muse/instruments - ${PROJECT_BINARY_DIR}/muse/ctrl - - ${ALSA_INCDIR} - ${JACK_INCDIR} - ${SNDFILE_INCDIR} - ${SAMPLERATE_INCDIR} - ${LIBLO_INCDIR} - ${DSSI_INCDIR} - ) - -# include (pch.txt) - -# -# If the cmake version includes cpack, use it -# -IF(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake") - - IF(EXISTS "${CMAKE_ROOT}/Modules/InstallRequiredSystemLibraries.cmake") - SET(CMAKE_INSTALL_MFC_LIBRARIES 1) - INCLUDE(InstallRequiredSystemLibraries) - ENDIF(EXISTS "${CMAKE_ROOT}/Modules/InstallRequiredSystemLibraries.cmake") - - SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MusE is a virtual audio studio environment") - SET(CPACK_PACKAGE_VENDOR "Werner Schweer and others") - SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING") - SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING") - SET(CPACK_PACKAGE_VERSION_MAJOR "${MusE_VERSION_MAJOR}") - SET(CPACK_PACKAGE_VERSION_MINOR "${MusE_VERSION_MINOR}") - SET(CPACK_PACKAGE_VERSION_PATCH "${MusE_VERSION_PATCH}") - SET(CPACK_PACKAGE_INSTALL_DIRECTORY "CMake ${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}") - SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${MusE_INSTALL_NAME}") - - SET(CPACK_SYSTEM_NAME ${CMAKE_SYSTEM_NAME}) - - SET(CPACK_PACKAGE_FILE_NAME "${CPACK_SOURCE_PACKAGE_FILE_NAME}-${CPACK_SYSTEM_NAME}") - SET(CPACK_STRIP_FILES "bin/muse;bin/grepmidi") - SET(CPACK_PACKAGE_EXECUTABLES "muse" "MusE" "grepmidi" "grepmidi") - INCLUDE(CPack) -ENDIF(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake") - -set(CMAKE_CXX_FLAGS "-Wl,-rpath,${QT_LIBRARY_DIR} -Wall -Wextra -Winvalid-pch -fno-exceptions") -set(CMAKE_CXX_FLAGS_RELEASE "-O2 -fomit-frame-pointer -ffast-math -fstrength-reduce") -set(CMAKE_CXX_FLAGS_DEBUG "-g -DQT_DEBUG") - -subdirs(al awl grepmidi plugins midiplugins muse share synti) - diff --git a/muse/COPYING b/muse/COPYING deleted file mode 100644 index 5a965fbc..00000000 --- a/muse/COPYING +++ /dev/null @@ -1,280 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS diff --git a/muse/ChangeLog b/muse/ChangeLog deleted file mode 100644 index d02cd328..00000000 --- a/muse/ChangeLog +++ /dev/null @@ -1,2760 +0,0 @@ -5.7. (ws) - - fix midi metronome output routing -29.6. (ws) - - fix sending proper note off's at stop -27.6. (ws) - JACK cleanups and implementation of JACK midi input -25.6. (ws) - As part of a major code cleanup i removed ALSA midi. This also removes the - need for a realtime timer (JACK midi and MusE are competing for it) and simplifies - a lot of other code. -2.3. (ws) - - dssi plugins: fix count of LADSPA ports -21.02. (fn) - - "Ported" simpledrums to Qt4 - it builds, runs, produces sound (and - compiler warnings); review is welcome. The GUI is rather large now. -21.1. (ws) - - fix: recorded midi events were echoed to midi output even if the "monitor" - switch was "off" - - speedups for midi recording; recorded events are shown in "realtime" -18.1. (ws) - - Remove font & style configuration. Fonts and other things are configured in - QT style sheets. The application style sheet is configurable. Default is - the build-in file "style.qss". -17.1.2008 (ws) - - use QSettings to save/restore main window geometry - - do not change geometry of main window when changing project - - fix crash: loading another song, then Settings->Preferences - - added svn revision number to "About" box - - changed version number to 2.0.1, install to muse-2.0 - - routing pulldown menu in mixer will stay if SHIFT is pressed while clicking; - this allows for fast selection of more than one routing targets -30.12. (rj) - - added drum filter mux plugin. Useful when driving a sampled drumkit - with multi sampled drums. Especially if they also have multiple keys - for variations of each drum. -20.10. (ng) - - I replaced double by float in Pos::msf method at file pos.cc - and that prevents the segfault that occurs when launching muse. - Although float precision should be fine that hack obviously hasn't - fixed the bug, just hide it! - - Initialize _timeType with AL::Tick in tcanvas.cc because it was used - uninitialized. -9.10. (ws) - - extend cmake scripts to automatically distinguish between jackd 0.103.0 - as distributed with (k)ubuntu and current jackd 0.107.0 - - fixes for texexec - - do not automatically build documentation; new make targets "program_doc" and - "manual" -22.9. (ws) - - fixed wavetrack playback -17.9. (rj) - - changed to start/stop toggle without rewinding since this seems - like the popular choice (actually I have to agree) - - some keyboard navigation beginnings...nothing working yet - - added some debug messages -17.6. (ws) - - organ synthesizer plugin update -9.6. (ws) - - added new Drawbar() widget to awl lib - - install libawlplugin.so into qt designer plugin library -29.5. (ws) - - update to current JACK (changes in midi interface) -26.05 (ng) - - update CMakeLists.txt to check that Qt4 > 4.3.0 and jack > 0.103.0 -23.5. (ws) - - midi import fixes -19.04 (ws) - - disable routing buttons in mixer strip when in off state - - fixed crash when removing track from mixer - - framework for importing muse0.9 projectfiles - - align buffer in dummy audio driver so that the sse routines - do not choke; same for AuxPluginF, Pipeline, Fifo -18.04 (ws) - - simplify mixer strip geometry manager - - changed track list layout: track name now always uses one - textline; remove configure option for track name size - - fix ctrl dialog for plugin provided controller -17.04 (ws) - - replace some heartBeat signal/slot connections with - direct calls for better performance -16.04 (ws) - - added some sse routines to optimize mixing -15.03 (ng) - - update IV miditracker -06.03 (ws) - - did some optimizations to meter display; mixer still uses - a lot of cpu cycles -04.03 (ng) - - update III miditracker -02.02 (ng) - - updated partlistedit, direct editing of time & parameters on list edit -01.02 (ng) - - changed PanDelay, time delay is calculated with BPM and beat ratio -27.01 - (ws) - - changed DSSI initialization making whysynth work - (ng) - - added operator== for EventBase, MidiEventBase and PosLen - - modified Event::operator== to match on the content instead of the pointer - - added insert note event and delete note and sysex event in List Editor -23.01 (ng) - - added insert sysex event update I - - replaced bzip2 by Qt compression in deicsonze - - added sysex tramission for DSSI synth -19.01 (ng) - - fixed bug to prevent muse from halting when trying to load a non-ladpsa plugin (by Willy Foobar) -06.01 (ng) - - added panDelay plugin FX - - added panDelay in DeicsOnze - -*********************** -* Happy new year 2007 * -*********************** - -29.12 (ng) - - fixed sync LFO Deicsonze - - update II miditracker (not working yet) -27.12 (ng) - - deleted getBankName and getPatchInfo of zynaddsubfx - - add gradient color for the tracks -26.12 (ng) - - changed MessSynthIF::populatePatchPopup to make is work with banks - - added getPatchInfo of DeicsOnze -15.12 (ws) - - make slider.maxValue configurable - - pixel tuning for graphical controller editor -13.12 (ws) - - changed (again) midi/audio time synchronisation - - fix: record midi controller only in controller list - (ns) DeicsOnze 0.5.5 - - added filter for low quality -12.12 (ws) - - added possibility to define a new midicontroller - (ng) - - add save project as... (not sure it's complete yet?) - - take off the last redundent presets in deicsonze -10.12 (ng) - - items in pianoroll play the right pitch (event.pitch + transpose) - - items in pianoroll are displayed correctly according to Y zoom - - selection in the pianoroll are dragged correctly - - fix RouteNode::write(Xml& xml, const char* label) xml.put --> xml.tagE - - fix eventCanvas::genCanvasPopup(), uncheck unselected action -08.12 (ws) - - first version of midi instrument editor (*.idf files) - (ng) deicsonze - - fix LFO and Ctrl modulation -07.12 (ws) - - xml lib cleanups -06.12 (ng) deicsonze - - fix pitchbend - - fix some logarithm volume issues - - fix sustain pedal -04.12 (ng) - - fix deicsonze FX plugin bugs - - add AbstractSlider::setMinLogValue(), AbstractSlider::setMaxLogValue() - - modify AbstractSlider::value() so that it returns min instead of 0 - - and VolSlider::value() still returns 0 for min - - add reset Ctrl button in DeicsOnze -29.11 (ws) - - shift+mouse wheel changes horizontal magnification while current - position stays at cursor position -28.11 (ws) - - application spanning drag&drop of parts - - cut/copy/paste for parts -24.11 (ws) - - added new make target: "doxy" to generate doxygen source - documentation -21.11 (ws) - - fixed DSSI support -21.11 (ng) - - add color gradient to meterslider - - update miditracker (not working yet) - - check mxml >= 2.0 for zynaddsubfx - - fix deicsonze FX plugin bug -16.11 (ws) - - implemented controller editor part of new list editor -12.11 (ws) - - the internationalization files (*.qm) are now part of the - MusE image via the qt resource system. Installing them is not - necessary anymore. -10.11 (ws) - - implemented splitlayer midi plugin - - replaced meter in midi input strip by activity "leds" for all - midi channels -8.11 (ws) - - removed the suboptimal "MidiChannel" concept. MidiChannels are - now merged with MidiTracks. -5.11 (ws) - - simplified midi input routing - - added "Monitor" button to midi track mixer strip -31.10 (ws) - - MESS: - - remove useless QWidget parameter in instantiate() - - getInitData() and getControllerInfo() - are no longer const; - - Added getBankName() to interface to allow for simple structuring - of patches. - - queue midi events which cannot be send to busy(locked) software - synthesizer - - zynaddsubfx: implement locking, showGui(), and getControllerInfo(); - cache patch names -29.10 (ws) - - fixed crash after some time of midi recording: made midi - input queue thread safe. -27.10 (ws) - - added a MESS port of the Zynaddsubfx software synthesizer -25.10 (ws) - - make default path for midi- and wave import configurable -23.10 (ws) - - simple jack midi output now works -20.10 (ws) - - add first support for jack midi - - jack autostart -18.10 (ws) - - added routing for jack midi ports. Fixes for "mus". -17.10 (ws) - - added new program "mus". Mus is a wrapper to operate MusE MESS - synthesizer standalone with JACK audio/midi interface. The - plan is to use them to test the upcoming jack midi implementation. -15.10 (ng) - - DeicsOnze 0.5, add FX send - - fix installation path for freeverb - - fix ladspa checkbox parameter - - add LADSPA plugin doublechorus -12.10 (ws) - - added post fader plugins for mixer - - removed special aux send track type. Aux send is now implemented as - a special build in audio plugin. - - many routing changes -5.10 (ws) - - QT4.2 is now minimum required version - - changed font selector in "preferences" to QFontCombobox - - replace "lauchBrowser()" with "QDesktopServices::openUrl()" - - fix for drag&drop for audio plugins -4.10 (rj) - - Select the right item when items are stacked on top of each other, for - pianoroll and arranger (rj) - - Print error message when name2route called in error (rj) -4.10 (ws) - - misc fixes for graphical controller editor - - patch for x86_64-biarch systems from Detlef Reichelt -1.10 (ws) - - changed locking of audio and midi sequencer thread (in my setup this - results in xrun free operation at 2.9 msec latency (kernel 2.6.18-rt5) -26.9 (ng) DeicsOnze 0.4.5 - - add four level of quality -24.9 (ng) DeicsOnze 0.4.3 - - add monophony - - finish to clean SutulaBank.dei -23.9 (ng) DeicsOnze 0.4.2 - - add pitch envelope (but does not sound yet like DeicsOnze's) - - keep cleaning SutulaBank.dei -17.9 (ng) DeicsOnze 0.4.1 - - add optimization -O3, execution twice faster, but compilation longer - - add portamento - - started to clean SutulaBank.dei -5.9 (ws) - - midi import fixes - - change german documentation encoding to utf8 - - dont assume system encoding is isoLatin1, first patches - (ubuntu and others use utf8) -4.9 - (ws) - - remove html documentation and replace with *pdf version - (ng) - * DeicsOnze 0.4 - - 16 instances (one per channel) - - stereo - - font size config - - load pixmap background config - - lots of bugs corrected - * add wallpaper paper2.jpg - * add miditracker (not working yet) -3.9 (rj) - * added red line to the left of track to identify selected track - * various fixes, adding controllers etc -31.8 (ws) - * plugin racks can now hold an unlimited number of plugins -29.8 (ws) - * fixed drawing of y-magnified pianoroll canvas -28.8 (ws) - * added simple midi event dump plugin - * add midi plugin rack to midi port strips - * supply correct position information to midi plugins in midi input - strips - * fixed: playing synti from midi track -22.8 (rj) - * playing with midi plugins, one new example plugin: trigg -29.7 (ws) - * fixed drawing of waveform in wave track. Concurrent wave file - accesses from gui and rt task produced distortions ("crackling"). -25.7 (ng) DeicsOnze - * add panic button -28.6. (ws) - * updated README - * small fixes to build system -23.6. (ws) - * new project property dialog to edit the project comment -22.6. (ws) - * fix: get reference count right when undo "split part" - * implement: rename part - * fix loading of cloned midi parts -21.6. (ws) - * show controller name in controller canvas of midi editor - * fix save/restore of controller editors in midi editor - * fixed handling of midi channel selection flag -19.6. (ws) - * fixed: mono plugins on stereo tracks work only on one channel - * fixed drawing of cutted wave part -14.6. (ws) - * fix build of libawlplugin.so; works for "release" build -12.6. (ws) - * drag&drop of wave files with automatic sample rate conversion if - necessary -9.6. (ws) - * clicking on controller event in controller editor changed - controller value (fixed rounding error and start offset for drag) -8.6. - * implemented deviceId for MidiPort -3.6. (rj) - * fixed plugin drag&drop problem - * enabled tool shortcuts in arranger -1.6. (ws) - * fix crash when loading new song (old song has midi channels, new - song has not) - * drag/drop of projects in project dialog - * added Roland JV-1010 instrument definitions from f.fabre -29.5 (ws) - * the list of available software synthesizer in - edit->AddTrack->AddSoftSynth was always empty - * properly ignore close event in MusE::closeEvent() if the - user aborts operation -25.5 (ws) - * remove automation buttons from midi track in arranger -25.5 (rj) - * buckle up, bumpy road ahead - * partial support for MAC OS X - includes some build adjustments, more -fPIC and added - libraries, still builds on linux so I hope it's mostly ok. -20.5 (ws) - * new controller select dialog - * build libsynti.a with -fPIC for athlon64 systems -19.5 (ws) - * install libawlplugin.so to make LADSPA plugin guis work - * added project creation time and song len (in sec) to project file -18.5 (ws) - * added "Muse templates" and "User templates" to template list - in template dialog -15.5 (rj) - * Fixed hardcoded refs to qt in CMakeLists.txt -11.5 (ws) - * implemented new project handling; first docs in doc/man/de -3.5 (ws) - * moved build system to cmake - * moved repository to svn -23.4 (ws) - * fix obscure "off by one" bug in arranger ruler bar numbering -22.4 (ws) - * fixed software synthesizer regressions - * return zeroed buffer if audio input strip is "off" - * mixer strips in arranger: dont show vertical space used - for horizontal alignment in mixer view -21.4 (ws) - * fix "aux send" audio strips - * fixed performance problem when redrawing canvas in play - mode (using QRegion instead of QRect results in 100% cpu load) -20.4 (ws) - * remove StatusBar widget from musebase.ui -24.3 (aw) - * velocity of a pressed key on the virtual keyboard depends on x -12.1 (ws) - * dont allow movement of events in midi editors beyond left part - margin - * small fixes to midi editors: ctrl-click, ctrl+shift drag etc. - * restrict event moves in midi editors to positions >= 0 to avoid - crashes -6.2 (ws) - * added man files -5.2 (ws) - * new: "auto fill" parts -3.2 (ws) - * fix mute instrument in drum editor - * fix eraser tool in midi editors - * left/right buttons in arranger didn't work - * fix Del shortcut in arranger - * fix: shift click in time ruler added two marker -1.2 (ws) - * fix tempo entry in transport window - * add TempoEdit and TempoLabel to Qt designer widget lib - * misc fixes and updates to master editor - * corner widget for arranger - * various small painting fixes in controller editor - (aw) DeicsOnze - * add quick attack, release and modulation control - * add choose number of voices 1 to 64 - * add choose input channel number - * add save, save as default and load configuration - * fix note off bug (but maybe not completly) - * add initial load set path in configTab - * replace ARCH_ALIN by SutulaBank.dei - * delete redundant presets (2000 presets -> 1457 presets) -28.1 (ws) - * make tool selection in midi editors persistent - * add "draw tool" to arranger available tools - * add "draw tool" to drum editor available tools - * implement "draw tool" for controller editor -27.1 (ws) - * implement "single pitch velocity controller" for drum editor - * misc gui updates for pianoroll and drum editor -26.1 (ws) - * track "clone" function for wave tracks - * cut&past of event lists for drum editor and pianoroll editor - * add "delta mode" changes for drum editor - * fix selection mechanism in drum editor - * reclaim JACK time master; qjackctrl now shows bar/beat/tick and - tempo - * snap locator positioning to raster -25.1 (ws) - * replace FILE with QFile - * Xml class is now based on QTextStream - * fix functions in drumedit - * fix shortcuts in pianoroll and drumedit -24.1 (ws) - * lots of small usability fixes - * use Qt property system to organize save/restore of toplevel - properties -23.1 (ws) - * extend Part with editor properties - * make initial values of editors configurable - * removed GraphMidiEditor and ExtMidiEditor, replaced with MidiEditor - * removed MidiPart and WavePart, replaced with Part - * midi editor: events can only be created inside of current part -22.1 (ws) - * highlight area of current part in midi editors -21.1 (ws) - * remove unconnected wave files on exit -19.1 (ws) - * implement remove part with eraser tool in arranger - * implement local double buffering for TimeCanvas, which is - for unknown reason still faster than the Qt provided -18.1 (ws) - * much faster drawing with Qt::WA_PaintOnScreen widget flag - * New implementation of audioprefetch fifo, hopefully more - robust. Old implementation could not deal well with - fifo underflows. -17.1 (ws) - * make trackinfo and mixerstrip in arranger persistent - * fix display of cursor mark in ruler - * fix buffer management for audio input strips -16.1 (ws) - * overhaul audio routing & processing; this hopefully fixes - several routing problems -14.1 (ws) - * treat a midi recording as on undoable event - * compute the right realtime priorities for the midi thread - and the watchdog thread depending on JACK priority. Unfortunately - a lot of code had to be changed for this mainly because you can - get the JACK realtime priority only if the JACK client thread is - already running (e.g. on the first jack callback). - (rj) - * Added support for drag&drop of plugins in plugin-rack -13.1 (ws) - * implement mute buttons for drum editor instruments - * small gui alignments in arranger - * fix rubber tool in pianoroll editor and drum editor - * fix: arranger scissor tool - (rj) - * handle jack disconnection - * minor timer changes -12.1 (ws) - * fix filtering of MidiInput strips in Mixer - * a lot of small fixes and cleanups -11.1 (ws) - * more code for miditrack track info - * implement mixer strip and track info as dockable widgets - * fix background image for arranger canvas -10.1 (ws) - * grab focus when dragging in arranger ruler - * fix: attempt to draw part on empty arranger canvas - * implemented the Qt resource system; moved *.png files to - resource file (muse icon & splash screen) - * added two top level files: - - TODO - - Reference, should countain a list of implemented - features -9.1 (ws) - * fix qt4 detection in m4/qt.m4 -8.1 (ws) - * fix midi recording: added missing timestamps for event types other - than note on/off - * install libawlplugin.so at $(pkglibdir)/designer; let MusE look at - that path; to use QT Designer to generate new ladspa guis, - libawlplugin.so and libawlplugin_debug.so must be copied manually to - $QTDIR/plugins/designer - * drumeditor: highlight current instrument - * fix crash in drumeditor when opening controller panel - * treat double click on drumeditor instrument name as mouse click - (rj) - * Added plugin gui 1436, and changed plugin gui for 1050 and 2142 - * Added ability for gui-factory to iterate child objects for - frames -7.1 (ws) - * several fixes for drum editor - * when clicking on instrument name in drumeditor, play note similar - to pianoroll editor - * implement mouse wheel for tracklist in arranger and in TimeCanvas -6.1 (ws) - * compile awl lib with -fPIC. This allows linking with dll's (as the - deicsonze synth plugin) on 64 bit systems - (rj) - * fix for automation-data in song, now stored without using locale -4.1 (ws) - * more robust handling of audioprefetch for seeking while play -4.1 (aw) - * Qt4 port for DeicsOnze load presets - * add brightness controler in DeicsOnze -3.1 (rj) - * fixed search box in plugin dialog -2.1 (ws) - * fix recording of note off events when part does not start at zero -31.12 (ws) - * fixes for audio prefetch thread -30.12 (ws) - * automatic peak reset in mixer meter display; new config parameter - "peak hold time" - (aw) - * DeicsOnze Qt4 port completed -29.12 (ws) - * fix save/restore of track mute flag - * more drawing properties for Awl::Knob - * more widgets for libawlplugin.so: PanKnob, MidiPanKnob - * fix Awl::Knob drawing - (aw) - * DeicsOnze Qt4 popup menu port -27.12 (aw) - * Qt4 port for DeicsOnze in progress -26.12 (ws) - * add debug version libawlplugin_debug.so - * return of the libawlplugin.so for qt designer -21.12 (ws) - * pianpercu.deioroll: fixes for event editing -20.12 (ws) - * make dssi compilable again - * draw tick marks in meter slider -19.12 (ws) - * implement smooth nonlinear xmag for time canvas - * software synthesizer are playable again with pianoroll keyboard - * fix drawing of pianoroll events, when time axis is frames instead of - ticks - * fix drawing of clock ruler - * fix drawing of pianoroll event when using pencil tool - * remove obsolete givertcap and suid install options -18.12 (ws) - * fix reading sysex for eventList, this enables synti state restore - * changed recordFlag semantic for wave tracks: if recordFlag is on, - the channel meter shows the input signal - * allow record toggle only when in stop state -17.12 (ws) - * align recorded parts to arranger snap values - * fix wave display in arranger parts - * reorganized and simplified audio record flag handling, fixing some - audio recording bugs - * audio fifo: changed write fifo handling - * added "atomic" counter for x86_64 architecture; removing generic - mutex version which is not suitable for realtime operation -16.12 (ws) - * added new thread "audiowriteback" which is exclusive responsible for - writing all recorded audio data - * make all syntis compilable & loadable -15.12 (ws) - * fixed bug in audio write fifo handling: sometimes audio blocks were - not written to disk -12.12 (ws) - * removed obsolete "Toplevel" class -10.12 (ws) - * port master track (tempo track) editor to qt4 -7.12 (ws) - * fix "config midi file export" - * port "configure shortcut dialog" to qt4 - * arranger canvas background color and pixmap are configurable again -6.12 (ws) - * fix start help browser - * fix "about" box - * fix song loading: midi channel track sometimes appears twice - in arranger track list -5.12 (ws) - * midi sync: interpret mmc messages in slave mode - * move undo/redo processing to midi sequencer context to prevent - seg fault on "redo delete midi input" - * fix undo/redo delete track - * fix for dragging tracks in arranger track list - * fix for midi input: out routing - * second attempt to fix seg fault when removing midi input track -4.12 (ws) - * continue playing a track if record button for track is switched on - * do not reset track record buttons on stop - * fix seg fault when removing midi input track -2.12 (ws) - * start the watchdog thread with realTimePriority+1 to be more - set_rtlimit friendly - * changed default realTimePriority to 70 - * fix: controller subtracks for midi channel got lost on song load -29.11 (ws) - * make midi channel controller editable in midi track context - * port arranger part colors - * fix configuration of tracklist colors -28.11 (ws) - * proper align top labels in mixer strip - * with the help of trolltech, setting the label background does - work again - * more fiddling with geometry management in arranger mixer view -25.11 (ws) - * ia64 fix for fastlog.h - * misc changes to make valgrind happy - * some ia64 compilation fixes -24.11 (ws) - * found out how to create menu titles in qt4, added to mixer routing - menus -23.11 (ws) - * unify creating controller list in ctrl/ctrleditor.c - * enable tempo and timesig editing in transport - * new class TimeSignature in AL -21.11 (ws) - * ported "fluid" synth to qt4 - * cosmetic changes in arranger track list - * small fixes in drawing slider handle -20.11 (ws) - * fix: dont create two audio parts per recording -18.11 (ws) - * remember only path of last imported wave file in lastWavePath - * fixes for audio routing to jack -17.11 (ws) - * port midi input filter to qt4 - * extended info in midi channel info: show midi port values - * added template for missing midisynth trackinfo - * implement midi master volume (port volume) - * more easy slider dragging: you dont have to hit the slider knob - * when creating a new midi track, show also midi channel of default - route - * when creating a new midi track, add default routes to all midi - inputs - * in function "copy track": dont add default route to new midi track -16.11 (ws) - * reanimate midi metronom plugin - * if imported midifile is type GM/GS or XG, this overrides the - configured preferred instrument - * fix for arranger tracklist layout manager - * fix buildsystem for non debug build - * make routing more robust; dont crash if configured route does - not exist -15.11 (ws) - * fix Route()== operator - * fix: insert new tracks at right position - * new Function "copy track" in arranger tracklist context menu - * new config values for global settings to set preferences - for midi input and output. This preferences should allow to play - midi files without editing: - - create midi input strip when loading a midi file - - connect all input devices to created midi input strip - - connect all midi tracks to created input strip - - default midi input port - - default midi output port -14.11 (ws) - * arranger file list: switch back to normal state after drag & drop - operation - * fix crash when removing selected track in arranger - * added (non working) code for posix timer (exploring the - hi resolution timer patch). It looks that the timer code interferes - with QT-timers. -12.11 (ws) - * fix: sequencer running far too fast before first seek - * fix crash on song load: properly stop sequencer before loading - * controller view: show "current value line" (shown when automation - mode READ is off) even if there are no controller events - * fix: remove controller events with right button mouse click - * new: update wave parts while recording -11.11 (ws) - * removed obsolete cmdAddRecordedEvents() - * make controller track height in arranger persistent -10.11 (ws) - * Yamaha-S90.idf fix - * misc fixes to controller editing - * optimize event drawing in pianoroll editor - * first build muse/ctrl then muse/arranger - * pianoroll editor: while dragging an event, repaint of all following - events was missing -9.11 (ws) - * controller painting is now done in new class CtrlEditor - * ported midiplugin "metronom" to qt4 -8.11 (ml) - * fixed drawing of events in pianoroll - not all fishes in the pond yet however -8.11 (ws) - * start to merge controller handling in arranger and midieditor - * removed more widgets from TLWidget and TLSWidget simplifying the - widget tree; -7.11 (ws) - * removed obsolete files cswidget.h cswidget.cpp - * removed SFrame() class from arranger (sframe.cpp, sframe.h) -6.11 (ws) - * when reading arranger splitter sizes from *.med file, assure that - splitter size for mixer strip and info panel are not zero to avoid - weird geometry manager behaviour - * fix midi input filter - * fix midi plugin dialog - * fix a typo in part drag -5.11 (ws) - * fix: make sure to send all note offs at loop end - * fix on/off switch in track list - * fix initial state of mute buttons in mixer - * make controller number in arranger subtrack persistent - * fixed handling of patch groups in populatePatchPopup() - * fix problem with instrument patch name in TrackInfo - * make Splitter sizes in Arranger persistent - * do not send *.idf configured instrument initialization for every - channel, send only once for every midi port - * make midi channel controller available to midi track - * fix controller selection in arranger - * added "auto repeat" to forward and rewind buttons - * fix: update track list widget geometry after config change - * fix: "follow" function can also move canvas backwarts - * fix: also move slider when "follow" function decides to move canvas - * ConfigTrackList: connect OK and Cancel buttons -4.11 (ws) - * stage2 of qt4 port effort: all qt3 compatibility flags/libs are now - removed; a lot of functionality is commented out and will be - activated again in further updates -3.11 (ws) - * fix "bounce to track" (record button in audio out mixer strip) - * fix BigTime display -2.11 (ws) - * new: drag wave files to arranger canvas (into wave tracks) - * fix moving parts between tracks - * fix right mouse click context menu in arranger track list - * start track drag in arranger track list after QApplication::startDragDistance() - mouse move or QApplication::startDragTime() is elapsed - * added hack to get arbitrary background colors for QLabel widgets - * fix: disable ymag in arranger - * make follow mode actions checkable - * save followMode enum in global configuration file - * implemented follow mode in TimeCanvas() - * moved followMode flag from Song() to TimeCanvas() - * dont create MidiChannel tracks during song load - * replaced configtrackbase.ui3 by configtrackbase.ui -1.11 (ws) - * fix display of active key in pianoroll keyboard - * adjust song len at end of recording - * fixed geometry management of arranger track list - * fixed reading of midi parts in songfile - * fixed transport states handling - * fixed midi recording: save note velicity and controller position -31.10 (ws) - * new: update midi parts and events while recording - -12.10 (ws) - * many changes all over the code: - - eleminated old View->Canvas classes and replaced with - TimeCanvas - - TimeCanvas now has a button to switch between "metronom view" - (measure/beat/tick) and "clock view" (min/sec) - - update arranger and drum editor for metronom/clock view -24.09 (ws) - * fixes for pianoroll editor and drum editor -23.09 (ws) - * rename all *.ui files to *.ui3 to prepare for porting to native - qt4 - * some arranger fixes (PartCanvas/TimeCanvas) -22.9 (ws) - * new widget hierarchy for arranger - * the big port to qt4 (chunk 1) -12.9 - * moved muse.pro to top directory (ws) -21.9 - * added continuous update of _nextPlayEvent in order to not delete - events that should be played in future process-calls (ml) -18.9 - * plugin gui now updated in automation read mode (ml) -7.8 - * ported waveeditor fixes from 0.7 to head (ml) -6.8. - * fixed midioutput process erase event bug, added midiport output routing (ml) -29.7. - * Fixed autoconf bug, unable to build without fluidsynth.h (rj) - * Added raise() for several configuration dialogs that only open - one instance. (rj) -17.7. (ws) - * implemented direct routing from midi input port to synti - * implemented input routing button for synti mixer strip - * when creating software synti add default route from - first midi port output to synti midi input - * remove all routes when deleting software synthesizer -16.7. (ws) - * fixed bug in midi pipeline (loosing midi events) - * fixed routing to software synthesizer - * implemented meter display for MidiChannel and MidiPort - * fix MidiInPort initialization - * audio routing fix - * make functions in MempiHost virtual, so they can be acessed by midi - plugin with MempiHost class pointer - * remove awl dependency pitch2string() from midi plugin "transform" - * fixed initial _offset in CanvasWidget -14.7 - * Updated DeicsOnze to version 0.3 (aw) - - added change color config - - fixed bug load bank and prog number conflict - - added amplitude and pitch envelope graph - - fixed wrong oscWave in algo7-8 noticed by Dave Beanie - - fixed bug delete - - fixed bug selection when more than 20 presets - - added pics in the combo boxes for algorithm, OSC and LFO wave - - added save & load in the MusE project -13.7 - * Added patches from Daniel Kobras to correct error in listeditor and - erros in old html docs. (rj) - * Added uppercase filters to midi import (rj) -12.7 - * Added quick search to LADSPA plugin dialog (rj) -04.7. - * Added Idf files by Steve D for Roland FantomXR, SRX-02 and SRX-09 (rj) - -21.06. - - do not link plugins against libaw and libawl (ws) -14.6. - - increase EVENT_FIFO_SIZE from 32 to 128 - - default to not show midi tracks in mixer - - implement missing "showMidiSyntiPorts" tag when reading *.med files - - after loading a midi file (*.mid), dont overwrite with *.med xml file - when pressing "save", instead call "save as" - - implement midi metronom as "midi synthesizer" plugin - - midi synthesizer plugin interface -26.5. - * *.idf files now allow definition of drum maps for patches - overriding the default GM drum map (ws) -24.5. - * added Roland E-28 idf file from Jonathan Woithe (rj) -23.5. - * converted "midi input transform" into midi plugin (ws) -16.5. - * handle identical alsa midi port names (ws) - * Updated ladspa-gui for newer version of tap-reverb (rj) -12.5. - * new midi plugin infrastructure ("MEMPI") (ws) -6.5 - * added a second configurable mixer (ws) -4.5 - * removed non functional LADCCA support (ws) -3.5 - * removed settings->midiPorts dialog (ws) - * more updates to midi routing (ws) -1.5 - * simpledrums: fixed issue with clearing of sampledata, I hope (ml) -30.4 - * fluidsynth: bankno is saved to project, switched to hbank from lbank (ml) -29.4 - * major update: (ws) - * new midi routing code - * new track types for midi input and output - * Added Yamaha-PSR275 instrument file by Petr Mazanec (rj) -27.4 - * fixed patch-info issue in Fluidsynth (bug 1191214) (ml) -26.4 - * added framework for design&implementation manual (ws) -25.4 - * update mixer, when midi channel changes (ws) -18.4 - * removed file ltmain.sh; this file is now created by "libtoolize" - command in autogen.sh (ws) -17.4 - * Re-added handling of different ports than normal when using drumtracks (ml) -16.4 - * Fixed bug 1152441, filename can now have several dots (ml) - * Fixed bug 1183980: fluidsynth pitch controller wasn't given to MusE from the synth (ml) -28.3 - * Temporary fix for raster in the arranger, would be better to have unified handling for raster-values (ml) - * Fixed internationalization for shortcuts + misc shortcut work (ml) - * Added fix from 0.7-branch for midi import problem w overflow (ml) -27.3 - * Bugfix for mapping of drumtrack record data (ml) - * Fixed softsynth crackle bug, removed things that appears to be unused in MessSynthIF::getData (ml) -26.3 - * More controller-pane fixes + fixes for the editor settings (ml) -25.3 - * Some updates on the controller-pane (when used in the pianoroll) (ml) -12.3 - * Midi clock slave-sync improvements added from 0.7-branch (ml) -27.2 - * fix midi recording regression (wrong timestamp()) (ws) - * add hack to fst to enable newer wine libraries (ws) -26.2 - * Added Roland-SCD70.idf from Emiliano Grilli (rj) -12.2 - * DeicsOnze : numerous and names following the internal changes - * DeicsOnze : communication deicsonze<->deicsonzegui with midi events - * DeicsOnze : Communication with MusE for automation -09.2 - * fixed bug with sending start play w/ midi-clock (rj) -26.1 - * new cmd line option "-m MIDI only mode"; renamed options: - "-i trace midi input", "-o trace midi output" (ws) -21.1 - * DSSI synth plugin framework (ws) -20.1 - * fixed LADSPA default value calculation for ranges dependend - on LADSPA_HINT_SAMPLERATE (ws) -19.1 - * added automation for plugins (ws) -18.1 - * fixed track renaming in arranger (ws) - * some L&F changes in arranger window (ws) - * fixes in midi controller handling (ws) -17.1 - * DeicsOnze : category, subcategory, preset organized following - hbank, lbank, prog (aw) - * DeicsOnze : add popup menu to new, delete, load and save (aw) - * DeicsOnze : add load method for preset and subcategory (aw) -14.1 - * enable/disable controller objects in ChannelInfo and Mixer - according to automation status (ws) - * change name of config file to contain release version; this - allows for different MusE versions installed parallel (ws) - * added OK/Cancel to Midi Input Filter dialog (ws) - * remove DRUM track type. Drum tracks are now ordinary midi tracks - with toggle "useDrumTrack" switched on (ws) - * new "Monitor" button which resembles old "midiTrough" functionality. - Midi Input to a track is echoed to the track output device, if - "Monitor" is switched on. This is independent of the track record - status. - * patch from Erwin Scheuch-Heilig to allow for libtool >= 1.4 (ws) -13.1 - * removed defunct clip list editor (ws) - * removed redundant master list editor (ws) - * removed obsolet key.c key.h (ws) - * new libray al as base lib for awl (ws) - * renamed awl include files (ws) -12.1 - * added hex/dec switch to list editor (ws) - * added named SysEx strings to midi instrument definition file (idf) - for use with list editor (ws) - * removed midi "song type" (ws) -11.1 - * added updated muse.pro and muse_ru.ts from Alexandre Prokoudine (ws) -10.1 - * ZynAdd instrument def file added (ml) -7.1 - * add icons for selection operations in pianoroll editor (ws) - * update song len after manipulating part in arranger (ws) - * initialize horizontal magnification in arranger for new song (ws) - * use snap value when drawing new part in arranger (ws) - * more code for list editor (ws) -5.1 - * Changes to the list editor (ws) -2.1 - * Drumeditor static default init settings added for width, height, quant + raster (ml) - * Missing kbd shortcut initialization for undo+redo added to listedit (ml) - * Pianoroll static default init settings added for width, height, quant + raster (ml) - * Mastertrack listeditor updates ported from REL07 (ml) -25.12 - * shortcuts in arranger on their way back (ml) -23.12. - * fixed: controller panes in pianoroll editor are not resizable - after MusE restart anymore (ws) -22.12. - * unify controller editing in arranger and pianoroll window (ws) -18.12. - * changed backup logic: 1. write temp file - 2. rename name to backup name 3. rename temp file to name - Step 2 i only performed once per session/songfile. - * changed install path for from $prefix/share/muse/ to - $prefix/share/muse-0.8/ and from $prefix/lib/muse to - $prefix/lib/muse-0.8 to allow for parallel installation - of old and new MusE versions -17.12. - * added slider for vertical magnification to arranger track list (ws) - * added "off" button to arranger track list (ws) -15.12. - * fixed bug #1085738: synth name problems (ws) -14.12. - * horizontal position in arranger is now persistent (ws) - * Disable of fluidsynth works (rj) - * Added test for libsamplerate (rj) - * Reenabled --enable-suid-install (rj) - * Added alsa timer (not enabled yet) (rj) -12.12. - * sync again audio prefetch when changing loop markers (ws) -9.12 - * Now autogen.sh requires libtool = 1.4, 1.5 does not generate - softsynths correctly (rj) -4.12 - * Added another IDF from Christoph Eckert for Alesis QSR,QS7 and QS8 (rj) -1.12 - * fix import of type 0 midi files (ws) - * horizontal magnification in arranger is now persistent (ws) -30.11 - * fix midi controller handling (ws) - * Added IDF files from Christoph Eckert for Access Virus, - Hammond XB and Waldorf Microwave (rj) -24.11 - * deicsonze, updates from a-lin - * simpledrums, ladspa support and fx-handling added, channel on/off added - no gui - for loading effects yet though... (ml) -18.11 - * simpledrums, updates & fixes (ml) -14.11 - * simpledrums - init data and reinitialization of synth state - added (ml) -09.11 - * simpledrums resampling of samples added w libsamplerate (ml) -08.11 - * Added simpledrums synth (ml) -01.11 - * Added Alin Weiller's DeicsOnze synthesizer (ws) -26.10 - * loading soundfonts manually adds them to first available - channel (ml) - * added new shortcuts for proll + drumedit: ctrl+left/rightarrow - moves selected events along the timeline by rasterval (ml) -25.10 - * changed shortcut texts to use static const array values - to make it possible to translate them with Qt linguist (ml) - * readded saving of settings on open editors (ml) -23.10 - * updates and fixes on settings (ml) -21.10 - * added the new CVS splash screen! *muha* -11.10 - * changed awl lib for using c++ namespace (ws) - * misc updates for automation (ws) -27.9 - * new dialog to add/remove midi controller for - automation (ws) -25.9 - * added metronome volume to "Metronome Config" (ws) -18.9 - * Added Alesis-Ion.idf from Sebastian Gutsfeld (rj) - * unified midi & audio controller (ws) -15.9 - * applied patch from Sebastian Gutsfeld to enable midi NRPN14 and - RPN14 type controller (ws) - * simplified xml write interface (removed "level") (ws) -14.9 (ws) - * replaced xml reader by Qt dom functions - * complete redesign of arranger -07.09 - * added Quasimidi-Sirius.idf from Nicolas Jouanne - * added icon adapted by Emiliano Grilli ;-) -31.08 - * double click on empty effect slot popups "New Plugin" dialog (ws) - * updated README.ladspaguis - * fixed instrument patch name update in channel info (ws) - * added "F" button to configure "follow song" for every pianoroll - editor (ws) -30.08 - * remove input routing button from synthesizer mixer strip (ws) - * add configure options to show only certain track types in - mixer (ws) - * add "Add Soft Synth" to "CreateTrack" menu in arranger, mixer - and tracklist popup (ws) - * fixed "prefetch(): invalid write position" bug (ws) -28.08 (ws) - * set caption of main window when importing midi - * add midi file types to "load file" file dialog - * default for configure ladcca is now "no" - * default for configure suid install is now "no" - * use awl lib for customized plugin guis (Freeverb 1050.ui and - Tap Reverberator 2142.ui) - * create designer plugin for awl library - * extend awl lib for use with customized plugin guis: new - widgets AwlCheckBox and AwlComboBox -25.08 - * fixes for ladspa plugin logarithmic sliders (ws) - * midi track info is now synchronous with mixer; patch names - are working again (ws) - * calling jack process() once before starting jack prevents - zombification on startup (warming up caches?) (ws) -24.08 - * config settings saved for open editors reimplemented (ml) - * automatically assign a free midi port to every new - created software synthesizer (ws) - * midi port configuration can now be reached by right clicking - in port column of arranger tracklist (ws) - * toggling soft synthesizer gui in arranger tracklist moved to the - track name context menu (right click) (ws) - * fixed crash on undo "delete vsti track" (ws) -23.08 - * doubleclick on volume slider sets value to "off" (ws) - * implement toggle behaviour for marker list (ws) - * fix crash in list editor - create new controller (ws) - * fix crash when vsti synti has more outputs than mixer strip has - channels (ws) - * increase required JACK version to 0.98.0 (ws) -21.08 - * native GUIs for VST plugins (ws) -20.08 - * VST plugins (ws) -19.08 - * new infrastructure for VST plugins (ws) -16.08 - * fix midi import: tick values of tempo/signature - and marker events are now properly converted to internal - resolution (ws) - * fix record flag in midi mixer (ws) - * fix awl setEnabled(); disable some more widgets in audio - strip in "off" state (ws) - * fixed solo & mute for midi in mixer (ws) - * fixed midi activity display in mixer (ws) - * new awl widgets: AwlMeterSlider(), AwlMidiMeterSlider() (ws) - * in automation mode "AutoOff" recorded midi controller volume, pan, - reverb send, chorus send and aux send are not send to midi - output. (ws) -14.08 - * fixes to midi mixer (ws) - * fixed project path in file dialogs when MusE has just been started (rj) -13.08 - * new configuration flag "useJackFreewheel" Settings->globalSettings - (ws) - * fix bounce operation (ws) -12.08 - * fix stereo/mono switching in audio mixer (ws) - * fixed "prefetch: NO BUFFER" warning during recording (ws) - * midi mixer + awl library fixes (ws) -09.08 - * Added automatic rec-enabling of selected tracks in a hopefully - intelligent way (rj) -02.08 - * stored editorsettings now saved (ml) -31.07 - * more updates on midieditor settings (ml) -30.07 - * added default route to output track (ws) -28.07 - * optimized mixer gui handling (ws) - * added new audio widget library awl, new look for mixer (ws) - * fixed core on creating new aux track; bug caused by introduction - of new audio metronome (ws) -27.07 - * first step against new handling of settings for midieditors w respect to parts (ml) -21.07 - * new feature: audio metronome (ws) - * reorganized Synth & SynthI classes (ws) -20.07 - * updated muse/muse.pro and share/locale files (ws) - * Added missing include to vst.cpp (rj) -18.07 - ======================================== - * 0.7.0 tagged ! (rj) - ======================================== - * output fifo warning only if cmd line "-D" switch is set (ws) -17.07 - * fixed separate handling of recorded events vs played events (ml) -15.07. - * do not start the disk helper thread in realtime mode (ws) - * check for JACK thread really running in SCHED_FIFO mode, if not - (as on my system with kernel 2.6.7 and nptl) try to set it. (ws) - * removed some exit() and abort() calls to react somewhat more gracefully to - to internal errors (ws) -14.07. - * fixed -V (no vst instruments) option (ws) - * do not save midi controller information in ~/.MusE file (ws) - * another try to fix midi loop handling: Loop len now should be - sample accurat. The loop is shifted left at most one audio - cycle to meet the requirement of loop end matching audio cycle - end. When JACK transport is in "JackTransportStarting" mode, - MusE internally continues rolling, so there are no repeated - cycles anymore (ws) - * Added message boxes when alsa and jack fails to initialize (rj) - * Disabled solobuttons in mixer (rj) -13.07. - * added new icons for the mixer solo/mute (js) - * added refresh for the solo/mute icons (rj) - * added icons for drum-/listeditor in the arranger on rightclick (js) -12.07. - * fixed typo in loop handling (ws) - * added patch from Daniel Schmidt to be able to configure - MusE without X being available (rj) - * Removed geometry data etc from templates (rj) -11.07. - * disabled midi mtc sync as its not implemented; disabled - midi sync slave modes as they are currently not working (ws) - * enabled sending midi clock (ws) -28.06. - * splitted removeTrack()/insertTrack() into three phases: pre realtime - actions - realtime actions - post realtime actions; this allows - to move memory allocations out of realtime task (ws) - * changed undo/redo of tracks: synti instances are now really deleted on - delete track (ws) - * jack connection changes with qjackctrl are now recognized by MusE (ws) -27.06. - * applied patch from John Check to add a panic button to pianoroll - editor (ws) -28.06. - ======================================== - * 0.7.0pre4 tagged - one more (rj) - ======================================== -26.06. - * Some packaging additions, icon, spec files. - (only mdk at the moment) (rj) -25.06. - * fixed midi timing bug (ws) -19.06. - * don't catch SIGCHLD, this interferes with vstInit() (ws) - * "givertcap" was not found when not in current directory (ws) - * impl. "all notes off" for organ synti (ws) -18.06. - * disabled buttons for not implemented functions (ws) - * added muse/wave/solo button in the trackinfo ;-) (js) -15.06. - * enabled some midi sync code (ws) -14.09. - * dialogs for change of drummap when converting miditrack to drumtrack - or changing port. redirection of keyevents from tlist to canvas (ml) -13.09. - * save/restore parameter for VST synthesizer (ws) - * automatic trackchange in tracklist when selecting parts in arranger (ml) - * added modify velocity to drumeditor + bugfix for modify velocity (ml) - * save/restore parameter for VST synthesizer (ws) -12.09. - * fixed backup command when filename contains spaces (ws) - * fixed midi step recording (ws) - * fixed bug in arranger: pressing enter after renaming part started - editor (ws) -09.06. - * added support for VST/windows software synthesizer (ws) - * delayed loading for software synthesizer: syntis are loaded, when - they are instantiated the first time (ws) -08.06. - * fixed --enable-rtcap configuration option (ws) -07.06. - * increased "dimension" in memory.h to make MusE work on 64 bit - architectures as requested from Simone Piunno (ws) - * added aux send for syntis (ws) - * added info box which explains why when MusE gets kicked by Jack (rj) -06.06 - * added instrument definition for roland MC-505 from Wim VW (ws) -05.06 - * Added backup creating save patch from Levi D.Burton (rj) -01.06 - * transpose + grid patch added (alin weiller) - * fixed moving events in drum editor (ws) - * added new config option: disable splash screen (ws) -31.05 - * fixed crash in pianoroll when using shortcuts for selecting - quant values when quant was set to 1 (no quant) (ws) - * fixed a crash when moving an event to tick positions < 0 (ws) - * fixed: selecting a note in pianoroll editor and changing a value - with note-info toolbar crashed MusE (ws) - * bugfix arranger: fix for selecting part -> ignore global accelerators (ml) - * bugfix for arranger selection of part above/below when using keyboard (ml) - * added pianoroll velocity variation patch (alin weiller) -30.05 - * hopefully a fix for drum in & outmap-issues in midi.cpp (ml) -25.05. - * shortcuts for "arrowing around" in arranger added (ml) - * 0.7.0pre3 tagged - the last!!! I hope (rj) -24.05. - * fixed a crash on new -> load template (ws) - * FluidSynth: added support for drumpatches (equiv to midichan 10 patches) (ml) -23.05. - * exit if rtc open() fails (ws) - * changed default start behaviour to open default.med template (rj) -18.05. - * added many new/redone icons (js) - * changed aboutbox.ui for qt 3.2 compatibility - * changed app.cpp (added the icons) -17.07. - * added stereo/mono icons to mixer (ws) - * added a first version of an icon for muse and adapted aboutbox to the same. - (graphics by Joachim Schiele) (rj) - * Improved handling of browser for help system (rj) -16.07. - * Added FluidSynth fix for ignoring preset selection of soundfonts that don't exist (ml) - * fix midi import of pitch bend events (ws) - * fix pitch bend handling (ws) - * enlarge PitchLabel width so that 14 bit controller values can be - displayed without clipping (ws) -15.07. - * removed some debug messages (ws) -12.07. - * show one more measure in pianoroll and drum editor (ws) - * renamed controller name "Hold1" to "Sustain" in *idf files (ws) -11.07. - * New try at fixing help browser on all systems (rj) -10.07. - * updated muse.pro and translation sources (share/locacle/*.ts) (ws) - * list editor: implemented input mode for program change messages (ws) -09.07. - * fixed "edit - delete track" hangs MusE - bug (ws) -07.07. - * fixed routing for stereo LADSPA plugins used in mono strips (ws) - * midi import: first resolve note on/of then transform ticks to internal - resolution (ws) -06.06. - * set global automation default to "true", set midi track automation to - "read" (ws) - * enable auxSend chorusSend and reverbSend in midi mixer strip if - corresponding controllers are added (ws) - * init automationType for midi tracks (ws) - * fixed gm.idf instrument definition file (ws) - * implemented "Add New Controller" in list editor / edit controller (ws) - * save current midi controller values in *.med file (ws) -05.05. - * updated roland-XP30.idf instrument definition (Sverre H. Huseby) -04.05. - * 0.7.0pre2 tagged (rj) -03.05. - * fixed a cut/glue bug probably introduced at 24.04 (ws) - * fixed compilation of musewidgetsplugin.so (ws) - * changed splash screen handling, used QTimer instead of background thread (ws) -02.05. - * Added first version of splash screen (rj) -01.05. - * Updated LADCCA support to (almost) usable condition (rj) -30.04. - * Added zoom scaling in drum editor, same as piano roll (rj) -29.04. - * Disabled Random Rhythm Generator (rj) - * Took a stab at fixing up shortcuts (rj) - * Fixed crash bug when clicking Channel Info and there was no info (rj) -28.04. - * Added single key shortcuts for edit tools (rj) - * added shortcut for Marker editor (rj) - * and fixed some shortcut inconsistencies (rj) -27.04. - * update marker list on tempo change (ws) - * allow adding markers from the ruler with shift-click (rj) -26.04. - * added missing header file(s) (ws) -25.04. - * fixed aux processing: stereo -> mono aux (ws) - * metronom now sends proper note off events (ws) -24.04. - * deactivated clip list editor. (ws) - * after loading of template, treat current project as "untitled" (ws) - * removed data structure "Clip". All information are now in WaveEvent; - this simplifies the structure a lot and makes reference counting more - reliable. Unfortunatly this also means a new incompatible *.med file - version. (ws) - * changed reference counting of Event class; simplified and more reliable (ws) -21.04. - * fixed some synchronisation issues between mixer and trackinfo window (ws) - * fix update of mixer after removal of aux strip (ws) -20.04. - * Added shortcuts to bug reporting tool, homepage, - and updated AboutBox (rj) -19.04. - * fixed QT version check in m4/qt.m4 (ws) -18.04. - * add samplerate initialization to fluidsynth (ws) - * compilation fix: added missing include in fluid.cpp (ws) -17.04. - * File->New crashed when current project had selected audio track (ws) - -15.04. - * 0.7.0pre1 * tagged for prerelease (rj) - * arranger: fast repeated pastes now works more reliable (no more stacked - parts) (ws) - * Thread(): crashed, when poll() returned more than one ready file descriptor - and the corresponding callback routine manipulates the list - of file descriptors. This happened timing dependend and only in real time - mode. (ws) - * fixed Fifo() get() (ws) - * small extension in soft synth interface (Mess()): added return values - for processEvent() -14.4. - * fixed pan range for midi mixer strips - * renaming soft synth instances + save/restore should now work - * fixed fluid "gui" - * changed CTRL_VAL_UNKNONW as it conflicts with valid - values for CTRL_PROGRAM (ws) -13.4. - * dont crash on missing LADSPA plugin (ws) - * set metronome precount default to "false". Precount is not - implemented. (ws) - * fixed crash when toggling stereo or pre buttons in mixer (ws) - * synchronize channel number in mixer/arranger-tracklist (ws) - * changed all float printf("%f") to equivalent qt-string - routines; dont localize decimal point so that the - strings can be properly parsed; this should fix some - save/restore problems in localized MusE versions (ws) -12.4 - - arranger/portinfo: fix update of instrument names (ws) - - fluid synth: enable drumsets (ws) - - fixed crash on inserting meta/ctrl/aftertouch in list - editor (ws) - - fixed crash in arranger when moving mouse+Alt after - removing a track (ws) -11.4 - fixed initialization of Pan after load of new song (ws) - - fixed graphical master track editor (ws) - - fixed Qt-Version check (ws) - - small qt3.2 compatibility changes (string->toInt() conversion) (ws) -10.4 - made plugin selector remember the previous selection type (rj) -4.4 - drag & drop import of wave files (rj) - - drag & drop import of mid files (rj) -3.4 - reactivated vam synthesizer - - fixed initialization bug in s1 synthesizer demo code (ws) - - added another vertical line in drum editor -2.4 - integrated new icons (ws) - - increased required QT-Version to 3.2 in configure.ac (ws) -1.4 - added vertikal line in track list as suggested by Joachim Schiele - - fixed synchronisation issue between mixer and tracklist (changing midi channel can - add/remove mixer strip) (ws) - - Changed pan range to -1 +1 (rj) - - added new icons from Joachim Schiele (not integrated) (ws) - - Support for showing only selected plugins in plugin dialog (rj) -31.3 - Added various compile fixes needed by debian (rj) -29.3 - Updated mc303 instrument file from Conrad Berh�ster (rj) -25.3 - bugfix for pos increase/decrease shortcut (ml) -24.3 - bugfix for mtscale redraw area when window is scrolled left - - bugfix for arranger shortcuts (ml) -23.3 - added position seek to drumeditor + arranger. - - increase/decrease pitch of selected notes in drumeditor with ctrl+up/down - - added quantize shortcut keys (1-8) in drumeditor (ml) -21.3 - added shortcut for pitch increase and decrease of sel notes, in pianoroll (Ctrl+Up/Down) - - moved shortcut handling for pianoroll + drumeditor to EventCanvas - - leftmost note selected when opening proll/drumeditor (ml) -16.3 - added shortcut for iterative quantize in p-roll. added shortcuts for - selection of notes in p-roll and drumeditor: left/right arrows moves - selection, holding down shift adds to current selection (ml) - - bugfix, moved blocking of signals on startup to exclude loading of project since - a bunch of widgets didn't get updated (ml) -12.3 - bugfix for menu initialization of "add track"-menu shortcuts (ml) - - added some regular 7-bit controllers to Fluidsynth (ml) -6.3 - Fluidsynti chorus operational again, controlled by NRPNs and - automatic gui-update here too. (ml) - - Fluidsynti reverb restored. Reverb is now controlled by NRPNs. - Automatic updates of gui when controller-changes occur. Unloading - of soundfonts restored. (ml) -4.3 - Fluidsynti playback restored. Gain restored. (ml) -3.3 - Fluidsynti major rewrite, not fully functioning though (ml) - - fixed crash on reload song with open mixer - - fixed crash on saving *.med: dont save aux values for channels - which have no aux send (like aux strips) - - remove empty record wav files on MusE exit - - fixed crash on undo controller editing (ws) -28.2 - more icons from Joachim Schiele (ws) - - fixed crash with mouse wheel events in arranger track list - - fixed some routing related crashes -25.2 - show mixer strip in trackinfo window for audio tracks (ws) -24.2 - compatibility patch to read midi tracks from old 1.0 *.med - files (ws) - - implemented quick input routing from jack (ws) - - added some new icons form Joachim Schiele (ws) -23.2 - implemented quick output routing to jack; some routing - fixes (ws) -22.2 - added instrument map for yamaha PSR 530 keyboard from - Lalit Chhabra (ml) - - misc compilation fixes from Joost Yervante (ws) -21.2 - added drum map for Yamaha DX200 from Joost Yervante Damad (ws) - - "quick routing" buttons in mixer (ws) -17.2 - install musewidgetsplugin.so in PREFIX/lib/muse/qtplugins/designer - and add this path to qt library path in application (ws) -16.2 - trackinfo geometry management changes (ws) -14.2 - added volume controller to organ, so that the organ - synthesizer volume can be controlled in the mixer midi strip (ws) -13.2 - - optimized "organ" software synthesizer: precomputed frequency - tables, integer envelope generator based on bresenham algorithm; - added "velocity" switch; (ws) - - changed VAM synthesizer for new interface (ws) - -12.2 - controller movements in software synthesizer gui's are now - send as midi events to MusE and can be recorded/replayed/edited - (currently only working for "organ" synti) (ws) - - changed software synth interface (again) (ws) - -11.2 - expanded trackInfo by default (rj) - - added some graphics to trackInfo :) (rj) - - changed "White" to "Default" (still white though) (rj) - - fixed trackInfo updating for tracks without their own trackInfo (rj) - - added lousy fix to update trackInfo when a track is deleted. - it's lousy because it's updating the trackInfo even though the - removed track wasn't highlighted, can place you in a tight spot - at times. I added it anyway because it removes a crash problem. - a better fix would be preferable. (rj) - - fixed mouse wheel functionality on knobs and sliders in mixer. (rj) - -8.2 - propagate track name changes to mixer (ws) - - enforce unique track name when user renames tracks (ws) - - implement one to many audio routing (ws) - - fixed bug in route dialog refresh after inserting new strip (ws) - - fixed aux send volume (ws) - -4.2 - added missing activate() to LADSPA plugin initialisation. - This fixes crashes with some plugins (plugins who use activate() - to allocate memory) (ws) - -fixed user definable LADSPA guis using QT-designer; added another - example *.ui file for "Toms'Audio Plugins" TAP-Reverberator (ws) -1.2 - - logarithmic values were initially wrong for spin boxes in - LADSPA guis (ws) - - On-the-fly-change of shortcuts in Listeditor, Drumeditor. Added selection - shortcuts to Drumeditor (ML) - - Added on-the-fly-change for shortcuts in pianoroll (connected to - configChanged-signal) (ML) - -30.1 save geometry of LADSPA plugin guis; - fixed missing mixer refresh after adding an auxSend strip (ws) -29.1 mixer strip automation types OFF, READ, WRITE and TOUCH - implemented; automated controller so far: volume, pan (ws) -27.1 more code for automation; - better reference counting for audio Clip; Clips with zero - reference are not saved in *.med file anymore (ws) -26.1 - removed obsolete driver/midirawin* (ws) -25.1 - removed obsolete raw midi devices & serial midi; all devices - are now handled by ALSA (ws) -24.1 - changed "Configure" to "Settings"; changed "Display" to "View" - for better standard compliance (ws) -23.1 - enabled controller editing in midi list editor (ws) -19.1 - added new dir/lib libsynti to collect common code - for all software synthesizer (ws) -18.1 - ported VAM software synthesizer to new MESS interface - (not complete) (ws) - - events send from synth gui are not echoed back anymore -17.1 - drumedit: changed "keyFilter" to "drumInstrument"; use - it to handle drum instrument specific NRPN controllers (as defined - in XG standard (ws) - - move drum instrument select status from drumMap to drum editor. - This allows for independent selections in different drum - editors. (ws) - - extend midi controller definitions in *.idf files for - drum instrument specific NRPN controllers (controller number - contains pitch value) (ws) - -16.1 - Added small fix to editctrlbase.ui to make it compile (RJ) - - Updated various revision info in README (RJ) - -15.1 - Corrected appearance of buttons in Metronome window (FN) - -9.1 - - "record" button in midi ChannelInfo; pressing this button - inserts changes in hbank/lbank/program/pan/volume as - controller events into song - - pianoroll editor: new "multi select mode": If more than one - event is selected, the event info spinboxes are set to zero. - Entered Values are interpreted as offsets and added to all - selected events. - - some fixes and performance enhancements to "MidiTransformator" (ws) - - fixed saving of drum tracks (ws) -8.1 - - changed arranger shortcuts + shortcut-configurator to use configChanged; all arranger menu shortcuts - redefinable on-the-fly. most menu options configurable (ML) - - now possible to toggle mixer window (ML) - - changed Ctrl+A in arranger to be used for select all instead of "Save As" for the sake of uniformity (ML) -5.1 - - new config (Config->GlobalSettings) option: - - start with empty song - - start with last song - - start with configured init song -2.1 - - smf type 0 export (ws) -31.12 - - midi export; fixes to midi controller handling (ws) -30.12 - - added dynamic shortcuts for all menu options in the arranger (will hopefully - work fine when config is loaded before menus are built) (ML) - - added check and prevention of conflicting shortcut sequences inside - respective categories, global shortcuts and misc "reserved" - shortcuts (ML) - - capture dialog grabs/releases keyboard (ML) -26.12 - - faster update of mixer (ws) -22.12 - - added dummy audio driver; this permits running MusE - without suid root and without RT priority when started - with "-d" option; this is for debugging & to get - normal core dumps (ws) -20.12 - - Reverb + chorus grayout-problem in fluidsynthgui removed. Some QT-designer files changed to 3.2 (ML) - - More shortcut updates: Added a dialog for capturing shortcuts (ML) -18.12 (ws) - - "declicked" s1 demo synthesizer - - make organ controller values persistent - - fixed integer overflow in organ synti controller values -17.12 (ws) - - new: mouse wheel events for track list values - - track colors in tracklist configurable in "appearance settings" - - more configuration options in "appearance settings" - part colors are now configurable - - ~/.MusE now contains only configuration data; this - settings are not replicated in *.med files any more -10.12 - - more shortcut stuff in the dummy shortcut config window (ML) - - new "load song" option: load all/load song data only (omit config data) (ws) - - new "File" function: load template; this function initializes current - song with another song (template) - - new option while importing a midi file: replace/add to project -9.12 - - More shurtcut stuff + dummy config dialog (ML) -2.12 - - Bugfixes in pianoroll for insert at current location and seek before - beginning of song (ML) - - fixed crash on "New" or loading new project -(ws) - "bounce to track" now works "faster than realtime" with JACK - freewheel mode (JACK 0.91.0 cvs required) - - mixer automation for gain & pan; some basic functions - - preparation for adding imported midifile to current project -1.12 - - More shortcut preparations (ML) -27.11 - - Added mouse wheel handling for knobs and sliders - shift modifier available for extreme slow motion. (RJ) -25.11 - - drummapping for recorded events (not heard on record playback echo yet) (ML) - - misc updates& fixes for track handling (ws) - - removed activity column in tracklist; will be replaced by - mixer meter display (ws) - - midi record flag can be set again, enabling midi recording -24.11 - - Added first steps for uniform handling of shortcuts (ML) -23.11 - - some mixer updates(ws) -22.11 - - fixed software synth handling; looping is only possible - on segment boundaries (ws) -20.11 - - Bugfix for drummaps and keyfilter in drumeditor (ML) - - apply drum map when importing midi (ws) - - retain track ordering across save/load (ws) - - wave files in the project directory are stored with - relative path, all others now with absolute path (ws) -16.11 - - Map outputted drumnotes according to drumMap index (Mathias Lundgren) - -14.11. (ws) - - JACK transport interface implemented - - finally removed ALSA driver; JACK now required; - - default to RT-mode on start (-R option is removed); -d (debug) - starts without RT - -12.11. (ws): - - removed midi mixer; first code to integrate midi mixer - into audio mixer; mixer moved to pulldown menu "Display" - - mixer strips are handled like tracks in arranger (prepare - for automation) - - track type cannot changed anymore in arranger track list; - also removed double click creation of tracks which makes - no sense anymore - - integrated "atomic" patches from Daniel Kobras -09.11. - audio routing fixes; mono/stereo switching for input/output - strips should now work; audio recording to tracks (ws) -08.11. - aux send audio mixer strips (ws) - - Arrowing up and down update in arranger (Mathias Lundgren) -07.11. - Fluidsynth compile problem w. Debian/qt/stl/gcc fixed (Mathias Lundgren) - - "Double undo"-bug fixed in Pianoroll (Mathias Lundgren) -04.11. - many changes to audio mixer and audio routing; implement - framework for new audio features (ws) -31.10. - - museProject set correctly when loading song on startup (RJ) - - save dialog added when adding first wave track (RJ) - - load/save of wave files handled with relative paths (to project) (RJ) - - Updated swedish translation (Robert Jonsson) - - Merged softsynth and midiconfig dialogs as in old tree(Robert Jonsson) - - Some museProject issues(Robert Jonsson) - - updated new midi controller implementation (ws) - -29.10. (ws) - - update soft synthesizer organ/fluid/fluidsynth; extent MESS - interface - - update from 0.6.2 (Mathias Lundgren): - - Various drumeditor-related updates including: Horizontal splitter - offset stored. Fixed length command added (Alt+L). Bugfix for selection - of events inside/outside locators. Initialization of drummap doesn't overwrite - entries loaded from project file. - - Alt+P sets locators to selected notes in PianoRoll and DrumEditor - - CTRL+Leftclick on an item in the Arranger, PianoRoll or DrumEditor selects all - parts/notes on the same track/same pitch - - Pressing Enter in the Arranger now opens the appropriate editor for the - part (Mathias Lundgren) - - The midithread now maps keys on a drumtrack according to the drummap. - - Cursor up/down (Mathias Lundgren) - - currently selected drum (Mathias Lundgren) - - fixed compilation error in givertcap.c (andrew) - - removed iiwu soft synth temporarily from compilation until - ported to new "mess" interface - - added missing file ltmain.sh - - create new cvs at sourceforge.net -------------- - - removed obsolete score editor - - changed midi controller handling - - new process structure - - redesign of "mess" software synthesizer; removed alsa - - new midifile import/export - - fork from cvs; new file structure -0.6.2(omuse): - - added first version of (incomplete) french translation from - - removed stk based soft synthesizer + share/rawwaves - - removed sound font - - fixed bug in midi recording when recording starts with a note off; - also the recorded part len was miscomputed when the recording ends with - a pressed key (missing note off event) - - added new allocator for SEventList and MPEventList (memory.cpp, memory.h) - to make sure the midi RT-thread does not call malloc/new/free/delete - - added misc build patches from Daniel Kobras - - make selection of alsa audio device an command line argument - (-A xxx default: hw:0) - - fixed "edit->select->allInLoop" - - fixed track height after renaming track -0.6.1: - - fixed "Cakewalk Style" display in arranger - - added russian translation from Alexandre Prokoudinek - - arranger: tracks are now independent vertical resizable - - arranger: implement part rename from popup menu - - arranger: show part name in parts in addition to events - - audio mixer: interpret min slider position as "off" - - audio mixer: added value entry for pan (Robert Jonsson) - - audio: some routing fixes - - audio mixer: enable data entry for slider label - - ladspa plugin gui: replaced value label with data entry - to allow numerical entry of parameter values - - pianoroll: added undo/redo to edit menu + accel. keys - - ctrl editor: implemented changing (painting) of pitch - events - - added macros for big endian machines in midi.h - - added spain translation (Albert Gonzales) -0.6.0: - - added swedish translations (Robert Jonsson) - - fixed editing of pitch events in list editor - - fixed crash in score editor - - check tempo entry values; dont allow invalid values which could - crash MusE - - fixed not functioning "Abort" button in MidiTransform dialog - - fixed Ctrl-editing in drum editor - - fixed "Group" audio routing - - fixed editing of pitch values in parts not beginning at tick zero - - fixed "unexpected EOF" after dragging of events in midieditor - - fixed cut&paste in midieditor - - implemented deleting multiple selected parts in arranger with Del key - - fixed audio pan pots in mono->stereo conversion - - changed iiwu to fluidsynth (thanks to Helio Chissini de Castro) - - new popupmenu: click with right button in empty tracklist - - LADSPA plugin guis are generated at runtime from qt-designer *.ui - (xml-)files; testfile is "freeverb.ui" for freeverb plugin; - - added "Slider"+"DoubleLabel" to musewidgetsplugin to make widgets - available in QT-Designer - - renamed poseditplugin.so to musewidgetsplugin.so - - fixed midi ctrl editor - - sparate sync device into txSyncDevice and rxSyncDevice. RxSyncDevice - can be configured to "all". - - use macros for atomically inc/dec count in lockfree - Fifo implementation -0.6.0pre8: - - prepared for internationalization: - - created muse.pro - - removed all implicit type conversions char* -> QString - - added several missing translations tr() - - Part text is now colored depending on background (FN) - - fixed "bounce to file" fifo handling - - disable transport buttons in slave mode - - calculate correct size for new part after midi recording - - fixed crash when reloading song while audio mixer is open - - implemented "bypass" function for LADSPA plugin gui's - - changed obsolete qt header file names - - implemented external midi instrument definition files (*.idf) - (examples are in */share/muse/instruments) - - implemented moving plugins up/down in effect rack - - fixed: renaming wave track switched track to mono - - implemented LADSPA "LOGARYTHMIC" and "INT" hints - - disable record button for tracks with no input routed to - - implemented LADSPA "TOGGLED" port as QCheckBox in plugin gui - - changed algorithm for zeroing denormalized floats in freeverb - plugin; now it works again for gcc3.x and optimization flags - turned on -0.6.0pre7: - - prevent creation of empty wave files when switching the - record button in audio mixer on/off; wave files are only - preserved when you actually record something into it - - made plugin guis persistent - - fixed scissor operation on wave parts - - added missing code for "bounce to file" - - fixed "bounce to track" - - removed/changed obsolete qt code - - update for current iiwu cvs - - fixed initialisation bug in wave editor - - dont link iiwu libs static - - (bh) added ladcca support - - fixed midifile export - - arranger, pianoroll editor, drum editor: tool popup menu - with right mouse button click - - update iiwu to current cvs version - - implement trackinfo patch names for iiwu - - fixed "appearance settings" - - added keyboard shortcut "Del" to delete events in pianoroll - and drum editor - - "Asterisk" key in keypad now toggles record mode -0.6.0pre6: - - fixed len of new created event in pianoroll editor - - extend font selection in "apearance settings" - - Added shortcuts for "Select All", "Unselect All" and "Invert - Selection" in PianoRoll editor (FN) - - Fixed Event coloring and shortcut ("e") key (FN) -0.6.0pre5: - - fixed midi seek & tempo map - - implemented global tempo change -0.6.0pre4: - - fixed tempo handling - - pianoroll editor/drum editor: fixed changing of note position - - transport: some geometry/font changes; time signature can now - be changed by mouse wheel - - fixed glue/scissor tool - - catch sigchld signal again so we know when a softsynth gui exits - -0.6.0pre3 - - fixed drawing of drum parts in drum editor - - on reading *.med files reject events which dont't fit into part (more robust - handling of defective med files) - - remove also synth gui when removing synth - - implemented some of Frank Neumann's usability suggestions: - - a "Copy Part" sets the current location marker after the marked part - - "Del" removes part if a part is selected instead of whole track - - new Keyboard Accelerator "C" toggles metronome click - - removed channel info for selected notes in pianoroll editor and - drum editor - - navigate between parts with left/right buttons in arranger window - - implemented changing note position for selected note in "note info" toolbar - - fixed: changing "loop" flag in transport window does not change "loop" flag in - other windows - - call pcm_wait() in alsa driver with sane values - - fixed: after load song seq did not run with rtc - - filenames for audio recording to tracks are now generated - automatically; every recording goes into separate file - - (bh) updated build system to use automake 1.7 - - fixe Midi->DefineController "Cancel" - - new function: Midi->DefineController load+replace and load+merge - - fixed MFile write: close() was missing; this fixes a.o. saving of - midi controller sets - - make organ synth aware of project directory for saving presets - - fixed load/restore presets for LADSPA plugins - - changed organ default values for envelope generator - - more fixes for alsa driver (less xrun errors) - - lokal allokator for soft syth midi events implemented - - enable sample rates != 44100 for iiwu (JACK has 48000 default) - - cleanup soft synth instantiation: call alsaScanMidiPorts only one time - - small audio buffer handling optimizations - - some thread cleanups - - fixed audio mixer geometry handling - - another fix for RT thread handling in iiwu - - fixed recording of pitch events (not tested) - - load iiwu sound fonts in a background helper thread to - avoid being thrown out by JACK - - fixed RT thread handling; now muse+iiwu+jack works - - honour LADSPA default hints for controller ports - - removed some restrictions for LADSPA plugins - - fixed tempo entry in transport window - - added high priority watchdog process to avoid system freezes - - updated "iiwu" synth to use peter hanappes libiiwusynth - iiwu now remembers last used sound font - - fixed cut&paste for midi parts - - fixed cut function for midi parts -0.6.0pre2: - - audio mixer: reset meter on mute - - changed input routing to allow monitoring while recording - - removed superfluous second init() call for soft syntis - - fixes for mono/stereo conversion - - ensure all wave files are properly closed on exit - - fixed segfault on second cliplist open - - fixed wave part split function - - fixed ALSA/JACK configuration bug - - event time positions are again stored as absolute time positions - to enhance compatibility with older "*.med" files - - changed panic button: instead of sending lots of note off - events only "all sound off" controller events are send for all - ports/channels - - fixed error on importing midi files when there are more - than one track assigned to a midi channel - - found another memory corruption bug in sysex handling - - fixed precount in metronome - - space key again stops play/record - - fixed stop/play in transport window - - prohibit change of mono/stereo for input strip - - convert mono/stereo on the fly for wave parts - - fixed crash when pressing play in empty song - - audio loop fixed - - _midiThruFlag not always initialized - -0.6.0pre1: - - attached midi mixer again - - fixed metronome: loop mode, measure/beat configurable - - moved part colorisation into part popup menu - - added global midi pitch shifter in addition to track pitch shift; this - allows for simple pitch transforming the whole song. Drum tracks are not - pitch shifted. - - fixed fatal error in soft synth handling resulting in sporadic - core dumps - - removed sf directory (sound file stuff) and replaced - it with the real thing: libsndfile 1.0.0 - - removed bogus kde stuff: kde.h onlyqt.h desk.h - - JACK Audio support - - AUDIO & ALSA now required - - fixed memory corruption with sysex events - - simplified organ soft synth parameter handling - - removed illegal controller message optimizations - - implementation of "panic" button - - first instantiated synti did'nt show up in port list - - size of resized drum and pianoroll editor windows are now remembered - - fixed crash when configuring null audio device - - removing soft synth instance did not stop midi thread; alsa client - was not removed - - (bh) lots of buid system changes and general cleanups - - (bh) removed the use of the UICBASES make variable; .ui files can - now be added straight into _SOURCES make variables with the new - SUFFIXES support in automake 1.6 - - (bh) upped minimum automake version to 1.6 - - (bh) removed the use of the MOCBASES make variable; header files that - need to be run through moc are now detected automatically - - (bh) new iiwusynth softsynth - - (bh) removed support for oss and alsa 0.5 - - clone parts implemented (also called "alias parts" or "ghost parts") - (dragging part with Alt-Key pressed in opposit to Shift Key which - produces a normal copy); - needed many internal changes; hope not to much is broken - - mastertrack: new spin widget for changing midi signature - - fixed midi thread initialization after loading new file - - stopped sequencer before loading new file; this should fix occational - core dumps on New/Load/ImportMidi - - some cleanups with file load/save operations - - Config->MidiPorts->otherRaw (device name pulldown): enabled OpenFile - Button for DevicePath field: At least current Qt can now handle devices. - - implemented: - - structure pulldown menu: - - global split - - global cut (mastertrack cut not implem.) - - global insert (without m.t.) - - implemented part mute - - added pitch transposition to pianoroll widget keyboard (Tim Westbrock) - - Save(As) behavior patch from Tim Westbrock -0.5.3: - - updated stk library to version 4.0; adapted stk synthesizer - - added SECURITY advice from J�n Nettingsmeier - - several compilation & portability fixes from Takashi Iwai - - fixed keyboard entry in pianoroll editor - - midi now runs synchronous with audio - - midi record time stamps now again synchronous to play position - - fixed trackinfo geometry (hopefully) - - pianoroll: fixed endless loop if record was pressed - without any mididevices configured (reported by Ola Andersson) - - default to english help if help for $LANG not available - (Ola Andersson) - - detect misconfigured ALSA system (Ola Andersson) - - updated demo app "rasen.med" to current xml format -0.5.2: - - fixed: rtc clock resolution settings in Config->GlobalSettings - - fixed: crash on second start of Edit->Marker - - more consequent implementation of -a (no audio) command - line parameter: no softsynth and LADSPA plugin loading; - disable audio menu - - fixed sending spurious midi controller settings on startup - when track info is active - - first code for "random rhythm generator" port from JAZZ++ - - fixed start offset of midi recording - - pianoroll editor: fixed selection update - - appearance setting "font size" now persistent - - does not crash anymore if no ALSA system found. (ALSA is still - needed to compile MusE) - - fixed: multiple recordings: clear events form first recording - in record buffer - - fixed: crash when removing last track with open - trackinfo - - (bh) added beginnings of alsa midi patchbay - - changed suid handling: now MusE runs with normal user uid - and switches only to root uid for some special operations - - fixed mixdown file output - - fixed lock on startup when wave file was missing - - arranger: open tracktype pulldown with left mouse click - (was opened on right click) - - arranger: don't scale pixmap symbols - - added share/rawwaves to cvs repository (needed by stk synthi) - - changed software synthesizer interface "mess": moved more - common synth functionality to "mess.c"; changed synti's to new - interface - - removed obsolete "short name" in controller type dialog - - CtrlCanvas: always draw location marker on top of grid - - fixed: TrackInfo: velocity - - fixed: alsa midi: "pitch change" interpreted as "channel aftertouch" - - fixed some midi controller bugs - - implemented new parameter save/restore interface for soft - synthesizer (applied to "organ") - - (ws) fixed lost controller events on midi import - - (ws) fixed crash when removing soft synth in use - - (ws) appearanceSettings: changing font size now works better - - (Bob) files now include "config.h" instead of relying on -DALSA, - -DALSACVS, -DINSTDIR and -DAUDIO - - (Bob) Added 'delete preset' button to vam's gui and made it - remember what preset file it loaded - - Mess: added new class MessMono() which implements some - monophone synthesizer features. This is used in the - simple demo synthi s1 - - if you try to exit MusE and abort this process, MusE was - left in an unusable state - - loop end was not calculated correct; event at loop end - was played - - muse now again stops at end of song in play mode -0.5.1: - - fixed crash: SaveConfig after Config->SoftSynth->AddSoftSynth - - changed default audioSegmentSize from 256 to 512 - - eliminated message: "input type 66 not handled" - - SoftSynth gui was startet with uid root - - save project: warn if file open fails - - removed trace message "unrecognized event 42" (Sensing Midi Event - from external keyboard). Anyway MusE does not handle midi sensing - events. - - changed geometry for trackInfo panel - - more code for 14 bit controller events - - install "rawwaves" for stk synti into right place preventing - crash on start - - fixed another crash when load soft synth configuration - - fixed Midi Position Label (was -1 beat/measure off) - - fixed problem with lost note off events - - generate "note on" events with velocity zero instead of - "note off" events -0.5.0: - - pianoroll editor: caption is changed when current part - changes - - new software synthesizer adapted from: - STK: A ToolKit of Audio Synthesis Classes and Instruments in C++ - Version 3.2 - By Perry R. Cook, 1995-2000 - and Gary P. Scavone, 1997-2000. - http://www-ccrma.stanford.edu/software/stk/ - - added presets to "Organ" software synthesizer - - changed midi routing for software synthesizer: - - controller changes from gui can be recorded - - new midi thread implementation - - speaker button in pianoroll editor implemented: - if on events are played if clicked - - new Menu: Midi->InputPlugins - - demo plugin "Transpose" - - moved Config->MidiRemote to Midi->InputPlugins - - moved Config->MidiInputFilter to Midi->InputPlugins - - moved Config->MidiInputTransform to Midi->InputPlugins - - as usual some bug fixes of old and new bugs - - master editor: fixed: locator bars sometimes invisible - - master editor: new tempo spin box to change tempo at current - position -0.4.16: - - new software synthesizer adapted: - "Organ - Additive Organ Synthesizer Voice" from David A. Bartold - - new simple demo Synthesizer S1 - - remove the hardcoded qt path "/usr/qt3" (0.4.15) - - fixed many bugs - - new: implemented line draw tool in controller editor -0.4.15: - - qt3.0 now required - - many gui/widget changes - - fixed segfault when pasting wave parts - - changed (again) default magnification in wave-view - - implemented prefetch thread for playing audio files - - fixed: iiwu did not play with ALSA 0.6 - - fixed: handle audio underruns for ALSA 0.6 -0.4.14: - - some makefile and compilation changes - - audio play: noise between audioparts during playback - - dont stop at end of song when "loop" is active - - default magnification in wave-view set to 1 - - fixed a audio route initialization bug - - new metronome configuration: precount configuration added -0.4.13: - - avoid "disconnect error" on startup - - wave view: y magnification now persistent - - small gui enhancements to reduce flicker - - make install: now creates gui dir - - implemented 8 bit wave input format - - fixed another source of audio crashes -0.4.12: - - audio play: mixing buffer was only partly cleared resulting - in random noise - - fixed: core after removing soft synth instance - - set default master volume to 1 - - fixed some audio routing bugs - - drumedit: added missing display update after drum map loading - - drumedit: fixed: when loading external drum map, velocity values - got zero - - drumedit: fixed: core some time after loading external drum map -0.4.11: - - iiwu: in GM-mode dontt allow drum channel program changes; - also ignore bank select messages - - set GM-Mode resets synth - - some changes in drum channel handling - - substantial changes in audio implementation - - reimplemented audio configuration - - miditransform: val2 transforms fixed -0.4.10: - - iiwu: implemented sustain, ctrl:expression - - iiwu: changed sync audio/midi; this fixes some timing issues - - iiwu: fixed: core when loading new sound font while playing - - split RT thread into separate midi & audio thread - - fixed some bugs: crash on midi recording - - some new functions in pianoroll editor - - added/integrated Tommi Ilmonens "givertcap" - - iiwu: some fixes for ALSA 0.9beta - - arranger: voice name popup in channel info works again -0.4.9: - - fixed some memory leaks - - before loading a new song all synthesizer instances are - now removed - - reorganized installation: - - there is a toplevel installation directory - (default /usr/muse); the environment variable MUSE - points to this directory - - architecture dependent files go into - $(MUSE)/lib, architecture independent files - into $(MUSE)/share - - MidiSync: MC ticks are now also send in stop mode - (if configured) - - after "Start" is send, sequencer starts on next - midi clock tick - - iiwu: fixed core dump on save if no soundfont loaded - - iiwu: high resolution buffer size independent midi event - processing -0.4.8: - - faster display updates - - some changes for better compatibility with different - environments (compiler, lib) - - fixes for ALSA 0.5.11 - - fixed core dump while removing soft synth instance - - fixed some bugs with iiwu+gui - - fixed: TransportWindow: tempochanges while masterflag is off - - fixed: all tempochanges are now saved in songfile -0.4.7: - - ALSA 0.5.11 compiles again - - MESSS gui interface, first try: - -every midi instrument can have an associated - GUI (currently only impl. for MESSS soft synths). - The GUI is startet as a separate process connected - to the midi instrument. The gui sends midi commands - (sysex) to stdout. This midi data stream is connected - to the midi instrument port. - - test implem. can load sound fonts into iiwu synthi - - fixed a bug in loading big sound fonts - - waveedit: waveform display works again - - some iiwu changes -0.4.6: - - completed midi input architecture: every midi track has now - assigned input port+channel. Channel can be 1-16 or "all". - This allows for routing of different midi channels to - different tracks while recording. - - changed max number of midi ports from 8 to 16 - - fixed serveral bugs iiwu software synthesizer - - fixed compilation problems with some ALSA versions - - fixed: changing track name changed record flag - - fixed: remove midi editor if associated track is removed - - fixed: initial state of solo button in arranger - - fixed: hard to reproduce core while deleting track - - new command line option to set real time priority - - max number of midi ports is now 16 - - audio recording from master to file now works: - - configure Audio->MixdownFile (only wave/16bit) - - switch on record button in audio mixer master strip - - play - - fixed: graphic master editor: missing display refresh - after signature change - - changed midiThruFlag: removed from Config->MidiPorts; - "midi thru" now is associated with a track, if set all input - to that track is echoet to track port/channel - -0.4.5: - MESSS: (MusE Experimental Software Synthesizer interface Spec): - A software synthesizer is implemented as a dynamic - loadable library (*.so file) with two interfaces to the - outside world: - - - a LADSPA interface for audio output - - a midi sequencer interface registered to ALSA - - MusE searches all available synths and presents a list - in Config->SoftSynthesizer. To use a synthesizer you have - to create an instance. Several instances of an synt can be - created and used. Every instance creates - - a) an alsa midi sequencer port (look at Config->MidiPorts) - b) a new strip in the audio mixer - - As a demo i ported a stripped down version of the iiwu - software synthesizer (http://www.iiwu.org) to MusE. - Setup info is in README.softsynth - -0.4.4: - - fixed cakewalk style event display in arranger - - track comments are handled as 0xf text meta events in - midi files - - fixed: follow song in pianoroll/drumedit (daniel mack) - - fixed: refresh in list editor - - implemented 14 Bit controller in list editor - - new patch form Takashi Iwai enables MusE to compile - with ALSA 0.9.0beta5 and current cvs version - -0.4.3: - - new: Config->MidiInputTransform - - new: comments for tracks: click with right button on track - name in arrange window - - fixed: score editor sometimes eats up all memory on start; - machine was unusable for some minutes until muse crashes - - fixed some other smaller bugs - - patch from Takashi Iwai for latest (cvs-) ALSA - - fixed: score postscript generation (printer & preview output) - -0.4.2: - - added few missing display updates (bugs introduced - with 0.4.1 drawing optimizations) - - pianoroll editor: - - fixed: edit->DeleteEvents - - drum editor: - - implemented: edit->DeleteEvents - - use different cursor shapes while using - Glue- Cut- and Rubber tools -0.4.1: - - some small Changes for compiling MusE with gcc 3.0 - - track info values (transposition, velocity etc) - are now applied when exporting to midi file - - better geometry management for ctrl panel - - pianoroll editor / drum editor now allow for more than - one ctrl panel - - new: load/save midi controller sets - - automatic creation of midi controller sets on - midi import - - new: active(used) midi controllers for current - parts in editor window are now marked in controller list - - fixed: parts in open editors are not restored correctly - - many drawing optimizations; scrolling is now much - faster/smoother -0.4.0: - - input configurable for every track - (you can record from more than one midi input device - to different tracks) - - you have to switch on the "record enable" flag for - every track you want to record to - - Note "h" is now called "b" unless you set - the environment variable "LANGUAGE" to "de" - - Changes from Daniel Mack: - - bigtime window now shows hour:minute:sec:frame - - configurable snap grid for arranger - - configurable font size - - again "tick underflow" - -0.3.20: - - "bigtime" widget from Daniel Mack - - fixed global accelerator keys f11/f12 (toggle transport & - bigtime window) - - fixed: score editor: try placing notes in the right margin of the - last row gave core dump - - score editor: different cursor shapes - - new try on missing midi sync ticks (producing "tick underflow" - trace messages) - - score editor: some small enhancements -0.3.19: - - several small bugfixes from Daniel Mack - - fixed "make install" - - if you have trouble compiling ALSA audio: - change "AUDIO = yes" to "AUDIO = no" in make.inc - - some fixes/enhancements from Brian K: - - fixed: score editor: no more "EVENT not found" during subsequent - edits of a selected note - - scrubbing with rubber tool in score editor - - new part appearance option -0.3.18: - - fixed: Export Midifile -0.3.17: - - simple audio recording - - midi sync slave: received "start" did not reset pos to tick 0 - - fixed several bugs in screen update and synchronisation between - different midi editors - - new: Configure->Appearance dialog from Daniel Mack -0.3.16: - - "follow song" now works in both directions - - MidiTransformator: implemented missing "Copy" and "Extract" functions - - fixed: reset sustain at stop only for channels which really had sustain - set - - fixed several bugs in midi sync code; needs more testing - - received "set song position" from alsa midi driver now - handled in sync slave mode - - transport buttons are now disabled in "external midi - sync" mode - - fixed: do not send midi "start" "stop" "continue" etc. as sync slave - - fixed: several small bugs i cannot remember -0.3.15: - - fixed: some typos in "MidiTransformator" - - fixed: core at end of midi recording from external - sequencer as sync slave - - replaced midi "continue" message with "start" - when running as midi sync master - known bug: midi clock output only if seq plays, - should be send always even if seq stops - not implemented: cannot change tempo as sync slave - -0.3.14: - - fixed: core: typo in "undo add track" - - fixed: core: "undo remove event" - - selection of events is now a global attribute: if you select - an event in an editor, the same event is selected in all - open editors - - new: Midi Transformator (look at edit->MidiTransform) - (not all operators and operations are implemented yet) -0.3.13: - - fixed: TimeScale was wrong when using signature changes - - fixed: enforce left marker <= right marker - - new: mono wave tracks - - more usable LADSPA plugins to play with - - several small changes/bug fixes -0.3.12: - - fixed: synchronisation of tempo/signature changes with sequencer rt-thread - - fixed: track parameter were added again and again in loop mode - - new: tempo/signature changes undo/redo - - new: midi "transpose" function from Daniel Mack - (Arranger: edit->midi->transpose) -0.3.11: - - fixed: fixed serious bug in wave file handling - - simple audio play with ALSA 0.9.x - - fixed: editing events -> core (introduced in 0.3.10) -0.3.10: - - fixed: core while deleting controller events - - new: extended configuration of raw (serial) midi interfaces - - fixed: some memory leaks - - changed for ALSA 0.9.0 beta2 -0.3.9: - - some smaller fixes - - fixed: core: missing MidiController() Initialization - - fixed: pressing another mouse button while "drawing" an event - in a canvas with left mouse button pressed gives core -0.3.8: - - fixed: correct update of midi port table on song change - - CtrlEditor: controllers can(must) now be configured - - List Editor: corrected handling of meta/sysex strings - - changed: combined pitch high/low to single value ranging - from -8192 +8191; editable with controller editor - - ALSA 0.9.0beta1 works for midi; as far as i tested it, this - alsa version has no more problems with OSS raw midi emulation - - new: colored activity display in arranger (Daniel Mack) - - new: context sensitive extensions to "right mouse click - pulldown menues" for arranger parts (Daniel Mack) - - new: gui prototypes for extendend configuration of raw midi - devices and audio mixdown file selection - - fixed: quirks with OSS midi devices configuration -0.3.7: - - start porting to ALSA 0.6.0 cvs version - - fixed: option -M produces midi output trace for alsa midi - - fixed: pianoroll and drum editor now accept input focus - and then honour some keyboard shortcuts - - fixed: score editor: core when inserting small rests - - new: "ruler" for pianoroll, drum editor and part editor - - fixed: midi recording: event len always 1 tick (bug introduced - in 0.3.6) - - midi port config: show only available raw midi devices - - fixed: tempomap/tempo save/restore - - fixed: initialize master button to saved value - - some smaller changes: - - midi recording: new parts begin at record start instead - of first event - - missing note offs are insertet virtually at record end - - recording takes place on selected track - selected part - and not on selected part if on different track -0.3.6: - - fixed: markerList: click in list -> core - - fixed: stop at end of song only if not recording - - fixed: events of zero length crash the sequencer - - fixed: missing note off events for metronome - - fixed: gui: changing port/channel in trackinfo updates tracklist - - new: midi recording & loop -0.3.5: - - fixed: midi recording with alsa was broken - - fixed: mastertrack: -> core - - fixed: rename track -> rename part -> core - - fixed: help browser: back function - - fixed: score: entered lyrics are saved again - - fixed: score->staffSettings: tracklist - - fixed: score->enterNotes wrong snap position -0.3.4: - - fixed: some bugs & quirks - - new: implemented pianoroll->edit->deleteEvents - -0.3.3: - - new: MusE now stops at end of song if in PLAY mode - - fixed: core if muse was started without song name and - there was no ".musePrj" file in current directory - - new: on popular request: "RewindToStart" button - - fixed: changing devices while playing - - fixed: arranger: could not scroll to the end of song - - fixed: song lenght on midi import - - fixed: fatal error in handling "note off" events - - new: "sustain" is reset on stop - -0.3.2: - - fixed: part editing: endo delete, glue etc. - - fixed: option -m (trace midi input) works again - - fixed: midi input filter: could not toggle channel 1 button - - fixed: midi mixer - - fixed: midi recording into part: part length adjusted if events - recorded past end of part - - fixed: MusE initialisation failed if there is no ".musePrj" - file in current directory! - -0.3.1: - - step 2 of internal reorganization - - fixed: score: lyrics are now saved again - - fixed: some quirks with lost track markers - - new: Option -L locks sequencer memory - - fixed: recording from serial midi (raw oss & korg tohost) - - fixed: several smaller bugs & quirks - -0.3.0: - - fixed: pianoroll editor: entering new events -> core - - new: drum editor click on instrument name "plays" - instrument - - fixed: changing the channel of a track now changes also - the channel of all events in that track - - massive changes for audio/wave integration: - - start of audio mixer - - audio routing - -0.2.12: - - fixed: wave files/tracks/parts: calculation of tick<->time; - it should be possible again to import/play simple waves - - fixed: funny things happend when muting all audio tracks - - fixed: core if no active record track - - new: Rob Naccarato started with documentation; press - in MusE and have a look - -0.2.11: - - fixed: metronome - - fixed: initial state of "click" transport button - - fixed: midi thru: - if midi thru is switched on, all received events are - echoed to the port/channel associated to the currently - selected track, regardless of the input port/channel. - Track parameters as pitch shift, velocity compression etc. - are applied before echoing the event. - - _not_ fixed: alsa midi driver: strange sysex behaviour -0.2.10: - - fixed: parameter change in midi trackinfo - - fixed: some errors in *.med file handling - - fixed: midi export - - fixed: midi events are now played according to priority: - - channel priority: 10,1,2,3,4,5,6,7,8,9,11,12,13,14,15,16 - - note off before note on -0.2.9: - - fixed: typo in seq.c destroyed timing of 0.2.8 - - fixed: importing audio files - - fixed: writing *med files - - fixed: wave form display in arranger - - fixed: core on click in arranger "no track area " with pencil tool -0.2.8: - - fixed: oss midi devices now work agin - - reorganized midi event dispatcher - - fixed: pitchbend for midialsa (Xavier) -0.2.7: - - midi driver reorganization in preparation - for better ALSA sequencer integration; soundcard synth - work again - - some fixes -0.2.6: - DrumEditor overhaul: - - fixed: reading drum maps - - changed: exporting drum maps now writes the whole map - - fixed: device popup: ...invalid menu item - - new: instruments can now be moved - - fixed: changing A-Note/E-Note did not show effect - - changed: small x-offset in event canvas allows better placement of - events at pos 1.1.0 - - new: instrument names can be edited (double click instrument name) - - new: some drum maps - - fixed: update() missing after selection change in canvas - - fixed: len of new inserted drum events was quant-value, should be - default len from drum map - Alsa Midi Driver: - - changed (soundcard synth does not work :-( ) -0.2.5: - - fixed: session management for list editor - - new: list editor: hex entry in meta event dialog - - fixed: Midi: "GS Reset" button aktually did a "GM Reset" - - fixed: Midi: "GS Reset" on Song Start was always combined with "GM Reset" - - fixed: Arranger: copy/paste produced core - - fixed: Arranger: removed some (not working) key accelerators - - new: Drag file from KDE fm and Drop on arranger partlist - - removed bogus midi archiv - - some major code reorganizations in preparation for audio integration - resulting in new errors and *.med file incompatibilities; - - fixed: "cannot delete busy part" even if part is not busy - - fixed: arranger/progname.c: bad instrument name table caused segfault - (Tim Mann) - - fixed: score/layout.c: could not enter A# (Gilles Fillipini) -0.2.4: - - fixed: removed silly warning: Cannot find translation... - (translations are not (yet) enabled) - - fixed: trackMarker->destroy TrackMarker->create track -> core - - new: integration of track markers in arranger - - export/import SMF-Marker as Meta Type 6 - - changed: src/makefiles new arranged - - fixed: score editor: too many rests - - fixed: core if you try to insert note outside of staves -0.2.3: - - MidiSyncConfig: extSync synchronized with button in transport - window - - audio: try oss audio device /dev/dsp in addition to /dev/sound/dsp - - changed: column expand logic in arranger tracklist - - new: KDE2.2: define HAVE_KDE in make.inc to compile a - KDE version of MusE (experimental) - - new: realtime recording of Midi SysEx Events - - changed: better LADSPA plugin handling - - fixed: Pianoroll: Color Events: RGB parameter out of range - - changed: canvas: moving objects - - fixed: AudioMasterMixer produced core after second invocation - - new: track markers -0.2.2: - - switched to QT2.2 - - fixed: Transport: "Master" button initialization - - fixed: session management for partlist in midi editors; - (new *.med xml files are probably incompatible - - fixed: cut&paste now works for parts on drum tracks - - fixed: cannot delete busy Parts any more - - fixed: honour LADSPA_PATH environment variable - - fixed: TransportWindow stays on top and is manageable - (testet with KDE2 beta4) - - fixed: arranger: column order is now recorded in - .med file - - fixed: sometimes under obscure circumstances MusE crashed - while opening an midi editor - - fixed: several typos/errors in *.med file reading/writing - - new: list editor: insert midi events (incl. sysex & meta) - double click on list entry to open editor to modify - values - - new: MTC/MMC Slave: - Configured as slave you can synchronize MusE - from external devices using Midi Time Code. - Midi Clock Master: - Configured as master MusE can control external - sequencers - Hooks for MTC/MMC Master and MidiClock slave. - - fixed: score: ScoreConfig::setTracklist() missing "clear" - - new: score: odd rest values implemented -0.2.1: - - new: Arranger: move (midi) parts between applications: - - cut/copy part(s) to global clipboard - - paste part(s) from global clipboard to arranger - - drag parts with middle mouse button (experimental) - - new: Pianoroll: move events between applications: - - cut/copy events to global clipboard - - paste events from global clipboard to arranger - - drag events with middle mouse button - - fixed: only write audio if there are audio tracks - - fixed: PianorollEditor: moving multiple selected events - (thanks to Chris Wakelin) - - fixed: commented out unused/missing "color.xpm" - - fixed: partlist changed to multimap<> -0.2.0: - - fixed: another error in OSS midi driver which results in - "bad file descriptor" aborts - - fixed: MidiFilter - RecordFilter/ThruFilter - - new: Master Part of Audio Mixer: - - Audio Level Meter - - LADSPA Host with - - automatic generated user interface - - presets store/load - - new: LADSPA "Freeverb" plugin for audio master - - new: Drum Editor - - load/save drum maps - - drawing reorganized - - new: Pianoroll Editor Functions: - - configurable event colors (none/pitch/velocity) - - configurable function ranges (apply functions to - all/loop/marked events) - - selection functions (all/none/loop/invert) - - switch between different parts in editor ("ghost events") - - PencilTool: Control+LeftMouseButton prevents - accidental creation of events - - PointerTool: Control+LeftMouseButton restricts - to horizontal or vertical move -0.1.10: - - new: MidiExport: some configurable Parameter for exported - Standard Midi File (SMF) - - new: configurable Midi Record/Thru Filter for midi - realtime recording - - fixed: time signature changes in score editor - - fixed: "midi bar scale" is updated on time signature - changes - - fixed: event sorting in "list mastertrack editor" -0.1.9: - - fixed: tempo changes during play - - fixed: "follow event" in graphical mastertrack editor - - fixed: mastertrack list: dynamic content update if song changed - - fixed: OSS midi serial output was broken -0.1.8: - - bug: scaling in graphical mastertrack editor - - bug: reduce value of MAX_TICK to prevent overflow in scaling - - bug: pianoroll editor: length quantization - - bug: midi import: timing broken; bug introduced in 0.1.6 - - feature: editing of time signature in graphical mastertrack -0.1.7: - - bug: typo for 't'-kb accelerator in pianoroll-editor - - bug: quant values < 1/64 are not supported-> assertion bug - for keyboard accelerator >=8 in pianoroll editor - - pianoroll: new feature: step recording - midi input: - - press "shift"+ midiKey to enter chords - (if you enter same note again, it's deleted) - - press "ctrl" + midiKey to continue last note - - pianoroll: new menu function: quantize pos+len - - quantize configuration dialog: added flag for default len quantization - "whats this" help text -0.1.6: - - bug: exported midifiles had random "division" timing parameter - - bug: core dump on midi record start - - feature: keyboard accelerators in pianoroll editor: - '1'-'9' '.' and 't' set quant & snap values - -0.1.5: - - MusE now works again without RTC (Real Time Clock) Device - (but much reduced timing accuracy) - - new Debug Options -m -M: MidiDump for input and output - - global keyboard accelerators: - spacebar: while play/record: STOP - while stop: Goto left mark - while on left mark: Goto Pos 0 - Enter: start play - Insert: Stop - "/": Cycle on/off - "*": Record on - - Midi Step Recording: implemented external midi keyboard as - recording source (new "midi input" toggle button in pianoroll editor) -0.1.4: - Audio - ============== - - simple audio play (ALSA & OSS) - - stubs for cliplist Editor, audio recording - - AudioMixer master volume - - bug fixes for wave viewer - - Synthesizer - ============== - - first part of framework for realtime software synthesizer - driver/synthis, s1/*; - -0.1.3: - Score Editor: - ============== - - print preview button (gv) - - postscript default resolution is 72dpi and not 75dpi - - configurable overall scale for printer output - - simple beams - - Misc: - ============== - - bug: path handling for project file: project files are now - saved in the correct directory - - bug: canvas initial scaling - - bug: core if configured device didnt exists - - bug: ctrl editor produced values > 127 - - feature: Arranger: Parts are now displayed with a horizontal offset - - feature: Arranger: added save/restore for some configuration values - - feature: Midi Recording: track parameter like Transposition are now - applied before loop through - - feature: "Thru" flag in Configure->MidiDevices now implemented - - feature: Midi Remote Control: control sequencer stop/play/record/rewind - with configurable note events - - bug: typo in score/layout.c:split() caused core - -0.1.2: - - Score: - - add lyrics entry - - changed note head for 4/4 - - changed positioning of 2/4 and 4/4 notes - - ties can now span systems - - tie connected notes are selected as one note - - page settings, margins handling corrected - - configurable fonts for score editor page layout -0.1.1: - - master: scale changed - - no more core when selecting the score editor without a selected - part to edit - - time signature scale in master track - - master track: function tempo edit - - new popup menu in arranger / part canvas - - makefile: "make depend" target - - new: alsa raw midi interface - - improved score editor: - - split system (piano left&right hand) - - multi stave systems - - symbols - - lasso selection - - dynamics symbol palette - - window position of all toplevel windows is now remembered - correctly - - bug fixes & code cleanups - -0.0.10: - - removed obsolete file.c file.h - - separated midi archive - - removed unused widgets/wtscale.* - - removed unused widgets/dial.* - - midis with Meta Event Type 6 produced core - - removed '\n' chars from windows caption - - new setBg(QColor) method for class View - - broken Ctrl-Editor fixed - - Pencil Cursor now shown for Pencil Tool in Ctrl-Editor - - Mute Indicator changed to red dot - - added CtrlEditor to DrumEditor - - process session info in xml songfile - - more work on mastertrack - - start ScoreEditor and moving the mouse on canvas (producing - mouseMoveEvents) before exposure of QLineEdit (time & pitch - in toolbar) produced core on QLineEdit->setText(xx) - - in continuous scroll mode position marker updated correctly -0.0.9: - - xml like configuration and song file - - new midi mixer, shows only active midi channels - - bug: metronom configuration: channel&port numbers - - bug fixes -0.0.8: - - new: quantize function - - new: wave tracks: new classes: WaveFile Clip; - load wave file; expand song file structure - first try on wave editor; - - logarithmic magnify - - rework of View & Canvas Classes, resulting in much - faster scrolling -0.0.7: - - fatal error: use of uninitialized device -0.0.6: - - more diagnostics in file functions - - new: can load and save *.gz and *.bz2 files - - new function: send local off to instruments - - bug fixes in pianoroll step recording - - bug fix: "follow song" save and restore - - bug fix: in importing midi files: calculating parts - - bug fix: metronome -> core - - new configuration options for parts - -0.0.5: - - new: midi activity display in tracklist - - new: patch selector in channel info; shows midi instrument - categories - - new: insert & delete Controller Values in Ctrl-Editor - - some minor bugs corrected - - nasty bug in Song::nextEvents(), which prevents simple - midi songs played correctly - -0.0.4: - - implemented: forward & rewind buttons - - implemented: drum edit: change values in info bar - - error: arranger->tracklist: resize failed if columns are swapped - - enhanced file selector for background image selection - - more WhatsThis and ToolTip Help - - Backport to QT202: Filedialog: Filterlists dont work - - Midi Config: changed signal click() to rightButtonClick() - - missing initialisation in song constructor - - new subdirectory for controller editor - - controller editor for some values -0.0.3: - - new transport design - - redesign of TrackInfo and ChannelInfo - - some changes reg. fonts and geometry management - - misc toolbars changed to read qt toolbars -0.0.2: - - changed color for cpos to red - - dont play metronome clicks with time < current - - doubleclick on arranger trackname: entrywidget now gets - input focus - - midi device configuration: reworked - - removed endless loop in Song::nextEvents() - - ported to qt-2.1.0-snapshot-20000113 - - changed QPushButton to QToolButton - - some cosmetic changes in transport window - -0.0.1 - - first release - diff --git a/muse/Doxyfile.in b/muse/Doxyfile.in deleted file mode 100644 index 1f97c847..00000000 --- a/muse/Doxyfile.in +++ /dev/null @@ -1,1271 +0,0 @@ -# Doxyfile 1.4.5 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project -# -# All text after a hash (#) is considered a comment and will be ignored -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" ") - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. - -PROJECT_NAME = "@PROJECT_NAME@" - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = @PROJECT_VERSION@ - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = Doc - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of -# source files, where putting all generated files in the same directory would -# otherwise cause performance problems for the file system. - -CREATE_SUBDIRS = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, -# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, -# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, -# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, -# Swedish, and Ukrainian. - -OUTPUT_LANGUAGE = English - -# This tag can be used to specify the encoding used in the generated output. -# The encoding is not always determined by the language that is chosen, -# but also whether or not the output is meant for Windows or non-Windows users. -# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES -# forces the Windows encoding (this is the default for the Windows binary), -# whereas setting the tag to NO uses a Unix-style encoding (the default for -# all platforms other than Windows). - -USE_WINDOWS_ENCODING = YES - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is -# used as the annotated text. Otherwise, the brief description is used as-is. -# If left blank, the following values are used ("$name" is automatically -# replaced with the name of the entity): "The $name class" "The $name widget" -# "The $name file" "is" "provides" "specifies" "contains" -# "represents" "a" "an" "the" - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. - -INLINE_INHERITED_MEMB = YES - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. - -FULL_PATH_NAMES = YES - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the -# path to strip. - -STRIP_FROM_PATH = @CMAKE_CURRENT_SOURCE_DIR@ - - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that -# are normally passed to the compiler using the -I flag. - -STRIP_FROM_INC_PATH = @CMAKE_CURRENT_SOURCE_DIR@/ - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful is your file systems -# doesn't support long names like on DOS, Mac, or CD-ROM. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like the Qt-style comments (thus requiring an -# explicit @brief command for a brief description. - -JAVADOC_AUTOBRIEF = YES - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the DETAILS_AT_TOP tag is set to YES then Doxygen -# will output the detailed description near the top, like JavaDoc. -# If set to NO, the detailed description appears after the member -# documentation. - -DETAILS_AT_TOP = NO - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# re-implements. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce -# a new page for each member. If set to NO, the documentation of a member will -# be part of the file/class/namespace that contains it. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - -TAB_SIZE = 2 - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C -# sources only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list -# of all members will be omitted, etc. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java -# sources only. Doxygen will then generate output that is more tailored for Java. -# For instance, namespaces will be presented as packages, qualified scopes -# will look different, etc. - -OPTIMIZE_OUTPUT_JAVA = NO - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to -# include (a tag file for) the STL sources as input, then you should -# set this tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. -# func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. - -# BUILTIN_STL_SUPPORT = NO - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - -DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. - -SUBGROUPING = YES - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - -EXTRACT_ALL = YES - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = YES - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = YES - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. -# If set to NO (the default) only methods in the interface are included. - -EXTRACT_LOCAL_METHODS = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the -# documentation. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - -HIDE_SCOPE_NAMES = NO - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation -# of that file. - -SHOW_INCLUDE_FILES = YES - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in -# declaration order. - -SORT_BRIEF_DOCS = YES - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the -# alphabetical list. - -SORT_BY_SCOPE_NAME = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or define consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and defines in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. - -SHOW_USED_FILES = YES - -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy -# in the documentation. The default is YES. - -SHOW_DIRECTORIES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from the -# version control system). Doxygen will invoke the program by executing (via -# popen()) the command , where is the value of -# the FILE_VERSION_FILTER tag, and is the name of an input file -# provided by doxygen. Whatever the program writes to standard output -# is used as the file version. See the manual for examples. - -FILE_VERSION_FILTER = - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - -WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - -WARN_IF_UNDOCUMENTED = YES - -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be abled to get warnings for -# functions that are documented, but have no documentation for their parameters -# or return value. If set to NO (the default) doxygen will only warn about -# wrong or incomplete parameter documentation, but not about the absence of -# documentation. - -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. Optionally the format may contain -# $version, which will be replaced by the version of the file (if it could -# be obtained via FILE_VERSION_FILTER) - -WARN_FORMAT = @DOXY_WARN_FORMAT@ - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - -WARN_LOGFILE = Doc/doxy.log - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -INPUT = @CMAKE_CURRENT_SOURCE_DIR@ \ - @CMAKE_CURRENT_BINARY_DIR@ - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx -# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py - -FILE_PATTERNS = *.cpp \ - *.cc \ - *.h \ - *.hh \ - *.hpp \ - *.dox - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or -# directories that are symbolic links (a Unix filesystem feature) are excluded -# from the input. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. Note that the wildcards are matched -# against the file with absolute path, so to exclude all test directories -# for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = @CMAKE_CURRENT_SOURCE_DIR@/Base/Common/Examples \ - @CMAKE_CURRENT_SOURCE_DIR@/Base/Debug/Examples \ - @CMAKE_CURRENT_SOURCE_DIR@/Base/Math/Examples \ - @CMAKE_CURRENT_SOURCE_DIR@/Base/Image/Examples \ - @CMAKE_CURRENT_SOURCE_DIR@/Base/Geometry/Examples \ - @CMAKE_CURRENT_SOURCE_DIR@/MathAlgo/Examples \ - @CMAKE_CURRENT_SOURCE_DIR@/Geometry/Examples \ - @CMAKE_CURRENT_SOURCE_DIR@/CornerDetector/Examples \ - @CMAKE_CURRENT_SOURCE_DIR@/Image/Examples \ - @CMAKE_CURRENT_SOURCE_DIR@/StateEstimator/Examples \ - @CMAKE_CURRENT_SOURCE_DIR@/Matcher2D/Examples \ - @CMAKE_CURRENT_SOURCE_DIR@/Utils/Examples \ - @CMAKE_CURRENT_SOURCE_DIR@/Gui/Examples \ - @CMAKE_CURRENT_SOURCE_DIR@/FeatureDetector/Examples \ - @CMAKE_CURRENT_SOURCE_DIR@/Doc \ - @CMAKE_CURRENT_SOURCE_DIR@ - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -EXAMPLE_PATTERNS = *.cpp \ - *.cc \ - *.h \ - *.hh \ - INSTALL DEPENDENCIES CHANGELOG LICENSE LGPL - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. - -EXAMPLE_RECURSIVE = YES - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = @CMAKE_CURRENT_SOURCE_DIR@/Doc \ - @CMAKE_CURRENT_SOURCE_DIR@/Tests/data \ - @CMAKE_CURRENT_SOURCE_DIR@ - - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command , where -# is the value of the INPUT_FILTER tag, and is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. If FILTER_PATTERNS is specified, this tag will be -# ignored. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER -# is applied to all files. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). - -FILTER_SOURCE_FILES = NO - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also -# VERBATIM_HEADERS is set to NO. - -SOURCE_BROWSER = YES - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - -STRIP_CODE_COMMENTS = NO - -# If the REFERENCED_BY_RELATION tag is set to YES (the default) -# then for each documented function all documented -# functions referencing it will be listed. - -REFERENCED_BY_RELATION = YES - -# If the REFERENCES_RELATION tag is set to YES (the default) -# then for each documented function all documented entities -# called/used by that function will be listed. - -REFERENCES_RELATION = YES - -# If the USE_HTAGS tag is set to YES then the references to source code -# will point to the HTML generated by the htags(1) tool instead of doxygen -# built-in source browser. The htags tool is part of GNU's global source -# tagging system (see http://www.gnu.org/software/global/global.html). You -# will need version 4.8.6 or higher. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - -ALPHABETICAL_INDEX = YES - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 2 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. -HTML_HEADER = - - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own -# stylesheet in the HTML output directory as well, or it will be erased! - -HTML_STYLESHEET = - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) -# of the generated HTML documentation. - -GENERATE_HTMLHELP = YES - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be -# written to the html output directory. - -CHM_FILE = - -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. - -HHC_LOCATION = - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). - -GENERATE_CHI = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. - -TOC_EXPAND = NO - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - -DISABLE_INDEX = NO - -# This tag can be used to set the number of enum values (range [1..20]) -# that doxygen will group on one line in the generated HTML documentation. - -ENUM_VALUES_PER_LINE = 4 - -# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be -# generated containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, -# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are -# probably better off using the HTML help feature. - -GENERATE_TREEVIEW = YES - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - -TREEVIEW_WIDTH = 250 - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - -GENERATE_LATEX = NO - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - -LATEX_OUTPUT = latex - -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be -# invoked. If left blank `latex' will be used as the default command name. - -#LATEX_CMD_NAME = latex -LATEX_CMD_NAME = @LATEX_COMPILER@ - -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the -# default command name. - -#MAKEINDEX_CMD_NAME = makeindex -MAKEINDEX_CMD_NAME = @MAKEINDEX_COMPILER@ - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, a4wide, letter, legal and -# executive. If left blank a4wide will be used. - -PAPER_TYPE = a4 - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - -LATEX_HEADER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - -PDF_HYPERLINKS = YES - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = YES - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - -LATEX_BATCHMODE = YES - -# If LATEX_HIDE_INDICES is set to YES then doxygen will not -# include the index chapters (such as File Index, Compound Index, etc.) -# in the output. - -LATEX_HIDE_INDICES = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimized for Word 97 and may not look very pretty with -# other RTF readers or editors. - -GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - -RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assignments. You only have to provide -# replacements, missing definitions are set to their default value. - -RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. -# Syntax is similar to doxygen's config file. - -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - -GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - -MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - -MAN_EXTENSION = .3 - -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command -# would be unable to find the correct page. The default is NO. - -MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. - -GENERATE_XML = NO - -# The XML_OUTPUT tag is used to specify where the XML pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `xml' will be used as the default path. - -XML_OUTPUT = xml - -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_DTD = - -# If the XML_PROGRAMLISTING tag is set to YES Doxygen will -# dump the program listings (including syntax highlighting -# and cross-referencing information) to the XML output. Note that -# enabling this will significantly increase the size of the XML output. - -XML_PROGRAMLISTING = YES - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental -# and incomplete at the moment. - -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- - -# If the GENERATE_PERLMOD tag is set to YES Doxygen will -# generate a Perl module file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - -GENERATE_PERLMOD = NO - -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate -# the necessary Makefile rules, Perl scripts and LaTeX code to be able -# to generate PDF and DVI output from the Perl module output. - -PERLMOD_LATEX = NO - -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. This is useful -# if you want to understand what is going on. On the other hand, if this -# tag is set to NO the size of the Perl module output will be much smaller -# and Perl will parse it just the same. - -PERLMOD_PRETTY = YES - -# The names of the make variables in the generated doxyrules.make file -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. -# This is useful so different doxyrules.make files included by the same -# Makefile don't overwrite each other's variables. - -PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - -ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - -MACRO_EXPANSION = YES - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_DEFINED tags. - -EXPAND_ONLY_PREDEF = YES - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# in the INCLUDE_PATH (see below) will be search if a #include is found. - -SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - -INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. To prevent a macro definition from being -# undefined via #undef or recursively expanded use the := operator -# instead of the = operator. - -PREDEFINED = - -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition. - -EXPAND_AS_DEFINED = - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all function-like macros that are alone -# on a line, have an all uppercase name, and do not end with a semicolon. Such -# function macros are typically used for boiler-plate code, and will confuse -# the parser if not removed. - -SKIP_FUNCTION_MACROS = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES option can be used to specify one or more tagfiles. -# Optionally an initial location of the external documentation -# can be added for each tagfile. The format of a tag file without -# this location is as follows: -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths or -# URLs. If a location is present for each tag, the installdox tool -# does not have to be run to correct the links. -# Note that each tag file must have a unique name -# (where the name does NOT include the path) -# If a tag file is not located in the directory in which doxygen -# is run, you must also specify the path to the tagfile here. - -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - -GENERATE_TAGFILE = Doc/html/@PROJECT_NAME@.TAGFILE - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - -ALLEXTERNALS = YES - -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will -# be listed. - -EXTERNAL_GROUPS = YES - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base -# or super classes. Setting the tag to NO turns the diagrams off. Note that -# this option is superseded by the HAVE_DOT option below. This is only a -# fallback. It is recommended to install and use dot, since it yields more -# powerful graphs. - -CLASS_DIAGRAMS = YES - -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented -# or is not a class. - -HIDE_UNDOC_RELATIONS = YES - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - -HAVE_DOT = @DOXYGEN_DOT_FOUND@ - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - -CLASS_GRAPH = YES - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - -COLLABORATION_GRAPH = YES - -# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for groups, showing the direct groups dependencies - -GROUP_GRAPHS = YES - -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similar to the OMG's Unified Modeling -# Language. - -UML_LOOK = NO -# UML_LOOK = YES - -# If set to YES, the inheritance and collaboration graphs will show the -# relations between templates and their instances. - -TEMPLATE_RELATIONS = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with -# other documented files. - -INCLUDE_GRAPH = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or -# indirectly include this file. - -INCLUDED_BY_GRAPH = YES - -# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will -# generate a call dependency graph for every global function or class method. -# Note that enabling this option will significantly increase the time of a run. -# So in most cases it will be better to enable call graphs for selected -# functions only using the \callgraph command. - -CALL_GRAPH = NO - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will graphical hierarchy of all classes instead of a textual one. - -GRAPHICAL_HIERARCHY = YES - -# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES -# then doxygen will show the dependencies a directory has on other directories -# in a graphical way. The dependency relations are determined by the #include -# relations between the files in the directories. - -DIRECTORY_GRAPH = YES - -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are png, jpg, or gif -# If left blank png will be used. - -DOT_IMAGE_FORMAT = png - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found in the path. - -DOT_PATH = @DOXYGEN_DOT_EXECUTABLE_PATH@ - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the -# \dotfile command). - -DOTFILE_DIRS = - -# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width -# (in pixels) of the graphs generated by dot. If a graph becomes larger than -# this value, doxygen will try to truncate the graph, so that it fits within -# the specified constraint. Beware that most browsers cannot cope with very -# large images. - -MAX_DOT_GRAPH_WIDTH = 1280 - -# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height -# (in pixels) of the graphs generated by dot. If a graph becomes larger than -# this value, doxygen will try to truncate the graph, so that it fits within -# the specified constraint. Beware that most browsers cannot cope with very -# large images. - -MAX_DOT_GRAPH_HEIGHT = 1024 - -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the -# graphs generated by dot. A depth value of 3 means that only nodes reachable -# from the root by following a path via at most 3 edges will be shown. Nodes -# that lay further from the root node will be omitted. Note that setting this -# option to 1 or 2 may greatly reduce the computation time needed for large -# code bases. Also note that a graph may be further truncated if the graph's -# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH -# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), -# the graph is not depth-constrained. - -MAX_DOT_GRAPH_DEPTH = 0 - -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, which results in a white background. -# Warning: Depending on the platform used, enabling this option may lead to -# badly anti-aliased labels on the edges of a graph (i.e. they become hard to -# read). - -DOT_TRANSPARENT = NO - -# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output -# files in one run (i.e. multiple -o and -T options on the command line). This -# makes dot run faster, but since only newer versions of dot (>1.8.10) -# support this, this feature is disabled by default. -# JW -# DOT_MULTI_TARGETS = NO -DOT_MULTI_TARGETS = YES - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - -GENERATE_LEGEND = YES - -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermediate dot files that are used to generate -# the various graphs. - -DOT_CLEANUP = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- - -# The SEARCHENGINE tag specifies whether or not a search engine should be -# used. If set to NO the values of all tags below this one will be ignored. - -# JW SEARCHENGINE = NO -SEARCHENGINE = YES \ No newline at end of file diff --git a/muse/NEWS b/muse/NEWS deleted file mode 100644 index e394dd72..00000000 --- a/muse/NEWS +++ /dev/null @@ -1,12 +0,0 @@ -MusE 2.0.1: - New features: - - new "project" paradigma - - "auto fill" parts - - DSSI support - - JACK midi support - - controller automation in arranger - - audio metronome - - support for VST plugins - - new midi routing code - - midi plugins - - parts and events are updated in realtime during recording diff --git a/muse/README b/muse/README deleted file mode 100644 index 26b1e7d4..00000000 --- a/muse/README +++ /dev/null @@ -1,117 +0,0 @@ -==================================================================== - MusE --- Linux Music Editor -==================================================================== - -Welcome to MusE, the open source MIDI/Audio sequencer. - -MusE is distributed under the GNU General Public License (GPL). -Please check out the file COPYING in this directory for more -details. - -,-----------------------------------------------------------------. -| NOTICE | -|-----------------------------------------------------------------| -| Some parts of MusE code are EXPERIMENTAL, and may well result | -| in a CRASH, and who knows what other ill effects. | -| RUN THIS SOFTWARE AT YOUR OWN RISK. | -`-----------------------------------------------------------------' - - ============================= - Requirements - ============================= - - - CMake 2.4 - http:/www.cmake.org/HTML/Download.html - - - QT: Qt 4.2.0 or above - ftp://ftp.trolltech.com/qt/source - MusE does _not_ compile with older versions - - - gcc 4.x.x - - - libsndfile >= 1.0.1 - http://www.zip.com.au/~erikd/libsndfile/ - - - libsamplerate - - - JACK >= 0.103 - http://jackit.sourceforge.net/download/ - - Optional: - - - fluidsynth-1.0.3 (formerly known as iiwusynth) from - http://savannah.nongnu.org/download/fluid - - - DSSI - - - ConTeXt (for building documentation, by default the build - script tries to build documentation, can be - disabled by setting ENABLE_DOCUMENTATION to OFF) - - ============================= - Compiling: - ============================= - - - download source from http://lmuse.sourceforge.net/ - - - unpack source: - tar xvofz muse-xyz.tar.gz - - - to compile MusE, run the following commands: - mkdir muse # create build directory - cd muse # enter build directory - cmake ../muse-xyz # create make system - make # compile muse - - - install MusE: - run "make install" - - ============================= - running MusE - ============================= - - MusE is a realtime program which requires special rights to - work poperly. - Recommended setup: - - - check if you are running a sufficiently new linux kernel > 2.6.x - - - create an "audio" group if it does not already exists - and put yourself into this group - - - make sure you can acces the realtime clock (RTC) - chmod 660 /dev/rtc - chgrp audio /dev/rtc - - - make sure MusE can set the rtc clock: - echo 8192 > /proc/sys/dev/rtc/max-user-freq - inspect with: - cat /proc/sys/dev/rtc/max-user-freq - - - for MusE to gain RT priviledges load the "realtime-lsm" - modul; the modul should be configured to give all "audio" - group members realtime priviledges - - - make sure the alsa sequencer modul is loaded: - /sbin/modprobe snd-seq - (same distros (ubuntu) do not load it by default :-( ) - - - start qjackctl - - start JACK with qjackctl - - - start MusE - - (JACK and all its clients (qjackctl & MusE) must run with the - same user id) - - - ============================= - known bugs - ============================= - - - many - -==================================================================== -Let me know whether MusE works for you !!! -Have a look at the webpage http://lmuse.sourceforge.net/ for details. - diff --git a/muse/Reference b/muse/Reference deleted file mode 100644 index 9aed268d..00000000 --- a/muse/Reference +++ /dev/null @@ -1,59 +0,0 @@ -MusE Function Reference - -Ruler - - left button press: - set location marker - - mid button press: - set left location marker - - right button press: - set right location marker - - shift + left button click: - set marker - - shift + right button click: - remove left marker - -Slider - - you dont have to hit the slider button to start dragging - - mouse wheel moves slider - -VolumeSlider - - left button double click sets slider to zero (-inf) - - right button double click sets volume to 0dB - -Meter Bar - - peak marker reset after configurable time - -Transport - - forward button - - rewind button - - "rewind to zero" button - - play button - - stop button - - record button - - rewind button moves horizontal canvas slider to position zero in - all "follow" modes - - forward and rewind buttons have auto repeat functionality - - transport stops at end of song if not recording - -Midi Editors - - left mouse click on event selects event - - shift + left mouse click toggles selection of event - - ctrl + left mouse click selects all events of same pitch - - mouse drag: move selected events - - shift + mouse drag: copy event - - shift + ctrl + mouse drag: restrict drag in x or y direction whatever - motion comes first - - If one event is selected, the info line shows the event properties. - If more than one event is selected, the info line initially shows zero - values, If changed, the displayed value is added to all marked events. - - Drum Editor - - Pianoroll Editor - -Wave Editor - - not implemented - -List Editor - - not implemented - diff --git a/muse/al/CMakeLists.txt b/muse/al/CMakeLists.txt deleted file mode 100644 index ef819f5c..00000000 --- a/muse/al/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -# -# -# -# - -include(${PROJECT_SOURCE_DIR}/pch.txt) - -set (al_src - al.cpp marker.cpp pos.cpp sig.cpp tempo.cpp xml.cpp - dsp.cpp - ) - -if (USE_SSE) - set(al_src ${al_src} dspSSE.cpp dspXMM.cpp) -endif (USE_SSE) - -add_library(al STATIC - ${al_src} - ${PROJECT_BINARY_DIR}/all.h.pch - ) - -set_source_files_properties( - al.cpp marker.cpp pos.cpp sig.cpp tempo.cpp xml.cpp - dsp.cpp - dspXMM.cpp - PROPERTIES COMPILE_FLAGS "-fPIC -include ${PROJECT_BINARY_DIR}/all.h" - ) - -set_source_files_properties( dspSSE.cpp - PROPERTIES COMPILE_FLAGS "-x assembler" - ) - diff --git a/muse/al/al.cpp b/muse/al/al.cpp deleted file mode 100644 index 50a2299d..00000000 --- a/muse/al/al.cpp +++ /dev/null @@ -1,29 +0,0 @@ -//============================================================================= -// AL -// Audio Utility Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "al.h" - -namespace AL { - int sampleRate = 44100; - int mtcType = 0; - int division = 384; - bool debugMsg = false; - }; - diff --git a/muse/al/al.h b/muse/al/al.h deleted file mode 100644 index d88d7c0d..00000000 --- a/muse/al/al.h +++ /dev/null @@ -1,34 +0,0 @@ -//============================================================================= -// AL -// Audio Utility Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AL_H__ -#define __AL_H__ - -namespace AL { - - extern bool debugMsg; - extern int sampleRate; - extern int mtcType; - extern int division; - - } - -#endif - diff --git a/muse/al/dsp.cpp b/muse/al/dsp.cpp deleted file mode 100644 index 7fb41fe7..00000000 --- a/muse/al/dsp.cpp +++ /dev/null @@ -1,120 +0,0 @@ -//============================================================================= -// AL -// Audio Utility Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "dsp.h" -#include "config.h" - -namespace AL { - -Dsp* dsp; - -#ifdef __i386__ - -//--------------------------------------------------------- -// DspSSE86 -//--------------------------------------------------------- - -extern "C" { -extern float x86_sse_compute_peak(float*, unsigned, float); -extern void x86_sse_apply_gain_to_buffer(float*, unsigned, float); -extern void x86_sse_mix_buffers_with_gain(float*, float*, unsigned, float); -extern void x86_sse_mix_buffers_no_gain(float*, float*, unsigned); - }; - -class DspSSE86 : public Dsp { - public: - DspSSE86() {} - virtual ~DspSSE86() {} - - virtual float peak(float* buf, unsigned n, float current) { - if ( ((intptr_t)buf % 16) != 0) { - fprintf(stderr, "peak(): buffer unaligned! (%p)\n", buf); - return Dsp::peak(buf, n, current); - } - return x86_sse_compute_peak(buf, n, current); - } - - virtual void applyGainToBuffer(float* buf, unsigned n, float gain) { - if ( ((intptr_t)buf % 16) != 0) { - fprintf(stderr, "applyGainToBuffer(): buffer unaligned! (%p)\n", buf); - Dsp::applyGainToBuffer(buf, n, gain); - } - else - x86_sse_apply_gain_to_buffer(buf, n, gain); - } - - virtual void mixWithGain(float* dst, float* src, unsigned n, float gain) { - if ( ((intptr_t)dst & 15) != 0) - fprintf(stderr, "mixWithGainain(): dst unaligned! (%p)\n", dst); - if (((intptr_t)dst & 15) != ((intptr_t)src & 15) ) { - fprintf(stderr, "mixWithGain(): dst & src don't have the same alignment!\n"); - Dsp::mixWithGain(dst, src,n, gain); - } - else - x86_sse_mix_buffers_with_gain(dst, src, n, gain); - } - virtual void mix(float* dst, float* src, unsigned n) { - if ( ((intptr_t)dst & 15) != 0) - fprintf(stderr, "mix_buffers_no_gain(): dst unaligned! %p\n", dst); - if ( ((intptr_t)dst & 15) != ((intptr_t)src & 15) ) { - fprintf(stderr, "mix_buffers_no_gain(): dst & src don't have the same alignment!\n"); - Dsp::mix(dst, src, n); - } - else - x86_sse_mix_buffers_no_gain(dst, src, n); - } - }; -#endif - -//--------------------------------------------------------- -// initDsp -//--------------------------------------------------------- - -void initDsp() - { -#if defined(__i386__) && defined(USE_SSE) - unsigned long useSSE = 0; - -#ifdef __x86_64__ - useSSE = 1 << 25; // we know the platform has SSE -#else - asm ( - "mov $1, %%eax\n" - "pushl %%ebx\n" - "cpuid\n" - "movl %%edx, %0\n" - "popl %%ebx\n" - : "=r" (useSSE) - : - : "%eax", "%ecx", "%edx", "memory"); -#endif - useSSE &= (1 << 25); // bit 25 = SSE support - if (useSSE) { - printf("Using SSE optimized routines\n"); - dsp = new DspSSE86(); - return; - } - // fall through to not hardware optimized routines -#endif - dsp = new Dsp(); - } - -} - diff --git a/muse/al/dsp.h b/muse/al/dsp.h deleted file mode 100644 index 6c7123ac..00000000 --- a/muse/al/dsp.h +++ /dev/null @@ -1,83 +0,0 @@ -//============================================================================= -// AL -// Audio Utility Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __DSP_H__ -#define __DSP_H__ - -namespace AL { - -//--------------------------------------------------------- -// f_max -//--------------------------------------------------------- - -static inline float f_max(float x, float a) - { - x -= a; - x += fabsf(x); - x *= 0.5f; - x += a; - return x; - } - -//--------------------------------------------------------- -// Dsp -// standard version of all dsp routines without any -// hw acceleration -//--------------------------------------------------------- - -class Dsp { - public: - Dsp() {} - virtual ~Dsp() {} - - virtual float peak(float* buf, unsigned n, float current) { - for (unsigned i = 0; i < n; ++i) - current = f_max(current, fabsf(buf[i])); - return current; - } - virtual void applyGainToBuffer(float* buf, unsigned n, float gain) { - for (unsigned i = 0; i < n; ++i) - buf[i] *= gain; - } - virtual void mixWithGain(float* dst, float* src, unsigned n, float gain) { - for (unsigned i = 0; i < n; ++i) - dst[i] += src[i] * gain; - } - virtual void mix(float* dst, float* src, unsigned n) { - for (unsigned i = 0; i < n; ++i) - dst[i] += src[i]; - } - virtual void cpy(float* dst, float* src, unsigned n) { -#if defined(ARCH_X86) || defined(ARCH_X86_64) - register unsinged long int dummy; - __asm__ __volatile__ "rep; movsl" :"=&D"(dst), "=&S"(src), "=&c"(dummy) :"0" (to), "1" (from),"2" (n) : "memory"); -#else - memcpy(dst, src, sizeof(float) * n); -#endif - } - }; - -extern void initDsp(); -extern Dsp* dsp; - -} - -#endif - diff --git a/muse/al/dspSSE.cpp b/muse/al/dspSSE.cpp deleted file mode 100644 index 0f3d84b9..00000000 --- a/muse/al/dspSSE.cpp +++ /dev/null @@ -1,531 +0,0 @@ -/* - Copyright (C) 2005 Paul Davis - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - Author: Sampo Savolainen - - $Id: sse_functions.s 988 2006-10-17 20:40:39Z paul $ -*/ - - -#; void x86_sse_mix_buffers_with_gain (float *dst, float *src, long nframes, float gain); - -.globl x86_sse_mix_buffers_with_gain - .type x86_sse_mix_buffers_with_gain,@function - -x86_sse_mix_buffers_with_gain: -#; 8(%ebp) = float *dst = %edi -#; 12(%ebp) = float *src = %esi -#; 16(%ebp) = long nframes = %ecx -#; 20(%ebp) = float gain = st(0) - - pushl %ebp - movl %esp, %ebp - - #; save the registers -#; pushl %eax - pushl %ebx -#; pushl %ecx - pushl %edi - pushl %esi - - #; if nframes == 0, go to end - movl 16(%ebp), %ecx #; nframes - cmp $0, %ecx - je .MBWG_END - - #; Check for alignment - - movl 8(%ebp), %edi #; dst - movl 12(%ebp), %esi #; src - - movl %edi, %eax - andl $12, %eax #; mask alignemnt offset - - movl %esi, %ebx - andl $12, %ebx #; mask alignment offset - - cmp %eax, %ebx - jne .MBWG_NONALIGN #; if not aligned, calculate manually - - #; if we are aligned - cmp $0, %ebx - jz .MBWG_SSE - - #; Pre-loop, we need to run 1-3 frames "manually" without - #; SSE instructions - - movss 20(%ebp), %xmm1 #; xmm1 - -.MBWG_PRELOOP: - - movss (%esi), %xmm0 - mulss %xmm1, %xmm0 - addss (%edi), %xmm0 - movss %xmm0, (%edi) - - addl $4, %edi #; dst++ - addl $4, %esi #; src++ - decl %ecx #; nframes-- - jz .MBWG_END - -#; cmp $0, %ecx -#; je .MBWG_END #; if we run out of frames, go to end - - addl $4, %ebx - - cmp $16, %ebx #; test if we've reached 16 byte alignment - jne .MBWG_PRELOOP - - -.MBWG_SSE: - - cmp $4, %ecx #; we know it's not zero, but if it's not >=4, then - jnge .MBWG_NONALIGN #; we jump straight to the "normal" code - - #; copy gain to fill %xmm1 - movss 20(%ebp), %xmm1 - shufps $0x00, %xmm1, %xmm1 - - -.MBWG_SSELOOP: - - movaps (%esi), %xmm0 #; source => xmm0 - mulps %xmm1, %xmm0 #; apply gain to source - addps (%edi), %xmm0 #; mix with destination - movaps %xmm0, (%edi) #; copy result to destination - - addl $16, %edi #; dst+=4 - addl $16, %esi #; src+=4 - - subl $4, %ecx #; nframes-=4 - cmp $4, %ecx - jge .MBWG_SSELOOP - - cmp $0, %ecx - je .MBWG_END - - #; if there are remaining frames, the nonalign code will do nicely - #; for the rest 1-3 frames. - -.MBWG_NONALIGN: - #; not aligned! - - movss 20(%ebp), %xmm1 #; gain => xmm1 - -.MBWG_NONALIGNLOOP: - - movss (%esi), %xmm0 - mulss %xmm1, %xmm0 - addss (%edi), %xmm0 - movss %xmm0, (%edi) - - addl $4, %edi - addl $4, %esi - - decl %ecx - jnz .MBWG_NONALIGNLOOP - -.MBWG_END: - - popl %esi - popl %edi -#; popl %ecx - popl %ebx -#; popl %eax - - #; return - leave - ret - -.size x86_sse_mix_buffers_with_gain, .-x86_sse_mix_buffers_with_gain - - - - -#; void x86_sse_mix_buffers_no_gain (float *dst, float *src, long nframes); - -.globl x86_sse_mix_buffers_no_gain - .type x86_sse_mix_buffers_no_gain,@function - -x86_sse_mix_buffers_no_gain: -#; 8(%ebp) = float *dst = %edi -#; 12(%ebp) = float *src = %esi -#; 16(%ebp) = long nframes = %ecx - - pushl %ebp - movl %esp, %ebp - - #; save the registers -#; pushl %eax - pushl %ebx -#; pushl %ecx - pushl %edi - pushl %esi - - #; the real function - - #; if nframes == 0, go to end - movl 16(%ebp), %ecx #; nframes - cmp $0, %ecx - je .MBNG_END - - #; Check for alignment - - movl 8(%ebp), %edi #; dst - movl 12(%ebp), %esi #; src - - movl %edi, %eax - andl $12, %eax #; mask alignemnt offset - - movl %esi, %ebx - andl $12, %ebx #; mask alignment offset - - cmp %eax, %ebx - jne .MBNG_NONALIGN #; if not aligned, calculate manually - - cmp $0, %ebx - je .MBNG_SSE - - #; Pre-loop, we need to run 1-3 frames "manually" without - #; SSE instructions - -.MBNG_PRELOOP: - - movss (%esi), %xmm0 - addss (%edi), %xmm0 - movss %xmm0, (%edi) - - addl $4, %edi #; dst++ - addl $4, %esi #; src++ - decl %ecx #; nframes-- - jz .MBNG_END - addl $4, %ebx - - cmp $16, %ebx #; test if we've reached 16 byte alignment - jne .MBNG_PRELOOP - -.MBNG_SSE: - - cmp $4, %ecx #; if there are frames left, but less than 4 - jnge .MBNG_NONALIGN #; we can't run SSE - -.MBNG_SSELOOP: - - movaps (%esi), %xmm0 #; source => xmm0 - addps (%edi), %xmm0 #; mix with destination - movaps %xmm0, (%edi) #; copy result to destination - - addl $16, %edi #; dst+=4 - addl $16, %esi #; src+=4 - - subl $4, %ecx #; nframes-=4 - cmp $4, %ecx - jge .MBNG_SSELOOP - - cmp $0, %ecx - je .MBNG_END - - #; if there are remaining frames, the nonalign code will do nicely - #; for the rest 1-3 frames. - -.MBNG_NONALIGN: - #; not aligned! - - movss (%esi), %xmm0 #; src => xmm0 - addss (%edi), %xmm0 #; xmm0 += dst - movss %xmm0, (%edi) #; xmm0 => dst - - addl $4, %edi - addl $4, %esi - - decl %ecx - jnz .MBNG_NONALIGN - -.MBNG_END: - - popl %esi - popl %edi -#; popl %ecx - popl %ebx -#; popl %eax - - #; return - leave - ret - -.size x86_sse_mix_buffers_no_gain, .-x86_sse_mix_buffers_no_gain - - - - -#; void x86_sse_apply_gain_to_buffer (float *buf, long nframes, float gain); - -.globl x86_sse_apply_gain_to_buffer - .type x86_sse_apply_gain_to_buffer,@function - -x86_sse_apply_gain_to_buffer: -#; 8(%ebp) = float *buf = %edi -#; 12(%ebp) = long nframes = %ecx -#; 16(%ebp) = float gain = st(0) - - pushl %ebp - movl %esp, %ebp - - #; save %edi - pushl %edi - - #; the real function - - #; if nframes == 0, go to end - movl 12(%ebp), %ecx #; nframes - cmp $0, %ecx - je .AG_END - - #; create the gain buffer in %xmm1 - movss 16(%ebp), %xmm1 - shufps $0x00, %xmm1, %xmm1 - - #; Check for alignment - - movl 8(%ebp), %edi #; buf - movl %edi, %edx #; buf => %edx - andl $12, %edx #; mask bits 1 & 2, result = 0, 4, 8 or 12 - jz .AG_SSE #; if buffer IS aligned - - #; PRE-LOOP - #; we iterate 1-3 times, doing normal x87 float comparison - #; so we reach a 16 byte aligned "buf" (=%edi) value - -.AGLP_START: - - #; Load next value from the buffer - movss (%edi), %xmm0 - mulss %xmm1, %xmm0 - movss %xmm0, (%edi) - - #; increment buffer, decrement counter - addl $4, %edi #; buf++; - - decl %ecx #; nframes-- - jz .AG_END #; if we run out of frames, we go to the end - - addl $4, %edx #; one non-aligned byte less - cmp $16, %edx - jne .AGLP_START #; if more non-aligned frames exist, we do a do-over - -.AG_SSE: - - #; We have reached the 16 byte aligned "buf" ("edi") value - - #; Figure out how many loops we should do - movl %ecx, %eax #; copy remaining nframes to %eax for division - movl $0, %edx #; 0 the edx register - - - pushl %edi - movl $4, %edi - divl %edi #; %edx = remainder == 0 - popl %edi - - #; %eax = SSE iterations - cmp $0, %eax - je .AGPOST_START - - -.AGLP_SSE: - - movaps (%edi), %xmm0 - mulps %xmm1, %xmm0 - movaps %xmm0, (%edi) - - addl $16, %edi -#; subl $4, %ecx #; nframes-=4 - - decl %eax - jnz .AGLP_SSE - - #; Next we need to post-process all remaining frames - #; the remaining frame count is in %ecx - - #; if no remaining frames, jump to the end -#; cmp $0, %ecx - andl $3, %ecx #; nframes % 4 - je .AG_END - -.AGPOST_START: - - movss (%edi), %xmm0 - mulss %xmm1, %xmm0 - movss %xmm0, (%edi) - - #; increment buffer, decrement counter - addl $4, %edi #; buf++; - - decl %ecx #; nframes-- - jnz .AGPOST_START #; if we run out of frames, we go to the end - -.AG_END: - - - popl %edi - - #; return - leave - ret - -.size x86_sse_apply_gain_to_buffer, .-x86_sse_apply_gain_to_buffer -#; end proc - - - -#; float x86_sse_compute_peak(float *buf, long nframes, float current); - -.globl x86_sse_compute_peak - .type x86_sse_compute_peak,@function - -x86_sse_compute_peak: -#; 8(%ebp) = float *buf = %edi -#; 12(%ebp) = long nframes = %ecx -#; 16(%ebp) = float current = st(0) - - pushl %ebp - movl %esp, %ebp - - #; save %edi - pushl %edi - - #; the real function - - #; Load "current" in xmm0 - movss 16(%ebp), %xmm0 - - #; if nframes == 0, go to end - movl 12(%ebp), %ecx #; nframes - cmp $0, %ecx - je .CP_END - - #; create the "abs" mask in %xmm2 - pushl $2147483647 - movss (%esp), %xmm2 - addl $4, %esp - shufps $0x00, %xmm2, %xmm2 - - #; Check for alignment - - movl 8(%ebp), %edi #; buf - movl %edi, %edx #; buf => %edx - andl $12, %edx #; mask bits 1 & 2, result = 0, 4, 8 or 12 - jz .CP_SSE #; if buffer IS aligned - - #; PRE-LOOP - #; we iterate 1-3 times, doing normal x87 float comparison - #; so we reach a 16 byte aligned "buf" (=%edi) value - -.LP_START: - - #; Load next value from the buffer - movss (%edi), %xmm1 - andps %xmm2, %xmm1 - maxss %xmm1, %xmm0 - - #; increment buffer, decrement counter - addl $4, %edi #; buf++; - - decl %ecx #; nframes-- - jz .CP_END #; if we run out of frames, we go to the end - - addl $4, %edx #; one non-aligned byte less - cmp $16, %edx - jne .LP_START #; if more non-aligned frames exist, we do a do-over - -.CP_SSE: - - #; We have reached the 16 byte aligned "buf" ("edi") value - - #; Figure out how many loops we should do - movl %ecx, %eax #; copy remaining nframes to %eax for division - - shr $2,%eax #; unsigned divide by 4 - jz .POST_START - - #; %eax = SSE iterations - - #; current maximum is at %xmm0, but we need to .. - shufps $0x00, %xmm0, %xmm0 #; shuffle "current" to all 4 FP's - - #;prefetcht0 16(%edi) - -.LP_SSE: - - movaps (%edi), %xmm1 - andps %xmm2, %xmm1 - maxps %xmm1, %xmm0 - - addl $16, %edi - - decl %eax - jnz .LP_SSE - - #; Calculate the maximum value contained in the 4 FP's in %xmm0 - movaps %xmm0, %xmm1 - shufps $0x4e, %xmm1, %xmm1 #; shuffle left & right pairs (1234 => 3412) - maxps %xmm1, %xmm0 #; maximums of the two pairs - movaps %xmm0, %xmm1 - shufps $0xb1, %xmm1, %xmm1 #; shuffle the floats inside the two pairs (1234 => 2143) - maxps %xmm1, %xmm0 - - #; now every float in %xmm0 is the same value, current maximum value - - #; Next we need to post-process all remaining frames - #; the remaining frame count is in %ecx - - #; if no remaining frames, jump to the end - - andl $3, %ecx #; nframes % 4 - jz .CP_END - -.POST_START: - - movss (%edi), %xmm1 - andps %xmm2, %xmm1 - maxss %xmm1, %xmm0 - - addl $4, %edi #; buf++; - - decl %ecx #; nframes--; - jnz .POST_START - -.CP_END: - - #; Load the value from xmm0 to the float stack for returning - movss %xmm0, 16(%ebp) - flds 16(%ebp) - - popl %edi - - #; return - leave - ret - -.size x86_sse_compute_peak, .-x86_sse_compute_peak -#; end proc - -#ifdef __ELF__ -.section .note.GNU-stack,"",%progbits -#endif - - diff --git a/muse/al/dspXMM.cpp b/muse/al/dspXMM.cpp deleted file mode 100644 index 1943fa7d..00000000 --- a/muse/al/dspXMM.cpp +++ /dev/null @@ -1,115 +0,0 @@ -/* - Copyright (C) 2007 Paul sDavis - Written by Sampo Savolainen - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -*/ - -#include - -void -x86_sse_find_peaks(float *buf, unsigned nframes, float *min, float *max) -{ - __m128 current_max, current_min, work; - - // Load max and min values into all four slots of the XMM registers - current_min = _mm_set1_ps(*min); - current_max = _mm_set1_ps(*max); - - // Work input until "buf" reaches 16 byte alignment - while ( ((unsigned long)buf) % 16 != 0 && nframes > 0) { - - // Load the next float into the work buffer - work = _mm_set1_ps(*buf); - - current_min = _mm_min_ps(current_min, work); - current_max = _mm_max_ps(current_max, work); - - buf++; - nframes--; - } - - // use 64 byte prefetch for quadruple quads - while (nframes >= 16) { - __builtin_prefetch(buf+64,0,0); - - work = _mm_load_ps(buf); - current_min = _mm_min_ps(current_min, work); - current_max = _mm_max_ps(current_max, work); - buf+=4; - work = _mm_load_ps(buf); - current_min = _mm_min_ps(current_min, work); - current_max = _mm_max_ps(current_max, work); - buf+=4; - work = _mm_load_ps(buf); - current_min = _mm_min_ps(current_min, work); - current_max = _mm_max_ps(current_max, work); - buf+=4; - work = _mm_load_ps(buf); - current_min = _mm_min_ps(current_min, work); - current_max = _mm_max_ps(current_max, work); - buf+=4; - nframes-=16; - } - - // work through aligned buffers - while (nframes >= 4) { - - work = _mm_load_ps(buf); - - current_min = _mm_min_ps(current_min, work); - current_max = _mm_max_ps(current_max, work); - - buf+=4; - nframes-=4; - } - - // work through the rest < 4 samples - while ( nframes > 0) { - - // Load the next float into the work buffer - work = _mm_set1_ps(*buf); - - current_min = _mm_min_ps(current_min, work); - current_max = _mm_max_ps(current_max, work); - - buf++; - nframes--; - } - - // Find min & max value in current_max through shuffle tricks - - work = current_min; - work = _mm_shuffle_ps(work, work, _MM_SHUFFLE(2, 3, 0, 1)); - work = _mm_min_ps (work, current_min); - current_min = work; - work = _mm_shuffle_ps(work, work, _MM_SHUFFLE(1, 0, 3, 2)); - work = _mm_min_ps (work, current_min); - - _mm_store_ss(min, work); - - work = current_max; - work = _mm_shuffle_ps(work, work, _MM_SHUFFLE(2, 3, 0, 1)); - work = _mm_max_ps (work, current_max); - current_max = work; - work = _mm_shuffle_ps(work, work, _MM_SHUFFLE(1, 0, 3, 2)); - work = _mm_max_ps (work, current_max); - - _mm_store_ss(max, work); -} - - - diff --git a/muse/al/marker.cpp b/muse/al/marker.cpp deleted file mode 100644 index 5b4ef87c..00000000 --- a/muse/al/marker.cpp +++ /dev/null @@ -1,86 +0,0 @@ -//============================================================================= -// AL -// Audio Utility Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "marker.h" -#include "xml.h" - -namespace AL { - -//--------------------------------------------------------- -// add -//--------------------------------------------------------- - -Marker* MarkerList::add(const Marker& marker) - { - iMarker i = insert(std::pair (marker.tick(), Marker(marker))); - return &i->second; - } - -Marker* MarkerList::add(const QString& s, const Pos& pos) - { - Marker marker(pos); - marker.setName(s); - iMarker i = insert(std::pair (pos.tick(), marker)); - return &i->second; - } - -//--------------------------------------------------------- -// read -//--------------------------------------------------------- - -void Marker::read(QDomNode node) - { - Pos::read(node); - QDomElement e = node.toElement(); - _name = e.attribute("name"); - } - -//--------------------------------------------------------- -// write -//--------------------------------------------------------- - -void MarkerList::write(Xml& xml) const - { - for (ciMarker i = begin(); i != end(); ++i) { - const Marker& m = i->second; - if (m.type() == TICKS) - xml.tagE(QString("marker tick=\"%1\" name=\"%2\"").arg(m.tick()).arg(m.name())); - else - xml.tagE(QString("marker sample=\"%1\" name=\"%2\"").arg(m.frame()).arg(m.name())); - } - } - -//--------------------------------------------------------- -// remove -//--------------------------------------------------------- - -void MarkerList::remove(Marker* m) - { - for (iMarker i = begin(); i != end(); ++i) { - Marker* mm = &i->second; - if (mm == m) { - erase(i); - return; - } - } - printf("MarkerList::remove(): marker not found\n"); - } -} - diff --git a/muse/al/marker.h b/muse/al/marker.h deleted file mode 100644 index 7c77f72e..00000000 --- a/muse/al/marker.h +++ /dev/null @@ -1,67 +0,0 @@ -//============================================================================= -// AL -// Audio Utility Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __MARKER_H__ -#define __MARKER_H__ - -#include "pos.h" - -namespace AL { - class Xml; - -//--------------------------------------------------------- -// Marker -//--------------------------------------------------------- - -class Marker : public Pos { - QString _name; - bool _current; - - public: - Marker() : _current(false) {} - Marker(const Pos& m) : Pos(m), _current(false) {} - Marker(const QString& s, bool cur = false) - : _name(s), _current(cur) {} - void read(QDomNode); - const QString name() const { return _name; } - void setName(const QString& s) { _name = s; } - bool current() const { return _current; } - void setCurrent(bool f) { _current = f; } - }; - -//--------------------------------------------------------- -// MarkerList -//--------------------------------------------------------- - -class MarkerList : public std::multimap > { - public: - Marker* add(const Marker& m); - Marker* add(const QString& s, const Pos&); - void write(Xml&) const; - void remove(Marker*); - }; - -typedef std::multimap >::iterator iMarker; -typedef std::multimap >::const_iterator ciMarker; - -} // end namespace AL - -#endif - diff --git a/muse/al/pos.cpp b/muse/al/pos.cpp deleted file mode 100644 index f8418a00..00000000 --- a/muse/al/pos.cpp +++ /dev/null @@ -1,616 +0,0 @@ -//============================================================================= -// AL -// Audio Utility Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "al.h" -#include "pos.h" -#include "xml.h" -#include "tempo.h" -#include "sig.h" - -namespace AL { - -//--------------------------------------------------------- -// Pos -//--------------------------------------------------------- - -Pos::Pos() - { - _type = TICKS; - _tick = 0; - _frame = 0; - sn = -1; - } - -Pos::Pos(unsigned t, TType timeType) - { - _type = timeType; - if (_type == TICKS) - _tick = t; - else - _frame = t; - sn = -1; - } - -Pos::Pos(const QString& s) - { - int m, b, t; - sscanf(s.toLatin1().data(), "%04d.%02d.%03d", &m, &b, &t); - _tick = sigmap.bar2tick(m, b, t); - _type = TICKS; - sn = -1; - } - -Pos::Pos(int measure, int beat, int tick) - { - _tick = sigmap.bar2tick(measure, beat, tick); - _type = TICKS; - sn = -1; - } - -Pos::Pos(int min, int sec, int frame, int subframe) - { - double time = min * 60.0 + sec; - - double f = frame + subframe/100.0; - switch (AL::mtcType) { - case 0: // 24 frames sec - time += f * 1.0/24.0; - break; - case 1: // 25 - time += f * 1.0/25.0; - break; - case 2: // 30 drop frame - time += f * 1.0/30.0; - break; - case 3: // 30 non drop frame - time += f * 1.0/30.0; - break; - } - _type = FRAMES; - _frame = lrint(time * AL::sampleRate); - sn = -1; - } - -//--------------------------------------------------------- -// setType -//--------------------------------------------------------- - -void Pos::setType(TType t) - { - if (t == _type) - return; - - if (_type == TICKS) { - // convert from ticks to frames - _frame = tempomap.tick2frame(_tick, _frame, &sn); - } - else { - // convert from frames to ticks - _tick = tempomap.frame2tick(_frame, _tick, &sn); - } - _type = t; - } - -//--------------------------------------------------------- -// operator+= -//--------------------------------------------------------- - -Pos& Pos::operator+=(const Pos& a) - { - if (_type == FRAMES) - _frame += a.frame(); - else - _tick += a.tick(); - sn = -1; // invalidate cached values - return *this; - } - -//--------------------------------------------------------- -// operator-= -//--------------------------------------------------------- - -Pos& Pos::operator-=(const Pos& a) - { - if (_type == FRAMES) - _frame -= a.frame(); - else - _tick -= a.tick(); - sn = -1; // invalidate cached values - return *this; - } - -//--------------------------------------------------------- -// operator+= -//--------------------------------------------------------- - -Pos& Pos::operator+=(int a) - { - if (_type == FRAMES) - _frame += a; - else - _tick += a; - sn = -1; // invalidate cached values - return *this; - } - -//--------------------------------------------------------- -// operator-= -//--------------------------------------------------------- - -Pos& Pos::operator-=(int a) - { - if (_type == FRAMES) - _frame -= a; - else - _tick -= a; - sn = -1; // invalidate cached values - return *this; - } - -Pos operator+(const Pos& a, int b) - { - Pos c(a); - return c += b; - } - -Pos operator-(const Pos& a, int b) - { - Pos c(a); - return c -= b; - } - -Pos operator+(const Pos& a, const Pos& b) - { - Pos c(a); - return c += b; - } - -Pos operator-(const Pos& a, const Pos& b) - { - Pos c(a); - return c -= b; - } - -bool Pos::operator>=(const Pos& s) const - { - if (_type == FRAMES) - return _frame >= s.frame(); - else - return _tick >= s.tick(); - } - -bool Pos::operator>(const Pos& s) const - { - if (_type == FRAMES) - return _frame > s.frame(); - else - return _tick > s.tick(); - } - -bool Pos::operator<(const Pos& s) const - { - if (_type == FRAMES) - return _frame < s.frame(); - else - return _tick < s.tick(); - } - -bool Pos::operator<=(const Pos& s) const - { - if (_type == FRAMES) - return _frame <= s.frame(); - else - return _tick <= s.tick(); - } - -bool Pos::operator==(const Pos& s) const - { - if (_type == FRAMES) - return _frame == s.frame(); - else - return _tick == s.tick(); - } - -bool Pos::operator!=(const Pos& s) const - { - if (_type == FRAMES) - return _frame != s.frame(); - else - return _tick != s.tick(); - } - -//--------------------------------------------------------- -// tick -//--------------------------------------------------------- - -unsigned Pos::tick() const - { - if (_type == FRAMES) - _tick = tempomap.frame2tick(_frame, _tick, &sn); - return _tick; - } - -//--------------------------------------------------------- -// frame -//--------------------------------------------------------- - -unsigned Pos::frame() const - { - if (_type == TICKS) - _frame = tempomap.tick2frame(_tick, _frame, &sn); - return _frame; - } - -//--------------------------------------------------------- -// setTick -//--------------------------------------------------------- - -void Pos::setTick(unsigned pos) - { - _tick = pos; - sn = -1; - if (_type == FRAMES) - _frame = tempomap.tick2frame(pos, &sn); - } - -//--------------------------------------------------------- -// setFrame -//--------------------------------------------------------- - -void Pos::setFrame(unsigned pos) - { - _frame = pos; - sn = -1; - if (_type == TICKS) - _tick = tempomap.frame2tick(pos, &sn); - } - -//--------------------------------------------------------- -// write -//--------------------------------------------------------- - -void Pos::write(Xml& xml, const char* name) const - { - if (_type == TICKS) - xml.tagE(QString("%1 tick=\"%2\"").arg(name).arg(_tick)); - else - xml.tagE(QString("%1 frame=\"%2\"").arg(name).arg(_frame)); - } - -//--------------------------------------------------------- -// read -//--------------------------------------------------------- - -void Pos::read(QDomNode node) - { - sn = -1; - - QDomElement e = node.toElement(); - QString s; - s = e.attribute("tick"); - if (!s.isEmpty()) { - _tick = s.toInt(); - _type = TICKS; - } - s = e.attribute("frame"); - if (!s.isEmpty()) { - _frame = s.toInt(); - _type = FRAMES; - } - } - -//--------------------------------------------------------- -// PosLen -//--------------------------------------------------------- - -PosLen::PosLen() - { - _lenTick = 0; - _lenFrame = 0; - sn = -1; - } - -PosLen::PosLen(const PosLen& p) - : Pos(p) - { - _lenTick = p._lenTick; - _lenFrame = p._lenFrame; - sn = -1; - } - -//--------------------------------------------------------- -// dump -//--------------------------------------------------------- - -void PosLen::dump(int n) const - { - Pos::dump(n); - printf(" Len("); - switch(type()) { - case FRAMES: - printf("samples=%d)\n", _lenFrame); - break; - case TICKS: - printf("ticks=%d)\n", _lenTick); - break; - } - } - -void Pos::dump(int /*n*/) const - { - printf("Pos(%s, sn=%d, ", type() == FRAMES ? "Frames" : "Ticks", sn); - switch(type()) { - case FRAMES: - printf("samples=%d)", _frame); - break; - case TICKS: - printf("ticks=%d)", _tick); - break; - } - } - -//--------------------------------------------------------- -// write -//--------------------------------------------------------- - -void PosLen::write(Xml& xml, const char* name) const - { - if (type() == TICKS) - xml.tagE(QString("%1 tick=\"%2\" len=\"%3\"").arg(name).arg(tick()).arg(_lenTick)); - else - xml.tagE(QString("%1 sample=\"%2\" len=\"%3\"").arg(name).arg(frame()).arg(_lenFrame)); - } - -//--------------------------------------------------------- -// read -//--------------------------------------------------------- - -void PosLen::read(QDomNode node) - { - QDomElement e = node.toElement(); - QString s; - s = e.attribute("tick"); - if (!s.isEmpty()) { - setType(TICKS); - setTick(s.toInt()); - } - s = e.attribute("sample"); - if (!s.isEmpty()) { - setType(FRAMES); - setFrame(s.toInt()); - } - s = e.attribute("len"); - if (!s.isEmpty()) { - int n = s.toInt(); - if (type() == TICKS) - setLenTick(n); - else - setLenFrame(n); - } - } - -//--------------------------------------------------------- -// setLenTick -//--------------------------------------------------------- - -void PosLen::setLenTick(unsigned len) - { - _lenTick = len; - sn = -1; - if (type() == FRAMES) - _lenFrame = tempomap.tick2frame(len, &sn); - else - _lenTick = len; - } - -//--------------------------------------------------------- -// setLenFrame -//--------------------------------------------------------- - -void PosLen::setLenFrame(unsigned len) - { - sn = -1; - if (type() == TICKS) - _lenTick = tempomap.frame2tick(len, &sn); - else - _lenFrame = len; - } - -//--------------------------------------------------------- -// lenTick -//--------------------------------------------------------- - -unsigned PosLen::lenTick() const - { - if (type() == FRAMES) - _lenTick = tempomap.frame2tick(_lenFrame, _lenTick, &sn); - return _lenTick; - } - -//--------------------------------------------------------- -// lenFrame -//--------------------------------------------------------- - -unsigned PosLen::lenFrame() const - { - if (type() == TICKS) - _lenFrame = tempomap.tick2frame(_lenTick, _lenFrame, &sn); - return _lenFrame; - } - -//--------------------------------------------------------- -// end -//--------------------------------------------------------- - -Pos PosLen::end() const - { - Pos pos(*this); - pos.invalidSn(); - switch(type()) { - case FRAMES: - pos.setFrame(pos.frame() + _lenFrame); - break; - case TICKS: - pos.setTick(pos.tick() + _lenTick); - break; - } - return pos; - } - -//--------------------------------------------------------- -// setPos -//--------------------------------------------------------- - -void PosLen::setPos(const Pos& pos) - { - switch(pos.type()) { - case FRAMES: - setFrame(pos.frame()); - break; - case TICKS: - setTick(pos.tick()); - break; - } - } - -//--------------------------------------------------------- -// operator== -//--------------------------------------------------------- - -bool PosLen::operator==(const PosLen& pl) const { - if(type()==TICKS) - return (_lenTick==pl._lenTick && Pos::operator==((const Pos&)pl)); - else - return (_lenFrame==pl._lenFrame && Pos::operator==((const Pos&)pl)); -} - -//--------------------------------------------------------- -// mbt -//--------------------------------------------------------- - -void Pos::mbt(int* bar, int* beat, int* tk) const - { - sigmap.tickValues(tick(), bar, beat, (unsigned*)tk); - } - -//--------------------------------------------------------- -// msf -//--------------------------------------------------------- - -void Pos::msf(int* min, int* sec, int* fr, int* subFrame) const - { -#if 0 - //double has been replaced by float because it prevents (mysteriously) - //from a segfault that occurs at the launching of muse - /*double*/ float time = double(frame()) / double(AL::sampleRate); - *min = int(time) / 60; - *sec = int(time) % 60; - //double has been replaced by float because it prevents (mysteriously) - //from a segfault that occurs at the launching of muse - /*double*/ float rest = time - (*min * 60 + *sec); - switch(AL::mtcType) { - case 0: // 24 frames sec - rest *= 24; - break; - case 1: // 25 - rest *= 25; - break; - case 2: // 30 drop frame - rest *= 30; - break; - case 3: // 30 non drop frame - rest *= 30; - break; - } - *fr = int(rest); - *subFrame = int((rest- *fr)*100); -#else - // for further testing: - - double time = double(frame()) / double(AL::sampleRate); - *min = int(time) / 60; - *sec = int(time) % 60; - double rest = time - ((*min) * 60 + (*sec)); - switch(AL::mtcType) { - case 0: // 24 frames sec - rest *= 24; - break; - case 1: // 25 - rest *= 25; - break; - case 2: // 30 drop frame - rest *= 30; - break; - case 3: // 30 non drop frame - rest *= 30; - break; - } - *fr = lrint(rest); - *subFrame = lrint((rest - (*fr)) * 100.0); -#endif - } - -//--------------------------------------------------------- -// timesig -//--------------------------------------------------------- - -TimeSignature Pos::timesig() const - { - return sigmap.timesig(tick()); - } - -//--------------------------------------------------------- -// snap -// raster = 1 no snap -// raster = 0 snap to measure -// all other raster values snap to raster tick -//--------------------------------------------------------- - -void Pos::snap(int raster) - { - setTick(sigmap.raster(tick(), raster)); - } - -void Pos::upSnap(int raster) - { - setTick(sigmap.raster2(tick(), raster)); - } - -void Pos::downSnap(int raster) - { - setTick(sigmap.raster1(tick(), raster)); - } - -Pos Pos::snaped(int raster) const - { - return Pos(sigmap.raster(tick(), raster)); - } - -Pos Pos::upSnaped(int raster) const - { - return Pos(sigmap.raster2(tick(), raster)); - } - -Pos Pos::downSnaped(int raster) const - { - return Pos(sigmap.raster1(tick(), raster)); - } -} - diff --git a/muse/al/pos.h b/muse/al/pos.h deleted file mode 100644 index 6226cfef..00000000 --- a/muse/al/pos.h +++ /dev/null @@ -1,129 +0,0 @@ -//============================================================================= -// AL -// Audio Utility Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __POS_H__ -#define __POS_H__ - -#include "sig.h" - -namespace AL { - -class Xml; - -enum TType { TICKS, FRAMES }; - -//--------------------------------------------------------- -// Pos -// depending on type _tick or _frame is a cached -// value. When the tempomap changes, all cached values -// are invalid. Sn is used to check for tempomap -// changes. -//--------------------------------------------------------- - -class Pos { - public: - - private: - TType _type; - mutable int sn; - mutable unsigned _tick; - mutable unsigned _frame; - - public: - Pos(); - Pos(int measure, int beat, int tick); - Pos(int minute, int sec, int frame, int subframe); - Pos(unsigned, TType type = TICKS); - Pos(const QString&); - void dump(int n = 0) const; - - unsigned time(TType t) const { return t == TICKS ? tick() : frame(); } - void mbt(int* measure, int* beat, int* tick) const; - void msf(int* minute, int* sec, int* frame, int* subframe) const; - TimeSignature timesig() const; - void snap(int); - void upSnap(int); - void downSnap(int); - Pos snaped(int) const; - Pos upSnaped(int) const; - Pos downSnaped(int) const; - - void invalidSn() { sn = -1; } - - TType type() const { return _type; } - void setType(TType t); - - Pos& operator+=(const Pos& a); - Pos& operator+=(int a); - Pos& operator-=(const Pos& a); - Pos& operator-=(int a); - - bool operator>=(const Pos& s) const; - bool operator>(const Pos& s) const; - bool operator<(const Pos& s) const; - bool operator<=(const Pos& s) const; - bool operator==(const Pos& s) const; - bool operator!=(const Pos& s) const; - - friend Pos operator+(const Pos& a, const Pos& b); - friend Pos operator-(const Pos& a, const Pos& b); - friend Pos operator+(const Pos& a, int b); - friend Pos operator-(const Pos& a, int b); - - unsigned tick() const; - unsigned frame() const; - void setTick(unsigned); - void setFrame(unsigned); - - void write(Xml&, const char*) const; - void read(QDomNode); - bool isValid() const { return true; } - }; - -//--------------------------------------------------------- -// PosLen -//--------------------------------------------------------- - -class PosLen : public Pos { - mutable unsigned _lenTick; - mutable unsigned _lenFrame; - mutable int sn; - - public: - PosLen(); - PosLen(const PosLen&); - void dump(int n = 0) const; - - void write(Xml&, const char*) const; - void read(QDomNode); - void setLenTick(unsigned); - void setLenFrame(unsigned); - unsigned lenTick() const; - unsigned lenFrame() const; - Pos end() const; - unsigned endTick() const { return end().tick(); } - unsigned endFrame() const { return end().frame(); } - void setPos(const Pos&); - - bool operator==(const PosLen& s) const; - }; -} - -#endif diff --git a/muse/al/sig.cpp b/muse/al/sig.cpp deleted file mode 100644 index d8672200..00000000 --- a/muse/al/sig.cpp +++ /dev/null @@ -1,407 +0,0 @@ -//============================================================================= -// AL -// Audio Utility Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "al.h" -#include "sig.h" -#include "xml.h" - -namespace AL { - -SigList sigmap; - -//--------------------------------------------------------- -// SigList -//--------------------------------------------------------- - -SigList::SigList() - { - insert(std::pair (MAX_TICK, new SigEvent(TimeSignature(4, 4), 0))); - } - -//--------------------------------------------------------- -// add -// signatures are only allowed at the beginning of -// a bar -//--------------------------------------------------------- - -void SigList::add(unsigned tick, const TimeSignature& s) - { - if (s.z == 0 || s.n == 0) { - printf("illegal signature %d/%d\n", s.z, s.n); - } - tick = raster1(tick, 0); - iSigEvent e = upper_bound(tick); - - if (tick == e->second->tick) { - e->second->sig = s; - } - else { - SigEvent* ne = e->second; - SigEvent* ev = new SigEvent(ne->sig, ne->tick); - ne->sig = s; - ne->tick = tick; - insert(std::pair (tick, ev)); - } - normalize(); - } - -//--------------------------------------------------------- -// del -//--------------------------------------------------------- - -void SigList::del(unsigned tick) - { -// printf("SigList::del(%d)\n", tick); - iSigEvent e = find(tick); - if (e == end()) { - printf("SigList::del(%d): not found\n", tick); - return; - } - iSigEvent ne = e; - ++ne; - if (ne == end()) { - printf("SigList::del() HALLO\n"); - return; - } - ne->second->sig = e->second->sig; - ne->second->tick = e->second->tick; - erase(e); - normalize(); - } - -//--------------------------------------------------------- -// SigList::normalize -//--------------------------------------------------------- - -void SigList::normalize() - { - TimeSignature sig(0, 0); - unsigned tick = 0; - iSigEvent ee; - - for (iSigEvent e = begin(); e != end();) { - if (sig.z == e->second->sig.z && sig.n == e->second->sig.n) { - e->second->tick = tick; - erase(ee); - } - sig = e->second->sig; - ee = e; - tick = e->second->tick; - ++e; - } - - int bar = 0; - for (iSigEvent e = begin(); e != end();) { - e->second->bar = bar; - int delta = e->first - e->second->tick; - int ticksB = ticks_beat(e->second->sig.n); - int ticksM = ticksB * e->second->sig.z; - bar += delta / ticksM; - if (delta % ticksM) // Teil eines Taktes - ++bar; - ++e; - } - } - -//--------------------------------------------------------- -// SigList::dump -//--------------------------------------------------------- - -void SigList::dump() const - { - printf("\nSigList:\n"); - for (ciSigEvent i = begin(); i != end(); ++i) { - printf("%6d %06d Bar %3d %02d/%d\n", - i->first, i->second->tick, - i->second->bar, i->second->sig.z, i->second->sig.n); - } - } - -void SigList::clear() - { - for (iSigEvent i = begin(); i != end(); ++i) - delete i->second; - SIGLIST::clear(); - insert(std::pair (MAX_TICK, new SigEvent(TimeSignature(4, 4), 0))); - } - -//--------------------------------------------------------- -// ticksMeasure -//--------------------------------------------------------- - -int SigList::ticksMeasure(const TimeSignature& sig) const - { - return ticks_beat(sig.n) * sig.z; - } - -int SigList::ticksMeasure(unsigned tick) const - { - ciSigEvent i = upper_bound(tick); - if (i == end()) { - printf("ticksMeasure: not found %d\n", tick); - // abort(); - return 0; - } - return ticksMeasure(i->second->sig); - } - -//--------------------------------------------------------- -// ticksBeat -//--------------------------------------------------------- - -int SigList::ticksBeat(unsigned tick) const - { - ciSigEvent i = upper_bound(tick); - return ticks_beat(i->second->sig.n); - } - -int SigList::ticks_beat(int n) const - { - int m = AL::division; - switch (n) { - case 1: m <<= 2; break; // 1536 - case 2: m <<= 1; break; // 768 - case 3: m += m >> 1; break; // 384+192 - case 4: break; // 384 - case 8: m >>= 1; break; // 192 - case 16: m >>= 2; break; // 96 - case 32: m >>= 3; break; // 48 - case 64: m >>= 4; break; // 24 - case 128: m >>= 5; break; // 12 - default: break; - } - return m; - } - -//--------------------------------------------------------- -// timesig -//--------------------------------------------------------- - -TimeSignature SigList::timesig(unsigned tick) const - { - ciSigEvent i = upper_bound(tick); - if (i == end()) { - printf("timesig(%d): not found\n", tick); - // abort(); - return TimeSignature(4,4); - } - return i->second->sig; - } - -//--------------------------------------------------------- -// tickValues -//--------------------------------------------------------- - -void SigList::tickValues(unsigned t, int* bar, int* beat, unsigned* tick) const - { - ciSigEvent e = upper_bound(t); - if (e == end()) { - fprintf(stderr, "tickValues(0x%x) not found(%zd)\n", t, size()); -//DEBUG -// abort(); - *bar = 0; - *beat = 0; - *tick = 0; - return; - } - - int delta = t - e->second->tick; - int ticksB = ticks_beat(e->second->sig.n); - int ticksM = ticksB * e->second->sig.z; - *bar = e->second->bar + delta / ticksM; - int rest = delta % ticksM; - *beat = rest / ticksB; - *tick = rest % ticksB; - } - -//--------------------------------------------------------- -// bar2tick -//--------------------------------------------------------- - -unsigned SigList::bar2tick(int bar, int beat, unsigned tick) const - { - ciSigEvent e; - - if (bar < 0) - bar = 0; - for (e = begin(); e != end();) { - ciSigEvent ee = e; - ++ee; - if (ee == end()) - break; - if (bar < ee->second->bar) - break; - e = ee; - } - int ticksB = ticks_beat(e->second->sig.n); - int ticksM = ticksB * e->second->sig.z; - return e->second->tick + (bar-e->second->bar)*ticksM + ticksB*beat + tick; - } - -//--------------------------------------------------------- -// raster -//--------------------------------------------------------- - -unsigned SigList::raster(unsigned t, int raster) const - { - if (raster == 1) - return t; - ciSigEvent e = upper_bound(t); - if (e == end()) { - printf("SigList::raster(%x,)\n", t); - // abort(); - return t; - } - int delta = t - e->second->tick; - int ticksM = ticks_beat(e->second->sig.n) * e->second->sig.z; - if (raster == 0) - raster = ticksM; - int rest = delta % ticksM; - int bb = (delta/ticksM)*ticksM; - return e->second->tick + bb + ((rest + raster/2)/raster)*raster; - } - -//--------------------------------------------------------- -// raster1 -// round down -//--------------------------------------------------------- - -unsigned SigList::raster1(unsigned t, int raster) const - { - if (raster == 1) - return t; - ciSigEvent e = upper_bound(t); - - int delta = t - e->second->tick; - int ticksM = ticks_beat(e->second->sig.n) * e->second->sig.z; - if (raster == 0) - raster = ticksM; - int rest = delta % ticksM; - int bb = (delta/ticksM)*ticksM; - return e->second->tick + bb + (rest/raster)*raster; - } - -//--------------------------------------------------------- -// raster2 -// round up -//--------------------------------------------------------- - -unsigned SigList::raster2(unsigned t, int raster) const - { - if (raster == 1) - return t; - ciSigEvent e = upper_bound(t); - - int delta = t - e->second->tick; - int ticksM = ticks_beat(e->second->sig.n) * e->second->sig.z; - if (raster == 0) - raster = ticksM; - int rest = delta % ticksM; - int bb = (delta/ticksM)*ticksM; - return e->second->tick + bb + ((rest+raster-1)/raster)*raster; - } - -//--------------------------------------------------------- -// rasterStep -//--------------------------------------------------------- - -int SigList::rasterStep(unsigned t, int raster) const - { - if (raster == 0) { - ciSigEvent e = upper_bound(t); - return ticks_beat(e->second->sig.n) * e->second->sig.z; - } - return raster; - } - -//--------------------------------------------------------- -// SigList::write -//--------------------------------------------------------- - -void SigList::write(Xml& xml) const - { - xml.stag("siglist"); - for (ciSigEvent i = begin(); i != end(); ++i) - i->second->write(xml, i->first); - xml.etag("siglist"); - } - -//--------------------------------------------------------- -// SigList::read -//--------------------------------------------------------- - -void SigList::read(QDomNode node) - { - while (!node.isNull()) { - QDomElement e = node.toElement(); - if (e.tagName() == "sig") { - SigEvent* t = new SigEvent(); - unsigned tick = t->read(node); - iSigEvent pos = find(tick); - if (pos != end()) - erase(pos); - insert(std::pair (tick, t)); - } - else - printf("MusE:SigList: unknown tag %s\n", e.tagName().toLatin1().data()); - node = node.nextSibling(); - } - normalize(); - } - -//--------------------------------------------------------- -// SigEvent::write -//--------------------------------------------------------- - -void SigEvent::write(Xml& xml, int at) const - { - xml.stag(QString("sig at=\"%1\"").arg(at)); - xml.tag("tick", tick); - xml.tag("nom", sig.z); - xml.tag("denom", sig.n); - xml.etag("sig"); - } - -//--------------------------------------------------------- -// SigEvent::read -//--------------------------------------------------------- - -int SigEvent::read(QDomNode node) - { - QDomElement e = node.toElement(); - int at = e.attribute("at", "0").toInt(); - node = node.firstChild(); - - while (!node.isNull()) { - QDomElement e = node.toElement(); - if (e.tagName() == "tick") - tick = e.text().toInt(); - else if (e.tagName() == "nom") - sig.z = e.text().toInt(); - else if (e.tagName() == "denom") - sig.n = e.text().toInt(); - else - printf("MusE:SigEvent: unknown tag %s\n", e.tagName().toLatin1().data()); - node = node.nextSibling(); - } - return at; - } - -} diff --git a/muse/al/sig.h b/muse/al/sig.h deleted file mode 100644 index d0c70410..00000000 --- a/muse/al/sig.h +++ /dev/null @@ -1,103 +0,0 @@ -//============================================================================= -// AL -// Audio Utility Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __SIG_H__ -#define __SIG_H__ - -namespace AL { - -#ifndef MAX_TICK -#define MAX_TICK (0x7fffffff/100) -#endif - -class Xml; - -//--------------------------------------------------------- -// TimeSignature -//--------------------------------------------------------- - -struct TimeSignature { - int z, n; - TimeSignature() { z = 4; n = 4; } - TimeSignature(int a, int b) { z = a; n = b; } - }; - -//--------------------------------------------------------- -// Signature Event -//--------------------------------------------------------- - -struct SigEvent { - TimeSignature sig; - unsigned tick; // signature valid from this position - int bar; // precomputed - - int read(QDomNode); - void write(Xml&, int) const; - - SigEvent() { } - SigEvent(const TimeSignature& s, unsigned tk) { - sig = s; - tick = tk; - bar = 0; - } - }; - -//--------------------------------------------------------- -// SigList -//--------------------------------------------------------- - -typedef std::map > SIGLIST; -typedef SIGLIST::iterator iSigEvent; -typedef SIGLIST::const_iterator ciSigEvent; -typedef SIGLIST::reverse_iterator riSigEvent; -typedef SIGLIST::const_reverse_iterator criSigEvent; - -class SigList : public SIGLIST { - int ticks_beat(int N) const; - void normalize(); - int ticksMeasure(const TimeSignature&) const; - - public: - SigList(); - void clear(); - void add(unsigned tick, const TimeSignature& s); - void del(unsigned tick); - - void read(QDomNode); - void write(Xml&) const; - void dump() const; - - TimeSignature timesig(unsigned tick) const; - void tickValues(unsigned t, int* bar, int* beat, unsigned* tick) const; - unsigned bar2tick(int bar, int beat, unsigned tick) const; - - int ticksMeasure(unsigned tick) const; - int ticksBeat(unsigned tick) const; - unsigned raster(unsigned tick, int raster) const; - unsigned raster1(unsigned tick, int raster) const; // round down - unsigned raster2(unsigned tick, int raster) const; // round up - int rasterStep(unsigned tick, int raster) const; - }; - -extern SigList sigmap; - -} - -#endif diff --git a/muse/al/tempo.cpp b/muse/al/tempo.cpp deleted file mode 100644 index 7d65c732..00000000 --- a/muse/al/tempo.cpp +++ /dev/null @@ -1,393 +0,0 @@ -//============================================================================= -// AL -// Audio Utility Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "al.h" -#include "tempo.h" -#include "xml.h" - -namespace AL { - -TempoList tempomap; - -//--------------------------------------------------------- -// TempoList -//--------------------------------------------------------- - -TempoList::TempoList() - { - _tempo = 500000; - insert(std::pair (MAX_TICK+1, new TEvent(_tempo, 0))); - _tempoSN = 1; - _globalTempo = 100; - useList = true; - } - -//--------------------------------------------------------- -// add -//--------------------------------------------------------- - -void TempoList::add(unsigned tick, int tempo) - { - if (tick > MAX_TICK) - tick = MAX_TICK; - - iTEvent e = upper_bound(tick); - - if (tick == e->second->tick) - e->second->tempo = tempo; - else { - TEvent* ne = e->second; - TEvent* ev = new TEvent(ne->tempo, ne->tick); - ne->tempo = tempo; - ne->tick = tick; - insert(std::pair (tick, ev)); - } - normalize(); - } - -//--------------------------------------------------------- -// TempoList::normalize -//--------------------------------------------------------- - -void TempoList::normalize() - { - int frame = 0; - for (iTEvent e = begin(); e != end(); ++e) { - e->second->frame = frame; - unsigned dtick = e->first - e->second->tick; - double dtime = double(dtick) / (division * _globalTempo * 10000.0/e->second->tempo); - frame += lrint(dtime * sampleRate); - } - } - -//--------------------------------------------------------- -// TempoList::dump -//--------------------------------------------------------- - -void TempoList::dump() const - { - printf("\nTempoList:\n"); - for (ciTEvent i = begin(); i != end(); ++i) { - printf("%6d %06d Tempo %6d Frame %d\n", - i->first, i->second->tick, i->second->tempo, - i->second->frame); - } - } - -//--------------------------------------------------------- -// clear -//--------------------------------------------------------- - -void TempoList::clear() - { - for (iTEvent i = begin(); i != end(); ++i) - delete i->second; - TEMPOLIST::clear(); - insert(std::pair (MAX_TICK+1, new TEvent(500000, 0))); - ++_tempoSN; - } - -//--------------------------------------------------------- -// tempo -//--------------------------------------------------------- - -int TempoList::tempo(unsigned tick) const - { - if (useList) { - ciTEvent i = upper_bound(tick); - if (i == end()) { - printf("no TEMPO at tick %d,0x%x\n", tick, tick); - return 1000; - } - return i->second->tempo; - } - else - return _tempo; - } - -//--------------------------------------------------------- -// del -//--------------------------------------------------------- - -void TempoList::del(unsigned tick) - { -// printf("TempoList::del(%d)\n", tick); - iTEvent e = find(tick); - if (e == end()) { - printf("TempoList::del(%d): not found\n", tick); - return; - } - del(e); - ++_tempoSN; - } - -void TempoList::del(iTEvent e) - { - iTEvent ne = e; - ++ne; - if (ne == end()) { - printf("TempoList::del(): not found\n"); - return; - } - ne->second->tempo = e->second->tempo; - ne->second->tick = e->second->tick; - erase(e); - normalize(); - ++_tempoSN; - } - -//--------------------------------------------------------- -// change -//--------------------------------------------------------- - -void TempoList::change(unsigned tick, int newTempo) - { - iTEvent e = find(tick); - e->second->tempo = newTempo; - normalize(); - ++_tempoSN; - } - -//--------------------------------------------------------- -// setTempo -// called from transport window -// & slave mode tempo changes -//--------------------------------------------------------- - -void TempoList::setTempo(unsigned tick, int newTempo) - { - if (useList) - add(tick, newTempo); - else - _tempo = newTempo; - ++_tempoSN; - } - -//--------------------------------------------------------- -// setGlobalTempo -//--------------------------------------------------------- - -void TempoList::setGlobalTempo(int val) - { - _globalTempo = val; - ++_tempoSN; - normalize(); - } - -//--------------------------------------------------------- -// addTempo -//--------------------------------------------------------- - -void TempoList::addTempo(unsigned t, int tempo) - { - add(t, tempo); - ++_tempoSN; - } - -//--------------------------------------------------------- -// delTempo -//--------------------------------------------------------- - -void TempoList::delTempo(unsigned tick) - { - del(tick); - ++_tempoSN; - } - -//--------------------------------------------------------- -// changeTempo -//--------------------------------------------------------- - -void TempoList::changeTempo(unsigned tick, int newTempo) - { - change(tick, newTempo); - ++_tempoSN; - } - -//--------------------------------------------------------- -// setMasterFlag -//--------------------------------------------------------- - -bool TempoList::setMasterFlag(unsigned /*tick*/, bool val) - { - if (useList != val) { - useList = val; - ++_tempoSN; - return true; - } - return false; - } - -//--------------------------------------------------------- -// tick2frame -//--------------------------------------------------------- - -unsigned TempoList::tick2frame(unsigned tick, unsigned frame, int* sn) const - { - return (*sn == _tempoSN) ? frame : tick2frame(tick, sn); - } - -//--------------------------------------------------------- -// tick2frame -//--------------------------------------------------------- - -unsigned TempoList::tick2frame(unsigned tick, int* sn) const - { - int f; - if (useList) { - ciTEvent i = upper_bound(tick); - if (i == end()) { - printf("tick2frame(%d,0x%x): not found\n", tick, tick); - abort(); // debug - return 0; - } - unsigned dtick = tick - i->second->tick; - double dtime = double(dtick) / (division * _globalTempo * 10000.0/ i->second->tempo); - unsigned dframe = lrint(dtime * sampleRate); - f = i->second->frame + dframe; - } - else { - double t = (double(tick) * double(_tempo)) / (double(division) * _globalTempo * 10000.0); - f = lrint(t * sampleRate); - } - if (sn) - *sn = _tempoSN; - return f; - } - -//--------------------------------------------------------- -// frame2tick -// return cached value t if list did not change -//--------------------------------------------------------- - -unsigned TempoList::frame2tick(unsigned frame, unsigned t, int* sn) const - { - return (*sn == _tempoSN) ? t : frame2tick(frame, sn); - } - -//--------------------------------------------------------- -// frame2tick -//--------------------------------------------------------- - -unsigned TempoList::frame2tick(unsigned frame, int* sn) const - { - unsigned tick; - if (useList) { - ciTEvent e; - for (e = begin(); e != end();) { - ciTEvent ee = e; - ++ee; - if (ee == end()) - break; - if (frame < ee->second->frame) - break; - e = ee; - } - unsigned te = e->second->tempo; - int dframe = frame - e->second->frame; - double dtime = double(dframe) / double(sampleRate); - tick = e->second->tick + lrint(dtime * _globalTempo * division * 10000.0 / te); - } - else - tick = lrint((double(frame)/double(sampleRate)) * _globalTempo * division * 10000.0 / double(_tempo)); - if (sn) - *sn = _tempoSN; - return tick; - } - -//--------------------------------------------------------- -// TempoList::write -//--------------------------------------------------------- - -void TempoList::write(Xml& xml) const - { - xml.stag(QString("tempolist fix=\"%1\"").arg(_tempo)); - if (_globalTempo != 100) - xml.tag("globalTempo", _globalTempo); - for (ciTEvent i = begin(); i != end(); ++i) - i->second->write(xml, i->first); - xml.etag("tempolist"); - } - -//--------------------------------------------------------- -// TempoList::read -//--------------------------------------------------------- - -void TempoList::read(QDomNode node) - { - QDomElement e = node.toElement(); - _tempo = e.attribute("fix","500000").toInt(); - - node = node.firstChild(); - while (!node.isNull()) { - e = node.toElement(); - if (e.tagName() == "tempo") { - TEvent* t = new TEvent(); - unsigned tick = t->read(node); - iTEvent pos = find(tick); - if (pos != end()) - erase(pos); - insert(std::pair (tick, t)); - } - else if (e.tagName() == "globalTempo") - _globalTempo = e.text().toInt(); - else - printf("MusE:Tempolist: unknown tag %s\n", e.tagName().toLatin1().data()); - node = node.nextSibling(); - } - normalize(); - ++_tempoSN; - } - -//--------------------------------------------------------- -// TEvent::write -//--------------------------------------------------------- - -void TEvent::write(Xml& xml, int at) const - { - xml.stag(QString("tempo at=\"%1\"").arg(at)); - xml.tag("tick", tick); - xml.tag("val", tempo); - xml.etag("tempo"); - } - -//--------------------------------------------------------- -// TEvent::read -//--------------------------------------------------------- - -int TEvent::read(QDomNode node) - { - QDomElement e = node.toElement(); - int at = e.attribute("at","0").toInt(); - - node = node.firstChild(); - while (!node.isNull()) { - e = node.toElement(); - if (e.tagName() == "tick") - tick = e.text().toInt(); - else if (e.tagName() == "val") - tempo = e.text().toInt(); - else - printf("MusE:TEvent: unknown tag %s\n", e.tagName().toLatin1().data()); - node = node.nextSibling(); - } - return at; - } -} diff --git a/muse/al/tempo.h b/muse/al/tempo.h deleted file mode 100644 index e2342003..00000000 --- a/muse/al/tempo.h +++ /dev/null @@ -1,101 +0,0 @@ -//============================================================================= -// AL -// Audio Utility Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __TEMPO_H__ -#define __TEMPO_H__ - -namespace AL { - -#ifndef MAX_TICK -#define MAX_TICK (0x7fffffff/100) -#endif - -class Xml; - -//--------------------------------------------------------- -// Tempo Event -//--------------------------------------------------------- - -struct TEvent { - int tempo; - unsigned tick; // new tempo at tick - unsigned frame; // precomputed time for tick in sec - - int read(QDomNode); - void write(Xml&, int) const; - - TEvent() { } - TEvent(unsigned t, unsigned tk) { - tempo = t; - tick = tk; - frame = 0; - } - }; - -//--------------------------------------------------------- -// TempoList -//--------------------------------------------------------- - -typedef std::map > TEMPOLIST; -typedef TEMPOLIST::iterator iTEvent; -typedef TEMPOLIST::const_iterator ciTEvent; -typedef TEMPOLIST::reverse_iterator riTEvent; -typedef TEMPOLIST::const_reverse_iterator criTEvent; - -class TempoList : public TEMPOLIST { - int _tempoSN; // serial no to track tempo changes - bool useList; - int _tempo; // tempo if not using tempo list - int _globalTempo; // %percent 50-200% - - void normalize(); - void add(unsigned tick, int tempo); - void change(unsigned tick, int newTempo); - void del(iTEvent); - void del(unsigned tick); - - public: - TempoList(); - void clear(); - - void read(QDomNode); - void write(Xml&) const; - void dump() const; - - int tempo(unsigned tick) const; - unsigned tick2frame(unsigned tick, unsigned frame, int* sn) const; - unsigned tick2frame(unsigned tick, int* sn = 0) const; - unsigned frame2tick(unsigned frame, int* sn = 0) const; - unsigned frame2tick(unsigned frame, unsigned tick, int* sn) const; - int tempoSN() const { return _tempoSN; } - void setTempo(unsigned tick, int newTempo); - void addTempo(unsigned t, int tempo); - void delTempo(unsigned tick); - void changeTempo(unsigned tick, int newTempo); - bool setMasterFlag(unsigned tick, bool val); - int globalTempo() const { return _globalTempo; } - void setGlobalTempo(int val); - }; - -extern TempoList tempomap; -} - -#endif - diff --git a/muse/al/xml.cpp b/muse/al/xml.cpp deleted file mode 100644 index 7ae40b3e..00000000 --- a/muse/al/xml.cpp +++ /dev/null @@ -1,362 +0,0 @@ -//============================================================================= -// AL -// Audio Utility Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "xml.h" -#include "al.h" - -namespace AL { - -//--------------------------------------------------------- -// Xml -//--------------------------------------------------------- - -Xml::Xml() - { - level = 0; - } - -Xml::Xml(QIODevice* device) - : QTextStream(device) - { - setCodec("utf8"); - level = 0; - } - -//--------------------------------------------------------- -// putLevel -//--------------------------------------------------------- - -void Xml::putLevel() - { - for (int i = 0; i < level*2; ++i) - *this << ' '; - } - -//--------------------------------------------------------- -// header -//--------------------------------------------------------- - -void Xml::header() - { - *this << "" << endl; - } - -//--------------------------------------------------------- -// put -//--------------------------------------------------------- - -void Xml::put(const QString& s) - { - putLevel(); - *this << xmlString(s) << endl; - } - -//--------------------------------------------------------- -// stag -// -//--------------------------------------------------------- - -void Xml::stag(const QString& s) - { - putLevel(); - *this << '<' << s << '>' << endl; - ++level; - } - -//--------------------------------------------------------- -// etag -//--------------------------------------------------------- - -void Xml::etag(const char* s) - { - putLevel(); - *this << "' << endl; - --level; - } - -//--------------------------------------------------------- -// tagE -// -//--------------------------------------------------------- - -void Xml::tagE(const QString& s) - { - putLevel(); - *this << '<' << s << "/>" << endl; - } - -void Xml::tag(const char* name, int val) - { - putLevel(); - *this << '<' << name << '>' << val << "' << endl; - } - -void Xml::tag(const char* name, unsigned val) - { - putLevel(); - *this << '<' << name << '>' << val << "' << endl; - } - -void Xml::tag(const char* name, float val) - { - putLevel(); - *this << '<' << name << '>' << val << "' << endl; - } - -void Xml::tag(const char* name, const double& val) - { - putLevel(); - *this << '<' << name << '>' << val << "' << endl; - } - -void Xml::tag(const char* name, const QString& val) - { - putLevel(); - *this << "<" << name << ">" << xmlString(val) << "' << endl; - } - -void Xml::tag(const char* name, const QColor& color) - { - putLevel(); - *this << QString("<%1 r=\"%2\" g=\"%3\" b=\"%4\"/>") - .arg(name).arg(color.red()).arg(color.green()).arg(color.blue()) << endl; - } - -void Xml::tag(const char* name, const QWidget* g) - { - tag(name, QRect(g->pos(), g->size())); - } - -void Xml::tag(const char* name, const QRect& r) - { - putLevel(); - *this << "<" << name; - *this << QString(" x=\"%1\" y=\"%2\" w=\"%3\" h=\"%4\"/>") - .arg(r.x()).arg(r.y()).arg(r.width()).arg(r.height()) << endl; - } - -//--------------------------------------------------------- -// xmlString -//--------------------------------------------------------- - -QString Xml::xmlString(const QString& ss) - { - QString s(ss); - s.replace('&', "&"); - s.replace('<', "<"); - s.replace('>', ">"); - s.replace('\'', "'"); - s.replace('"', """); - return s; - } - -//--------------------------------------------------------- -// readGeometry -//--------------------------------------------------------- - -QRect readGeometry(QDomNode node) - { - QDomElement e = node.toElement(); - int x = e.attribute("x","0").toInt(); - int y = e.attribute("y","0").toInt(); - int w = e.attribute("w","50").toInt(); - int h = e.attribute("h","50").toInt(); - return QRect(x, y, w, h); - } - -//--------------------------------------------------------- -// writeProperties -//--------------------------------------------------------- - -void Xml::writeProperties(const QObject* o) - { - const QMetaObject* meta = o->metaObject(); - - // - // start from dummy "muse" property, assuming this is the - // first muse propertie in widget hierarchy - // - int from = meta->indexOfProperty("muse") + 1; - int n = meta->propertyCount(); - for (int i = from; i < n; ++i) { - QMetaProperty p = meta->property(i); - if (!p.isScriptable()) - continue; - const char* name = p.name(); - QVariant v = p.read(o); - switch(v.type()) { - case QVariant::Bool: - case QVariant::Int: - tag(name, v.toInt()); - break; - case QVariant::Double: - tag(name, v.toDouble()); - break; - case QVariant::String: - tag(name, v.toString()); - break; - case QVariant::Rect: - tag(name, v.toRect()); - break; - case QVariant::Point: - { - QPoint p = v.toPoint(); - putLevel(); - *this << "<" << name << QString(" x=\"%1\" y=\"%2\" />") - .arg(p.x()).arg(p.y()) << endl; - } - break; - - default: - printf("MusE:%s type %d not implemented\n", - meta->className(), v.type()); - break; - } - } - } - -//--------------------------------------------------------- -// readProperties -//--------------------------------------------------------- - -void readProperties(QObject* o, QDomNode node) - { - const QMetaObject* meta = o->metaObject(); - - QDomElement e = node.toElement(); - QString tag(e.tagName()); - int idx = meta->indexOfProperty(tag.toLatin1().data()); - if (idx == -1) { - printf("MusE:%s: unknown tag %s\n", - meta->className(), tag.toLatin1().data()); - return; - } - QMetaProperty p = meta->property(idx); - QVariant v; - switch(p.type()) { - case QVariant::Int: - case QVariant::Bool: - v.setValue(e.text().toInt()); - break; - case QVariant::Double: - v.setValue(e.text().toDouble()); - break; - case QVariant::String: - v.setValue(e.text()); - break; - case QVariant::Rect: - v.setValue(AL::readGeometry(node)); - break; - case QVariant::Point: - { - int x = e.attribute("x","0").toInt(); - int y = e.attribute("y","0").toInt(); - v.setValue(QPoint(x, y)); - } - break; - default: - printf("MusE:%s type %d not implemented\n", - meta->className(), p.type()); - return; - } - if (p.isWritable()) - p.write(o, v); - } - -//--------------------------------------------------------- -// dump -//--------------------------------------------------------- - -void Xml::dump(int len, const unsigned char* p) - { - putLevel(); - int col = 0; - setFieldWidth(5); - setNumberFlags(numberFlags() | QTextStream::ShowBase); - setIntegerBase(16); - for (int i = 0; i < len; ++i, ++col) { - if (col >= 16) { - setFieldWidth(0); - *this << endl; - col = 0; - putLevel(); - setFieldWidth(5); - } - *this << (p[i] & 0xff); - } - if (col) - *this << endl << dec; - setFieldWidth(0); - setIntegerBase(10); - } - -//--------------------------------------------------------- -// domError -//--------------------------------------------------------- - -void domError(QDomNode node) - { - QDomElement e = node.toElement(); - QString tag(e.tagName()); - QString s; - QDomNode dn(node); - while (!dn.parentNode().isNull()) { - dn = dn.parentNode(); - const QDomElement e = dn.toElement(); - const QString k(e.tagName()); - if (!s.isEmpty()) - s += ":"; - s += k; - } - fprintf(stderr, "%s: Unknown Node <%s>, type %d\n", - s.toLatin1().data(), tag.toLatin1().data(), node.nodeType()); - if (node.isText()) { - fprintf(stderr, " text node <%s>\n", node.toText().data().toLatin1().data()); - } - } - -//--------------------------------------------------------- -// domNotImplemented -//--------------------------------------------------------- - -void domNotImplemented(QDomNode node) - { - if (!AL::debugMsg) - return; - QDomElement e = node.toElement(); - QString tag(e.tagName()); - QString s; - QDomNode dn(node); - while (!dn.parentNode().isNull()) { - dn = dn.parentNode(); - const QDomElement e = dn.toElement(); - const QString k(e.tagName()); - if (!s.isEmpty()) - s += ":"; - s += k; - } - fprintf(stderr, "%s: Node not implemented: <%s>, type %d\n", - s.toLatin1().data(), tag.toLatin1().data(), node.nodeType()); - if (node.isText()) { - fprintf(stderr, " text node <%s>\n", node.toText().data().toLatin1().data()); - } - } -} - diff --git a/muse/al/xml.h b/muse/al/xml.h deleted file mode 100644 index 340d8190..00000000 --- a/muse/al/xml.h +++ /dev/null @@ -1,69 +0,0 @@ -//============================================================================= -// AL -// Audio Utility Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __XML_H__ -#define __XML_H__ - -namespace AL { - -//--------------------------------------------------------- -// Xml -//--------------------------------------------------------- - -class Xml : public QTextStream { - int level; - - public: - Xml(); - Xml(QIODevice*); - - void header(); - void putLevel(); - - void put(const QString&); - - void stag(const QString&); - void etag(const char*); - - void tagE(const QString&); - - void tag(const char* name, int); - void tag(const char* name, unsigned); - void tag(const char* name, const double& val); - void tag(const char* name, float val); - void tag(const char* name, const QString& s); - void tag(const char* name, const QColor& color); - void tag(const char* name, const QWidget* g); - void tag(const char* name, const QRect& r); - - void dump(int n, const unsigned char*); - void writeProperties(const QObject*); - - static QString xmlString(const QString&); - }; - -extern QRect readGeometry(QDomNode); -extern void readProperties(QObject* o, QDomNode node); -extern void domError(QDomNode node); -extern void domNotImplemented(QDomNode node); -} - -#endif - diff --git a/muse/all.h b/muse/all.h deleted file mode 100644 index 3ec26518..00000000 --- a/muse/all.h +++ /dev/null @@ -1,123 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __ALLQT_H__ -#define __ALLQT_H__ - -#include -#ifndef __APPLE__ -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - diff --git a/muse/awl/CMakeLists.txt b/muse/awl/CMakeLists.txt deleted file mode 100644 index 0544c82d..00000000 --- a/muse/awl/CMakeLists.txt +++ /dev/null @@ -1,112 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -include(${PROJECT_SOURCE_DIR}/pch.txt) - -MACRO(WRAP_CPP outfiles ) - FOREACH(it ${ARGN}) - SET(${outfiles} ${${outfiles}} ${it}.cpp) - ENDFOREACH(it) - ENDMACRO(WRAP_CPP) - -MACRO(WRAP_H outfiles ) - FOREACH(it ${ARGN}) - SET(${outfiles} ${${outfiles}} ${it}.h) - ENDFOREACH(it) - ENDMACRO(WRAP_H) - -set(mocs - aslider knob panknob slider volknob volslider floatentry - volentry panentry midivolentry midipanentry midipanknob - mslider midimslider midimeter combobox checkbox posedit - pitchedit poslabel pitchlabel tempolabel sigedit tcanvas - tempoedit drawbar - ) - -WRAP_H(mocH ${mocs}) -WRAP_CPP(mocCPP ${mocs}) - -QT4_WRAP_CPP (moc_headers ${mocH}) - -set(awl_src - awl.cpp utils.cpp ${mocCPP} ${moc_headers} - ) - -add_library ( - awl - STATIC - ${awl_src} - ${PROJECT_BINARY_DIR}/all.h.pch - ) - -set_target_properties( awl - PROPERTIES COMPILE_FLAGS "-fPIC -include ${PROJECT_BINARY_DIR}/all.h" - ) - -IF (APPLE) - message("Not yet able to build awlplugin under OS X.") -ELSE (APPLE) - - # - # build libawlplugin.so - # - QT4_WRAP_CPP (moc_awlplugin_headers - awlplugin.h - volknob.h knob.h aslider.h - slider.h volslider.h mslider.h - posedit.h poslabel.h - tempoedit.h tempolabel.h - combobox.h checkbox.h - panknob.h midipanknob.h - floatentry.h - drawbar.h - ) - - add_library ( awlplugin SHARED - awlplugin.cpp - volknob.cpp knob.cpp aslider.cpp - slider.cpp volslider.cpp mslider.cpp - posedit.cpp poslabel.cpp - tempoedit.cpp tempolabel.cpp - combobox.cpp checkbox.cpp - panknob.cpp midipanknob.cpp - floatentry.cpp - drawbar.cpp - ${moc_awlplugin_headers} - ${PROJECT_BINARY_DIR}/all-pic.h.pch - ) - - set_target_properties( awlplugin - PROPERTIES COMPILE_FLAGS - "-D_GNU_SOURCE -D_REENTRANT -DHAVE_CONFIG_H -DQT_PLUGIN -DQT_SHARED -DQT_NO_DEBUG -include ${PROJECT_BINARY_DIR}/all-pic.h" - ) - target_link_libraries( awlplugin - al pthread asound - ) - - install( TARGETS awlplugin DESTINATION ${QT_PLUGINS_DIR}/designer/ ) - - add_executable( ltest ltest.cpp ) - target_link_libraries ( ltest - awlplugin - ${QT_LIBRARIES} - ) - -ENDIF (APPLE) diff --git a/muse/awl/aslider.cpp b/muse/awl/aslider.cpp deleted file mode 100644 index 79a36b88..00000000 --- a/muse/awl/aslider.cpp +++ /dev/null @@ -1,241 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "fastlog.h" -#include "aslider.h" - -namespace Awl { - -//--------------------------------------------------------- -// AbstractSlider -//--------------------------------------------------------- - -AbstractSlider::AbstractSlider(QWidget* parent) - : QWidget(parent), _scaleColor(Qt::black), _scaleValueColor(Qt::blue) - { - _id = 0; - _value = 0.5; - _minValue = 0.0; - _maxValue = 1.0; - _lineStep = 0.1; - _pageStep = 0.2; - _center = false; - _invert = false; - _scaleWidth = 4; - _log = false; - _integer = false; - } - -//--------------------------------------------------------- -// setEnabled -//--------------------------------------------------------- - -void AbstractSlider::setEnabled(bool val) - { - QWidget::setEnabled(val); - update(); - } - -//--------------------------------------------------------- -// setCenter -//! If the center flag is set, a notch is drawn to -//! show the center position. -//--------------------------------------------------------- - -void AbstractSlider::setCenter(bool val) - { - if (val != _center) { - _center = val; - update(); - } - } - -//!-------------------------------------------------------- -// setScaleWidth -//--------------------------------------------------------- - -void AbstractSlider::setScaleWidth(int val) - { - if (val != _scaleWidth) { - _scaleWidth = val; - update(); - } - } - -//--------------------------------------------------------- -// setScaleColor -//--------------------------------------------------------- - -void AbstractSlider::setScaleColor(const QColor& c) - { - if (c != _scaleColor) { - _scaleColor = c; - update(); - } - } - -//--------------------------------------------------------- -// setScaleValueColor -//--------------------------------------------------------- - -void AbstractSlider::setScaleValueColor(const QColor& c) - { - if (c != _scaleValueColor) { - _scaleValueColor = c; - update(); - } - } - -//--------------------------------------------------------- -// wheelEvent -//--------------------------------------------------------- - -void AbstractSlider::wheelEvent(QWheelEvent* ev) - { - double div = 120.0; - if (ev->modifiers() & Qt::ShiftModifier) - _value += (ev->delta() * pageStep()) / div; - else - _value += (ev->delta() * lineStep()) / div; - if (_value < _minValue) - _value = _minValue; - else if (_value > _maxValue) - _value = _maxValue; - valueChange(); - update(); - } - -//--------------------------------------------------------- -// keyPressEvent -//--------------------------------------------------------- - -void AbstractSlider::keyPressEvent(QKeyEvent* ev) - { - double oval = _value; - - switch (ev->key()) { - case Qt::Key_Home: _value = _minValue; break; - case Qt::Key_End: _value = _maxValue; break; - case Qt::Key_Up: - case Qt::Key_Left: _value += lineStep(); break; - case Qt::Key_Down: - case Qt::Key_Right: _value -= lineStep(); break; - case Qt::Key_PageDown: _value -= pageStep(); break; - case Qt::Key_PageUp: _value += pageStep(); break; - default: - break; - } - if (_value < _minValue) - _value = _minValue; - else if (_value > _maxValue) - _value = _maxValue; - - if (oval != _value) { - if (_integer && (rint(oval) == rint(_value))) - return; - valueChange(); - update(); - } - } - -//--------------------------------------------------------- -// setValue -//--------------------------------------------------------- - -void AbstractSlider::setValue(double val) - { - if (_log) { - if (val == 0.0f) - _value = _minValue; - else { - _value = fast_log10(val) * 20.0f; - if (_value < _minValue) - _value = _minValue; - } - } - else if (_integer) - _value = rint(val); - else - _value = val; - update(); - } - -//--------------------------------------------------------- -// valueChange -//--------------------------------------------------------- - -void AbstractSlider::valueChange() - { - emit valueChanged(value(), _id); - } - -//--------------------------------------------------------- -// value -//--------------------------------------------------------- - -double AbstractSlider::value() const - { - if (_log) - return pow(10.0, _value*0.05f); - if (_integer) - return rint(_value); - return _value; - } - -//--------------------------------------------------------- -// minLogValue -//--------------------------------------------------------- - -//double AbstractSlider::minValue() const { -// return _log ? pow(10.0, _minValue*0.05f) : _minValue; -//} - -//--------------------------------------------------------- -// setMinLogValue -//--------------------------------------------------------- - -void AbstractSlider::setMinLogValue(double val) { - if (_log) { - if (val == 0.0f) _minValue = -100; - else _minValue = fast_log10(val) * 20.0f; - } - else _minValue = val; -} - -//--------------------------------------------------------- -// maxLogValue -//--------------------------------------------------------- - -//double AbstractSlider::maxValue() const { -// return _log ? pow(10.0, _maxValue*0.05f) : _maxValue; -//} - -//--------------------------------------------------------- -// setMaxLogValue -//--------------------------------------------------------- - -void AbstractSlider::setMaxLogValue(double val) { - if (_log) { - _maxValue = fast_log10(val) * 20.0f; - } - else _maxValue = val; -} - -} diff --git a/muse/awl/aslider.h b/muse/awl/aslider.h deleted file mode 100644 index 32fc89f9..00000000 --- a/muse/awl/aslider.h +++ /dev/null @@ -1,135 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AWLASLIDER_H__ -#define __AWLASLIDER_H__ - -namespace Awl { - -//--------------------------------------------------------- -// AbstractSlider -// -//! The AwlAbstractSlider class provides an double value -//! within a range -// -//! The class is designed as a common super class for -//! widgets like AwlKnob and AwlSlider -//! -//--------------------------------------------------------- - -class AbstractSlider : public QWidget { - - Q_OBJECT - Q_PROPERTY(double value READ value WRITE setValue) - Q_PROPERTY(bool center READ center WRITE setCenter) - Q_PROPERTY(bool invertedAppearance READ invertedAppearance WRITE setInvertedAppearance) - - Q_PROPERTY(int scaleWidth READ scaleWidth WRITE setScaleWidth) - Q_PROPERTY(QColor scaleColor READ scaleColor WRITE setScaleColor) - Q_PROPERTY(QColor scaleValueColor READ scaleValueColor WRITE setScaleValueColor) - - Q_PROPERTY(int id READ id WRITE setId) - - Q_PROPERTY(double minValue READ minValue WRITE setMinValue) - Q_PROPERTY(double maxValue READ maxValue WRITE setMaxValue) - Q_PROPERTY(double lineStep READ lineStep WRITE setLineStep) - Q_PROPERTY(double pageStep READ pageStep WRITE setPageStep) - Q_PROPERTY(bool log READ log WRITE setLog) - Q_PROPERTY(bool integer READ integer WRITE setInteger) - - protected: - int _id; - double _value; - double _minValue, _maxValue, _lineStep, _pageStep; - bool _center; - bool _invert; - int _scaleWidth; //! scale line width - QColor _scaleColor; - QColor _scaleValueColor; - bool _log; - bool _integer; - - virtual void wheelEvent(QWheelEvent*); - virtual void keyPressEvent(QKeyEvent*); - virtual void valueChange(); - - signals: - void valueChanged(double, int); - - public slots: - virtual void setValue(double v); - - public: - AbstractSlider(QWidget* parent = 0); - - virtual void setCenter(bool val); - virtual void setScaleWidth(int); - virtual void setScaleColor(const QColor&); - virtual void setScaleValueColor(const QColor&); - - //! return the center flag - bool center() const { return _center; } - - //! return the scale line width - int scaleWidth() const { return _scaleWidth; } - - //! return current scale color - QColor scaleColor() const { return _scaleColor; } - - //! return color of active scale part - QColor scaleValueColor() const { return _scaleValueColor; } - - virtual void setInvertedAppearance(bool val) { _invert = val; } - bool invertedAppearance() const { return _invert; } - - int id() const { return _id; } - void setId(int i) { _id = i; } - - virtual double value() const; - - double minValue() const { return _minValue; } - void setMinValue(double v) { _minValue = v; } - void setMinLogValue(double v); - double maxValue() const {return _maxValue; } - void setMaxValue(double v) { _maxValue = v; } - void setMaxLogValue(double v); - void setRange(double a, double b) { - setMinValue(a); - setMaxValue(b); - } - void setLogRange(double a, double b) { - setMinLogValue(a); - setMaxLogValue(b); - } - bool log() const { return _log; } - void setLog(bool v) { _log = v; } - bool integer() const { return _integer; } - void setInteger(bool v) { _integer = v; } - double lineStep() const { return _lineStep; } - void setLineStep(double v) { _lineStep = v; } - double pageStep() const { return _pageStep; } - void setPageStep(double f) { _pageStep = f; } - void setEnabled(bool val); - }; - -} - -#endif - diff --git a/muse/awl/awl.cpp b/muse/awl/awl.cpp deleted file mode 100644 index 87aac3e7..00000000 --- a/muse/awl/awl.cpp +++ /dev/null @@ -1,27 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "awl.h" - -namespace Awl { -// int sampleRate = 44100; -// int mtcType = 0; - }; - diff --git a/muse/awl/awl.h b/muse/awl/awl.h deleted file mode 100644 index 2019c4bd..00000000 --- a/muse/awl/awl.h +++ /dev/null @@ -1,30 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AWL_H__ -#define __AWL_H__ - -namespace Awl { -// extern int sampleRate; -// extern int mtcType; - }; - -#endif - diff --git a/muse/awl/awlplugin.cpp b/muse/awl/awlplugin.cpp deleted file mode 100644 index 43435f5e..00000000 --- a/muse/awl/awlplugin.cpp +++ /dev/null @@ -1,127 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "volknob.h" -#include "volslider.h" -#include "mslider.h" -#include "awlplugin.h" -#include "posedit.h" -#include "poslabel.h" -#include "tempoedit.h" -#include "tempolabel.h" -#include "checkbox.h" -#include "combobox.h" -#include "floatentry.h" -#include "panknob.h" -#include "midipanknob.h" -#include "drawbar.h" - -#include -#include - -QWidget* KnobPlugin::createWidget(QWidget* parent) - { - return new Awl::Knob(parent); - } -QWidget* VolKnobPlugin::createWidget(QWidget* parent) - { - return new Awl::VolKnob(parent); - } -QWidget* SliderPlugin::createWidget(QWidget* parent) - { - return new Awl::Slider(parent); - } -QWidget* VolSliderPlugin::createWidget(QWidget* parent) - { - return new Awl::VolSlider(parent); - } -QWidget* MeterSliderPlugin::createWidget(QWidget* parent) - { - return new Awl::MeterSlider(parent); - } -QWidget* PosEditPlugin::createWidget(QWidget* parent) - { - return new Awl::PosEdit(parent); - } -QWidget* PosLabelPlugin::createWidget(QWidget* parent) - { - return new Awl::PosLabel(parent); - } -QWidget* TempoEditPlugin::createWidget(QWidget* parent) - { - return new Awl::TempoEdit(parent); - } -QWidget* TempoLabelPlugin::createWidget(QWidget* parent) - { - return new Awl::TempoLabel(parent); - } -QWidget* CheckBoxPlugin::createWidget(QWidget* parent) - { - return new Awl::CheckBox(parent); - } -QWidget* ComboBoxPlugin::createWidget(QWidget* parent) - { - return new Awl::ComboBox(parent); - } -QWidget* FloatEntryPlugin::createWidget(QWidget* parent) - { - return new Awl::FloatEntry(parent); - } -QWidget* PanKnobPlugin::createWidget(QWidget* parent) - { - return new Awl::PanKnob(parent); - } -QWidget* MidiPanKnobPlugin::createWidget(QWidget* parent) - { - return new Awl::MidiPanKnob(parent); - } -QWidget* DrawbarPlugin::createWidget(QWidget* parent) - { - return new Awl::Drawbar(parent); - } - -//--------------------------------------------------------- -// customWidgets -//--------------------------------------------------------- - -QList AwlPlugins::customWidgets() const - { - QList plugins; - plugins - << new VolKnobPlugin - << new PanKnobPlugin - << new MidiPanKnobPlugin - << new KnobPlugin - << new SliderPlugin - << new VolSliderPlugin - << new MeterSliderPlugin - << new PosEditPlugin - << new PosLabelPlugin - << new TempoEditPlugin - << new TempoLabelPlugin - << new CheckBoxPlugin - << new ComboBoxPlugin - << new FloatEntryPlugin - << new DrawbarPlugin; - return plugins; - } - -Q_EXPORT_PLUGIN(AwlPlugins) - diff --git a/muse/awl/awlplugin.h b/muse/awl/awlplugin.h deleted file mode 100644 index 79b180fd..00000000 --- a/muse/awl/awlplugin.h +++ /dev/null @@ -1,273 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AWLPLUGIN_H__ -#define __AWLPLUGIN_H__ - -#include - -//--------------------------------------------------------- -// AwlPlugin -//--------------------------------------------------------- - -class AwlPlugin : public QDesignerCustomWidgetInterface { - Q_INTERFACES(QDesignerCustomWidgetInterface) - bool m_initialized; - - public: - AwlPlugin() : m_initialized(false) { } - bool isContainer() const { return false; } - bool isInitialized() const { return m_initialized; } - QIcon icon() const { return QIcon(); } - virtual QString codeTemplate() const { return QString(); } - QString whatsThis() const { return QString(); } - QString toolTip() const { return QString(); } - QString group() const { return "MusE Awl Widgets"; } - void initialize(QDesignerFormEditorInterface *) { - if (m_initialized) - return; - m_initialized = true; - } - }; - -//--------------------------------------------------------- -// KnobPlugin -//--------------------------------------------------------- - -class KnobPlugin : public QObject, public AwlPlugin { - Q_OBJECT - - public: - KnobPlugin(QObject* parent = 0) : QObject(parent) {} - QString includeFile() const { return QString("awl/knob.h"); } - QString name() const { return "Awl::Knob"; } - QWidget* createWidget(QWidget* parent); - }; - -//--------------------------------------------------------- -// VolKnobPlugin -//--------------------------------------------------------- - -class VolKnobPlugin : public QObject, public AwlPlugin { - Q_OBJECT - - public: - VolKnobPlugin(QObject* parent = 0) : QObject(parent) {} - QString includeFile() const { return "awl/volknob.h"; } - QString name() const { return "Awl::VolKnob"; } - QWidget* createWidget(QWidget* parent); - }; - -//--------------------------------------------------------- -// SliderPlugin -//--------------------------------------------------------- - -class SliderPlugin : public QObject, public AwlPlugin { - Q_OBJECT - - public: - SliderPlugin(QObject* parent = 0) : QObject(parent) {} - QString includeFile() const { return "awl/slider.h"; } - QString name() const { return "Awl::Slider"; } - QWidget* createWidget(QWidget* parent); - }; - -//--------------------------------------------------------- -// VolSliderPlugin -//--------------------------------------------------------- - -class VolSliderPlugin : public QObject, public AwlPlugin { - Q_OBJECT - - public: - VolSliderPlugin(QObject* parent = 0) : QObject(parent) {} - QString includeFile() const { return "awl/volslider.h"; } - QString name() const { return "Awl::VolSlider"; } - QWidget* createWidget(QWidget* parent); - }; - -//--------------------------------------------------------- -// MeterSliderPlugin -//--------------------------------------------------------- - -class MeterSliderPlugin : public QObject, public AwlPlugin { - Q_OBJECT - - public: - MeterSliderPlugin(QObject* parent = 0) : QObject(parent) {} - QString includeFile() const { return "awl/mslider.h"; } - QString name() const { return "Awl::MeterSlider"; } - QWidget* createWidget(QWidget* parent); - }; - -//--------------------------------------------------------- -// PosEditPlugin -//--------------------------------------------------------- - -class PosEditPlugin : public QObject, public AwlPlugin { - Q_OBJECT - - public: - PosEditPlugin(QObject* parent = 0) : QObject(parent) {} - QString includeFile() const { return "awl/posedit.h"; } - QString name() const { return "Awl::PosEdit"; } - QWidget* createWidget(QWidget* parent); - }; - -//--------------------------------------------------------- -// PosLabelPlugin -//--------------------------------------------------------- - -class PosLabelPlugin : public QObject, public AwlPlugin { - Q_OBJECT - - public: - PosLabelPlugin(QObject* parent = 0) : QObject(parent) {} - QString includeFile() const { return "awl/poslabel.h"; } - QString name() const { return "Awl::PosLabel"; } - QWidget* createWidget(QWidget* parent); - }; - -//--------------------------------------------------------- -// TempoEditPlugin -//--------------------------------------------------------- - -class TempoEditPlugin : public QObject, public AwlPlugin { - Q_OBJECT - - public: - TempoEditPlugin(QObject* parent = 0) : QObject(parent) {} - QString includeFile() const { return "awl/tempoedit.h"; } - QString name() const { return "Awl::TempoEdit"; } - QWidget* createWidget(QWidget* parent); - }; - -//--------------------------------------------------------- -// TempoLabelPlugin -//--------------------------------------------------------- - -class TempoLabelPlugin : public QObject, public AwlPlugin { - Q_OBJECT - - public: - TempoLabelPlugin(QObject* parent = 0) : QObject(parent) {} - QString includeFile() const { return "awl/tempolabel.h"; } - QString name() const { return "Awl::TempoLabel"; } - QWidget* createWidget(QWidget* parent); - }; - -//--------------------------------------------------------- -// CheckBoxPlugin -//--------------------------------------------------------- - -class CheckBoxPlugin : public QObject, public AwlPlugin { - Q_OBJECT - - public: - CheckBoxPlugin(QObject* parent = 0) : QObject(parent) {} - QString includeFile() const { return "awl/checkbox.h"; } - QString name() const { return "Awl::CheckBox"; } - QWidget* createWidget(QWidget* parent); - }; - -//--------------------------------------------------------- -// ComboBoxPlugin -//--------------------------------------------------------- - -class ComboBoxPlugin : public QObject, public AwlPlugin { - Q_OBJECT - - public: - ComboBoxPlugin(QObject* parent = 0) : QObject(parent) {} - QString includeFile() const { return "awl/combobox.h"; } - QString name() const { return "Awl::ComboBox"; } - QWidget* createWidget(QWidget* parent); - }; - -//--------------------------------------------------------- -// FloatEntryPlugin -//--------------------------------------------------------- - -class FloatEntryPlugin : public QObject, public AwlPlugin { - Q_OBJECT - - public: - FloatEntryPlugin(QObject* parent = 0) : QObject(parent) {} - QString includeFile() const { return "awl/floatentry.h"; } - QString name() const { return "Awl::FloatEntry"; } - QWidget* createWidget(QWidget* parent); - }; - -//--------------------------------------------------------- -// PanKnobPlugin -//--------------------------------------------------------- - -class PanKnobPlugin : public QObject, public AwlPlugin { - Q_OBJECT - - public: - PanKnobPlugin(QObject* parent = 0) : QObject(parent) {} - QString includeFile() const { return "awl/panknob.h"; } - QString name() const { return "Awl::PanKnob"; } - QWidget* createWidget(QWidget* parent); - }; - -//--------------------------------------------------------- -// MidiPanKnobPlugin -//--------------------------------------------------------- - -class MidiPanKnobPlugin : public QObject, public AwlPlugin { - Q_OBJECT - - public: - MidiPanKnobPlugin(QObject* parent = 0) : QObject(parent) {} - QString includeFile() const { return "awl/midipanknob.h"; } - QString name() const { return "Awl::MidiPanKnob"; } - QWidget* createWidget(QWidget* parent); - }; - -//--------------------------------------------------------- -// DrawbarPlugin -//--------------------------------------------------------- - -class DrawbarPlugin : public QObject, public AwlPlugin { - Q_OBJECT - - public: - DrawbarPlugin(QObject* parent = 0) : QObject(parent) {} - QString includeFile() const { return "awl/drawbar.h"; } - QString name() const { return "Awl::Drawbar"; } - QWidget* createWidget(QWidget* parent); - }; - -//--------------------------------------------------------- -// AwlPlugins -//--------------------------------------------------------- - -class AwlPlugins : public QObject, public QDesignerCustomWidgetCollectionInterface { - Q_OBJECT - Q_INTERFACES(QDesignerCustomWidgetCollectionInterface) - - public: - QList customWidgets() const; - }; - -#endif - diff --git a/muse/awl/checkbox.cpp b/muse/awl/checkbox.cpp deleted file mode 100644 index 6ef74386..00000000 --- a/muse/awl/checkbox.cpp +++ /dev/null @@ -1,36 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "checkbox.h" - -namespace Awl { - -//--------------------------------------------------------- -// CheckBox -//--------------------------------------------------------- - -CheckBox::CheckBox(QWidget* parent) - : QCheckBox(parent) - { - _id = 0; - connect(this, SIGNAL(toggled(bool)), SLOT(hasToggled(bool))); - } -} - diff --git a/muse/awl/checkbox.h b/muse/awl/checkbox.h deleted file mode 100644 index ac67fc57..00000000 --- a/muse/awl/checkbox.h +++ /dev/null @@ -1,55 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AWLCHECKBOX_H__ -#define __AWLCHECKBOX_H__ - -namespace Awl { - -//--------------------------------------------------------- -// CheckBox -//--------------------------------------------------------- - -class CheckBox : public QCheckBox { - Q_OBJECT - Q_PROPERTY(int id READ id WRITE setId) - - int _id; - - private slots: - void hasToggled(bool val) { - emit valueChanged(double(val), _id); - } - signals: - void valueChanged(double, int); - - public slots: - void setValue(double val) { setDown(val > 0.5f); } - - public: - CheckBox(QWidget* parent); - int id() const { return _id; } - void setId(int i) { _id = i; } - }; - -} - -#endif - diff --git a/muse/awl/clock.xpm b/muse/awl/clock.xpm deleted file mode 100644 index 3bf15e01..00000000 --- a/muse/awl/clock.xpm +++ /dev/null @@ -1,24 +0,0 @@ -/* XPM */ -static char *clock_xpm[]={ -"18 18 3 1", -". c None", -"# c #000000", -"a c #0000c0", -"...####a#####.....", -"..####.aaa.###....", -".####..aaa..###...", -".###...aaa...###..", -".#.....aaa....##..", -"##.....aaa.....##.", -"##.....aaa.....##.", -"###....aaaaaaaaa#.", -"###....aaaaaaaaa#.", -"##.....aaaaaaaaa#.", -"##............#.#.", -".##...........##..", -".##..........###..", -"..##........####..", -"...####...####....", -"....#########.....", -"......######......", -".................."}; diff --git a/muse/awl/combobox.cpp b/muse/awl/combobox.cpp deleted file mode 100644 index 58c82c54..00000000 --- a/muse/awl/combobox.cpp +++ /dev/null @@ -1,36 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "combobox.h" - -namespace Awl { - -//--------------------------------------------------------- -// ComboBox -//--------------------------------------------------------- - -ComboBox::ComboBox(QWidget* parent) - : QComboBox(parent) - { - _id = 0; - connect(this, SIGNAL(activated(int)), SLOT(activatedIntern(int))); - } -} - diff --git a/muse/awl/combobox.h b/muse/awl/combobox.h deleted file mode 100644 index d335d993..00000000 --- a/muse/awl/combobox.h +++ /dev/null @@ -1,55 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AWLCOMBOBOX_H__ -#define __AWLCOMBOBOX_H__ - -namespace Awl { - -//--------------------------------------------------------- -// ComboBox -//--------------------------------------------------------- - -class ComboBox : public QComboBox { - Q_OBJECT - Q_PROPERTY(int id READ id WRITE setId) - - int _id; - - private slots: - void activatedIntern(int val) { - emit valueChanged(double(val), _id); - } - - signals: - void valueChanged(double, int); - - public slots: - void setValue(double val) { setCurrentIndex(int(val)); } - - public: - ComboBox(QWidget* parent); - int id() const { return _id; } - void setId(int i) { _id = i; } - }; - -} - -#endif diff --git a/muse/awl/drawbar.cpp b/muse/awl/drawbar.cpp deleted file mode 100644 index 18525ded..00000000 --- a/muse/awl/drawbar.cpp +++ /dev/null @@ -1,130 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2007 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "drawbar.h" - -namespace Awl { - -#if 0 - } -#endif - -//--------------------------------------------------------- -// Drawbar -//--------------------------------------------------------- - -Drawbar::Drawbar(QWidget* parent) - : Slider(parent) - { - _sliderColor = Qt::darkGray; - setOrientation(Qt::Vertical); - setInvertedAppearance(true); - setRange(0.0, 8.0); - setLineStep(1.0); - setPageStep(1.0); - setInteger(true); - } - -Drawbar::~Drawbar() - { - } - -//--------------------------------------------------------- -// setSliderColor -//--------------------------------------------------------- - -void Drawbar::setSliderColor(const QColor& c) - { - if (c != _sliderColor) { - _sliderColor = c; - update(); - } - } - -//--------------------------------------------------------- -// paint -//--------------------------------------------------------- - -void Drawbar::paintEvent(QPaintEvent*) - { - int h = height(); - int w = width(); - - int kh = w * 2; // knob height - int kw = w; - int pixel = h - kh; - int ppos = int(pixel * value() / 8.0); - - QPainter p(this); - - QColor sc(Qt::darkGray); - QColor svc(Qt::gray); - - p.setBrush(svc); - - //--------------------------------------------------- - // draw scale - //--------------------------------------------------- - - int sx = (w + 9) / 10; - int sw = w - 2 * sx; - p.fillRect(sx, 0, sw, ppos, sc); - QPen pen(Qt::white); - int lw = 2; - pen.setWidth(lw); - p.setPen(pen); - int sx1 = sx + lw/2; - p.drawLine(sx1, 0, sx1, ppos); - int sx2 = sx + sw - lw/2; - p.drawLine(sx2, 0, sx2, ppos); - - //--------------------------------------------------- - // draw numbers - //--------------------------------------------------- - - p.save(); - p.setClipRect(QRect(sx, 0, sw, ppos)); - QFont f = p.font(); - f.setPixelSize(8); - - int ch = pixel / 8; - QString num("%1"); - for (int i = 0; i < 8; ++i) { - p.drawText(0, i * pixel / 8 - (pixel - ppos), w, ch, Qt::AlignCenter, num.arg(8-i)); - } - p.restore(); - - //--------------------------------------------------- - // draw slider - //--------------------------------------------------- - - p.fillRect(0, ppos, kw, kh, _sliderColor); - - pen.setWidth(1); - pen.setColor(Qt::black); - p.setPen(pen); - - int y1 = ppos + kh / 5 * 2; - int y2 = ppos + kh / 5 * 3; - p.drawLine(0, y1, kw, y1); - p.drawLine(0, y2, kw, y2); - } -} - diff --git a/muse/awl/drawbar.h b/muse/awl/drawbar.h deleted file mode 100644 index 4794b784..00000000 --- a/muse/awl/drawbar.h +++ /dev/null @@ -1,54 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2007 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AWLDRAWBAR_H__ -#define __AWLDRAWBAR_H__ - -#include "slider.h" - -namespace Awl { - -//--------------------------------------------------------- -// Drawbar -//--------------------------------------------------------- - -class Drawbar : public Slider { - Q_OBJECT - - Q_PROPERTY(QColor sliderColor READ sliderColor WRITE setSliderColor) - - virtual void paintEvent(QPaintEvent*); - - protected: - QColor _sliderColor; - - public: - Drawbar(QWidget* parent = 0); - ~Drawbar(); - - //! return current slider color - QColor sliderColor() const { return _sliderColor; } - void setSliderColor(const QColor&); - }; - -} - -#endif - diff --git a/muse/awl/fastlog.h b/muse/awl/fastlog.h deleted file mode 100644 index 90a85342..00000000 --- a/muse/awl/fastlog.h +++ /dev/null @@ -1,39 +0,0 @@ -/* Copyright unknown. Code by Laurent de Soras . - */ - -#ifndef __FASTLOG_H__ -#define __FASTLOG_H__ - -#include /* for HUGE_VAL */ - -static inline float fast_log2 (float val) - { - /* don't use reinterpret_cast<> because that prevents this - from being used by pure C code (for example, GnomeCanvasItems) - */ - union {float f; int i;} t; - t.f = val; - int* const exp_ptr = &t.i; - int x = *exp_ptr; - const int log_2 = ((x >> 23) & 255) - 128; - x &= ~(255 << 23); - x += 127 << 23; - *exp_ptr = x; - val = ((-1.0f/3) * t.f + 2) * t.f - 2.0f/3; - return (val + log_2); - } - -static inline float fast_log (const float val) - { - return (fast_log2 (val) * 0.69314718f); - } - -static inline float fast_log10 (const float val) - { - return fast_log2(val) / 3.312500f; - } - -static inline float minus_infinity() { return -HUGE_VAL; } - -#endif - diff --git a/muse/awl/floatentry.cpp b/muse/awl/floatentry.cpp deleted file mode 100644 index 7831614f..00000000 --- a/muse/awl/floatentry.cpp +++ /dev/null @@ -1,317 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "floatentry.h" -#include "fastlog.h" - -#define TIMER1 400 -#define TIMER2 200 -#define TIMEC 7 -#define TIMER3 100 -#define TIMEC2 20 -#define TIMER4 50 - -namespace Awl { - -//--------------------------------------------------------- -// FloatEntry -//--------------------------------------------------------- - -FloatEntry::FloatEntry(QWidget* parent) - : QLineEdit(parent) - { - _id = 0; - _minValue = 0.0; - _maxValue = 1.0; - _log = false; - evx = 1.0; - _precision = 3; - timer = new QTimer(this); - connect(timer, SIGNAL(timeout()), SLOT(repeat())); - _value = 0.0f; - connect(this, SIGNAL(returnPressed()), SLOT(endEdit())); - setCursor(QCursor(Qt::ArrowCursor)); - updateValue(); - } - -//--------------------------------------------------------- -// setString -//--------------------------------------------------------- - -bool FloatEntry::setString(double v) - { - QString s; -// if (v < _minValue || v > _maxValue) { - if (v < _minValue) { - if (!_specialText.isEmpty()) - setText(_specialText); - return true; - } - s.setNum(v, 'f', _precision); - if (!_suffix.isEmpty()) { - // s += " "; - s += _suffix; - } - setText(s); - return false; - } - -//--------------------------------------------------------- -// setSValue -//--------------------------------------------------------- - -void FloatEntry::setSValue(const QString& s) - { - bool ok; - double v = s.toFloat(&ok); - if (ok && (v != _value)) { - if (v < _minValue) - v = _minValue; - if (v > _maxValue) - v = _maxValue; - _value = v; - updateValue(); - valueChange(); - } - } - -//--------------------------------------------------------- -// valueChange -//--------------------------------------------------------- - -void FloatEntry::valueChange() - { - emit valueChanged(value(), _id); - } - -//--------------------------------------------------------- -// incValue -//--------------------------------------------------------- - -void FloatEntry::incValue(double) - { - if (_value + 1.0 < _maxValue) { - _value = _value + 1.0; - updateValue(); - valueChange(); - } - } - -//--------------------------------------------------------- -// decValue -//--------------------------------------------------------- - -void FloatEntry::decValue(double) - { - if (_value - 1.0 > _minValue) { - _value = _value - 1.0; - updateValue(); - valueChange(); - } - } - -//--------------------------------------------------------- -// setPrecision -//--------------------------------------------------------- - -void FloatEntry::setPrecision(int v) - { - _precision = v; - setString(_value); - } - -//--------------------------------------------------------- -// sizeHint -//--------------------------------------------------------- - -QSize FloatEntry::sizeHint() const - { - QFontMetrics fm = fontMetrics(); - int h = fm.height() + 4; - int n = _precision + 3; - int w = fm.width(QString("-0.")) + fm.width('0') * n + 6; - return QSize(w, h); - } - -//--------------------------------------------------------- -// endEdit -//--------------------------------------------------------- - -void FloatEntry::endEdit() - { - if (QLineEdit::isModified()) - setSValue(text()); - clearFocus(); - } - -//--------------------------------------------------------- -// mousePressEvent -//--------------------------------------------------------- - -void FloatEntry::mousePressEvent(QMouseEvent* event) - { - button = event->button(); - starty = event->y(); - evx = double(event->x()); - timecount = 0; - repeat(); - timer->start(TIMER1); - } - -//--------------------------------------------------------- -// wheelEvent -//--------------------------------------------------------- - -void FloatEntry::wheelEvent(QWheelEvent* event) - { - int delta = event->delta(); - - if (delta < 0) - decValue(-1.0); - else if (delta > 0) - incValue(1.0); - } - -//--------------------------------------------------------- -// repeat -//--------------------------------------------------------- - -void FloatEntry::repeat() - { - if (timecount == 1) { - ++timecount; - timer->stop(); - timer->start(TIMER2); - return; - } - ++timecount; - if (timecount == TIMEC) { - timer->stop(); - timer->start(TIMER3); - } - if (timecount == TIMEC2) { - timer->stop(); - timer->start(TIMER4); - } - - switch (button) { - case Qt::LeftButton: - return; - case Qt::MidButton: - decValue(evx); - break; - case Qt::RightButton: - incValue(evx); - break; - default: - break; - } - } - -//--------------------------------------------------------- -// mouseReleaseEvent -//--------------------------------------------------------- - -void FloatEntry::mouseReleaseEvent(QMouseEvent*) - { - button = Qt::NoButton; - timer->stop(); - } - -//--------------------------------------------------------- -// mouseMoveEvent -//--------------------------------------------------------- - -void FloatEntry::mouseMoveEvent(QMouseEvent*) - { - switch (button) { - case Qt::LeftButton: - break; - case Qt::MidButton: - break; - case Qt::RightButton: - break; - default: - break; - } - } - -//--------------------------------------------------------- -// mouseDoubleClickEvent -//--------------------------------------------------------- - -void FloatEntry::mouseDoubleClickEvent(QMouseEvent* event) - { - if (event->button() != Qt::LeftButton) { - mousePressEvent(event); - return; - } - setFocus(); - QLineEdit::setFrame(true); - update(); - } - -//--------------------------------------------------------- -// setValue -//--------------------------------------------------------- - -void FloatEntry::setValue(double val) - { - if (_log) { - if (val == 0.0f) - _value = _minValue; - else - _value = fast_log10(val) * 20.0f; - } - else - _value = val; - updateValue(); - } - -//--------------------------------------------------------- -// updateValue -//--------------------------------------------------------- - -void FloatEntry::updateValue() - { - if (setString(_value)) { - // value is out of range: - if (_value > _maxValue) - _value = _maxValue; - else if (_value < _minValue) - _value = _minValue; - } - } - -//--------------------------------------------------------- -// value -//--------------------------------------------------------- - -double FloatEntry::value() const - { - double rv; - if (_log) - rv = pow(10.0, _value * 0.05f); - else - rv = _value; - return rv; - } -} - diff --git a/muse/awl/floatentry.h b/muse/awl/floatentry.h deleted file mode 100644 index a90232a9..00000000 --- a/muse/awl/floatentry.h +++ /dev/null @@ -1,112 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __FLOATLABEL_H__ -#define __FLOATLABEL_H__ - -namespace Awl { - -//--------------------------------------------------------- -// FloatEntry -//--------------------------------------------------------- - -class FloatEntry : public QLineEdit { - Q_OBJECT - Q_PROPERTY(int id READ id WRITE setId) - - Q_PROPERTY(double minValue READ minValue WRITE setMinValue) - Q_PROPERTY(double maxValue READ maxValue WRITE setMaxValue) - - Q_PROPERTY(QString specialText READ specialText WRITE setSpecialText) - Q_PROPERTY(QString suffix READ suffix WRITE setSuffix) - Q_PROPERTY(int precision READ precision WRITE setPrecision) - Q_PROPERTY(bool log READ log WRITE setLog) - - int button; - int starty; - QTimer* timer; - double evx; - int timecount; - double _minValue, _maxValue; - QString _specialText; // text to show if value outside min,max - QString _suffix; - int _precision; - bool _log; - - virtual void wheelEvent(QWheelEvent*); - virtual void mousePressEvent(QMouseEvent*); - virtual void mouseMoveEvent(QMouseEvent*); - virtual void mouseDoubleClickEvent(QMouseEvent*); - virtual void mouseReleaseEvent(QMouseEvent*); - virtual void setSValue(const QString&); - virtual bool setString(double); - virtual void incValue(double); - virtual void decValue(double); - - void updateValue(); - - protected: - int _id; - double _value; - virtual void valueChange(); - - private slots: - void repeat(); - - protected slots: - void endEdit(); - - public slots: - virtual void setValue(double); - - signals: - void valueChanged(double, int); - - public: - FloatEntry(QWidget*); - virtual QSize sizeHint() const; - virtual double value() const; - int id() const { return _id; } - void setId(int i) { _id = i; } - double minValue() const { return _minValue; } - double maxValue() const { return _maxValue; } - void setMinValue(double v) { _minValue = v; } - void setMaxValue(double v) { _maxValue = v; } - void setRange(double a, double b) { - _minValue = a; - _maxValue = b; - } - int precision() const { return _precision; } - void setPrecision(int val); - QString specialText() const { return _specialText; } - void setSpecialText(const QString& s) { - _specialText = s; - update(); - } - QString suffix() const { return _suffix; } - void setSuffix(const QString& s) { _suffix = s; } - bool log() const { return _log; } - void setLog(bool v) { _log = v; } - }; - -} - -#endif - diff --git a/muse/awl/knob.cpp b/muse/awl/knob.cpp deleted file mode 100644 index ccc3988e..00000000 --- a/muse/awl/knob.cpp +++ /dev/null @@ -1,281 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "knob.h" - -namespace Awl { - -//--------------------------------------------------------- -// Knob -/// this is the AwlKnob contructor -//--------------------------------------------------------- - -Knob::Knob(QWidget* parent) - : AbstractSlider(parent) - { - _scaleSize = 270; - _markSize = 6; - _border = 2; - points = 0; - } - -//--------------------------------------------------------- -// Knob -//--------------------------------------------------------- - -Knob::~Knob() - { - if (points) - delete points; - } - -//--------------------------------------------------------- -// setText -//--------------------------------------------------------- - -void Knob::setText(const QString& s) - { - if (s != _text) { - _text = s; - update(); - } - } - -//--------------------------------------------------------- -// setScaleSize -//! set the scale size in degrees -// -//! the scale size is the max moving angle measured -//! in degrees -//--------------------------------------------------------- - -void Knob::setScaleSize(int val) - { - if (val != _scaleSize) { - _scaleSize = val; - update(); - } - } - -//--------------------------------------------------------- -// setMarkSize -//! set size of the center marker -//--------------------------------------------------------- - -void Knob::setMarkSize(int val) - { - if (val != _markSize) { - _markSize = val; - update(); - } - } - -//--------------------------------------------------------- -// setBorder -//! set border size -//--------------------------------------------------------- - -void Knob::setBorder(int val) - { - if (val != _border) { - _border = val; - update(); - } - } - -//--------------------------------------------------------- -// mousePressEvent -//--------------------------------------------------------- - -void Knob::mousePressEvent(QMouseEvent* ev) - { - startY = ev->y(); - emit sliderPressed(_id); - if (_center) { - QRect r(points->boundingRect().toRect()); - if (r.contains(ev->pos())) { - setValue(.0f); - valueChange(); - update(); - } - } - } - -//--------------------------------------------------------- -// mouseReleaseEvent -//--------------------------------------------------------- - -void Knob::mouseReleaseEvent(QMouseEvent*) - { - emit sliderReleased(_id); - } - -//--------------------------------------------------------- -// mouseMoveEvent -//--------------------------------------------------------- - -void Knob::mouseMoveEvent(QMouseEvent* ev) - { - int y = ev->y(); - double delta = (maxValue() - minValue()) / 100.0f; - if (delta == 0) - delta = 1; - _value += (startY - y) * delta; - if (_value < minValue()) - _value = _minValue; - else if (_value > maxValue()) - _value = _maxValue; - startY = y; - valueChange(); - update(); - } - -//--------------------------------------------------------- -// paintEvent -//--------------------------------------------------------- - -void Knob::paintEvent(QPaintEvent* ev) - { - QRect rr(ev->rect()); - QPainter p(this); - p.setRenderHint(QPainter::Antialiasing, true); - - int markSize2 = _markSize/2; - int restR = 360 - _scaleSize; - int w = width() - _scaleWidth - 2 * _border; - int h = height() - _scaleWidth/2 - 2 * _border; - - int xoffset, yoffset; - if (_center) - h -= _markSize; - if (w > h) { - yoffset = 0; - xoffset = (w - h) / 2; - w = h; - } - else { - xoffset = 0; - // yoffset = (h - w) / 2; // center - yoffset = h - w; // top align - h = w; - } - - int x = xoffset + _scaleWidth / 2 + _border; - int y = yoffset + _scaleWidth / 2 + _border + (_center ? _markSize+_scaleWidth/2 : 0); - QRectF ar(x, y, w, h); - - QColor sc(isEnabled() ? _scaleColor : Qt::gray); - QColor svc(isEnabled() ? _scaleValueColor : Qt::gray); - - //----------------------------------------- - // draw arc - //----------------------------------------- - - double dvalue = maxValue() - minValue(); - if (_center) { - int size = _scaleSize * 8; - if (_value >= 0) { - int offset = (restR-180) * 8; - int r1 = int (size * _value / maxValue()); - int r2 = size - r1; - p.setPen(QPen(sc, _scaleWidth)); - if (r2 > 1) - p.drawArc(ar, offset, r2); - if (size > 1) - p.drawArc(ar, 90*16, size); - if (r1 > 1) { - p.setPen(QPen(svc, _scaleWidth)); - p.drawArc(ar, offset+r2, r1); - } - } - else { - // int offset = (restR+180) * 8; - int r1 = int(size * _value / minValue()); - int r2 = size - r1; - - p.setPen(QPen(sc, _scaleWidth)); - if (size > 1) - p.drawArc(ar, (restR-180)*8, size); - if (r2 > 1) - p.drawArc(ar, 90 * 16 + r1, r2); - if (r1 > 1) { - p.setPen(QPen(svc, _scaleWidth)); - p.drawArc(ar, 90*16, r1); - } - } - } - else { - int offset = (180-restR) * 8; - int size = _scaleSize * 16; - int r1 = int(size * (_value - minValue()) / dvalue); - int r2 = size - r1; - if (r2 >= 1) { - p.setPen(QPen(sc, _scaleWidth)); - p.drawArc(ar, -offset, r2); - } - if (r1 >= 1) { - p.setPen(QPen(svc, _scaleWidth)); - p.drawArc(ar, r2-offset, r1); - } - } - - //----------------------------------------- - // draw pointer - //----------------------------------------- - - p.setPen(QPen(svc, _scaleWidth)); - double r1 = double(_scaleSize) * (_value-minValue()) / dvalue + 90.0 - + double(restR/2); - r1 = r1 / 180.0 * M_PI; // convert to radians - int rd = w/2; - int x1 = x + rd; - int y1 = y + rd; - int x2 = x1 + lrint(cos(r1) * double(rd)); - int y2 = y1 + lrint(sin(r1) * double(rd)); - p.drawLine(x1, y1, x2, y2); - - //----------------------------------------- - // draw center mark - //----------------------------------------- - - p.setPen(QPen(svc, 0)); - p.setBrush(svc); - if (_center) { - if (points) - delete points; - qreal x = ar.width() / 2 + ar.x(); - qreal y = ar.y() - _markSize - _scaleWidth/2; - points = new QPainterPath(QPointF(x - markSize2, y)); - points->lineTo(x + markSize2, y); - points->lineTo(x, _markSize + y); - points->closeSubpath(); - p.drawPath(*points); - } - - //----------------------------------------- - // draw text - //----------------------------------------- - - if (!_text.isEmpty()) { - p.drawText(rect(), Qt::AlignBottom | Qt::AlignHCenter, _text); - } - } -} - diff --git a/muse/awl/knob.h b/muse/awl/knob.h deleted file mode 100644 index b7be932b..00000000 --- a/muse/awl/knob.h +++ /dev/null @@ -1,85 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AWLKNOB_H__ -#define __AWLKNOB_H__ - -#include "aslider.h" -// #include - -namespace Awl { - -//--------------------------------------------------------- -// Knob -// -//! Base class of all dialer type input widgets. -// -//! xxxxxxxxx -//! -//--------------------------------------------------------- - -class Q_DECL_EXPORT Knob : public AbstractSlider { - Q_OBJECT - Q_PROPERTY(int scaleSize READ scaleSize WRITE setScaleSize) - Q_PROPERTY(int markSize READ markSize WRITE setMarkSize) - Q_PROPERTY(int border READ border WRITE setBorder) - Q_PROPERTY(QString text READ text WRITE setText) - - int _scaleSize; //! scale size in degrees - int _markSize; - int _border; - QPainterPath* points; - - virtual void paintEvent(QPaintEvent*); - virtual void mousePressEvent(QMouseEvent*); - virtual void mouseReleaseEvent(QMouseEvent*); - virtual void mouseMoveEvent(QMouseEvent*); - - protected: - int startY; - QString _text; - - signals: - void sliderPressed(int); - void sliderReleased(int); - - public: - Knob(QWidget* parent = 0); - ~Knob(); - virtual QSize sizeHint() const { return QSize(50, 50); } - virtual int heightForWidth(int w) { return w; } - - //! return text decoration - QString text() const { return _text; } - void setText(const QString& s); - - //! return scale size in degrees - int scaleSize() const { return _scaleSize; } - void setScaleSize(int val); - int markSize() const { return _markSize; } - void setMarkSize(int val); - int border() const { return _border; } - void setBorder(int val); - }; - -} - -#endif - diff --git a/muse/awl/ltest.cpp b/muse/awl/ltest.cpp deleted file mode 100644 index 55fe1749..00000000 --- a/muse/awl/ltest.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include -#include "awlplugin.h" - -//--------------------------------------------------------- -// main -//--------------------------------------------------------- - -int main(int /*argc*/, char* /*argv*/[]) - { - printf("Hello MusE\n"); - new KnobPlugin; - return 0; - } - diff --git a/muse/awl/metronom.xpm b/muse/awl/metronom.xpm deleted file mode 100644 index d16a2fb5..00000000 --- a/muse/awl/metronom.xpm +++ /dev/null @@ -1,24 +0,0 @@ -/* XPM */ -static char *metronom_xpm[]={ -"18 18 3 1", -". c None", -"# c #000000", -"a c #0000ff", -".........##.......", -".........##.......", -"........###....a..", -".......###.#..aaa.", -".......##..#.aaa..", -"......###...#aa...", -"......##....aaa...", -".....##....aaa....", -"....###...aaa#....", -"....##....aa.#....", -"...###...aa...#...", -"..###...aaa...#...", -"..##...aaa....#...", -".###...aaa.....#..", -".##....aa......#..", -"###.....a.......#.", -"##################", -"##################"}; diff --git a/muse/awl/midimeter.cpp b/muse/awl/midimeter.cpp deleted file mode 100644 index 312e5efe..00000000 --- a/muse/awl/midimeter.cpp +++ /dev/null @@ -1,137 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "fastlog.h" -#include "midimeter.h" - -namespace Awl { - -//--------------------------------------------------------- -// MidiMeter -//--------------------------------------------------------- - -MidiMeter::MidiMeter(QWidget* parent) - : Slider(parent) - { - setRange(0.0f, 127.0f); - setLineStep(2); - setPageStep(4); - - setScaleWidth(7); - _meterWidth = _scaleWidth * 3; - meterval = 0.0f; - } - -//--------------------------------------------------------- -// setMeterVal -// v - 0.0 < 1.0 -//--------------------------------------------------------- - -void MidiMeter::setMeterVal(double v) - { - if (v < 0.001) - v = .0f; - if (meterval != v) { - meterval = v; - update(); - } - } - -//--------------------------------------------------------- -// mouseDoubleClickEvent -//--------------------------------------------------------- - -void MidiMeter::mouseDoubleClickEvent(QMouseEvent*) - { - _value = _minValue; - valueChange(); - update(); - } - -//--------------------------------------------------------- -// paintEvent -//--------------------------------------------------------- - -void MidiMeter::paintEvent(QPaintEvent* ev) - { - int pixel = height() - sliderSize().height(); - double range = maxValue() - minValue(); - int ppos = int(pixel * (_value - minValue()) / range); - if (_invert) - ppos = pixel - ppos; - - QRect rr(ev->rect()); - QPainter p(this); - - QColor sc(isEnabled() ? _scaleColor : Qt::gray); - QColor svc(isEnabled() ? _scaleValueColor : Qt::gray); - p.setBrush(svc); - - int h = height(); - int kh = sliderSize().height(); - - //--------------------------------------------------- - // draw meter - //--------------------------------------------------- - - int mw = _meterWidth; - int x = 0; - - int y1 = kh / 2; - int y3 = h - y1; - - int mh = h - kh; - - p.setPen(Qt::white); - h = lrint(meterval * mh); - if (h < 0) - h = 0; - else if (h > mh) - h = mh; - p.fillRect(x, y3-h, mw, h, QBrush(0x00ff00)); // green - p.fillRect(x, y1, mw, mh-h, QBrush(0x007000)); // dark green - x += mw; - -#if 0 - //--------------------------------------------------- - // draw scale - //--------------------------------------------------- - - x += _scaleWidth/2; - - p.setPen(QPen(sc, _scaleWidth)); - p.drawLine(x, y1, x, y2); - p.setPen(QPen(svc, _scaleWidth)); - p.drawLine(x, y2, x, y3); - - //--------------------------------------------------- - // draw slider - //--------------------------------------------------- - - x += _scaleWidth/2; - p.setPen(QPen(svc, 0)); - points.setPoint(0, x, y2); - points.setPoint(1, x + kw, y2 - kh/2); - points.setPoint(2, x + kw, y2 + kh/2); - p.drawConvexPolygon(points); -#endif - } -} - diff --git a/muse/awl/midimeter.h b/muse/awl/midimeter.h deleted file mode 100644 index 2b0d3518..00000000 --- a/muse/awl/midimeter.h +++ /dev/null @@ -1,56 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AWLMIDIMETER_H__ -#define __AWLMIDIMETER_H__ - -#include "slider.h" - -namespace Awl { - -//--------------------------------------------------------- -// MidiMeter -//--------------------------------------------------------- - -class MidiMeter : public Slider - { - Q_PROPERTY(int meterWidth READ meterWidth WRITE setMeterWidth) - Q_OBJECT - - double meterval; - int _meterWidth; - - virtual void paintEvent(QPaintEvent*); - - protected: - virtual void mouseDoubleClickEvent(QMouseEvent*); - - public slots: - void setMeterVal(double value); - - public: - MidiMeter(QWidget* parent = 0); - int meterWidth() const { return _meterWidth; } - void setMeterWidth(int v) { _meterWidth = v; } - }; -} - -#endif - diff --git a/muse/awl/midimslider.cpp b/muse/awl/midimslider.cpp deleted file mode 100644 index 92325d4a..00000000 --- a/muse/awl/midimslider.cpp +++ /dev/null @@ -1,143 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "fastlog.h" -#include "midimslider.h" - -namespace Awl { - -//--------------------------------------------------------- -// MidiMeterSlider -//--------------------------------------------------------- - -MidiMeterSlider::MidiMeterSlider(QWidget* parent) - : Slider(parent) - { - setRange(0.0f, 127.0f); - setLineStep(2); - setPageStep(4); - - setScaleWidth(7); - _meterWidth = _scaleWidth * 3; - meterval = 0.0f; - } - -//--------------------------------------------------------- -// setMeterVal -// v - 0.0 < 1.0 -//--------------------------------------------------------- - -void MidiMeterSlider::setMeterVal(double v) - { - if (v < 0.001) - v = .0f; - if (meterval != v) { - meterval = v; - update(); - } - } - -//--------------------------------------------------------- -// mouseDoubleClickEvent -//--------------------------------------------------------- - -void MidiMeterSlider::mouseDoubleClickEvent(QMouseEvent*) - { - _value = _minValue; - valueChange(); - update(); - } - -//--------------------------------------------------------- -// drawScale -//--------------------------------------------------------- - -void MidiMeterSlider::paintEvent(QPaintEvent* ev) - { - int pixel = height() - sliderSize().height(); - double range = maxValue() - minValue(); - int ppos = int(pixel * (_value - minValue()) / range); - if (_invert) - ppos = pixel - ppos; - - QRect rr(ev->rect()); - QPainter p(this); - - QColor sc(isEnabled() ? _scaleColor : Qt::gray); - QColor svc(isEnabled() ? _scaleValueColor : Qt::gray); - p.setBrush(svc); - - int h = height(); -// int kw = sliderSize().width(); - int kh = sliderSize().height(); - - //--------------------------------------------------- - // draw meter - //--------------------------------------------------- - - int mw = _meterWidth; - int x = 0; - - int y1 = kh / 2; - int y2 = h - (ppos + y1); - int y3 = h - y1; - - int mh = h - kh; - - p.setPen(Qt::white); - h = lrint(meterval * mh); - if (h < 0) - h = 0; - else if (h > mh) - h = mh; - //QColor qc; - //float v = 5.0/6.0 + 1.0/6.0 * meterval; - //qc.setHsvF(1.0/3.0, 1.0, (v<=1.0?v:1.0)); - p.fillRect(x, y3-h, mw, h, QBrush(0x00ff00)); // green - //p.fillRect(x, y3-h, mw, h, QBrush(qc)); // green get a bit darker - p.fillRect(x, y1, mw, mh-h, QBrush(0x007000)); // dark green - x += mw; - - //--------------------------------------------------- - // draw scale - //--------------------------------------------------- - -// x += _scaleWidth/2; - -// p.setPen(QPen(sc, _scaleWidth)); -// p.drawLine(x, y1, x, y2); -// p.setPen(QPen(svc, _scaleWidth)); -// p.drawLine(x, y2, x, y3); - - p.fillRect(x, y1, _scaleWidth, y2-y1, sc); - p.fillRect(x, y2, _scaleWidth, y3-y2, svc); - - //--------------------------------------------------- - // draw slider - //--------------------------------------------------- - - x += _scaleWidth/2; - p.setPen(QPen(svc, 0)); - p.translate(QPointF(x, y2)); - p.setRenderHint(QPainter::Antialiasing, true); - p.drawPath(*points); - } -} - diff --git a/muse/awl/midimslider.h b/muse/awl/midimslider.h deleted file mode 100644 index a2a2bdaf..00000000 --- a/muse/awl/midimslider.h +++ /dev/null @@ -1,56 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AWLMIDIMSLIDER_H__ -#define __AWLMIDIMSLIDER_H__ - -#include "slider.h" - -namespace Awl { - -//--------------------------------------------------------- -// MidiMeterSlider -//--------------------------------------------------------- - -class MidiMeterSlider : public Slider - { - Q_PROPERTY(int meterWidth READ meterWidth WRITE setMeterWidth) - Q_OBJECT - - double meterval; - int _meterWidth; - - virtual void paintEvent(QPaintEvent*); - - protected: - virtual void mouseDoubleClickEvent(QMouseEvent*); - - public slots: - void setMeterVal(double value); - - public: - MidiMeterSlider(QWidget* parent = 0); - int meterWidth() const { return _meterWidth; } - void setMeterWidth(int v) { _meterWidth = v; } - }; -} - -#endif - diff --git a/muse/awl/midipanentry.cpp b/muse/awl/midipanentry.cpp deleted file mode 100644 index 5e4e4f9a..00000000 --- a/muse/awl/midipanentry.cpp +++ /dev/null @@ -1,47 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "fastlog.h" -#include "midipanentry.h" - -namespace Awl { - -//--------------------------------------------------------- -// MidiPanEntry -//--------------------------------------------------------- - -MidiPanEntry::MidiPanEntry(QWidget* parent) - : FloatEntry(parent) - { - setRange(-64.0f, 63.0f); - setFrame(true); - setPrecision(0); - } - -//--------------------------------------------------------- -// valueChange -//--------------------------------------------------------- - -void MidiPanEntry::valueChange() - { - emit valueChanged(_value + 64.0f, _id); - } -} - diff --git a/muse/awl/midipanentry.h b/muse/awl/midipanentry.h deleted file mode 100644 index 25f7333a..00000000 --- a/muse/awl/midipanentry.h +++ /dev/null @@ -1,48 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AWLMIDIPANENTRY_H__ -#define __AWLMIDIPANENTRY_H__ - -#include "floatentry.h" - -namespace Awl { - -//--------------------------------------------------------- -// MidiPanEntry -//--------------------------------------------------------- - -class MidiPanEntry : public FloatEntry { - Q_OBJECT - - protected: - virtual void valueChange(); - - public slots: - virtual void setValue(double v) { - FloatEntry::setValue(v - 64.0f); - } - public: - MidiPanEntry(QWidget* parent); - virtual double value() const { return _value + 64.0f; } - }; -} - -#endif diff --git a/muse/awl/midipanknob.cpp b/muse/awl/midipanknob.cpp deleted file mode 100644 index a2530119..00000000 --- a/muse/awl/midipanknob.cpp +++ /dev/null @@ -1,37 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "midipanknob.h" - -namespace Awl { - -//--------------------------------------------------------- -// MidiPanKnob -//--------------------------------------------------------- - -MidiPanKnob::MidiPanKnob(QWidget* parent) - : Knob(parent) - { - setCenter(true); - setRange(-64.0f, 63.0f); - setLineStep(1.0f); - setPageStep(10.0f); - } -} diff --git a/muse/awl/midipanknob.h b/muse/awl/midipanknob.h deleted file mode 100644 index 9b628e6b..00000000 --- a/muse/awl/midipanknob.h +++ /dev/null @@ -1,55 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AWLMIDIPANKNOB_H__ -#define __AWLMIDIPANKNOB_H__ - -#include "knob.h" - -namespace Awl { - -//--------------------------------------------------------- -// MidiPanKnob -//! MidiPan Knob entry widget -// -//! This widget implements a centered floating point -//! knob used to adjust the pan position in an audio -//! mixer. -//--------------------------------------------------------- - -class MidiPanKnob : public Knob { - Q_OBJECT - - virtual void valueChange() { - emit valueChanged(_value + 64.0f, _id); - } - - public slots: - virtual void setValue(double v) { - AbstractSlider::setValue(v - 64.0f); - } - public: - MidiPanKnob(QWidget* parent = 0); - virtual double value() const { return _value + 64.0f; } - }; -} - -#endif - diff --git a/muse/awl/midivolentry.cpp b/muse/awl/midivolentry.cpp deleted file mode 100644 index 0b74afcc..00000000 --- a/muse/awl/midivolentry.cpp +++ /dev/null @@ -1,50 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "fastlog.h" -#include "midivolentry.h" - -namespace Awl { - -//--------------------------------------------------------- -// MidiVolEntry -//--------------------------------------------------------- - -MidiVolEntry::MidiVolEntry(QWidget* parent) - : FloatEntry(parent) - { - _max = 127; - setRange(-98.0f, 0.0f); - setSpecialText(tr("off")); - setSuffix(tr("db")); - setFrame(true); - setPrecision(0); - } - -//--------------------------------------------------------- -// setValue -//--------------------------------------------------------- - -void MidiVolEntry::setValue(double v) - { - FloatEntry::setValue(-fast_log10(double(_max*_max)/(v*v))*20.0f); - } -} - diff --git a/muse/awl/midivolentry.h b/muse/awl/midivolentry.h deleted file mode 100644 index 99155877..00000000 --- a/muse/awl/midivolentry.h +++ /dev/null @@ -1,47 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AWLMIDIVOLENTRY_H__ -#define __AWLMIDIVOLENTRY_H__ - -#include "floatentry.h" - -namespace Awl { - -//--------------------------------------------------------- -// MidiVolEntry -//--------------------------------------------------------- - -class MidiVolEntry : public FloatEntry { - Q_OBJECT - Q_PROPERTY(int max READ max WRITE setMax) - - int _max; - - public: - virtual void setValue(double); - void setMax(int val) { _max = val; } - int max() const { return _max; } - MidiVolEntry(QWidget* parent); - }; -} - -#endif - diff --git a/muse/awl/mslider.cpp b/muse/awl/mslider.cpp deleted file mode 100644 index 63c3ea4e..00000000 --- a/muse/awl/mslider.cpp +++ /dev/null @@ -1,273 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "fastlog.h" - -#include "mslider.h" - -namespace Awl { - -//--------------------------------------------------------- -// MeterSlider -//--------------------------------------------------------- - -MeterSlider::MeterSlider(QWidget* parent) - : VolSlider(parent) - { - setAttribute(Qt::WA_NoSystemBackground, true); -// setAutoFillBackground(true); - _channel = 0; - yellowScale = -16; //-10; - redScale = 0; - _meterWidth = _scaleWidth * 3; - setChannel(1); - setMinimumHeight(50); - } - -//--------------------------------------------------------- -// sizeHint -//--------------------------------------------------------- - -QSize MeterSlider::sizeHint() const - { - int w = _meterWidth + _scaleWidth + _scaleWidth + 30; - return orientation() == Qt::Vertical ? QSize(w, 200) : QSize(200, w); - } - -//--------------------------------------------------------- -// setChannel -//--------------------------------------------------------- - -void MeterSlider::setChannel(int n) - { - if (n > _channel) { - for (int i = _channel; i < n; ++i) { - meterval.push_back(0.0f); - meterPeak.push_back(0.0f); - } - } - _channel = n; - } - -//--------------------------------------------------------- -// setMeterVal -//--------------------------------------------------------- - -void MeterSlider::setMeterVal(int channel, double v, double peak) - { - bool mustRedraw = false; - if (meterval[channel] != v) { - meterval[channel] = v; - mustRedraw = true; - } - if (peak != meterPeak[channel]) { - meterPeak[channel] = peak; - mustRedraw = true; - } - if (mustRedraw) { - int kh = sliderSize().height(); - int mh = height() - kh; - update(20, kh / 2, _meterWidth-1, mh); - } - } - -//--------------------------------------------------------- -// resetPeaks -// reset peak and overflow indicator -//--------------------------------------------------------- - -void MeterSlider::resetPeaks() - { - for (int i = 0; i < _channel; ++i) - meterPeak[i] = meterval[i]; - update(); - } - -//--------------------------------------------------------- -// resizeEvent -//--------------------------------------------------------- - -void MeterSlider::resizeEvent(QResizeEvent* /*ev*/) - { - int h = height(); - int kh = sliderSize().height(); - int mh = h - kh; - int mw = _meterWidth / _channel; - - onPm = QPixmap(mw, mh); - offPm = QPixmap(mw, mh); - - double range = maxValue() - minValue(); - int h1 = mh - lrint((maxValue() - redScale) * mh / range); - int h2 = mh - lrint((maxValue() - yellowScale) * mh / range); - - QColor yellowRed; - yellowRed.setHsv(QColor(Qt::yellow).hue()-8, - QColor(Qt::yellow).saturation(), - QColor(Qt::yellow).value()); - QColor yellRedRed; - yellRedRed.setHsv(QColor(Qt::yellow).hue()-16, - QColor(Qt::yellow).saturation(), - QColor(Qt::yellow).value()); - - QLinearGradient linearGrad(QPointF(0, 0), QPointF(0, mh)); - linearGrad.setColorAt(0, Qt::red); - linearGrad.setColorAt(1-(double)(h1-5)/(double)mh, yellRedRed); - linearGrad.setColorAt(1-(double)(h1-6)/(double)mh, yellowRed); - linearGrad.setColorAt(1-(double)h2/(double)mh, Qt::yellow); - linearGrad.setColorAt(1, Qt::green); - - QColor darkYellowRed; - darkYellowRed.setHsv(QColor(Qt::darkYellow).hue()-8, - QColor(Qt::darkYellow).saturation(), - QColor(Qt::darkYellow).value()); - QColor darkYellRedRed; - darkYellRedRed.setHsv(QColor(Qt::darkYellow).hue()-16, - QColor(Qt::darkYellow).saturation(), - QColor(Qt::darkYellow).value()); - QLinearGradient linearDarkGrad(QPointF(0, 0), QPointF(0, mh)); - linearDarkGrad.setColorAt(0, Qt::darkRed); - linearDarkGrad.setColorAt(1-(double)(h1-5)/(double)mh, darkYellRedRed); - linearDarkGrad.setColorAt(1-(double)(h1-6)/(double)mh, darkYellowRed); - linearDarkGrad.setColorAt(1-(double)h2/(double)mh, Qt::darkYellow); - linearDarkGrad.setColorAt(1, Qt::darkGreen); - - QPainter p; - p.begin(&onPm); - p.fillRect(0, 0, mw, mh, linearGrad); - p.end(); - p.begin(&offPm); - p.fillRect(0, 0, mw, mh, linearDarkGrad); - p.end(); - } - -//--------------------------------------------------------- -// paintEvent -//--------------------------------------------------------- - -void MeterSlider::paintEvent(QPaintEvent* ev) - { - int pixel = height() - sliderSize().height(); - double range = maxValue() - minValue(); - int ppos = int(pixel * (_value - minValue()) / range); - if (_invert) - ppos = pixel - ppos; - - QPainter p(this); - p.setRenderHint(QPainter::Antialiasing, false); - - int h = height(); - int kh = sliderSize().height(); - - //--------------------------------------------------- - // draw meter - //--------------------------------------------------- - - int mw = _meterWidth / _channel; - int x = 20; - int y1 = kh / 2; - int y3 = h - y1; - - int mh = h - kh; - p.setPen(QPen(Qt::white, 2)); - - for (int i = 0; i < _channel; ++i) { - int h = mh - (lrint(fast_log10(meterval[i]) * -20.0f * mh / range)); - if (h < 0) - h = 0; - else if (h > mh) - h = mh; - - p.drawPixmap(x, y1+mh-h, mw, h, onPm, 0, y1+mh-h, mw, h); - p.drawPixmap(x, y1, mw, mh-h, offPm, 0, y1, mw, mh-h); - - //--------------------------------------------------- - // draw peak line - //--------------------------------------------------- - - h = mh - (lrint(fast_log10(meterPeak[i]) * -20.0f * mh / range)); - if (h > mh) - h = mh; - if (h > 0) - p.drawLine(x, y3-h, x+mw, y3-h); - - x += mw; - } - - // optimize common case: - if (ev->rect() == QRect(20, kh/2, _meterWidth-1, mh)) - return; - - QColor sc(isEnabled() ? _scaleColor : Qt::gray); - QColor svc(isEnabled() ? _scaleValueColor : Qt::gray); - p.setBrush(svc); - - //--------------------------------------------------- - // draw scale - //--------------------------------------------------- - - int y2 = h - (ppos + y1); - p.fillRect(x, y1, _scaleWidth, y2-y1, sc); - p.fillRect(x, y2, _scaleWidth, y3-y2, svc); - - //--------------------------------------------------- - // draw tick marks - //--------------------------------------------------- - - QFont f(p.font()); - f.setPointSize(6); - p.setFont(f); - p.setPen(QPen(Qt::darkGray, 2)); - QFontMetrics fm(f); - int xt = 20 - fm.width("00") - 5; - - QString s; - for (int i = 10; i < 70; i += 10) { - h = y1 + lrint(i * mh / range); - s.setNum(i - 10); - p.drawText(xt, h - 3, s); - p.drawLine(15, h, 20, h); - } - - //--------------------------------------------------- - // draw slider - //--------------------------------------------------- - - x += _scaleWidth/2; - p.setPen(QPen(svc, 0)); - p.translate(QPointF(x, y2)); - p.setRenderHint(QPainter::Antialiasing, true); - p.drawPath(*points); - } - -//--------------------------------------------------------- -// mousePressEvent -//--------------------------------------------------------- - -void MeterSlider::mousePressEvent(QMouseEvent* ev) - { - if (ev->pos().x() < _meterWidth) { - emit meterClicked(); - return; - } - VolSlider::mousePressEvent(ev); - } -} - diff --git a/muse/awl/mslider.h b/muse/awl/mslider.h deleted file mode 100644 index 4ae888b1..00000000 --- a/muse/awl/mslider.h +++ /dev/null @@ -1,68 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AWLMSLIDER_H__ -#define __AWLMSLIDER_H__ - -#include "volslider.h" - -namespace Awl { - -//--------------------------------------------------------- -// MeterSlider -// volume slider with meter display -//--------------------------------------------------------- - -class MeterSlider : public VolSlider - { - Q_PROPERTY(int meterWidth READ meterWidth WRITE setMeterWidth) - Q_PROPERTY(int channel READ channel WRITE setChannel) - Q_OBJECT - - int _channel; - std::vector meterval; - std::vector meterPeak; - int yellowScale, redScale; - int _meterWidth; - QPixmap onPm, offPm; // cached pixmap values - - virtual void mousePressEvent(QMouseEvent*); - virtual void paintEvent(QPaintEvent*); - virtual void resizeEvent(QResizeEvent*); - - signals: - void meterClicked(); - - public slots: - void resetPeaks(); - void setMeterVal(int channel, double value, double peak); - - public: - MeterSlider(QWidget* parent = 0); - void setChannel(int n); - int channel() const { return _channel; } - int meterWidth() const { return _meterWidth; } - void setMeterWidth(int v) { _meterWidth = v; } - virtual QSize sizeHint() const; - }; -} - -#endif - diff --git a/muse/awl/panentry.cpp b/muse/awl/panentry.cpp deleted file mode 100644 index 0cc098c2..00000000 --- a/muse/awl/panentry.cpp +++ /dev/null @@ -1,35 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "panentry.h" - -namespace Awl { - -//--------------------------------------------------------- -// PanEntry -//--------------------------------------------------------- - -PanEntry::PanEntry(QWidget* parent) - : FloatEntry(parent) - { - setRange(-1.0, 1.0); - } -} - diff --git a/muse/awl/panentry.h b/muse/awl/panentry.h deleted file mode 100644 index 01689580..00000000 --- a/muse/awl/panentry.h +++ /dev/null @@ -1,40 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AWLPANENTRY_H__ -#define __AWLPANENTRY_H__ - -#include "floatentry.h" - -namespace Awl { - -//--------------------------------------------------------- -// PanEntry -//--------------------------------------------------------- - -class PanEntry : public FloatEntry { - Q_OBJECT - - public: - PanEntry(QWidget*); - }; -} - -#endif diff --git a/muse/awl/panknob.cpp b/muse/awl/panknob.cpp deleted file mode 100644 index 083aa2e0..00000000 --- a/muse/awl/panknob.cpp +++ /dev/null @@ -1,38 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "panknob.h" - -namespace Awl { - -//--------------------------------------------------------- -// PanKnob -//--------------------------------------------------------- - -PanKnob::PanKnob(QWidget* parent) - : Knob(parent) - { - setCenter(true); - setRange(-1.0f, 1.0f); - setLineStep(0.01f); - setPageStep(0.1f); - } -} - diff --git a/muse/awl/panknob.h b/muse/awl/panknob.h deleted file mode 100644 index d8bf2d87..00000000 --- a/muse/awl/panknob.h +++ /dev/null @@ -1,46 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AWLPANKNOB_H__ -#define __AWLPANKNOB_H__ - -#include "knob.h" - -namespace Awl { - -//--------------------------------------------------------- -// PanKnob -//! Pan Knob entry widget -// -//! This widget implements a centered floating point -//! knob used to adjust the pan position in an audio -//! mixer. -//--------------------------------------------------------- - -class PanKnob : public Knob { - Q_OBJECT - - public: - PanKnob(QWidget* parent = 0); - }; -} - -#endif - diff --git a/muse/awl/pitchedit.cpp b/muse/awl/pitchedit.cpp deleted file mode 100644 index 18136074..00000000 --- a/muse/awl/pitchedit.cpp +++ /dev/null @@ -1,89 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "pitchedit.h" -#include "utils.h" - -namespace Awl { - -//--------------------------------------------------------- -// PitchEdit -//--------------------------------------------------------- - -PitchEdit::PitchEdit(QWidget* parent) - : QSpinBox(parent) - { - setRange(0, 127); - deltaMode = false; - } - -//--------------------------------------------------------- -// keyPressEvent -//--------------------------------------------------------- - -void PitchEdit::keyPressEvent(QKeyEvent* ev) - { - if (ev->key() == Qt::Key_Return) - emit returnPressed(); - else if (ev->key() == Qt::Key_Escape) - emit escapePressed(); - } - -//--------------------------------------------------------- -// mapValueToText -//--------------------------------------------------------- - -QString PitchEdit::mapValueToText(int v) - { - if (deltaMode) { - QString s; - s.setNum(v); - return s; - } - else - return pitch2string(v); - } - -//--------------------------------------------------------- -// mapTextToValue -//--------------------------------------------------------- - -int PitchEdit::mapTextToValue(bool* ok) - { -printf("AwlPitchEdit: mapTextToValue: not impl.\n"); - if (ok) - *ok = false; - return 0; - } - -//--------------------------------------------------------- -// setDeltaMode -//--------------------------------------------------------- - -void PitchEdit::setDeltaMode(bool val) - { - deltaMode = val; - if (deltaMode) - setRange(-127, 127); - else - setRange(0, 127); - } -} - diff --git a/muse/awl/pitchedit.h b/muse/awl/pitchedit.h deleted file mode 100644 index dd0ba4c7..00000000 --- a/muse/awl/pitchedit.h +++ /dev/null @@ -1,50 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AWLPITCHEDIT_H__ -#define __AWLPITCHEDIT_H__ - -namespace Awl { - -//--------------------------------------------------------- -// PitchEdit -//--------------------------------------------------------- - -class PitchEdit : public QSpinBox { - Q_OBJECT - - bool deltaMode; - - protected: - virtual QString mapValueToText(int v); - virtual int mapTextToValue(bool* ok); - virtual void keyPressEvent(QKeyEvent*); - - signals: - void returnPressed(); - void escapePressed(); - - public: - PitchEdit(QWidget* parent); - void setDeltaMode(bool); - }; -} - -#endif diff --git a/muse/awl/pitchlabel.cpp b/muse/awl/pitchlabel.cpp deleted file mode 100644 index 1d7149f6..00000000 --- a/muse/awl/pitchlabel.cpp +++ /dev/null @@ -1,106 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "pitchedit.h" -#include "pitchlabel.h" -#include "utils.h" - -namespace Awl { - -//--------------------------------------------------------- -// PitchLabel -//--------------------------------------------------------- - -PitchLabel::PitchLabel() - { - _pitchMode = true; - _value = -1; - setFrameStyle(WinPanel | Sunken); - setLineWidth(2); - setMidLineWidth(3); - setValue(0); - int fw = style()->pixelMetric(QStyle::PM_DefaultFrameWidth); - setIndent(fw); - } - -//--------------------------------------------------------- -// setPitchMode -//--------------------------------------------------------- - -void PitchLabel::setPitchMode(bool val) - { - _pitchMode = val; - } - -//--------------------------------------------------------- -// sizeHint -//--------------------------------------------------------- - -QSize PitchLabel::sizeHint() const - { - QFontMetrics fm(font()); - int fw = style()->pixelMetric(QStyle::PM_DefaultFrameWidth); - int h = fm.height() + fw * 2; -// int w = 2 + fm.width(QString("A#8")) + fw * 4; - int w = 2 + fm.width(QString("-9999")) + fw * 4; // must display 14Bit controller values - return QSize(w, h).expandedTo(QApplication::globalStrut()); - } - -//--------------------------------------------------------- -// setValue -//--------------------------------------------------------- - -void PitchLabel::setValue(int val) - { - if (val == _value) - return; - _value = val; - QString s; - if (_pitchMode) - s = pitch2string(_value); - else - s.sprintf("%d", _value); - setText(s); - } - -//--------------------------------------------------------- -// setInt -//--------------------------------------------------------- - -void PitchLabel::setInt(int val) - { - if (_pitchMode) - setPitchMode(false); - setValue(val); - } - -//--------------------------------------------------------- -// setPitch -//--------------------------------------------------------- - -void PitchLabel::setPitch(int val) - { - if (!_pitchMode) { - setPitchMode(true); - } - setValue(val); - } -} - diff --git a/muse/awl/pitchlabel.h b/muse/awl/pitchlabel.h deleted file mode 100644 index 36a3cbfa..00000000 --- a/muse/awl/pitchlabel.h +++ /dev/null @@ -1,51 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AWLPITCHLABEL_H__ -#define __AWLPITCHLABEL_H__ - -namespace Awl { - -//--------------------------------------------------------- -// PitchLabel -//--------------------------------------------------------- - -class PitchLabel : public QLabel { - bool _pitchMode; - int _value; - Q_OBJECT - - protected: - QSize sizeHint() const; - - public slots: - void setValue(int); - void setInt(int); - void setPitch(int); - - public: - PitchLabel(); - int value() const { return _value; } - void setPitchMode(bool val); - bool pitchMode() const { return _pitchMode; } - }; -} - -#endif diff --git a/muse/awl/posedit.cpp b/muse/awl/posedit.cpp deleted file mode 100644 index 4f8b19b2..00000000 --- a/muse/awl/posedit.cpp +++ /dev/null @@ -1,441 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "al/al.h" -#include "awl.h" -#include "posedit.h" -#include "al/sig.h" - -namespace Awl { - - using AL::mtcType; - using AL::sigmap; - -//--------------------------------------------------------- -// PosEdit -//--------------------------------------------------------- - -PosEdit::PosEdit(QWidget* parent) - : QAbstractSpinBox(parent) - { - initialized = false; - setReadOnly(false); - setSmpte(false); - } - -void* PosEdit::operator new(size_t n) - { - void* p = new char[n]; - memset(p, 0, n); - return p; - } - -PosEdit::~PosEdit() - { - } - -QSize PosEdit::sizeHint() const - { - QFontMetrics fm(font()); - int fw = style()->pixelMetric(QStyle::PM_SpinBoxFrameWidth); - int h = fm.height() + fw * 2; - int w = fw * 4 + 10; // HACK: 10 = spinbox up/down arrows - if (_smpte) - w += 2 + fm.width('9') * 9 + fm.width(':') * 3 + fw * 4; - else - w += 2 + fm.width('9') * 9 + fm.width('.') * 2 + fw * 4; - return QSize(w, h).expandedTo(QApplication::globalStrut()); - } - -//--------------------------------------------------------- -// event -// filter Tab and Backtab key events -//--------------------------------------------------------- - -bool PosEdit::event(QEvent* event) - { - if (event->type() == QEvent::KeyPress) { - QKeyEvent* ke = static_cast(event); - int segment = curSegment(); - if (ke->key() == Qt::Key_Backtab) { - if (_smpte) { - if (segment == 3) { - lineEdit()->setSelection(7, 2); - return true; - } - else if (segment == 2) { - lineEdit()->setSelection(4, 2); - return true; - } - else if (segment == 1) { - lineEdit()->setSelection(0, 3); - return true; - } - } - else { - if (segment == 2) { - lineEdit()->setSelection(5, 2); - return true; - } - if (segment == 1) { - lineEdit()->setSelection(0, 4); - return true; - } - } - } - if (ke->key() == Qt::Key_Tab) { - if (_smpte) { - if (segment == 0) { - lineEdit()->setSelection(4, 2); - return true; - } - else if (segment == 1) { - lineEdit()->setSelection(7, 2); - return true; - } - else if (segment == 2) { - lineEdit()->setSelection(10, 2); - return true; - } - } - else { - if (segment == 0) { - lineEdit()->setSelection(5, 2); - return true; - } - if (segment == 1) { - lineEdit()->setSelection(8, 3); - return true; - } - } - } - } - else if (event->type() == QEvent::FocusIn) { - QFocusEvent* fe = static_cast(event); - QAbstractSpinBox::focusInEvent(fe); - int segment = curSegment(); - switch(segment) { - case 0: lineEdit()->setSelection(0,4); break; - case 1: lineEdit()->setSelection(5,2); break; - case 2: lineEdit()->setSelection(8,3); break; - } - return true; - } - return QAbstractSpinBox::event(event); - } - -//--------------------------------------------------------- -// setSmpte -//--------------------------------------------------------- - -void PosEdit::setSmpte(bool f) - { - _smpte = f; - if (_smpte) - lineEdit()->setInputMask("999:99:99:99"); - else - lineEdit()->setInputMask("9999.99.999"); - updateValue(); - } - -//--------------------------------------------------------- -// setValue -//--------------------------------------------------------- - -void PosEdit::setValue(const Pos& time) - { - _pos = time; - updateValue(); - } - -void PosEdit::setValue(const QString& s) - { - Pos time(s); - setValue(time); - } - -void PosEdit::setValue(int t) - { - Pos time(t); - setValue(time); - } - -//--------------------------------------------------------- -// updateValue -//--------------------------------------------------------- - -void PosEdit::updateValue() - { - char buffer[64]; - if (_smpte) { - int minute, sec, frame, subframe; - _pos.msf(&minute, &sec, &frame, &subframe); - sprintf(buffer, "%03d:%02d:%02d:%02d", minute, sec, frame, subframe); - } - else { - int bar, beat; - int tick; - _pos.mbt(&bar, &beat, &tick); - sprintf(buffer, "%04d.%02d.%03d", bar+1, beat+1, tick); - } - lineEdit()->setText(buffer); - } - -//--------------------------------------------------------- -// stepEnables -//--------------------------------------------------------- - -QAbstractSpinBox::StepEnabled PosEdit::stepEnabled() const - { - int segment = curSegment(); - QAbstractSpinBox::StepEnabled en = QAbstractSpinBox::StepUpEnabled | QAbstractSpinBox::StepDownEnabled; - - if (_smpte) { - int minute, sec, frame, subframe; - _pos.msf(&minute, &sec, &frame, &subframe); - switch(segment) { - case 0: - if (minute == 0) - en &= ~QAbstractSpinBox::StepDownEnabled; - break; - case 1: - if (sec == 0) - en &= ~QAbstractSpinBox::StepDownEnabled; - else if (sec == 59) - en &= ~QAbstractSpinBox::StepUpEnabled; - break; - case 2: - if (frame == 0) - en &= ~QAbstractSpinBox::StepDownEnabled; - else if (frame == 23) - en &= ~QAbstractSpinBox::StepUpEnabled; - break; - case 3: - if (subframe == 0) - en &= ~QAbstractSpinBox::StepDownEnabled; - else if (subframe == 99) - en &= ~QAbstractSpinBox::StepUpEnabled; - break; - } - } - else { - int bar, beat; - unsigned tick; - AL::sigmap.tickValues(_pos.tick(), &bar, &beat, &tick); - unsigned tb = AL::sigmap.ticksBeat(_pos.tick()); - unsigned tm = AL::sigmap.ticksMeasure(_pos.tick()); - int bm = tm / tb; - - switch (segment) { - case 0: - if (bar == 0) - en &= ~QAbstractSpinBox::StepDownEnabled; - break; - case 1: - if (beat == 0) - en &= ~QAbstractSpinBox::StepDownEnabled; - else { - if (beat >= (bm-1)) - en &= ~QAbstractSpinBox::StepUpEnabled; - } - break; - case 2: - if (tick == 0) - en &= ~QAbstractSpinBox::StepDownEnabled; - else { - if (tick >= (tb-1)) - en &= ~QAbstractSpinBox::StepUpEnabled; - } - break; - } - } - return en; - } - -//--------------------------------------------------------- -// fixup -//--------------------------------------------------------- - -void PosEdit::fixup(QString& input) const - { - printf("fixup <%s>\n", input.toLatin1().data()); - } - -//--------------------------------------------------------- -// validate -//--------------------------------------------------------- - -QValidator::State PosEdit::validate(QString&,int&) const - { - // TODO -// printf("validate\n"); - return QValidator::Acceptable; - } - -//--------------------------------------------------------- -// curSegment -//--------------------------------------------------------- - -int PosEdit::curSegment() const - { - QLineEdit* le = lineEdit(); - int pos = le->cursorPosition(); - int segment = -1; - - if (_smpte) { - if (pos >= 0 && pos <= 3) - segment = 0; - else if (pos >= 4 && pos <= 6) - segment = 1; - else if (pos >= 7 && pos <= 9) - segment = 2; - else if (pos >= 10) - segment = 3; - } - else { - if (pos >= 0 && pos <= 4) - segment = 0; - else if (pos >= 5 && pos <= 7) - segment = 1; - else if (pos >= 8) - segment = 2; - else - printf("curSegment = -1, pos %d\n", pos); - } - return segment; - } - -//--------------------------------------------------------- -// stepBy -//--------------------------------------------------------- - -void PosEdit::stepBy(int steps) - { - int segment = curSegment(); - int selPos; - int selLen; - - bool changed = false; - - if (_smpte) { - int minute, sec, frame, subframe; - _pos.msf(&minute, &sec, &frame, &subframe); - switch(segment) { - case 0: - minute += steps; - if (minute < 0) - minute = 0; - selPos = 0; - selLen = 3; - break; - case 1: - sec += steps; - if (sec < 0) - sec = 0; - if (sec > 59) - sec = 59; - selPos = 4; - selLen = 2; - break; - case 2: - frame += steps; - if (frame < 0) - frame = 0; - if (frame > 24) //TD frame type? - frame = 24; - selPos = 7; - selLen = 2; - break; - case 3: - subframe += steps; - if (subframe < 0) - subframe = 0; - if (subframe > 99) - subframe = 99; - selPos = 10; - selLen = 2; - break; - default: - return; - } - Pos newPos(minute, sec, frame, subframe); - if (!(newPos == _pos)) { - changed = true; - _pos = newPos; - } - } - else { - int bar, beat, tick; - _pos.mbt(&bar, &beat, &tick); - - int tb = AL::sigmap.ticksBeat(_pos.tick()); - unsigned tm = AL::sigmap.ticksMeasure(_pos.tick()); - int bm = tm / tb; - - switch(segment) { - case 0: - bar += steps; - if (bar < 0) - bar = 0; - selPos = 0; - selLen = 4; - break; - case 1: - beat += steps; - if (beat < 0) - beat = 0; - else if (beat >= bm) - beat = bm - 1; - selPos = 5; - selLen = 2; - break; - case 2: - tick += steps; - if (tick < 0) - tick = 0; - else if (tick >= tb) - tick = tb -1; - selPos = 8; - selLen = 3; - break; - default: - return; - } - Pos newPos(bar, beat, tick); - if (!(newPos == _pos)) { - changed = true; - _pos = newPos; - } - } - if (changed) { - updateValue(); - emit valueChanged(_pos); - } - lineEdit()->setSelection(selPos, selLen); - } - - void PosEdit::paintEvent(QPaintEvent* event) { - if (!initialized) - updateValue(); - initialized = true; - QAbstractSpinBox::paintEvent(event); - } -} - diff --git a/muse/awl/posedit.h b/muse/awl/posedit.h deleted file mode 100644 index effa0537..00000000 --- a/muse/awl/posedit.h +++ /dev/null @@ -1,72 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __POSEDIT_H__ -#define __POSEDIT_H__ - -#include "al/pos.h" - -namespace Awl { - - using AL::Pos; - -//--------------------------------------------------------- -// PosEdit -//--------------------------------------------------------- - -class PosEdit : public QAbstractSpinBox - { - Q_OBJECT - Q_PROPERTY(bool smpte READ smpte WRITE setSmpte) - - bool _smpte; - Pos _pos; - bool initialized; - - virtual void paintEvent(QPaintEvent* event); - virtual void stepBy(int steps); - virtual StepEnabled stepEnabled() const; - virtual void fixup(QString& input) const; - virtual QValidator::State validate(QString&, int&) const; - void updateValue(); - int curSegment() const; - virtual bool event(QEvent*); - - signals: - void valueChanged(const Pos&); - - public slots: - void setValue(const Pos& time); - void setValue(int t); - void setValue(const QString& s); - - public: - PosEdit(QWidget* parent = 0); - ~PosEdit(); - QSize sizeHint() const; - - Pos pos() const { return _pos; } - void setSmpte(bool); - bool smpte() const { return _smpte; } - void* operator new(size_t); - }; -} - -#endif diff --git a/muse/awl/poslabel.cpp b/muse/awl/poslabel.cpp deleted file mode 100644 index 638508fd..00000000 --- a/muse/awl/poslabel.cpp +++ /dev/null @@ -1,100 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "poslabel.h" -#include "al/pos.h" - -namespace Awl { - -//--------------------------------------------------------- -// PosLabel -//--------------------------------------------------------- - -PosLabel::PosLabel(QWidget* parent) - : QLabel(parent) - { - _smpte = false; - setFrameStyle(WinPanel | Sunken); - setLineWidth(2); - setMidLineWidth(3); - int fw = style()->pixelMetric(QStyle::PM_DefaultFrameWidth); - setIndent(fw); - updateValue(); - } - -//--------------------------------------------------------- -// sizeHint -//--------------------------------------------------------- - -QSize PosLabel::sizeHint() const - { - QFontMetrics fm(font()); - int fw = style()->pixelMetric(QStyle::PM_DefaultFrameWidth); - int h = fm.height() + fw * 2; - int w; - if (_smpte) - w = 2 + fm.width('9') * 9 + fm.width(':') * 3 + fw * 4; - else - w = 2 + fm.width('9') * 9 + fm.width('.') * 2 + fw * 4; - return QSize(w, h).expandedTo(QApplication::globalStrut()); - } - -//--------------------------------------------------------- -// updateValue -//--------------------------------------------------------- - -void PosLabel::updateValue() - { - QString s; - if (_smpte) { - int min, sec, frame, subframe; - pos.msf(&min, &sec, &frame, &subframe); - s.sprintf("%03d:%02d:%02d:%02d", min, sec, frame, subframe); - } - else { - int measure, beat, tick; - pos.mbt(&measure, &beat, &tick); - s.sprintf("%04d.%02d.%03u", measure+1, beat+1, tick); - } - setText(s); - } - -//--------------------------------------------------------- -// setValue -//--------------------------------------------------------- - -void PosLabel::setValue(const AL::Pos& val, bool enable) - { - setEnabled(enable); - pos = val; - updateValue(); - } - -//--------------------------------------------------------- -// setSmpte -//--------------------------------------------------------- - -void PosLabel::setSmpte(bool val) - { - _smpte = val; - updateValue(); - } -} - diff --git a/muse/awl/poslabel.h b/muse/awl/poslabel.h deleted file mode 100644 index 68139efe..00000000 --- a/muse/awl/poslabel.h +++ /dev/null @@ -1,56 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AWLPOSLABEL_H__ -#define __AWLPOSLABEL_H__ - -#include "al/pos.h" - -namespace Awl { - -//--------------------------------------------------------- -// PosLabel -//--------------------------------------------------------- - -class PosLabel : public QLabel { - bool _smpte; - AL::Pos pos; - Q_OBJECT - - void updateValue(); - - protected: - QSize sizeHint() const; - - public slots: - void setValue(const AL::Pos&, bool); - - public: - PosLabel(QWidget* parent = 0); - AL::Pos value() const { return pos; } - - void setSmpte(bool); - bool smpte() const { return _smpte; } - }; - -} - -#endif - diff --git a/muse/awl/sigedit.cpp b/muse/awl/sigedit.cpp deleted file mode 100644 index 6493ad6c..00000000 --- a/muse/awl/sigedit.cpp +++ /dev/null @@ -1,224 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "al/al.h" -#include "awl.h" -#include "sigedit.h" -#include "al/sig.h" - -namespace Awl { - - using AL::sigmap; - -//--------------------------------------------------------- -// SigEdit -//--------------------------------------------------------- - -SigEdit::SigEdit(QWidget* parent) - : QAbstractSpinBox(parent) - { - initialized = false; - setReadOnly(false); - setMinimumWidth(100); //TD: sizeHint - lineEdit()->setInputMask("99/99"); - } - -SigEdit::~SigEdit() - { - } - -//--------------------------------------------------------- -// event -// filter Tab and Backtab key events -//--------------------------------------------------------- - -bool SigEdit::event(QEvent* event) - { - if (event->type() == QEvent::KeyPress) { - QKeyEvent* ke = static_cast(event); - int segment = curSegment(); - if (ke->key() == Qt::Key_Backtab) { - if (segment == 2) { - lineEdit()->setSelection(5, 2); - return true; - } - if (segment == 1) { - lineEdit()->setSelection(0, 4); - return true; - } - } - if (ke->key() == Qt::Key_Tab) { - if (segment == 0) { - lineEdit()->setSelection(5, 2); - return true; - } - if (segment == 1) { - lineEdit()->setSelection(8, 3); - return true; - } - } - } - else if (event->type() == QEvent::FocusIn) { - QFocusEvent* fe = static_cast(event); - QAbstractSpinBox::focusInEvent(fe); - int segment = curSegment(); - switch(segment) { - case 0: lineEdit()->setSelection(0,4); break; - case 1: lineEdit()->setSelection(5,2); break; - case 2: lineEdit()->setSelection(8,3); break; - } - return true; - } - return QAbstractSpinBox::event(event); - } - -//--------------------------------------------------------- -// setValue -//--------------------------------------------------------- - -void SigEdit::setValue(const AL::TimeSignature& s) - { - _sig = s; - updateValue(); - } - -//--------------------------------------------------------- -// updateValue -//--------------------------------------------------------- - -void SigEdit::updateValue() - { - char buffer[64]; - sprintf(buffer, "%d/%d", _sig.z, _sig.n); - lineEdit()->setText(buffer); - } - -//--------------------------------------------------------- -// stepEnables -//--------------------------------------------------------- - -QAbstractSpinBox::StepEnabled SigEdit::stepEnabled() const - { - int segment = curSegment(); - QAbstractSpinBox::StepEnabled en = QAbstractSpinBox::StepUpEnabled | QAbstractSpinBox::StepDownEnabled; - - switch (segment) { - case 0: - if (_sig.z == 1) - en &= ~QAbstractSpinBox::StepDownEnabled; - break; - case 1: - if (_sig.n == 1) - en &= ~QAbstractSpinBox::StepDownEnabled; - break; - } - return en; - } - -//--------------------------------------------------------- -// fixup -//--------------------------------------------------------- - -void SigEdit::fixup(QString& input) const - { - printf("fixup <%s>\n", input.toLatin1().data()); - } - -//--------------------------------------------------------- -// validate -//--------------------------------------------------------- - -QValidator::State SigEdit::validate(QString&,int&) const - { - // TODO - // printf("validate\n"); - return QValidator::Acceptable; - } - -//--------------------------------------------------------- -// curSegment -//--------------------------------------------------------- - -int SigEdit::curSegment() const - { - QLineEdit* le = lineEdit(); - int pos = le->cursorPosition(); - int segment = -1; - - if (pos >= 0 && pos <= 4) - segment = 0; - else if (pos >= 5 && pos <= 7) - segment = 1; - else if (pos >= 8) - segment = 2; - else - printf("curSegment = -1, pos %d\n", pos); - return segment; - } - -//--------------------------------------------------------- -// stepBy -//--------------------------------------------------------- - -void SigEdit::stepBy(int steps) - { - int segment = curSegment(); - int selPos; - int selLen; - - bool changed = false; - AL::TimeSignature osig(_sig); - - switch(segment) { - case 0: - _sig.z += steps; - if (_sig.z < 1) - _sig.z = 1; - selPos = 0; - selLen = 2; - break; - case 1: - _sig.n += steps; - if (_sig.n < 1) - _sig.n = 1; - selPos = 3; - selLen = 2; - break; - default: - return; - } - if (osig.z != _sig.z || osig.n != _sig.n) { - changed = true; - } - if (changed) { - updateValue(); - emit valueChanged(_sig); - } - lineEdit()->setSelection(selPos, selLen); - } - - void SigEdit::paintEvent(QPaintEvent* event) { - if (!initialized) - updateValue(); - initialized = true; - QAbstractSpinBox::paintEvent(event); - } -} - diff --git a/muse/awl/sigedit.h b/muse/awl/sigedit.h deleted file mode 100644 index 35e762ca..00000000 --- a/muse/awl/sigedit.h +++ /dev/null @@ -1,66 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __SIGEDIT_H__ -#define __SIGEDIT_H__ - -#include "al/sig.h" - -namespace AL { - class TimeSignature; - }; - -namespace Awl { - -//--------------------------------------------------------- -// SigEdit -//--------------------------------------------------------- - -class SigEdit : public QAbstractSpinBox - { - Q_OBJECT - - AL::TimeSignature _sig; - bool initialized; - - virtual void paintEvent(QPaintEvent* event); - virtual void stepBy(int steps); - virtual StepEnabled stepEnabled() const; - virtual void fixup(QString& input) const; - virtual QValidator::State validate(QString&, int&) const; - void updateValue(); - int curSegment() const; - virtual bool event(QEvent*); - - signals: - void valueChanged(const AL::TimeSignature&); - - public slots: - void setValue(const AL::TimeSignature&); - - public: - SigEdit(QWidget* parent = 0); - ~SigEdit(); - - AL::TimeSignature sig() const { return _sig; } - }; -} - -#endif diff --git a/muse/awl/slider.cpp b/muse/awl/slider.cpp deleted file mode 100644 index 7686e850..00000000 --- a/muse/awl/slider.cpp +++ /dev/null @@ -1,251 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "slider.h" - -namespace Awl { - -//--------------------------------------------------------- -// Slider -//--------------------------------------------------------- - -Slider::Slider(QWidget* parent) - : AbstractSlider(parent), orient(Qt::Vertical), _sliderSize(14,14) - { - init(); - } - -//--------------------------------------------------------- -// Slider -//--------------------------------------------------------- - -Slider::Slider(Qt::Orientation orientation, QWidget* parent) - : AbstractSlider(parent), orient(orientation), _sliderSize(14,14) - { - init(); - } - -//--------------------------------------------------------- -// Slider -//--------------------------------------------------------- - -void Slider::init() - { - if (orient == Qt::Vertical) - setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); - else - setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - dragMode = false; - points = 0; - updateKnob(); - } - -//--------------------------------------------------------- -// sizeHint -//--------------------------------------------------------- - -QSize Slider::sizeHint() const - { - int w = _sliderSize.width() + scaleWidth(); - return orient == Qt::Vertical ? QSize(w, 200) : QSize(200, w); - } - -//--------------------------------------------------------- -// Slider -//--------------------------------------------------------- - -Slider::~Slider() - { - if (points) - delete points; - } - -//--------------------------------------------------------- -// setOrientation -//--------------------------------------------------------- - -void Slider::setOrientation(Qt::Orientation o) - { - orient = o; - updateKnob(); - update(); - } - -//--------------------------------------------------------- -// updateKnob -//--------------------------------------------------------- - -void Slider::updateKnob() - { - if (points) - delete points; - points = new QPainterPath; - int kh = _sliderSize.height(); - int kw = _sliderSize.width(); - points->moveTo(0.0, 0.0); - if (orient == Qt::Vertical) { - int kh = _sliderSize.height(); - int kh2 = kh / 2; - points->lineTo(kw, -kh2); - points->lineTo(kw, kh2); - } - else { - int kw2 = kw/2; - points->lineTo(-kw2, kh); - points->lineTo(kw2, kh); - } - points->lineTo(0.0, 0.0); - } - -//--------------------------------------------------------- -// setInvertedAppearance -//--------------------------------------------------------- - -void Slider::setInvertedAppearance(bool val) - { - AbstractSlider::setInvertedAppearance(val); - update(); - } - -//--------------------------------------------------------- -// setSliderSize -//--------------------------------------------------------- - -void Slider::setSliderSize(const QSize& s) - { - _sliderSize = s; - update(); - } - -//--------------------------------------------------------- -// mousePressEvent -//--------------------------------------------------------- - -void Slider::mousePressEvent(QMouseEvent* ev) - { - startDrag = ev->pos(); -// if (points->boundingRect().toRect().contains(startDrag)) { - emit sliderPressed(_id); - dragMode = true; - int pixel = (orient == Qt::Vertical) ? height() - _sliderSize.height() : width() - _sliderSize.width(); - dragppos = int(pixel * (_value - minValue()) / (maxValue() - minValue())); - if (_invert) - dragppos = pixel - dragppos; -// } - } - -//--------------------------------------------------------- -// mouseReleaseEvent -//--------------------------------------------------------- - -void Slider::mouseReleaseEvent(QMouseEvent*) - { - if (dragMode) { - emit sliderReleased(_id); - dragMode = false; - } - } - -//--------------------------------------------------------- -// mouseMoveEvent -//--------------------------------------------------------- - -void Slider::mouseMoveEvent(QMouseEvent* ev) - { - if (!dragMode) - return; - int delta = startDrag.y() - ev->y(); - -// if (_invert) -// delta = -delta; - if (orient == Qt::Horizontal) - delta = -delta; - int ppos = dragppos + delta; - if (ppos < 0) - ppos = 0; - - int pixel = (orient == Qt::Vertical) ? height() - _sliderSize.height() : width() - _sliderSize.width(); - if (ppos > pixel) - ppos = pixel; - int pos = _invert ? (pixel - ppos) : ppos; - _value = (pos * (maxValue() - minValue()) / pixel) + minValue() - 0.000001; - update(); - valueChange(); - } - -//--------------------------------------------------------- -// paint -// r - phys coord system -//--------------------------------------------------------- - -void Slider::paintEvent(QPaintEvent* ev) - { - int h = height(); - int w = width(); - int kw = _sliderSize.width(); - int kh = _sliderSize.height(); - int pixel = (orient == Qt::Vertical) ? h - kh : w - kw; - double range = maxValue() - minValue(); - int ppos = int(pixel * (_value - minValue()) / range); - if ((orient == Qt::Vertical && _invert) || (orient == Qt::Horizontal && !_invert)) - ppos = pixel - ppos; - - QRect rr(ev->rect()); - QPainter p(this); - - QColor sc(isEnabled() ? _scaleColor : Qt::gray); - QColor svc(isEnabled() ? _scaleValueColor : Qt::gray); - p.setBrush(svc); - - int kh2 = kh/2; - - //--------------------------------------------------- - // draw scale - //--------------------------------------------------- - - if (orient == Qt::Vertical) { - int xm = (w - _scaleWidth - _sliderSize.height()) / 2; - int y1 = kh2; - int y2 = h - (ppos + y1); - int y3 = h - y1; - p.fillRect(xm, y1, _scaleWidth, y2-y1, _invert ? svc : sc); - p.fillRect(xm, y2, _scaleWidth, y3-y2, _invert ? sc : svc); - p.translate(QPointF(xm + _scaleWidth/2, y2)); - } - else { - int ym = (h - _scaleWidth - _sliderSize.height()) / 2; - int x1 = kh2; - int x2 = w - (ppos + x1); - int x3 = w - x1; - p.fillRect(x1, ym, x2-x1, _scaleWidth, _invert ? sc : svc); - p.fillRect(x2, ym, x3-x2, _scaleWidth, _invert ? svc : sc); - p.translate(QPointF(x2, ym + _scaleWidth/2)); - } - - //--------------------------------------------------- - // draw slider - //--------------------------------------------------- - - p.setRenderHint(QPainter::Antialiasing, true); - p.setPen(QPen(svc, 0)); - p.drawPath(*points); - } -} - diff --git a/muse/awl/slider.h b/muse/awl/slider.h deleted file mode 100644 index e8e38ba2..00000000 --- a/muse/awl/slider.h +++ /dev/null @@ -1,81 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AWLSLIDER_H__ -#define __AWLSLIDER_H__ - -#include "aslider.h" - -namespace Awl { - -//--------------------------------------------------------- -// Slider -// -//! Base class of all slider type input widgets. -// -//! Inherits from AwlKnob -//! -//--------------------------------------------------------- - -class Slider : public AbstractSlider { - Q_OBJECT - - Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation) - Q_PROPERTY(QSize sliderSize READ sliderSize WRITE setSliderSize) - - Qt::Orientation orient; - QSize _sliderSize; - - QPoint startDrag; - bool dragMode; - int dragppos; - - virtual void mouseReleaseEvent(QMouseEvent*); - virtual void mouseMoveEvent(QMouseEvent*); - virtual void paintEvent(QPaintEvent*); - void init(); - void updateKnob(); - - protected: - QPainterPath* points; - virtual void mousePressEvent(QMouseEvent*); - - signals: - void sliderPressed(int); - void sliderReleased(int); - - public: - Slider(QWidget* parent = 0); - Slider(Qt::Orientation orientation, QWidget* parent = 0); - ~Slider(); - - virtual void setOrientation(Qt::Orientation); - Qt::Orientation orientation() const { return orient; } - - QSize sliderSize() const { return _sliderSize; } - void setSliderSize(const QSize& s); - - virtual void setInvertedAppearance(bool val); - virtual QSize sizeHint() const; - }; -} - -#endif - diff --git a/muse/awl/tcanvas.cpp b/muse/awl/tcanvas.cpp deleted file mode 100644 index 6ec4f68f..00000000 --- a/muse/awl/tcanvas.cpp +++ /dev/null @@ -1,1871 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "tcanvas.h" -#include "al/al.h" -#include "al/sig.h" -#include "al/tempo.h" -#include "../muse/gconfig.h" -#include "../muse/icons.h" - -#include "metronom.xpm" -#include "clock.xpm" - -#ifdef __APPLE__ - inline double exp10(double a) { return pow(10.0, a); } -#endif - -static QIcon* clockIcon; -static QIcon* metronomIcon; - -FollowMode TimeCanvas::followMode = FOLLOW_JUMP; -QPixmap* TimeCanvas::octave; -QPixmap* TimeCanvas::mk1; -QPixmap* TimeCanvas::mk2; -QPixmap* TimeCanvas::mk3; -QPixmap* TimeCanvas::mk4; - -enum DragType { - DRAG_RULER, - DRAG_CANVASA, DRAG_CANVAS_B, - DRAG_PANELA, DRAG_PANELB, - DRAG_OTHER - }; - -//--------------------------------------------------------- -// TimeCanvas -//--------------------------------------------------------- - -TimeCanvas::TimeCanvas(TimeCanvasType t) - : QFrame() - { - setAttribute(Qt::WA_NoSystemBackground, true); - - _yFit = false; - _tool = PointerTool; - type = t; - _timeType = AL::TICKS; - marker = 0; - showCursor = false; - ctrlHeight = 0; - curPitch = -1; - mouseInB = false; - dragType = DRAG_OTHER; - followPos = true; - - // set default color - canvasBackgroundColor = QColor(0x71, 0x8d, 0xbe); - - if (clockIcon == 0) { - clockIcon = new QIcon(QPixmap(clock_xpm)); - metronomIcon = new QIcon(QPixmap(metronom_xpm)); - } - button = Qt::NoButton; - grid = new QGridLayout; - grid->setMargin(0); - grid->setSpacing(1); - setLayout(grid); - - _widget = new QWidget; - _widget->setAttribute(Qt::WA_NoSystemBackground); - _widget->setAttribute(Qt::WA_StaticContents); - _widget->installEventFilter(this); - _widget->setMouseTracking(true); - _widget->setAcceptDrops(true); - - // allow to set slider position before slider range - // is known: - - pos1.setTick(0); - pos2.setTick(INT_MAX); - - hmag = new QSlider(Qt::Horizontal); - hmag->setRange(0, 100); - _xmagMin = 0.001; - _xmagMax = 0.3; - _xmag = 0.04; - hmag->setValue(xmag2s(_xmag)); - - vmag = 0; - if (type != TIME_CANVAS_DRUMEDIT) { - vmag = new QSlider(Qt::Vertical); - vmag->setRange(0, 100); - vmag->setPageStep(1); - } - _ymag = 1.0; - - hbar = new QScrollBar(Qt::Horizontal); - hbar->setRange(0, INT_MAX); - vbar = new QScrollBar(Qt::Vertical); - timeTypeButton = new QToolButton; - timeTypeButton->setFixedSize(20, rulerHeight); - setTimeType1(AL::TICKS); - yRange = 0; - - switch(type) { - case TIME_CANVAS_PIANOROLL: - _ymagMin = 0.5; - _ymagMax = 3.0; - vmag->setValue(lrint((_ymag-_ymagMin)*100.0/(_ymagMax-_ymagMin))); - initPianoroll(); - break; - case TIME_CANVAS_DRUMEDIT: - _ymagMin = 1.0; - _ymagMax = 1.0; - yRange = drumHeight * 128; - break; - case TIME_CANVAS_WAVEEDIT: - _xmagMin = 0.001; - _xmagMax = 100.0; - _xmag = 0.04; - _ymagMin = 1.0; - _ymagMax = 10.0; - _ymag = 1.0; - break; - default: - _ymagMin = 1.0; - _ymagMax = 1.0; - break; - } - updateGeometry(); - if (type == TIME_CANVAS_PIANOROLL || type == TIME_CANVAS_DRUMEDIT - || type == TIME_CANVAS_WAVEEDIT) { - addCtrlButton = new QPushButton(tr("Ctrl"), _widget); - addCtrlButton->setGeometry(1, 1, rPanelA.width()-4, rulerHeight-4); - addCtrlButton->setToolTip(tr("Add Controller View")); - connect(addCtrlButton, SIGNAL(clicked()), SLOT(addCtrlClicked())); - } - - grid->addWidget(_widget, 0, 0, 3, 2); - grid->addWidget(hbar, 3, 0, Qt::AlignVCenter); - grid->addWidget(hmag, 3, 1, Qt::AlignVCenter); - grid->addWidget(timeTypeButton, 0, 2); - grid->addWidget(vbar, 1, 2, Qt::AlignHCenter); - if (vmag) - grid->addWidget(vmag, 2, 2, Qt::AlignHCenter); - - grid->setColumnStretch(0, 100); - grid->setRowStretch(1, 100); - - _raster = 0; - updateScrollBars(); - connect(hbar, SIGNAL(valueChanged(int)), SLOT(moveX(int))); - connect(vbar, SIGNAL(valueChanged(int)), SLOT(moveY(int))); - connect(hmag, SIGNAL(valueChanged(int)), SLOT(scaleX(int))); - if (vmag) - connect(vmag, SIGNAL(valueChanged(int)), SLOT(scaleY(int))); - connect(timeTypeButton, SIGNAL(clicked()), SLOT(toggleTimeType())); - } - -//--------------------------------------------------------- -// resizeController -//--------------------------------------------------------- - -void TimeCanvas::resizeController(int h) - { - if (h == ctrlHeight) - return; - int updateH = h > ctrlHeight ? h : ctrlHeight; - ctrlHeight = h; - updateGeometry(); - updateScrollBars(); - widget()->update(0, widget()->height() - updateH, widget()->width(), updateH); - } - -//--------------------------------------------------------- -// eventFilter -//--------------------------------------------------------- - -bool TimeCanvas::eventFilter(QObject* obj, QEvent* event) - { - if (obj != _widget) - return QFrame::eventFilter(obj, event); - - switch(event->type()) { - case QEvent::Paint: - { - QPainter p(_widget); - canvasPaintEvent(((QPaintEvent*)event)->rect(), p); - } - return true; - - case QEvent::Resize: - updateGeometry(); - updateScrollBars(); - layout(); - return false; - - case QEvent::MouseButtonDblClick: - { - QMouseEvent* me = (QMouseEvent*)event; - QPoint p(me->pos()); - button = me->button(); - keyState = me->modifiers(); - mouseDoubleClick(me); - } - return true; - - case QEvent::MouseButtonPress: - { - QMouseEvent* me = (QMouseEvent*)event; - keyState = me->modifiers(); - button = me->button(); - QPoint p(me->pos()); - int x = p.x() - rRuler.x(); - bool shift = keyState & Qt::ShiftModifier; - - if (rRuler.contains(p)) { - dragType = DRAG_RULER; - if (shift) { - AL::Pos pos(pix2pos(x)); - if (button == Qt::LeftButton) - emit addMarker(pos); - else if (button == Qt::RightButton) - emit removeMarker(pos); - return true; - } - } - else { - dragType = DRAG_OTHER; - mousePress(me); - } - } - // go on with MouseMove - - case QEvent::MouseMove: - { - QMouseEvent* me = (QMouseEvent*)event; - keyState = me->modifiers(); - button = me->buttons(); - QPoint p(me->pos()); - AL::Pos pos(pix2pos(p.x()-rCanvasA.x())); - - if (dragType == DRAG_OTHER) { - if (button == 0 && (rPanelB.contains(p) || rCanvasB.contains(p))) { - if (!mouseInB) { - mouseInB = true; - enterB(); - } - } - else { - if (button == 0 && mouseInB) { - mouseInB = false; - leaveB(); - } - } - - if (showCursor && p.x() < rCanvasA.x()) { - showCursor = false; - widget()->update(rRuler); - emit cursorPos(cursor, showCursor); - } - - if (p.x() >= rCanvasA.x() && (cursor != pos)) { - int x1 = pos2pix(cursor) + rCanvasA.x(); - int x2 = pos2pix(pos) + rCanvasA.x(); - QRect r1(x1-1, 0, 2, rRuler.height()); - QRect r2(x2-1, 0, 2, rRuler.height()); - widget()->update(rRuler & (r1 | r2)); - cursor = pos; - showCursor = true; - emit cursorPos(cursor, showCursor); - } - - if (rRuler.contains(p)) { - int b = me->buttons(); - if (b == 0) - return true; - int i = 0; - if (b & Qt::MidButton) - i = 1; - else if (b & Qt::RightButton) - i = 2; - if (keyState & Qt::ShiftModifier) - emit addMarker(i); - emit posChanged(i, pos); - } - else { - mouseMove(p); - } - } - else if (dragType == DRAG_RULER) { - int b = me->buttons(); - if (b == 0) - return true; - int i = 0; - if (b & Qt::MidButton) - i = 1; - else if (b & Qt::RightButton) - i = 2; - if (keyState & Qt::ShiftModifier) - emit addMarker(i); - emit posChanged(i, pos); - } - } - return true; - - case QEvent::MouseButtonRelease: - { - QMouseEvent* me = (QMouseEvent*)event; - button = Qt::NoButton; - keyState = me->modifiers(); - mouseRelease(me); - dragType = DRAG_OTHER; - } - return true; - - case QEvent::DragEnter: - dragEnter((QDragEnterEvent*)event); - return true; - - case QEvent::Drop: - drop((QDropEvent*)event); - return true; - - case QEvent::DragMove: - dragMove((QDragMoveEvent*)event); - return true; - - case QEvent::DragLeave: - dragLeave((QDragLeaveEvent*)event); - return true; - - case QEvent::Leave: - { - emit cursorPos(cursor, false); - showCursor = false; - emit pitchChanged(-1); - curPitch = -1; - QRect r(rRuler); - if (!rPanelA.isEmpty()) - r |= rPanelA; - widget()->update(r); - - if (mouseInB) { - mouseInB = false; - // button = ((QMouseEvent*)event)->buttons(); - leaveB(); - } - } - return false; - - case QEvent::Wheel: - { - QWheelEvent* e = (QWheelEvent*)event; - if (e->orientation() != Qt::Vertical) - return true; - if ((e->modifiers() & Qt::ControlModifier) || (e->modifiers() & Qt::ShiftModifier)) { - // - // xmag - // - int oldx = e->x() - rCanvasA.x(); - AL::Pos pos(pix2pos(oldx)); - int step = e->delta() / 120; - if (step > 0) { - for (int i = 0; i< step; ++i) - _xmag *= 1.1; - } - else { - for (int i = 0; i < -step; ++i) - _xmag *= 0.9; - } - if (_xmag < _xmagMin) - _xmag = _xmagMin; - else if (_xmag > _xmagMax) - _xmag = _xmagMax; - hmag->setValue(xmag2s(_xmag)); - int newx = pos2pix(pos); - updateScrollBars(); - hbar->setValue(wpos.x() + (newx - oldx)); - updateRulerMag(); - magChanged(); - _widget->update(); - } - else { - // - // scroll - // - int step = qMin(QApplication::wheelScrollLines() * vbar->singleStep(), vbar->pageStep()); - int offset = e->delta() * step / 120; - if (vbar->invertedControls()) - offset = -offset; - if (qAbs(offset) < 1) - return true; - vbar->setValue(vbar->value() + offset); - } - } - return true; - default: -// printf("event %d missed\n", event->type()); - break; - } - return false; - } - - - -void TimeCanvas::keyPressEvent(QKeyEvent *e) -{ - if (e->key() == Qt::Key_Up || e->key() == Qt::Key_Down || - e->key() == Qt::Key_Left || e->key() == Qt::Key_Right) - keyboardNavigate(e); -} - -//--------------------------------------------------------- -// moveX -//--------------------------------------------------------- - -void TimeCanvas::moveX(int x) - { - int dx = wpos.x() - x; - wpos.setX(x); - - int wh = _widget->height(); - - if (type == TIME_CANVAS_PIANOROLL || type == TIME_CANVAS_DRUMEDIT - || TIME_CANVAS_WAVEEDIT) { - _widget->scroll(dx, 0, QRect(rCanvasA.x(), 0, rCanvasA.width(), wh)); - - //HACK: - // update controller names - int w = 100 + ((dx > 0) ? dx : 0); - _widget->update(rCanvasB.x(), rCanvasB.y(), w, rCanvasB.height()); - - //HACK: - // repaint rounded line end (splitter handle for controller - // canvas) - int x = rCanvasB.x() + rCanvasB.width() - 1; - w = 1; - if (dx < 0) { - x += dx; - w -= dx; - } - _widget->update(x, rCanvasB.y(), w, rCanvasB.height()); - } - else - _widget->scroll(dx, 0); - emit contentsMoving(wpos.x(), wpos.y()); - } - -//--------------------------------------------------------- -// moveY -//--------------------------------------------------------- - -void TimeCanvas::moveY(int y) - { - int dy = wpos.y() - y; - if (dy == 0) - return; - wpos.setY(y); - - // dont move ruler: - - int ww = _widget->width(); - int wh = _widget->height(); - - QRect r(0, rulerHeight, ww, wh - rulerHeight - ctrlHeight); - - _widget->scroll(0, dy, r); - emit contentsMoving(wpos.x(), wpos.y()); - } - -//--------------------------------------------------------- -// setYPos -//--------------------------------------------------------- - -void TimeCanvas::setYPos(int y) - { - setWPos(QPoint(wpos.x(), y)); - } - -//--------------------------------------------------------- -// setWPos -//--------------------------------------------------------- - -void TimeCanvas::setWPos(const QPoint& p) - { - if (wpos != p) { - wpos = p; - hbar->setValue(wpos.x()); - vbar->setValue(wpos.y()); - _widget->update(); -// QCoreApplication::flush(); - } - } - -//--------------------------------------------------------- -// paintClockRuler -//--------------------------------------------------------- - -void TimeCanvas::paintClockRuler(QPainter& p, const QRect& r) - { - int x1 = r.x(); - int x2 = x1 + r.width(); - - int y1 = r.y(); - int rh = r.height(); - if (y1 < rulerHeight) { - rh -= rulerHeight - y1; - y1 = rulerHeight; - } - int y2 = y1 + rh; - - //--------------------------------------------------- - // draw Marker - //--------------------------------------------------- - - int y = rulerHeight - 16; - p.setPen(Qt::black); - p.setFont(_font3); - QRect tr(r); - tr.setHeight(12); - - if (marker) { - for (AL::iMarker m = marker->begin(); m != marker->end(); ++m) { - int xp = mapx(int(m->second.frame())); - if (xp > x2) - break; - AL::iMarker mm = m; - ++mm; - int xe = x2; - if (mm != marker->end()) { - xe = mapx(mm->first); - } - QRect tr(xp, 0, x2 - xp, 11); - if (m->second.current()) { - p.fillRect(tr, Qt::white); - } - if (r.intersects(tr)) { - int x2; - AL::iMarker mm = m; - ++mm; - if (mm != marker->end()) - x2 = mapx(mm->first); - else - x2 = xp+200; - QRect r = QRect(xp+10, 0, x2-xp, 12); - p.drawPixmap(xp, 0, *flagIconS); - p.drawText(r, Qt::AlignLeft|Qt::AlignVCenter, m->second.name()); - } - } - } - - p.setPen(Qt::black); - if (showCursor) { - int xp = pos2pix(cursor); - if (xp >= x1 && xp < x2) - p.drawLine(xp, 0, xp, rulerHeight); - } - - AL::Pos p1(pix2pos(x1)); - AL::Pos p2(pix2pos(x2)); - - int sec1 = p1.frame() / AL::sampleRate; - int sec2 = (p2.frame() + AL::sampleRate - 1) / AL::sampleRate; - - int sw = lrint(AL::sampleRate * _xmag); - - if (sw > 20) { - for (int sec = sec1; sec < sec2; ++sec) { - int min = sec / 60; - int sr = sec % 60; - - int yy; - QString s; - if (sr == 0) { - p.setFont(_font2); - s.sprintf("%d:00", min); - yy = y; - } - else { - p.setFont(_font1); - s.sprintf("%02d", sr); - yy = y + 7; - } - int xp = pos2pix(AL::Pos(sec * AL::sampleRate, AL::FRAMES)); -// printf(" sec %d min %d sr %d xp %d\n", sec, min, sr, xp); - p.setPen(Qt::black); - p.drawLine(xp, yy, xp, rulerHeight); - p.drawText(xp + 2, rulerHeight - 4, s); - p.setPen(sr == 0 ? Qt::lightGray : Qt::gray); - p.drawLine(xp, y1, xp, y2); - } - } - else { - int min1 = sec1/60; - int min2 = (sec2+59)/60; - for (int min = min1; min < min2; ++min) { - QString s; - p.setFont(_font2); - s.sprintf("%d", min); - int xp = pos2pix(AL::Pos(min * AL::sampleRate * 60, AL::FRAMES)); - p.setPen(Qt::black); - p.drawLine(xp, y, xp, rulerHeight); - p.drawText(xp + 2, rulerHeight - 4, s); - p.setPen(Qt::lightGray); - p.drawLine(xp, y1, xp, y2); - } - } - } - -//--------------------------------------------------------- -// updateRulerMag -//--------------------------------------------------------- - -void TimeCanvas::updateRulerMag() - { - int bar1, beat, tick; - pos1.mbt(&bar1, &beat, &tick); - AL::Pos stick(bar1, 0, 0); - AL::Pos ntick = AL::Pos(bar1 + 1, 0, 0); - int tpix = pos2pix(ntick) - pos2pix(stick); - metronomeRulerMag = 0; - if (tpix < 64) - metronomeRulerMag = 1; - if (tpix < 32) - metronomeRulerMag = 2; - if (tpix <= 16) - metronomeRulerMag = 3; - if (tpix < 8) - metronomeRulerMag = 4; - if (tpix <= 4) - metronomeRulerMag = 5; - if (tpix <= 2) - metronomeRulerMag = 6; - } - -//--------------------------------------------------------- -// paintMetronomRuler -//--------------------------------------------------------- - -void TimeCanvas::paintMetronomRuler(QPainter& p, const QRect& r) - { - static const int mag[7] = { - 1, 1, 2, 5, 10, 20, 50 - }; - - int x = r.x(); - int w = r.width(); - int y = rulerHeight - 16; - - p.setFont(_font3); - - int h = 14; - int y1 = r.y(); - int rh = r.height(); - if (y1 < rulerHeight) { - rh -= rulerHeight - y1; - y1 = rulerHeight; - } - int y2 = y1 + rh; - - if (x < (MAP_OFFSET - wpos.x())) - x = MAP_OFFSET - wpos.x(); - AL::Pos pos1 = pix2pos(x); - AL::Pos pos2 = pix2pos(x+w); - - if (marker) { - AL::iMarker start = marker->lower_bound(pos1.tick()); - if (start != marker->begin()) - --start; - AL::iMarker end = marker->lower_bound(pos2.tick()); - for (AL::iMarker m = start; m != end; ++m) { - AL::Pos pm1(m->second); - AL::iMarker m2 = m; - ++m2; - AL::Pos pm2(pos2); - if (m2 != marker->end()) - pm2 = m2->second; - - int x1 = pos2pix(pm1); - int x2 = pos2pix(pm2); - - if (pos[0] >= pm1 && (m2 == marker->end() || pos[0] < pm2)) - p.fillRect(x1, 0, x2 - x1, 11, Qt::white); - - QRect r = QRect(x1 + 10, 0, x2 - x1, 12); - p.drawPixmap(x1, 0, *flagIconS); - p.drawText(r, Qt::AlignLeft|Qt::AlignVCenter, m->second.name()); - } - } - - //--------------------------------------------------- - // draw raster - //--------------------------------------------------- - - int bar1, bar2, beat, tick; - pos1.mbt(&bar1, &beat, &tick); - pos2.mbt(&bar2, &beat, &tick); - - int n = mag[metronomeRulerMag]; - - bar1 = (bar1 / n) * n; // round down - if (bar1 && n >= 2) - bar1 -= 1; - bar2 = ((bar2 + n - 1) / n) * n; // round up - - for (int bar = bar1; bar <= bar2;) { - AL::Pos stick(bar, 0, 0); - if (metronomeRulerMag) { - p.setFont(_font2); - int x = pos2pix(stick); - QString s; - s.setNum(bar + 1); - - p.setPen(Qt::black); - p.drawLine(x, y, x, y + h); - QRect r = QRect(x+2, y, 1000, h); - p.drawText(r, Qt::AlignLeft | Qt::AlignVCenter, s); - p.setPen(Qt::lightGray); - if (x > 0) - p.drawLine(x, y1, x, y2); - } - else { - AL::TimeSignature sig = stick.timesig(); - int z = sig.z; - for (int beat = 0; beat < z; beat++) { - AL::Pos xx(bar, beat, 0); - int xp = pos2pix(xx); - if (xp < 0) - continue; - QString s; - QRect r(xp+2, y + 1, 1000, h); - int y3; - int num; - if (beat == 0) { - num = bar + 1; - y3 = y + 2; - p.setFont(_font2); - } - else { - num = beat + 1; - y3 = y + 8; - p.setFont(_font1); - r.moveTop(r.top() + 1); - } - s.setNum(num); - p.setPen(Qt::black); - p.drawLine(xp, y3, xp, y+h); - p.drawText(r, Qt::AlignLeft | Qt::AlignVCenter, s); - p.setPen(beat == 0 ? Qt::lightGray : Qt::gray); - if (xp > 0) - p.drawLine(xp, y1, xp, y2); - } - } - if (bar == 0 && n >= 2) - bar += (n-1); - else - bar += n; - } - // - // draw mouse cursor marker - // - p.setPen(Qt::black); - if (showCursor) { - int xp = pos2pix(cursor); - if (xp >= x && xp < x+w) - p.drawLine(xp, 0, xp, rulerHeight-1); - } - - } - -//--------------------------------------------------------- -// tempoChanged -//--------------------------------------------------------- - -void TimeCanvas::tempoChanged() - { - widget()->update(rCanvasA.x(), 0, rCanvasA.width(), widget()->height()); - } - -//--------------------------------------------------------- -// canvasPaintEvent -//--------------------------------------------------------- - -void TimeCanvas::canvasPaintEvent(const QRect& r, QPainter& p) - { - if (r.intersects(rButton)) { - p.fillRect(rButton, QColor(0xe0, 0xe0, 0xe0)); - p.setPen(QPen(Qt::black, 2)); - int y = rButton.y() + rButton.height() - 1; - p.drawLine(rButton.x(), y, rButton.width(), y); - } - p.setRenderHint(QPainter::TextAntialiasing, true); - - QRect par = r & rPanelA; - if (!(par.isEmpty() || rPanelA.isEmpty())) { - if (type == TIME_CANVAS_DRUMEDIT) { - paintDrumList(p, par); - } - else if (type == TIME_CANVAS_PIANOROLL) { - paintPiano(p, par); - } - else if (type == TIME_CANVAS_WAVEEDIT) { - p.fillRect(par, QColor(0xe0, 0xe0, 0xe0)); - } - } - - QRect pbr(r & rPanelB); - QRect hor(r & (rRuler | rCanvasA | rCanvasB)); - QRect car(r & rCanvasA); - QRect cbr(r & rCanvasB); - - bool drawPanelB = !(pbr.isEmpty() || rPanelB.isEmpty()); - bool drawRuler = !(hor.isEmpty() || (rRuler.isEmpty() && rCanvasA.isEmpty() && rCanvasB.isEmpty())); - bool drawCanvasA = !(car.isEmpty() || rCanvasA.isEmpty()); - bool drawCanvasB = !(cbr.isEmpty() || rCanvasB.isEmpty()); - - // - // draw canvas background - // - - p.setClipRect(r); - p.setBrushOrigin(QPoint(car.x() + wpos.x(), car.y() + wpos.y())); - if (drawCanvasA) { - if (canvasBackgroundPixmap.isNull()) { - if (type == TIME_CANVAS_DRUMEDIT || type == TIME_CANVAS_PIANOROLL - || type == TIME_CANVAS_WAVEEDIT) { - QRect rr(car); - // paint inactive area different - // (darker) - QColor c = canvasBackgroundColor.darker(150); - int x1 = pos2pix(partPos1) + rCanvasA.x(); - if (rr.x() < x1) { - QRect r(rr.x(), rr.y(), x1-rr.x(), rr.height()); - p.fillRect(r, c); - rr.adjust(x1-rr.x(), 0, 0, 0); - } - int x2 = pos2pix(partPos2) + rCanvasA.x(); - int xx2 = rr.x() + rr.width(); - if (xx2 > x2) { - if (x2 < rr.x()) - x2 = rr.x(); - QRect r(x2, rr.y(), xx2-x2, rr.height()); - p.fillRect(r, c); - rr.adjust(0, 0, -(xx2-x2), 0); - } - if (!rr.isEmpty()) { - p.fillRect(rr, canvasBackgroundColor); - } - } - else - p.fillRect(car, canvasBackgroundColor); - } - else { - p.drawTiledPixmap(car, canvasBackgroundPixmap, - car.topLeft() + QPoint(wpos)); - } - } - - if (drawCanvasB) - p.fillRect(cbr, canvasBackgroundColor); - - //--------------------------------------------------- - // draw Ruler - //--------------------------------------------------- - - if (drawRuler) { - QRect rrr(r & rRuler); - if (!rrr.isEmpty()) - p.fillRect(rrr, QColor(0xe0, 0xe0, 0xe0)); - int x1 = hor.x(); - int x2 = x1 + hor.width(); - int y1 = rulerHeight - 17; - int y2 = rulerHeight - 1; - - p.setPen(QPen(Qt::black, 1)); - p.drawLine(x1, y1, x2, y1); - p.setPen(QPen(Qt::black, 2)); - p.drawLine(x1, y2, x2, y2); - - QPoint off(rRuler.topLeft()); - p.translate(off); - if (_timeType == AL::TICKS) - paintMetronomRuler(p, hor.translated(-off)); - else - paintClockRuler(p, hor.translated(-off)); - p.translate(-off); - } - - if (drawCanvasA) { - p.setClipRect(car); - paintCanvas(p, car); - } - p.setRenderHint(QPainter::Antialiasing, false); - if (drawPanelB) { - p.setClipRect(pbr); - QPoint off(rPanelB.topLeft()); - p.translate(off); - paintControllerPanel(p, pbr.translated(-off)); - p.translate(-off); - } - if (drawCanvasB) { - p.setClipRect(cbr); - QPoint off(rCanvasB.topLeft()); - p.translate(off); - paintControllerCanvas(p, cbr.translated(-off)); - p.translate(-off); - } - //--------------------------------------------------- - // draw marker - //--------------------------------------------------- - - int y1 = r.y(); - int y2 = y1 + r.height(); - if (drawRuler) { - p.setClipRect(hor); - int w = r.width(); - int x = r.x(); - int y = rulerHeight - 16; - QColor lcColors[3] = { Qt::red, Qt::blue, Qt::blue }; - - for (int i = 0; i < 3; ++i) { - p.setPen(lcColors[i]); - int xp = pos2pix(pos[i]) + rRuler.x(); - QPixmap* pm = markIcon[i]; - int pw = (pm->width() + 1) / 2; - int x1 = x - pw; - int x2 = x + w + pw; - if (xp >= x1 && xp < x2) { - p.drawPixmap(xp - pw, y-2, *pm); - p.drawLine(xp, y1, xp, y2); - } - } - } - if (marker) { - int yy1 = y1; - if (yy1 < rCanvasA.x()) - yy1 = rCanvasA.x(); - p.setPen(Qt::green); - AL::iMarker start = marker->lower_bound(pos1.tick()); - if (start != marker->begin()) - --start; - AL::iMarker end = marker->lower_bound(pos2.tick()); - if (end != marker->end()) - ++end; - for (AL::iMarker m = start; m != end; ++m) { - AL::Pos pm(m->second); - int x = pos2pix(pm) + rRuler.x(); - p.drawLine(x, yy1, x, y2); - } - } - } - -//--------------------------------------------------------- -// paintCanvas -//--------------------------------------------------------- - -void TimeCanvas::paintCanvas(QPainter& p, const QRect& cr) - { - QPoint off(rCanvasA.topLeft()); - - if (type == TIME_CANVAS_PIANOROLL) { - paintPianorollHorizontalGrid(p, cr); - p.setRenderHint(QPainter::Antialiasing, true); - } - else if (type == TIME_CANVAS_DRUMEDIT) { - paintDrumeditHorizontalGrid(p, cr); - p.setRenderHint(QPainter::Antialiasing, true); - } - else - off = QPoint(rCanvasA.x(), rCanvasA.y() - wpos.y()); - p.translate(off); - paint(p, cr.translated(-off)); - p.resetMatrix(); - } - -//--------------------------------------------------------- -// setLocatorPos -//--------------------------------------------------------- - -void TimeCanvas::setLocatorPos(int idx, const AL::Pos& val, bool follow) - { - if (pos[idx] == val) - return; - QFontMetrics fm(_font2); - int fw = fm.width("123") + 2; - int w = qMax(markIcon[idx]->width() + 2, fw); - int h = widget()->height(); - - int x = pos2pix(val); - if (idx == 0 && follow && followPos && followMode != FOLLOW_NO) { - int scroll = 0; - if (followMode == FOLLOW_JUMP) { - int x2 = rRuler.width() - 20; - if (x2 < 0) - x2 = rRuler.width(); - if (x > x2) { - int x1 = 20; - if (x1 >= rRuler.width()) - x1 = 0; - scroll = x - x1; - } - else if (x < 0) { - scroll = x - MAP_OFFSET; - } - } - else if (followMode == FOLLOW_CONTINUOUS) { - int x1 = rRuler.width() / 2; - if (x != x1) { - scroll = x - (rRuler.width() / 2); - } - } - if (scroll) { - moveX(wpos.x() + scroll); - hbar->setValue(wpos.x()); - } - } - - int offset = rRuler.x() - (w/2); - int x1 = pos2pix(pos[idx]); - int x2 = pos2pix(val); - QRect oR(x1 + offset, 0, w, h); - QRect nR(x2 + offset, 0, w, h); - pos[idx] = val; - widget()->update(oR | nR); - } - -//--------------------------------------------------------- -// setMag -//--------------------------------------------------------- - -void TimeCanvas::setMag(double x, double y) - { - if (_xmag == x && _ymag == y) - return; - _xmag = x; - _ymag = y; - if (vmag) - vmag->setValue(lrint((_ymag-_ymagMin)*100.0/(_ymagMax-_ymagMin))); - hmag->setValue(xmag2s(_xmag)); - updateScrollBars(); - updateRulerMag(); - magChanged(); - _widget->update(); - } - -//--------------------------------------------------------- -// scaleX -//--------------------------------------------------------- - -void TimeCanvas::scaleX(int val) - { - _xmag = s2xmag(val); - updateScrollBars(); - updateRulerMag(); - magChanged(); - _widget->update(); - } - -//--------------------------------------------------------- -// scaleY -//--------------------------------------------------------- - -void TimeCanvas::scaleY(int val) - { - int y = lrint(wpos.y() / _ymag); - _ymag = (_ymagMax - _ymagMin) / 100.0 * val + _ymagMin; - y = lrint(y * _ymag); - wpos.setY(y); - updateScrollBars(); - magChanged(); - _widget->update(); - } - -//--------------------------------------------------------- -// setRaster -// r = 1 - no raster -// 0 - measure raster -// > 1 - tick raster -//--------------------------------------------------------- - -void TimeCanvas::setRaster(int r) - { - if (_raster != r) { - _raster = r; - _widget->update(); - } - } - -//--------------------------------------------------------- -// setTimeRange -//--------------------------------------------------------- - -void TimeCanvas::setTimeRange(const AL::Pos& p1, const AL::Pos& p2) - { - if (pos1 == p1 && pos2 == p2) - return; - pos1 = p1; - pos2 = p2; - updateScrollBars(); - widget()->update(); - } - -//--------------------------------------------------------- -// setEndPos -//--------------------------------------------------------- - -void TimeCanvas::setEndPos(const AL::Pos& p2) - { - if (pos2 == p2) - return; - pos2 = p2; - updateScrollBars(); - widget()->update(); - } - -//--------------------------------------------------------- -// updateScrollBars -//--------------------------------------------------------- - -void TimeCanvas::updateScrollBars() - { - hbar->blockSignals(true); - vbar->blockSignals(true); - - int ymax = lrint(yRange * _ymag) - rCanvasA.height(); - if (ymax < 0) - ymax = 0; - vbar->setRange(0, ymax); - vbar->setPageStep(rCanvasA.height()); - - int xmin = lrint(pos1.time(_timeType) * _xmag); - unsigned x2 = pos2.time(_timeType); - int xmax = lrint(x2 * _xmag) - rCanvasA.width(); - if (xmax - xmin < 0) - xmax = xmin; - hbar->setRange(xmin, xmax); - hbar->setPageStep(rCanvasA.width()); - wpos.setX(hbar->value()); - wpos.setY(vbar->value()); - - hbar->blockSignals(false); - vbar->blockSignals(false); - } - -//--------------------------------------------------------- -// setTimeType1 -//--------------------------------------------------------- - -void TimeCanvas::setTimeType1(AL::TType t) - { - double conv = 1.0; - if (t == AL::TICKS) { - timeTypeButton->setIcon(*metronomIcon); - if (_timeType == AL::FRAMES) - conv = AL::sampleRate / double(AL::division * 120 / 60); - } - else { - timeTypeButton->setIcon(*clockIcon); - if (_timeType == AL::TICKS) - conv = double(AL::division * 120 / 60) / double(AL::sampleRate); - } - _timeType = t; - _xmag *= conv; - _xmagMax *= conv; - _xmagMin *= conv; - - updateRulerMag(); - magChanged(); - } - -//--------------------------------------------------------- -// setTimeType -//--------------------------------------------------------- - -void TimeCanvas::setTimeType(AL::TType t) - { - setTimeType1(t); - updateScrollBars(); - timeTypeChanged(); - widget()->update(); - } - -//--------------------------------------------------------- -// toggleTimeType -//--------------------------------------------------------- - -void TimeCanvas::toggleTimeType() - { - if (_timeType == AL::TICKS) - setTimeType(AL::FRAMES); - else - setTimeType(AL::TICKS); - } - -//--------------------------------------------------------- -// setMarkerList -//--------------------------------------------------------- - -void TimeCanvas::setMarkerList(AL::MarkerList* ml) - { - if (marker == ml) - return; - marker = ml; - widget()->update(); - } - -//--------------------------------------------------------- -// pix2pos -//--------------------------------------------------------- - -AL::Pos TimeCanvas::pix2pos(int x) const - { - int val = lrint((x + wpos.x() - MAP_OFFSET)/_xmag); - if (val < 0) - val = 0; - return AL::Pos(val, _timeType); - } - -//--------------------------------------------------------- -// pos2pix -//--------------------------------------------------------- - -int TimeCanvas::pos2pix(const AL::Pos& p) const - { - return lrint(p.time(_timeType) * _xmag) + MAP_OFFSET - wpos.x(); - } - -//--------------------------------------------------------- -// mapx -//--------------------------------------------------------- - -int TimeCanvas::mapx(int x) const - { - return lrint(x * _xmag) + MAP_OFFSET - wpos.x(); - } - -//--------------------------------------------------------- -// mapxDev -//--------------------------------------------------------- - -int TimeCanvas::mapxDev(int x) const - { - int val = lrint((x + wpos.x() - MAP_OFFSET)/_xmag); - if (val < 0) - val = 0; - return val; - } - -//--------------------------------------------------------- -// setCorderWidget -//--------------------------------------------------------- - -void TimeCanvas::setCornerWidget(QWidget* w) - { - grid->addWidget(w, 3, 2); - } - -//--------------------------------------------------------- -// initPianoroll -//--------------------------------------------------------- - -/* - 0 1 2 3 4 5 6 7 8 9 10 - c-2 c-1 C0 C1 C2 C3 C4 C5 C6 C7 C8 - G8 - - Grid ve: - - +------------+ ------------------------------ - 11 | | - | b | 7 - +------+ | - 10 | a# +-----+ .............................. - +------+ a | - 9 | | 6 - +------+ | - 8 | g# +-----+ .............................. - +------+ g | - 7 | | 5 - +------+ | - 6 | f# +-----+ .............................. - +------+ f | - 5 | | 4 - | | - +------------+ ------------------------------ - 4 | | - | e | 3 - +------+ | - 3 | d# +-----+ .............................. - +------+ d | - 2 | | 2 - +------+ | - 1 | c# +-----+ .............................. - +------+ c | - | | 1 - 0 | | - +------------+ ------------------------------ - */ - -void TimeCanvas::initPianoroll() - { - static const char *oct_xpm[] = { - // w h colors - "40 91 2 1", - ". c #f0f0f0", - "# c #000000", - // x - "####################################### ", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", // 10 - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", //------------------------ - "#######################................#", - "########################...............#", - "########################...............#", - "####################################### ", // 7 - "########################...............#", - "########################...............#", - "#######################................#", //------------------------ - ".......................................#", - ".......................................#", - ".......................................#", // 6 - ".......................................#", - ".......................................#", - ".......................................#", //------------------------ - "#######################................#", - "########################...............#", - "########################...............#", // 7 - "####################################### ", - "########################...............#", - "########################...............#", - "#######################................#", //------------------------ - ".......................................#", - ".......................................#", - ".......................................#", // 6 - ".......................................#", - ".......................................#", - ".......................................#", //------------------------ - "#######################................#", - "########################...............#", - "########################...............#", // 7 - "####################################### ", - "########################...............#", - "########################...............#", - "#######################................#", //------------------------ - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", // 10 - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - "####################################### ", //---------------------- - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", // 9 - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", //------------------------ - "#######################................#", - "########################...............#", - "########################...............#", - "####################################### ", // 7 - "########################...............#", - "########################...............#", - "#######################................#", //------------------------ - ".......................................#", - ".......................................#", - ".......................................#", // 6 - ".......................................#", - ".......................................#", - ".......................................#", //-------------------------- - "#######################................#", - "########################...............#", - "########################...............#", // 7 - "####################################### ", - "########################...............#", - "########################...............#", - "#######################................#", //------------------------ - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", // 10 - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - }; - - static const char *mk1_xpm[] = { - "40 13 2 1", - ". c #ff0000", - "# c none", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - "#######################................#", - "########################...............#", - "########################...............#", - "####################################### ", - }; - - static const char *mk2_xpm[] = { - "40 13 2 1", - ". c #ff0000", - "# c none", - "########################...............#", - "########################...............#", - "#######################................#", //------------------------ - ".......................................#", - ".......................................#", - ".......................................#", // 6 - ".......................................#", - ".......................................#", - ".......................................#", //-------------------------- - "#######################................#", - "########################...............#", - "########################...............#", // 7 - "####################################### ", - }; - - static const char *mk3_xpm[] = { - "40 13 2 1", - ". c #ff0000", - "# c none", - "########################...............#", - "########################...............#", - "#######################................#", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - "########################################", - }; - - static const char *mk4_xpm[] = { - "40 13 2 1", - "# c #ff0000", - ". c none", - "........................................", - "........................................", - "........................................", - "#######################.................", - "########################................", - "########################................", - "########################................", - "########################................", - "########################................", - "#######################.................", - "........................................", - "........................................", - "........................................", - }; - - if (octave == 0) { - octave = new QPixmap(oct_xpm); - mk1 = new QPixmap(mk1_xpm); - mk2 = new QPixmap(mk2_xpm); - mk3 = new QPixmap(mk3_xpm); - mk4 = new QPixmap(mk4_xpm); - } - yRange = keyHeight * 75; - } - -//--------------------------------------------------------- -// pitch2y -// y = 0 == origin of rCanvasA -//--------------------------------------------------------- - -int TimeCanvas::pitch2y(int pitch) const - { - int y; - if (type == TIME_CANVAS_DRUMEDIT) - y = pitch * drumHeight; - else { - static int tt[] = { - 12, 19, 25, 32, 38, 51, 58, 64, 71, 77, 84, 90 - }; - y = (75 * keyHeight) - (tt[pitch % 12] + (7 * keyHeight) * (pitch / 12)); - if (y < 0) - y = 0; - } - return lrint(y - wpos.y() / _ymag); - } - -//--------------------------------------------------------- -// y2pitch -// y = 0 == origin of rCanvasA -//--------------------------------------------------------- - -int TimeCanvas::y2pitch(int y) const - { - y = lrint((y + wpos.y()) / _ymag); - int pitch; - if (type == TIME_CANVAS_DRUMEDIT) - pitch = y / drumHeight; - else { - const int total = (10 * 7 + 5) * keyHeight; // 75 Ganztonschritte - y = total - y; - int oct = (y / (7 * keyHeight)) * 12; - char kt[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 2, 2, - 3, 3, 3, 3, 3, 3, 3, - 4, 4, 4, 4, 4, 4, 4, 4, 4, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 6, 6, 6, 6, 6, 6, 6, - 7, 7, 7, 7, 7, 7, - 8, 8, 8, 8, 8, 8, 8, - 9, 9, 9, 9, 9, 9, - 10, 10, 10, 10, 10, 10, 10, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11 - }; - pitch = kt[y % 91] + oct; - if (pitch < 0 || pitch > 127) - pitch = -1; - } - return pitch; - } - -//--------------------------------------------------------- -// paintPiano -//--------------------------------------------------------- - -void TimeCanvas::paintPiano(QPainter& p, QRect r) - { - int d = int(_ymag)+1; - qreal x = qreal(r.x()); - qreal y = (r.y()-rulerHeight-d) / _ymag; - if (y < 0.0) - y = 0.0; - qreal h = (r.height()+d) / _ymag; - QPointF offset(x, wpos.y() / _ymag + keyHeight * 2 + y); - - p.translate(0.0, qreal(rulerHeight)); - p.scale(1.0, _ymag); - p.drawTiledPixmap(QRectF(x, y, qreal(r.width()), h), *octave, offset); - - if (curPitch != -1) { - int y = pitch2y(curPitch); - QPixmap* pm; - switch(curPitch % 12) { - case 0: - case 5: - pm = mk3; - break; - case 2: - case 7: - case 9: - pm = mk2; - break; - case 4: - case 11: - pm = mk1; - break; - default: - pm = mk4; - break; - } - p.drawPixmap(0, y, *pm); - } - p.resetMatrix(); - } - -//--------------------------------------------------------- -// paintPianorollHorizontalGrid -//--------------------------------------------------------- - -void TimeCanvas::paintPianorollHorizontalGrid(QPainter& p, QRect r) - { - qreal offset = rulerHeight - wpos.y(); - qreal kh = keyHeight * _ymag; - - int x1 = r.x(); - int x2 = x1 + r.width(); - if (x1 < pianoWidth) - x1 = pianoWidth; - qreal y = kh + offset; - qreal y1 = r.y() - _ymag; - qreal y2 = y1 + r.height() + _ymag; - for (int key = 1; key < 75; ++key, y += kh) { - if (y < y1) - continue; - if (y > y2) - break; - switch (key % 7) { - case 2: - case 5: - p.setPen(QPen(Qt::lightGray)); - break; - default: - p.setPen(QPen(Qt::gray)); - break; - } - p.drawLine(QLineF(x1, y, x2, y)); - } - } - -//--------------------------------------------------------- -// paintDrumeditHorizontalGrid -//--------------------------------------------------------- - -void TimeCanvas::paintDrumeditHorizontalGrid(QPainter& p, QRect r) - { - int offset = rulerHeight - wpos.y(); - - p.setPen(QPen(Qt::lightGray)); - int x1 = r.x(); - int x2 = x1 + r.width(); - if (x1 < drumWidth) - x1 = drumWidth; - - p.setPen(QPen(Qt::lightGray)); - - int y = offset; - int y1 = r.y(); - int y2 = y1 + r.height(); - for (int i = 0; i < 128; ++i, y += drumHeight) { - if (y < y1) - continue; - if (y > y2) - break; - p.drawLine(QLine(x1, y, x2, y)); - } - } - -//--------------------------------------------------------- -// addCtrlClicked -//--------------------------------------------------------- - -void TimeCanvas::addCtrlClicked() - { - addController(); - } - -//--------------------------------------------------------- -// updateGeometry -//--------------------------------------------------------- - -void TimeCanvas::updateGeometry() - { - int wh = _widget->height(); - int ww = _widget->width(); - if (wh < ctrlHeight) - ctrlHeight = wh; - - int x1 = 0; - if (type == TIME_CANVAS_PIANOROLL) - x1 = pianoWidth; - else if (type == TIME_CANVAS_DRUMEDIT) - x1 = drumWidth; - else if (type == TIME_CANVAS_WAVEEDIT) - x1 = waveWidth; - int y2 = wh - ctrlHeight; - - rPanelA.setRect(0, rulerHeight, x1, wh - rulerHeight - ctrlHeight); - rPanelB.setRect(0, y2, x1, ctrlHeight); - - int cw = ww - x1; - rRuler.setRect( x1, 0, cw, rulerHeight); - rCanvasA.setRect(x1, rulerHeight, cw, wh - rulerHeight - ctrlHeight); - rCanvasB.setRect(x1, y2, cw, ctrlHeight); - - rButton.setRect(0, 0, rCanvasA.x(), rPanelA.y()); - - if (yRange > 0 && _yFit) { - _ymagMin = double(rCanvasA.height()) / double(yRange); - if (_ymag < _ymagMin) - _ymag = _ymagMin; - if (vmag) - vmag->setValue(lrint((_ymag-_ymagMin)*100.0/(_ymagMax-_ymagMin))); - } - } - -//--------------------------------------------------------- -// setTool -//--------------------------------------------------------- - -void TimeCanvas::setTool(int t) - { - if (_tool == Tool(t)) - return; - _tool = Tool(t); - emit toolChanged(_tool); - setCursor(); - } - -//--------------------------------------------------------- -// setCursor -//--------------------------------------------------------- - -void TimeCanvas::setCursor() - { - switch(_tool) { - case PencilTool: - widget()->setCursor(QCursor(QPixmap(":/xpm/pencil.xpm"), 4, 15)); - break; - case RubberTool: - widget()->setCursor(QCursor(QPixmap(":/xpm/delete.xpm"), 4, 15)); - break; - case GlueTool: - widget()->setCursor(QCursor(QPixmap(":/xpm/glue.xpm"), 4, 15)); - break; - case CutTool: - widget()->setCursor(QCursor(QPixmap(":/xpm/cut.xpm"), 4, 15)); - break; - case MuteTool: - widget()->setCursor(QCursor(QPixmap(":/xpm/editmute.xmp"), 4, 15)); - break; - default: - widget()->setCursor(QCursor(Qt::ArrowCursor)); - break; - } - } - -//--------------------------------------------------------- -// setCanvasBackground -//--------------------------------------------------------- - -void TimeCanvas::setCanvasBackground(const QColor& color) - { - canvasBackgroundPixmap = QPixmap(); - canvasBackgroundColor = color; - widget()->update(); - } - -//--------------------------------------------------------- -// setCanvasBackground -//--------------------------------------------------------- - -void TimeCanvas::setCanvasBackground(const QPixmap& pm) - { - canvasBackgroundPixmap = pm; - widget()->update(); - } - -//--------------------------------------------------------- -// setYMagRange -//--------------------------------------------------------- - -void TimeCanvas::setYMagRange(double min, double max) - { - _ymagMin = min; - _ymagMax = max; - if (vmag) - vmag->setValue(lrint((_ymag-_ymagMin)*100.0/(_ymagMax-_ymagMin))); - } - -//--------------------------------------------------------- -// setVSize -//--------------------------------------------------------- - -void TimeCanvas::setVSize(int val) - { - if (yRange == val) - return; - yRange = val; - if (_yFit) { - _ymagMin = double(rCanvasA.height()) / double(yRange); - if (_ymag < _ymagMin) - _ymag = _ymagMin; - if (vmag) - vmag->setValue(lrint((_ymag-_ymagMin)*100.0/(_ymagMax-_ymagMin))); - } - updateScrollBars(); - } - -//--------------------------------------------------------- -// s2xmag -// nonlinear xmag behaviour, feels better -//--------------------------------------------------------- - -double TimeCanvas::s2xmag(int val) - { - val = 100 - val; - double f = 1.0 - log10(val * val + 1) * 0.25; - return (_xmagMax - _xmagMin) * f + _xmagMin; - } - -//--------------------------------------------------------- -// xmag2s -//--------------------------------------------------------- - -int TimeCanvas::xmag2s(double m) - { - m -= _xmagMin; - m /= (_xmagMax - _xmagMin); - double val = sqrt(exp10((1.0 - m) * 4.0)-1.0); - return lrint(100.0 - val); - } - -//--------------------------------------------------------- -// setPart -//--------------------------------------------------------- - -void TimeCanvas::setPart(const AL::Pos& p1, const AL::Pos& p2) - { - partPos1 = p1; - partPos2 = p2; - widget()->update(); - } - -//--------------------------------------------------------- -// setFont1 -//--------------------------------------------------------- - -void TimeCanvas::setFont1(const QFont& f) - { - _font1 = f; - printf("TimeCanvas::setFont1\n"); - } - -//--------------------------------------------------------- -// setFont2 -//--------------------------------------------------------- - -void TimeCanvas::setFont2(const QFont& f) - { - _font2 = f; - } - -//--------------------------------------------------------- -// setFont3 -//--------------------------------------------------------- - -void TimeCanvas::setFont3(const QFont& f) - { - _font3 = f; - } - diff --git a/muse/awl/tcanvas.h b/muse/awl/tcanvas.h deleted file mode 100644 index 09b26b1d..00000000 --- a/muse/awl/tcanvas.h +++ /dev/null @@ -1,293 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __TCANVAS_H__ -#define __TCANVAS_H__ - -#include "al/pos.h" -#include "al/marker.h" - -#define MAP_OFFSET 20 - -enum TimeCanvasType { - TIME_CANVAS, TIME_CANVAS_PIANOROLL, TIME_CANVAS_DRUMEDIT, - TIME_CANVAS_WAVEEDIT - }; - -enum Tool { - PointerTool=1, PencilTool=2, RubberTool=4, CutTool=8, - GlueTool=16, QuantTool=32, DrawTool=64, MuteTool=128 - }; - -enum FollowMode { - FOLLOW_NO, FOLLOW_JUMP, FOLLOW_CONTINUOUS - }; - -static const int rulerHeight = 28; -static const int pianoWidth = 40; -static const int waveWidth = 40; -static const int drumWidth = 120; -static const int drumHeight = 18; -static const int keyHeight = 13; - -//--------------------------------------------------------- -// TimeCanvas -// -// Layout: -// Button Ruler -// panelA canvasA -// panelB canvasB -// -// Pianoroll: -// panelA -> keyboard -// -// Drumeditor: -// panelA -> instrument list -// -//--------------------------------------------------------- - -class TimeCanvas : public QFrame { - Q_OBJECT - - Q_PROPERTY(QFont font1 READ font1 WRITE setFont1) - Q_PROPERTY(QFont font2 READ font2 WRITE setFont2) - Q_PROPERTY(QFont font3 READ font3 WRITE setFont3) - - // I could not find out how to set the size of a font property with - // style sheets. As a workaround here are special "size" properties - // which could be set with style sheet command - // TimeCanvas { qproperty-fontSize1: 6 } - - Q_PROPERTY(int fontSize1 READ fontSize1 WRITE setFontSize1 STORED false) - Q_PROPERTY(int fontSize2 READ fontSize2 WRITE setFontSize2 STORED false) - Q_PROPERTY(int fontSize3 READ fontSize3 WRITE setFontSize3 STORED false) - - QFont _font1; - QFont _font2; - QFont _font3; - - int yRange; - bool _yFit; - AL::Pos pos1; // time scroll range - AL::Pos pos2; - - int metronomeRulerMag; - - double _xmagMin, _xmagMax; - double _ymagMin, _ymagMax; - - AL::TType _timeType; - AL::MarkerList* marker; - QScrollBar* hbar; - QScrollBar* vbar; - QSlider* vmag; - QSlider* hmag; - QToolButton* timeTypeButton; - QGridLayout* grid; - QColor canvasBackgroundColor; - QPixmap canvasBackgroundPixmap; - int dragType; - bool followPos; - - // - // pianoroll variables - // - static QPixmap* octave; - static QPixmap* mk1; - static QPixmap* mk2; - static QPixmap* mk3; - static QPixmap* mk4; - QPushButton* addCtrlButton; - - bool mouseInB; - - void updateScrollBars(); - void canvasPaintEvent(const QRect&, QPainter&); - void paintCanvas(QPainter&, const QRect&); - void paintMetronomRuler(QPainter&, const QRect&); - void paintClockRuler(QPainter&, const QRect&); - void initPianoroll(); - void paintPiano(QPainter&, QRect); - void paintPianorollHorizontalGrid(QPainter&, QRect); - void paintDrumeditHorizontalGrid(QPainter&, QRect); - void updateGeometry(); - double s2xmag(int val); - int xmag2s(double m); - void updateRulerMag(); - - protected: - TimeCanvasType type; - Tool _tool; - QRect rButton, rPanelA, rPanelB, rRuler, rCanvasA, rCanvasB; - AL::Pos pos[3]; - bool showCursor; - AL::Pos cursor; - - QWidget* _widget; - - AL::Pos partPos1; // active time range for midi editors - AL::Pos partPos2; - - QPoint wpos; // "widget" position - double _xmag, _ymag; - - int ctrlHeight; - int curPitch; - - int _raster; - int button; - Qt::KeyboardModifiers keyState; - - bool eventFilter(QObject*, QEvent*); - - virtual void paint(QPainter&, QRect) = 0; - virtual void mousePress(QMouseEvent*) {} - virtual void mouseMove(QPoint) {} - virtual void mouseRelease(QMouseEvent*) {} - virtual void mouseDoubleClick(QMouseEvent*) {} - virtual void paintDrumList(QPainter&, QRect) {} - virtual void layout() {} - virtual void enterB() {} - virtual void leaveB() {} - - virtual void setCursor(); - - virtual void timeTypeChanged() {} - virtual void magChanged() {} - - virtual void paintControllerCanvas(QPainter&, QRect) {} - virtual void paintControllerPanel(QPainter&, QRect) {} - - virtual void dragEnter(QDragEnterEvent*) {} - virtual void drop(QDropEvent*) {} - virtual void dragMove(QDragMoveEvent*) {} - virtual void dragLeave(QDragLeaveEvent*) {} - - virtual void addController() {} - - virtual void keyPressEvent(QKeyEvent *e); - virtual void keyboardNavigate(QKeyEvent *) {} - - // map logical coordinates to physical coordinates (pixel) - int mapx(int x) const; - int mapy(int y) const { return lrint(y * _ymag) - wpos.y(); } - int rmapx(int x) const { return lrint(x * _xmag); } - int rmapy(int y) const { return lrint(y * _ymag); } - QPoint map(const QPoint& p) const { - return QPoint(mapx(p.x()), mapy(p.y())); - } - QPoint rmap(const QPoint& p) const { - return QPoint(rmapx(p.x()), rmapy(p.y())); - } - - // map physical coordinates (pixel) to logical coordinates - int mapxDev(int x) const; - int rmapxDev(int x) const { return lrint(x / _xmag); } - int mapyDev(int y) const { - int val = lrint((y + wpos.y()) / _ymag); - return val < 0 ? 0 : val; - } - QPoint mapDev(const QPoint& p) const { - return QPoint(mapxDev(p.x()), mapyDev(p.y())); - } - - virtual int y2pitch(int y) const; - virtual int pitch2y(int pitch) const; - void setTimeType1(AL::TType t); - void setPart(const AL::Pos& p1, const AL::Pos& p2); - - private slots: - void moveX(int); - void scaleX(int); - void scaleY(int); - void toggleTimeType(); - void addCtrlClicked(); - - signals: - void posChanged(int, const AL::Pos&); // emitted from ruler - void cursorPos(const AL::Pos&, bool); - void contentsMoving(int, int); - void addMarker(const AL::Pos&); - void removeMarker(const AL::Pos&); - void pitchChanged(int); - void toolChanged(int); - - public slots: - void setLocatorPos(int idx, const AL::Pos&, bool follow); - void setVSize(int); - virtual void setRaster(int); - void setYPos(int); - void moveY(int); - void setEndPos(const AL::Pos&); - void tempoChanged(); - void setTool(int); - void setFollow(bool val) { followPos = val; } - - public: - TimeCanvas(TimeCanvasType = TIME_CANVAS); - void setTimeRange(const AL::Pos&, const AL::Pos&); - void setMag(double, double); - double xmag() const { return _xmag; } - double ymag() const { return _ymag; } - - void setYMagRange(double, double); - void setYFit(bool val) { _yFit = val; } - - QPoint getWPos() const { return wpos; } - QWidget* widget() const { return _widget; } - void setWPos(const QPoint& p); - void setTimeType(AL::TType t); - AL::TType timeType() const { return _timeType; } - void setMarkerList(AL::MarkerList*); - void setCornerWidget(QWidget* w); - void resizeController(int); - int raster() const { return _raster; } - - AL::Pos pix2pos(int x) const; - int pos2pix(const AL::Pos&) const; - QScrollBar* verticalScrollBar() const { return vbar; } - Tool tool() const { return _tool; } - void setCanvasBackground(const QColor& color); - void setCanvasBackground(const QPixmap& pm); - - void updateCanvasB() { _widget->update(rCanvasB); } - void updateRuler() { _widget->update(rRuler); } - - QFont font1() const { return _font1; } - QFont font2() const { return _font2; } - QFont font3() const { return _font3; } - - void setFont1(const QFont& f); - void setFont2(const QFont& f); - void setFont3(const QFont& f); - - int fontSize1() const { return _font1.pointSize(); } - int fontSize2() const { return _font2.pointSize(); } - int fontSize3() const { return _font3.pointSize(); } - void setFontSize1(int val) { _font1.setPointSize(val); } - void setFontSize2(int val) { _font2.setPointSize(val); } - void setFontSize3(int val) { _font3.setPointSize(val); } - - static FollowMode followMode; - friend class CtrlEdit; - }; - -#endif - diff --git a/muse/awl/tempoedit.cpp b/muse/awl/tempoedit.cpp deleted file mode 100644 index d7dbac81..00000000 --- a/muse/awl/tempoedit.cpp +++ /dev/null @@ -1,88 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "tempoedit.h" - -namespace Awl { - -//--------------------------------------------------------- -// TempoEdit -//--------------------------------------------------------- - -TempoEdit::TempoEdit(QWidget* parent) - : QDoubleSpinBox(parent) - { - curVal = -1.0; - setSingleStep(1.0); - setRange(30.0, 600.0); - connect(this, SIGNAL(valueChanged(double)), SLOT(newValue(double))); - } - -//--------------------------------------------------------- -// sizeHint -//--------------------------------------------------------- - -QSize TempoEdit::sizeHint() const - { - QFontMetrics fm(font()); - int fw = style()->pixelMetric(QStyle::PM_DefaultFrameWidth); - int h = fm.height() + fw * 2; - int w = 2 + fm.width(QString("000.00")) + fw * 4 + 30; - return QSize(w, h).expandedTo(QApplication::globalStrut()); - } - -//--------------------------------------------------------- -// newValue -//--------------------------------------------------------- - -void TempoEdit::newValue(double val) - { - if (val != curVal) { - curVal = val; - emit tempoChanged(tempo()); - } - } - -//--------------------------------------------------------- -// setTempo -//--------------------------------------------------------- - -void TempoEdit::setTempo(int val) - { - double d = 60000000.0/double(val); - if (d != curVal) { - curVal = d; - blockSignals(true); - setValue(d); - blockSignals(false); - } - } - -//--------------------------------------------------------- -// tempo -//--------------------------------------------------------- - -int TempoEdit::tempo() const - { - return lrint(60000000.0/value()); - } - -} - diff --git a/muse/awl/tempoedit.h b/muse/awl/tempoedit.h deleted file mode 100644 index af06221d..00000000 --- a/muse/awl/tempoedit.h +++ /dev/null @@ -1,55 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AWLTEMPOEDIT_H__ -#define __AWLTEMPOEDIT_H__ - -namespace Awl { - -//--------------------------------------------------------- -// TempoEdit -//--------------------------------------------------------- - -class TempoEdit : public QDoubleSpinBox { - Q_OBJECT - - double curVal; - - protected: - QSize sizeHint() const; - - private slots: - void newValue(double); - - public slots: - void setTempo(int); - - signals: - void tempoChanged(int); - - public: - TempoEdit(QWidget*); - int tempo() const; - }; - -} - -#endif - diff --git a/muse/awl/tempolabel.cpp b/muse/awl/tempolabel.cpp deleted file mode 100644 index 3fcdec5c..00000000 --- a/muse/awl/tempolabel.cpp +++ /dev/null @@ -1,72 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "tempolabel.h" - -namespace Awl { - -//--------------------------------------------------------- -// TempoLabel -//--------------------------------------------------------- - -TempoLabel::TempoLabel(QWidget* parent) - : QLabel(parent) - { - setFrameStyle(WinPanel | Sunken); - setLineWidth(2); - setMidLineWidth(3); - _value = 1.0; - setValue(0.0); - setIndent(3); - setMinimumSize(sizeHint()); - } - -//--------------------------------------------------------- -// setVal -//--------------------------------------------------------- - -void TempoLabel::setValue(int val) - { - setValue(double(val/1000.0)); - } - -void TempoLabel::setValue(double val) - { - if (val == _value) - return; - _value = val; - QString s = QString("%1").arg(val, 3, 'f', 2); - setText(s); - } - -//--------------------------------------------------------- -// sizeHint -//--------------------------------------------------------- - -QSize TempoLabel::sizeHint() const - { - QFontMetrics fm(font()); - int fw = 4; - int h = fm.height() + fw * 2; - int w = 6 + fm.width(QString("000.00")) + fw * 2; // 6=indent - return QSize(w, h).expandedTo(QApplication::globalStrut()); - } -} - diff --git a/muse/awl/tempolabel.h b/muse/awl/tempolabel.h deleted file mode 100644 index cf30444e..00000000 --- a/muse/awl/tempolabel.h +++ /dev/null @@ -1,48 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AWLTEMPOLABEL_H__ -#define __AWLTEMPOLABEL_H__ - -namespace Awl { - -//--------------------------------------------------------- -// TempoLabel -//--------------------------------------------------------- - -class TempoLabel : public QLabel { - double _value; - - Q_OBJECT - - protected: - QSize sizeHint() const; - - public slots: - void setValue(int); - void setValue(double); - - public: - TempoLabel(QWidget*); - }; -} - -#endif - diff --git a/muse/awl/utils.cpp b/muse/awl/utils.cpp deleted file mode 100644 index 29fe148f..00000000 --- a/muse/awl/utils.cpp +++ /dev/null @@ -1,48 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "utils.h" - -static const char* vall[] = { - "c","c#","d","d#","e","f","f#","g","g#","a","a#","h" - }; -static const char* valu[] = { - "C","C#","D","D#","E","F","F#","G","G#","A","A#","H" - }; - -namespace Awl { - -//--------------------------------------------------------- -// pitch2string -//--------------------------------------------------------- - -QString pitch2string(int v) - { - if (v < 0 || v > 127) - return QString("----"); - int octave = (v / 12) - 2; - QString o; - o.sprintf("%d", octave); - int i = v % 12; - QString s(octave < 0 ? valu[i] : vall[i]); - return s + o; - } -} - diff --git a/muse/awl/utils.h b/muse/awl/utils.h deleted file mode 100644 index c97bc7bf..00000000 --- a/muse/awl/utils.h +++ /dev/null @@ -1,29 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AWLUTILS_H__ -#define __AWLUTILS_H__ - -namespace Awl { - extern QString pitch2string(int); - } - -#endif - diff --git a/muse/awl/volentry.cpp b/muse/awl/volentry.cpp deleted file mode 100644 index 23b38720..00000000 --- a/muse/awl/volentry.cpp +++ /dev/null @@ -1,37 +0,0 @@ -//============================================================================= -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "fastlog.h" -#include "volentry.h" - -namespace Awl { - -//--------------------------------------------------------- -// VolEntry -//--------------------------------------------------------- - -VolEntry::VolEntry(QWidget* parent) - : FloatEntry(parent) - { - setRange(-60.0f, 10.0f); - setSpecialText(tr("off")); - setPrecision(0); - setLog(true); - } -} - diff --git a/muse/awl/volentry.h b/muse/awl/volentry.h deleted file mode 100644 index 0b51b945..00000000 --- a/muse/awl/volentry.h +++ /dev/null @@ -1,41 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AWLVOLENTRY_H__ -#define __AWLVOLENTRY_H__ - -#include "floatentry.h" - -namespace Awl { - -//--------------------------------------------------------- -// VolEntry -//--------------------------------------------------------- - -class VolEntry : public FloatEntry { - Q_OBJECT - - public: - VolEntry(QWidget* parent); - }; - -} - -#endif diff --git a/muse/awl/volknob.cpp b/muse/awl/volknob.cpp deleted file mode 100644 index da9a1e63..00000000 --- a/muse/awl/volknob.cpp +++ /dev/null @@ -1,39 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "fastlog.h" -#include "volknob.h" - -namespace Awl { - -//--------------------------------------------------------- -// VolKnob -//--------------------------------------------------------- - -VolKnob::VolKnob(QWidget* parent) - : Knob(parent) - { - setLog(true); - setRange(-60.0f, 10.0f); - _lineStep = .8f; - _pageStep = 3.0f; - } -} - diff --git a/muse/awl/volknob.h b/muse/awl/volknob.h deleted file mode 100644 index 7cec4335..00000000 --- a/muse/awl/volknob.h +++ /dev/null @@ -1,46 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AWLVOLKNOB_H__ -#define __AWLVOLKNOB_H__ - -#include "knob.h" - -namespace Awl { - -//--------------------------------------------------------- -// VolKnob -//! Volume Knob entry widget -// -//! This widget implements knob with a logarithmic -//! floating point scale used to adjust the volume -//! in an audio mixer. -//--------------------------------------------------------- - -class VolKnob : public Knob { - Q_OBJECT - - public: - VolKnob(QWidget* parent = 0); - }; -} - -#endif - diff --git a/muse/awl/volslider.cpp b/muse/awl/volslider.cpp deleted file mode 100644 index 59f1b8cf..00000000 --- a/muse/awl/volslider.cpp +++ /dev/null @@ -1,85 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "fastlog.h" -#include "volslider.h" - -namespace Awl { - -//--------------------------------------------------------- -// VolSlider -//--------------------------------------------------------- - -VolSlider::VolSlider(QWidget* parent) - : Slider(parent) - { - setLog(true); - setRange(-60.0f, 10.0f); - setScaleWidth(7); - setLineStep(.8f); - setPageStep(3.0f); - } - -//--------------------------------------------------------- -// mouseDoubleClickEvent -//--------------------------------------------------------- - -void VolSlider::mouseDoubleClickEvent(QMouseEvent* ev) - { - if (ev->button() == Qt::RightButton) - _value = 0.0; - else - _value = _minValue; - valueChange(); - update(); - } - - -//--------------------------------------------------------- -// setValue -//--------------------------------------------------------- - -void VolSlider::setValue(double val) - { - if (_log) { - if (val == 0.0f) - _value = _minValue; - else { - _value = fast_log10(val) * 20.0f; - if (_value < _minValue) - _value = _minValue; - } - } - else - _value = val; - update(); - } - -//--------------------------------------------------------- -// value -//--------------------------------------------------------- - -double VolSlider::value() const - { - return _log ? (_value <= _minValue) ? 0.0f : pow(10.0, _value*0.05f) - : _value; - } - -} diff --git a/muse/awl/volslider.h b/muse/awl/volslider.h deleted file mode 100644 index 22b4000f..00000000 --- a/muse/awl/volslider.h +++ /dev/null @@ -1,57 +0,0 @@ -//============================================================================= -// Awl -// Audio Widget Library -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AWLVOLSLIDER_H__ -#define __AWLVOLSLIDER_H__ - -#include "slider.h" - -namespace Awl { - -//--------------------------------------------------------- -// VolSlider -//! Volume Slider entry widget -// -//! This widget implements a slider with a logarithmic -//! floating point scale used to adjust the volume -//! in an audio mixer. -//! Internal value represents gain as a logarythmic -//! dB value. -//--------------------------------------------------------- - -class VolSlider : public Slider { - Q_OBJECT - - protected: - virtual void mouseDoubleClickEvent(QMouseEvent*); - - public slots: - virtual void setValue(double v); - - public: - VolSlider(QWidget* parent = 0); - - virtual double value() const; - }; - -} - -#endif - diff --git a/muse/cmake/TargetDoc.cmake b/muse/cmake/TargetDoc.cmake deleted file mode 100644 index e6afb583..00000000 --- a/muse/cmake/TargetDoc.cmake +++ /dev/null @@ -1,125 +0,0 @@ -# -helper macro to add a "doxy" target with CMake build system. -# and configure Doxyfile.in to Doxyfile -# -# target "doxy" allows building the documentation with doxygen/dot on WIN32 and Linux -# Creates .chm windows help file if MS HTML help workshop -# (available from http://msdn.microsoft.com/workshop/author/htmlhelp) -# is installed with its DLLs in PATH. -# -# -# Please note, that the tools, e.g.: -# doxygen, dot, latex, dvips, makeindex, gswin32, etc. -# must be in path. -# -# Note about Visual Studio Projects: -# MSVS hast its own path environment which may differ from the shell. -# See "Menu Tools/Options/Projects/VC++ Directories" in VS 7.1 -# -# author Jan Woetzel 2004-2006 -# www.mip.informatik.uni-kiel.de/~jw - -FIND_PACKAGE(Doxygen) - -IF (DOXYGEN) - - MESSAGE("found Doxygen") - - # click+jump in Emacs and Visual Studio (for Doxyfile) (jw) - IF (CMAKE_BUILD_TOOL MATCHES "(msdev|devenv)") - SET(DOXY_WARN_FORMAT "\"$file($line) : $text \"") - ELSE (CMAKE_BUILD_TOOL MATCHES "(msdev|devenv)") - SET(DOXY_WARN_FORMAT "\"$file:$line: $text \"") - ENDIF (CMAKE_BUILD_TOOL MATCHES "(msdev|devenv)") - - # we need latex for doxygen because of the formulas - FIND_PACKAGE(LATEX) - IF (NOT LATEX_COMPILER) - MESSAGE(STATUS "latex command LATEX_COMPILER not found but usually required. You will probably get warnings and user inetraction on doxy run.") - ENDIF (NOT LATEX_COMPILER) - IF (NOT MAKEINDEX_COMPILER) - MESSAGE(STATUS "makeindex command MAKEINDEX_COMPILER not found but usually required.") - ENDIF (NOT MAKEINDEX_COMPILER) - IF (NOT DVIPS_CONVERTER) - MESSAGE(STATUS "dvips command DVIPS_CONVERTER not found but usually required.") - ENDIF (NOT DVIPS_CONVERTER) - - IF (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in") - MESSAGE(STATUS "configured ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in --> ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile") - CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in - ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile - @ONLY ) - # use (configured) Doxyfile from (out of place) BUILD tree: - SET(DOXY_CONFIG "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile") - ELSE (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in") - # use static hand-edited Doxyfile from SOURCE tree: - SET(DOXY_CONFIG "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile") - IF (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile") - MESSAGE(STATUS "WARNING: using existing ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile instead of configuring from Doxyfile.in file.") - ELSE (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile") - IF (EXISTS "${CMAKE_MODULE_PATH}/Doxyfile.in") - # using template Doxyfile.in - MESSAGE(STATUS "configured ${CMAKE_CMAKE_MODULE_PATH}/Doxyfile.in --> ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile") - CONFIGURE_FILE(${CMAKE_MODULE_PATH}/Doxyfile.in - ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile - @ONLY ) - SET(DOXY_CONFIG "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile") - ELSE (EXISTS "${CMAKE_MODULE_PATH}/Doxyfile.in") - # failed completely... - MESSAGE(SEND_ERROR "Please create ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in (or Doxyfile as fallback)") - ENDIF(EXISTS "${CMAKE_MODULE_PATH}/Doxyfile.in") - - ENDIF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile") - ENDIF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in") - - ADD_CUSTOM_TARGET(doxy ${DOXYGEN} ${DOXY_CONFIG}) - - # create a windows help .chm file using hhc.exe - # HTMLHelp DLL must be in path! - # fallback: use hhw.exe interactively - IF (WIN32) - FIND_PACKAGE(HTMLHelp) - IF (HTML_HELP_COMPILER) - SET (TMP "${CMAKE_CURRENT_BINARY_DIR}\\Doc\\html\\index.hhp") - STRING(REGEX REPLACE "[/]" "\\\\" HHP_FILE ${TMP} ) - # MESSAGE(SEND_ERROR "DBG HHP_FILE=${HHP_FILE}") - ADD_CUSTOM_TARGET(winhelp ${HTML_HELP_COMPILER} ${HHP_FILE}) - ADD_DEPENDENCIES (winhelp doxy) - - IF (NOT TARGET_DOC_SKIP_INSTALL) - # install windows help? - # determine useful name for output file - # should be project and version unique to allow installing - # multiple projects into one global directory - IF (EXISTS "${PROJECT_BINARY_DIR}/Doc/html/index.chm") - IF (PROJECT_NAME) - SET(OUT "${PROJECT_NAME}") - ELSE (PROJECT_NAME) - SET(OUT "Documentation") # default - ENDIF(PROJECT_NAME) - IF (${PROJECT_NAME}_VERSION_MAJOR) - SET(OUT "${OUT}-${${PROJECT_NAME}_VERSION_MAJOR}") - IF (${PROJECT_NAME}_VERSION_MINOR) - SET(OUT "${OUT}.${${PROJECT_NAME}_VERSION_MINOR}") - IF (${PROJECT_NAME}_VERSION_PATCH) - SET(OUT "${OUT}.${${PROJECT_NAME}_VERSION_PATCH}") - ENDIF(${PROJECT_NAME}_VERSION_PATCH) - ENDIF(${PROJECT_NAME}_VERSION_MINOR) - ENDIF(${PROJECT_NAME}_VERSION_MAJOR) - # keep suffix - SET(OUT "${OUT}.chm") - - #MESSAGE("DBG ${PROJECT_BINARY_DIR}/Doc/html/index.chm \n${OUT}") - # create target used by install and package commands - INSTALL(FILES "${PROJECT_BINARY_DIR}/Doc/html/index.chm" - DESTINATION "doxy" - RENAME "${OUT}" - ) - ENDIF(EXISTS "${PROJECT_BINARY_DIR}/Doc/html/index.chm") - ENDIF(NOT TARGET_DOC_SKIP_INSTALL) - - ENDIF(HTML_HELP_COMPILER) - # MESSAGE(SEND_ERROR "HTML_HELP_COMPILER=${HTML_HELP_COMPILER}") - ENDIF (WIN32) -ELSE(DOXYGEN) - MESSAGE("Doxygen not found") -ENDIF(DOXYGEN) diff --git a/muse/cmake/UsePkgConfig1.cmake b/muse/cmake/UsePkgConfig1.cmake deleted file mode 100644 index 55654d98..00000000 --- a/muse/cmake/UsePkgConfig1.cmake +++ /dev/null @@ -1,45 +0,0 @@ -# - pkg-config module for CMake -# -# Defines the following macros: -# -# PKGCONFIG(package includedir libdir linkflags cflags) -# -# Calling PKGCONFIG will fill the desired information into the 4 given arguments, -# e.g. PKGCONFIG(libart-2.0 LIBART_INCLUDE_DIR LIBART_LINK_DIR LIBART_LINK_FLAGS LIBART_CFLAGS) -# if pkg-config was NOT found or the specified software package doesn't exist, the -# variable will be empty when the function returns, otherwise they will contain the respective information -# - -FIND_PROGRAM(PKGCONFIG_EXECUTABLE NAMES pkg-config PATHS /usr/bin /usr/local/bin ) - -MACRO(PKGCONFIG _package _minVersion _include_DIR _link_DIR _link_FLAGS _cflags) -# reset the variables at the beginning - SET(${_include_DIR}) - SET(${_link_DIR}) - SET(${_link_FLAGS}) - SET(${_cflags}) - - # if pkg-config has been found - IF(PKGCONFIG_EXECUTABLE) - - EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS ${_package} --atleast-version=${_minVersion} RETURN_VALUE _return_VALUE OUTPUT_VARIABLE _pkgconfigDevNull ) -# EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS ${_package} --exists RETURN_VALUE _return_VALUE OUTPUT_VARIABLE _pkgconfigDevNull ) - - # and if the package of interest also exists for pkg-config, then get the information - IF(NOT _return_VALUE) - - EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS ${_package} --variable=includedir OUTPUT_VARIABLE ${_include_DIR} ) - - EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS ${_package} --variable=libdir OUTPUT_VARIABLE ${_link_DIR} ) - - EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS ${_package} --libs OUTPUT_VARIABLE ${_link_FLAGS} ) - - EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS ${_package} --cflags OUTPUT_VARIABLE ${_cflags} ) - - ENDIF(NOT _return_VALUE) - - ENDIF(PKGCONFIG_EXECUTABLE) - -ENDMACRO(PKGCONFIG _include_DIR _link_DIR _link_FLAGS _cflags) - -MARK_AS_ADVANCED(PKGCONFIG_EXECUTABLE) diff --git a/muse/config.h.in b/muse/config.h.in deleted file mode 100644 index 7a856aa5..00000000 --- a/muse/config.h.in +++ /dev/null @@ -1,29 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#cmakedefine DSSI_SUPPORT -#cmakedefine VST_SUPPORT -#cmakedefine USE_SSE -#cmakedefine JACK103 -#cmakedefine JACK107 - -#define INSTALL_NAME "${MusE_INSTALL_NAME}" -#define INSTPREFIX "${CMAKE_INSTALL_PREFIX}" -#define VERSION "${MusE_VERSION_FULL}" diff --git a/muse/doc/README.de b/muse/doc/README.de deleted file mode 100644 index 62aaaf20..00000000 --- a/muse/doc/README.de +++ /dev/null @@ -1,69 +0,0 @@ -==================================================================== - MusE --- Linux Music Editor -==================================================================== - -Guten Tag! -dies ist MusE, der Open Source MIDI/Audio Sequencer. - -MusE steht unter der GNU General Public Licence (GPL). -Für Einzelheiten siehe COPYING. - -,-----------------------------------------------------------------. -| HINWEIS | -|-----------------------------------------------------------------| -| Viel Teile des Codes von MusE sind EXPERIMENTELL und können | -| zu Programmabstürzen und wer weiß was sonst noch allem | -| führen. | -| SIE BENUTZEN DIESE SOFTWARE AUF EIGENES RISIKO! | -`-----------------------------------------------------------------' - - ============================= - Voraussetzungen - ============================= - - - qt 3.2.0 oder neuer - ftp://ftp.trolltech.com/qt/source - Bitte mit "-thread" option compilieren. - - - libsndfile 1.0.1 (aktuell ist 1.0.4) - http://www.zip.com.au/~erikd/libsndfile/ - - - JACK - http://jackit.sourceforge.net/ - download: - http://jackit.sourceforge.net/download/ - - - fluidsynth-1.0.3 (the synti formerly known as "iiwusynth") von - http://savannah.nongnu.org/download/fluid - - - Linux Kernel mit rtc (RealTimeClock) Treiber (device /dev/rtc) - ("low latency patches" für minimales timing-jitter wären fein) - - - ALSA von http://www.alsa-project.org/ - Version 0.9.x oder neuer - - - gcc 3.x.x - (es muß der gleiche Compiler wie der zum compilieren der - QT-Libraries verwendet werden) - - - natürlich: eine Soundkarte und/oder irgendwelche Midi Geräte - - ============================= - Kompilierung - ============================= - - - download source von http://lmuse.sourceforge.net/ - - untar source: - tar xvofj muse-current-tar.bz2 - - konfigurieren: - run "configure" - - kompilieren: - run "make all" - - installieren - als root, run "make install" - - Test - -==================================================================== -Aktuelle(re) Infos gibt es auf der MusE Homepage -http://lmuse.sourceforge.net/ - diff --git a/muse/doc/README.instruments b/muse/doc/README.instruments deleted file mode 100644 index a2693b4e..00000000 --- a/muse/doc/README.instruments +++ /dev/null @@ -1,108 +0,0 @@ -================================================ - MusE loadable Midi Instrument Definitions - (as of 10.09.2003) MusE 0.7.0 -================================================ - - - File Extension ".idf" - - searched in Subdirectory "instruments" - (/usr/share/muse/instruments on my system) - - All found instrument definitions are presented by MusE - in Config->MidiPorts in Pulldown in column "Instrument". - -------------------------------------------------- - Example of Instrument Definition File: -------------------------------------------------- - - - - - - ...MusE event list which initializes instrument - - - - - ... - - - - - - ... - - 0x4a - 0 - 127 - 0 - - ... - - - -------------------------------------------------- - Notes -------------------------------------------------- - - (1) PatchGroups are not mandatory; its valid to write: - - - - - - - ... - - - (2) An "Instrument Definition File" can define more than on - Instrument, but it is recommended to use one file for - one instrument - - (3) the "prog" parameter in a "Patch" is mandatory. Missing - "hbank" or "lbank" are treated as "don't care". - Missing "drum" is treated as drum="0". - - A XG-Patch looks like: - - - (5) A patch can be associated with a "mode" with one of - - 1 - GM - 2 - GS - 4 - XG - - Example: - - - Mode id's can be ore'd together for patches which are valid - for more than one mode: - - - - (4) example for MusE event (Sysex "XG-On"): - - - 43 10 4c 00 00 7e 00 - - - (5) ... part can be omitted - - - (6) Controller have the following porperties: - - name: arbitrary unique (short) string describing the controller - n: controller number, defines also the controller type: - values from 0x0 - 0x7f are 7Bit controller - values from 0x1000 - 0x1ffff are 14 bit controller with - MSB/LSB value pairs - values from 0x20000 - 0x2ffff are RPN's - values from 0x30000 - 0x3ffff are NRPN's - - min: minimum value for controller - max: maximum value for controller - init: reset value for controller; when controller value is - undefined after instrument reset, use the ''undefined'' - value 0x10000 - - the min/max/init values can be ommited - diff --git a/muse/doc/README.ladspaguis b/muse/doc/README.ladspaguis deleted file mode 100644 index 5c77be26..00000000 --- a/muse/doc/README.ladspaguis +++ /dev/null @@ -1,63 +0,0 @@ -MusE can create LADSPA GUI's (graphical user interfaces) from -Qt designer *.ui files at runtime. -This allows a user to create or modify customized LADSPA guis without -recompiling MusE. - -====================== - Installation -===================== - -Copy the file muse/awl/libawlplugin.so and muse/awl/libawlplugin_debug.so -into a directory were Qt (designer) can find it. - -Example: - if you installed Qt in /usr/qt4: - su -c "cp -af awlplugin.so /usr/qt4/plugins/designer" -Check: - After starting the Qt designer you see all MusE specific widgets - in the widget box titled "MusE Awl Widgets". - If you cannot find any MusE widgets, designer did not find the - muse shared libs. - The MusE shared libs must have a signature qt designer understands. - If the signature is wrong, qt designer silently ignores the libs. - -====================== - Environment -====================== - -Naming: - The Qt designer files are named after the LADSPA plugin ID. - Example: the "freeverb" plugin has the id "1050". A gui for - freeverb has to be named "1050.ui". - The plugin ID is shown in the MusE plugin browser. - -Path: - MusE looks for *ui files at (museglobalshare)/plugins/. - If you installed MusE at "/usr" (configured with --prefix=/usr) - MusE looks at "/usr/share/muse/plugins" for *ui files. - -====================== - Creating *.ui file -====================== - -The association between LADSPA plugin parameters and Qt-Widgets is -done by name. All input widgets which manipulate a LADSPA parameter -must have a name starting with the letter "P". -The "id" property of every widget must be set to the parameter index -of the plugin, -One parameter can be manipulated with more than one widgets. - - Example: - A "Slider" widget which manipulates the 3th parameter of a - plugin has the name "Pslider" and the "id" property has a - value of "3". - -Supported Widgets: - "AwlSlider" slider for float values - "AwlFloatEntry" entry for float values - "AwlCheckbox" to manipulate a on/off LADSPA parameter - "AwlComboBox" select from a list of named values; sets - integer LADSPA values - -(for more hints please look at the example *.ui files) - diff --git a/muse/doc/README.realtime b/muse/doc/README.realtime deleted file mode 100644 index 7e992261..00000000 --- a/muse/doc/README.realtime +++ /dev/null @@ -1,19 +0,0 @@ -For reliable operation MusE needs "realtime priviledges". - -Kernel >= 2.6.12 - - load the set_rtlimits utility from: - http://www.physics.adelaide.edu.au/~jwoithe - - compile & install - - - create an audio group (if you dont have one already): - groupadd audio - - - add yourself to the audio group - - - create an entry in "/etc/set_rtlimits.conf": - - @audio /home/ws/projects/muse/muse/muse/muse -1 90 - - - start MusE with - set_rtlimits -r 60 /usr/local/bin/muse - diff --git a/muse/doc/README.shortcuts b/muse/doc/README.shortcuts deleted file mode 100644 index 48de30f3..00000000 --- a/muse/doc/README.shortcuts +++ /dev/null @@ -1,159 +0,0 @@ -From: Frank Neumann -Subject: [MusE] Keyboard shortcut list - -Hi all, -while reading some MusE source code during the last weeks, I made a list -of all keyboard shortcuts I found in there. I thought other might find -this useful, so I am posting this here. There are some "?" spots in -there where I am not perfectly sure if something is correct or really -works the way it should, so comments or corrections are welcome. A few -keys are also result of my first ever cvs commit to Muse :-). - -Frank - -2004-04-xx: - Also changed Ctrl+Shift+A to Select None. - -2004-01-08: - Changed Ctrl+A to Select All in Arranger for the sake of uniformity. (ML) - -2003-10-26: - Added Alt+L shortcut in drumeditor to set fixed length on drumnotes - according to drummap (Mathias Lundgren) - 2003-10-19: - In Arranger, Part Canvas: - added Alt+P shortcut in to move locators to part boundaries - Crsr Up / Crsr Down to move to nearest part on track above/below - in current window. - -04.01.2003: - - (ws) added new Delete keys in pianoroll and drumedit - - - -Shortcut keys in Muse, as of 0.6.0pre5: - -Arranger: -========= -Undo: Ctrl-Z -Redo: Ctrl-Y -New: Ctrl-N -Open: Ctrl-O -Save: Ctrl-S -Open PianoRoll Editor: Ctrl-E -Open Score Editor: Ctrl-R - -Open Recent: Ctrl-S (? collides with "Save"?) -Config Printer: Ctrl-P -Quit: Ctrl-Q - -Cut: Ctrl-X -Copy: Ctrl-C -Paste: Ctrl-V -Delete Track: Delete -Add Track: Ctrl-J -Select all: Ctrl-A -Deselect All Parts: Ctrl-B -Open Drums Editor: Ctrl-D -Open List Editor: Ctrl-L -Open Graphical Mastertrack Editor: Ctrl-M -Open List Mastertrack Editor: Shift-Ctrl-M -Open MIDI Transform Editor: Ctrl-T -Open Transport Panel: F11 -Open Bigtime Window: F12 -Open Help Browser: F1 -Start "What's This" Mode: Shift-F1 -Toggle Metronome Click: C - -Stop Playback / Rewind: Space -Stop Playback: Insert -Start Playback: Enter -Go to left Marker: End (Keypad) -Go to right marker: CursorDown (Keypad) -Toggle Loop Mode: / (Keypad) -Start Recording: * (Keypad) - - -Arranger, Part Canvas: -====================== -Cut: Ctrl-X -Copy: Ctrl-C -Select previous/next part in this track: Crsr-Left / Crsr-Right -Remove Part: Delete - - -Arranger, Track List Canvas: -============================ -Move to previous track: Crsr-Up -Move to next track: Crsr-Down - - -Pianoedit: -========== -Cut: Ctrl-X -Copy: Ctrl-C -Paste: Ctrl-V -Select All: Ctrl-A (just added in CVS) -Deselect All: Ctrl-Shift-A (just added in CVS) -Invertion Selection: Ctrl-I (just added in CVS) -Delete selected Events: Delete - -Insert Notes at locator position: Shift-Crsr-Right -Move Locator right: Crsr-Right -Move Locator left: Crsr-Left -Delete under Locator: Delete (KP?), "collects" notes left of locator -Set Grid Snap/Quantizer to 1/1, 1/2, 1/4, 1/8, 1/16, 1/32, 1/64: -1/2/3/4/5/6/7 -Toggle "triolic" flag of Grid Snap/Quantizer: T -Toggle "punctuated" flag of Grid Snap/Quantizer: . -Set Grid Snap/Quantizer to "first value in list"(?): , -Open "Event Color" dialog: e (just fixed in CVS) - - -Drumedit: -========= -Cut: Ctrl-X -Copy: Ctrl-C -Paste:Ctrl-V -Load Drummap: Ctrl-O -Save Drummap: Ctrl-S -Set fixed length: Alt-L (Sets length on selected events to the length specified in the drummap) - -Delete selected Events: Delete - -Listedit: -========= -Insert Note: Ctrl-N -Insert SysEx: Ctrl-S -Insert Ctrl: Ctrl-T -Insert Pitch: Ctrl-E -Insert Channel Aftertouch: Ctrl-A -Insert Key Aftertouch: Ctrl-P -Delete Events: Delete - - -Score Edit: -=========== -When entering Lyrics: -Move to next Note's Lyrics: Crsr-Left (problems when at beginning/end of -notes) -Move to previous Note' Lyrics: Crsr-Right -Cancel (?) entering notes: Escape -Remove last character from lyrics: Backspace or Delete -End entering Lyrics: Enter - - -Help Browser: -============= -New Window: Alt-N -Open File: Alt-O -Print: Alt-P -Close: Alt-Q -Exit: Alt-X - - -Transport: -========== -Toggle metronome Click: C -Toggle Loop Mode: / (Keypad) - diff --git a/muse/doc/README.softsynth b/muse/doc/README.softsynth deleted file mode 100644 index e3201ff2..00000000 --- a/muse/doc/README.softsynth +++ /dev/null @@ -1,86 +0,0 @@ -============================================================= - Short instructions to get the soft - synthesizer up and running -============================================================= - -1. Compile and install MusE - -3. Run MusE from an xterm with Option "-D"; - look at the debug output in the xterm; you should see something - like: - - 3 soft synth found - found soft synth - found soft synth - found soft synth - - -4. Configure Software Synthesizer - - Open Settings->MidiPorts/SoftSynth. - - - select a software synthesizer - - press "Add Instance" to create an istance of this - synthesizer; the synthi shows up in the list - of instances with a unique name - -5. Configure Midi Port - - To use the synthesizer instance you must - connect it to a MusE midi port: - - - click into the "Device Name" column of an empty midi port - (Device Name == "none") - - select the synthesizer from the dropdown menu. - - This connects the synthesizer to the selected midi port. - The instrument type is automatically set. - -6. Open the Audio Mixer - - You see a new mixer strip of type "Synthi" and the name - of the new created synthesizer instance. - - Route the audio output of this strip to "Output". - (per default the synthesizer is routed to the first Output strip) - -7. Now you are ready to play with the "organ" synthesizer - - - create midi track - - set the midi port to the synthesizer port - - click the "R" column in the tracklist to enable "Recording" - -8. Optional: open Configure->MidiPorts and click in column GUI - to show a GUI for the synthesizer instance. - There is no gui available for the S1 synth. - The iiwu gui enables you to enter a different sound font. - The organ gui has some "draw bars" to let you play with - sounds in real time. - -These are the software synthesizers currently available: - - - S1 a simple sythesizer skeleton as a guide for all who - want to code their own one: - - only one tone at a time - - simple sinus wave form - - no gui - The synthi may be used as a metronome. - - - organ, an adapted version of the LADSPA plugin - "Organ - Additive Organ Synthesizer Voice" from - David A. Bartold - - "organ" implements a gui connected bidirectional - to the synth via stdin/stdout - - - fluid, is the adapted version of Peter Hanappe´s - sample based fluid synthesizer (formerly known as iiwu) - - loadable sound fonts - - multi timbral - - 128 voices - - simple gui lets you load a different sound font - Fluid loads a default sound font determined by the - environment variable "DEFAULT_SOUNDFONT". - - - diff --git a/muse/doc/README.translate b/muse/doc/README.translate deleted file mode 100644 index b2189929..00000000 --- a/muse/doc/README.translate +++ /dev/null @@ -1,57 +0,0 @@ -Internationalisation - -If you want to contribute a translation the following hints -may be of help to you: - - -Step 1: - enter the MusE directory and edit the - file "muse.pro" - - Append a new target file name at "TRANSLATIONS" - e.g. change - TRANSLATIONS = share/locale/muse_de.ts - into - TRANSLATIONS = share/locale/muse_de.ts \ - share/locale/muse_fr.ts - if you want to generate a french MusE version. - -Step 2: - start the Qt-Program "lupdate" - - lupdate muse.pro - - Maybe "lupdate" is not in your PATH and you must - specify the complete pathname "lupdate" - Example: - /usr/lib/qt42/bin/lupdate muse.pro - - This generates the file "locale/muse_fr.ts". - -Step 3: - Edit "share/locale/muse_fr.ts" manually or use the Qt "linguist" tool: - - cd share/locale; linguist muse_fr.ts - -Step 4: - start the Qt program "lrelease" - - lrelease muse.pro - - This generates all *.qm files in share/locale - -Step 5: - install the *.qm files: as superuser start "make install" - - -Step 6: - Test: - set the environment variable LANG to the desired - Language: - export LC_ALL=fr - - Start MusE: - muse - - - diff --git a/muse/doc/dimpl.odt b/muse/doc/dimpl.odt deleted file mode 100644 index e62ccd90..00000000 Binary files a/muse/doc/dimpl.odt and /dev/null differ diff --git a/muse/doc/manual-de.odt b/muse/doc/manual-de.odt deleted file mode 100644 index 1a8fb669..00000000 Binary files a/muse/doc/manual-de.odt and /dev/null differ diff --git a/muse/doc/pics/main0.png b/muse/doc/pics/main0.png deleted file mode 100644 index 2d417bb6..00000000 Binary files a/muse/doc/pics/main0.png and /dev/null differ diff --git a/muse/doc/pics/main1.png b/muse/doc/pics/main1.png deleted file mode 100644 index 283eaab5..00000000 Binary files a/muse/doc/pics/main1.png and /dev/null differ diff --git a/muse/doc/pics/main2.png b/muse/doc/pics/main2.png deleted file mode 100644 index 11008143..00000000 Binary files a/muse/doc/pics/main2.png and /dev/null differ diff --git a/muse/doc/pics/mixer1.png b/muse/doc/pics/mixer1.png deleted file mode 100644 index 709bd83d..00000000 Binary files a/muse/doc/pics/mixer1.png and /dev/null differ diff --git a/muse/doc/pics/pianoroll1.png b/muse/doc/pics/pianoroll1.png deleted file mode 100644 index 618b71e3..00000000 Binary files a/muse/doc/pics/pianoroll1.png and /dev/null differ diff --git a/muse/doc/pics/pianoroll2.png b/muse/doc/pics/pianoroll2.png deleted file mode 100644 index 699d1edb..00000000 Binary files a/muse/doc/pics/pianoroll2.png and /dev/null differ diff --git a/muse/doc/pics/select_project.png b/muse/doc/pics/select_project.png deleted file mode 100644 index aed3ea0a..00000000 Binary files a/muse/doc/pics/select_project.png and /dev/null differ diff --git a/muse/doc/pics/select_template.png b/muse/doc/pics/select_template.png deleted file mode 100644 index 78831d61..00000000 Binary files a/muse/doc/pics/select_template.png and /dev/null differ diff --git a/muse/grepmidi/CMakeLists.txt b/muse/grepmidi/CMakeLists.txt deleted file mode 100644 index 55084217..00000000 --- a/muse/grepmidi/CMakeLists.txt +++ /dev/null @@ -1,24 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -add_executable ( grepmidi grepmidi.cpp ) - -install_targets ( /bin grepmidi ) - diff --git a/muse/grepmidi/grepmidi.cpp b/muse/grepmidi/grepmidi.cpp deleted file mode 100644 index 5e8a4f62..00000000 --- a/muse/grepmidi/grepmidi.cpp +++ /dev/null @@ -1,348 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: grepmidi.cpp,v 1.1.1.1 2003/10/27 18:57:02 wschweer Exp $ -// -// (C) Copyright 1999/2000 Werner Schweer (ws@seh.de) -//========================================================= - -#include -#include -#include -#include - -#define XCHG_SHORT(x) ((((x)&0xFF)<<8) | (((x)>>8)&0xFF)) -#ifdef __i486__ -#define XCHG_LONG(x) \ - ({ int __value; \ - asm ("bswap %1; movl %1,%0" : "=g" (__value) : "r" (x)); \ - __value; }) -#else -#define XCHG_LONG(x) ((((x)&0xFF)<<24) | \ - (((x)&0xFF00)<<8) | \ - (((x)&0xFF0000)>>8) | \ - (((x)>>24)&0xFF)) -#endif - -#if __BYTE_ORDER == __LITTLE_ENDIAN -#define BE_SHORT(x) XCHG_SHORT(x) -#define BE_LONG(x) XCHG_LONG(x) -#else -#define BE_SHORT(x) x -#define BE_LONG(x) x -#endif - - -int cpos; -bool printName = false; -char* curName; - -//--------------------------------------------------------- -// readLong -//--------------------------------------------------------- - -int readLong(FILE* f) - { - int format; - if (fread(&format, 4, 1, f) != 1) { - printf("read long failed\n"); - exit(1); - } - cpos += 4; - return BE_LONG(format); - } - -//--------------------------------------------------------- -// readShort -//--------------------------------------------------------- - -int readShort(FILE* f) - { - short format; - if (fread(&format, 2, 1, f) != 1) { - printf("read short failed\n"); - exit(1); - } - cpos += 2; - return BE_SHORT(format); - } - -/*--------------------------------------------------------- - * getvl - * Read variable-length number (7 bits per byte, MSB first) - *---------------------------------------------------------*/ - -int getvl(FILE* f) - { - int l = 0; - for (int i = 0;i < 8; i++) { - int c = getc(f); - ++cpos; - if (c == EOF) - break; - c &= 0xff; - l += (c & 0x7f); - if (!(c & 0x80)) - return l; - l <<= 7; - } - printf("Variable Len too long\n"); - return -1; - } - -//--------------------------------------------------------- -// skip -//--------------------------------------------------------- - -void skip(FILE* f, int n) - { - while (n--) { - ++cpos; - if (getc(f) == EOF) { - printf("skip %d failed\n", n); - exit(1); - } - } - } - -//--------------------------------------------------------- -// grepTrack -//--------------------------------------------------------- - -int grepTrack(FILE* f, int trackno) - { -// printf("TRACK %d\n", trackno); - int mtype, mlen; - int b; - char* buffer; - - char tmp[4]; - fread(tmp, 4, 1, f); - if (memcmp(tmp, "MTrk", 4)) - return -5; - int len = readLong(f); - int endpos = cpos + len; - int runstate = -1; - - for (;;) { -/* int nclick = */ getvl(f); - int me = getc(f); - ++cpos; - int a = -1; - if ((me & 0x80) == 0) { - if (runstate == -1) - return -6; - a = me; - me = runstate; - } - switch (me & 0xf0) { - case 0x80: - case 0x90: - case 0xa0: - case 0xb0: - case 0xe0: - b = getc(f); - ++cpos; - case 0xc0: - case 0xd0: - if (a == -1) { - a = getc(f); - ++cpos; - } - runstate = me; - break; - case 0xf0: - switch(me & 0xf) { - case 0: // SYSEX - mlen = getvl(f); - skip(f, mlen); - break; - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - if (printName) - printf("%s: ", curName); - printf("unknown Message\n"); - break; - case 7: // EOX - case 8: // timing clock - case 9: // undefined - case 0xa: // start - case 0xb: // continue - case 0xc: // stop - case 0xd: // undefined - case 0xe: // active sensing - if (printName) - printf("%s: ", curName); - printf("RT Message??\n"); - break; - case 0xf: // META - mtype = getc(f); - ++cpos; - mlen = getvl(f); - buffer = new char[mlen+1]; - if (mlen) { - if (fread(buffer, mlen, 1, f) != 1) { - if (printName) - printf("%s: ", curName); - printf("---meta %d too short (%d)\n", mtype, mlen); - exit(1); - } - cpos += mlen; - } - switch(mtype) { - case 0x2f: - delete buffer; - goto end; - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: // Marker - case 7: - case 8: - case 9: - case 10: - case 11: - case 12: - case 13: - case 14: - case 15: - buffer[mlen] = 0; - if (printName) - printf("%s: ", curName); - printf("%02d Meta %0d: <%s>\n", trackno, mtype, buffer); - default: - break; - } - delete buffer; - break; - } - break; - } - } -end: - if (cpos != endpos) { - if (printName) - printf("%s: ", curName); - printf(" %d zu kurz\n", cpos - endpos); - } - if (endpos-cpos > 0) - skip(f, endpos-cpos); - return 0; - } - -//--------------------------------------------------------- -// grep -//--------------------------------------------------------- - -int grep(FILE* f) - { - char tmp[4]; - - fread(tmp, 4, 1, f); - if (memcmp(tmp, "MThd", 4) != 0) - return -2; - int len = readLong(f); - if (len < 6) - return -3; - cpos += 8; - int format = readShort(f); - int ntracks = readShort(f); - readShort(f); // division - if (len > 6) - skip(f, len-6); /* skip the excess */ - int rv = 0; - switch (format) { - case 0: rv = grepTrack(f, 0); break; - case 1: - for (int i = 0; i < ntracks; i++) { - rv = grepTrack(f, i); - if (rv != 0) - return rv; - } - break; - default: - return -4; - } - - return 0; - } - -//--------------------------------------------------------- -// grep -//--------------------------------------------------------- - -int grepMidi(char* name) - { - curName = name; - char*p = strrchr(name, '.'); - FILE* f; - if (p && strcmp(p, ".gz") == 0) { - char buffer[512]; - sprintf(buffer, "gunzip < %s", name); - f = popen(buffer, "r"); - } - else { - p = 0; - f = fopen(name, "r"); - } - if (f == 0) - return -1; - cpos = 0; - int rc = grep(f); - if (p) - pclose(f); - else - fclose(f); - return rc; - } - -//--------------------------------------------------------- -// usage -//--------------------------------------------------------- - -void usage(const char* fname, const char* txt) - { - fprintf(stderr, "%s: %s\n", fname, txt); -// fprintf(stderr, "usage:\n"); - } - -//--------------------------------------------------------- -// main -//--------------------------------------------------------- - -int main(int argc, char* argv[]) - { - int c; - while ((c = getopt(argc, argv, "f")) != EOF) { - switch (c) { - case 'f': printName = true; break; - default: usage(argv[0], "bad argument"); return -1; - } - } - argc -= optind; - ++argc; - char* p = 0; - for (int i = 1; i < argc; ++i) { - switch (grepMidi(argv[i])) { - case 0: break; - case -1: p = "not found"; break; - case -2: p = "no 'MThd': not a midi file"; break; - case -3: p = "file too short"; break; - case -4: p = "bad file type"; break; - case -5: p = "no 'MTrk': not a midi file"; break; - case -6: p = "no running state"; break; - default: - printf("was??\n"); - return -1; - } - } - if (p) - printf("Error: <%s>\n", p); - return 0; - } diff --git a/muse/midiplugins/CMakeLists.txt b/muse/midiplugins/CMakeLists.txt deleted file mode 100644 index 465e1983..00000000 --- a/muse/midiplugins/CMakeLists.txt +++ /dev/null @@ -1,36 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -subdirs( - libmidiplugin - splitlayer - filter - metronom - transform - trigg - dump - drumglue - ) - -set ( CMAKE_CXX_FLAGS - "${CMAKE_CXX_FLAGS} -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SHARED -fPIC" - ) - -set ( CMAKE_LDD_FLAGS -module -avoid-version ) diff --git a/muse/midiplugins/drumglue/CMakeLists.txt b/muse/midiplugins/drumglue/CMakeLists.txt deleted file mode 100644 index f824c54b..00000000 --- a/muse/midiplugins/drumglue/CMakeLists.txt +++ /dev/null @@ -1,50 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2008 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -QT4_WRAP_CPP ( drumglue_mocs drumgluegui.h globalinstrumentview.h outputinstrumentview.h ) -QT4_WRAP_UI ( drumglue_uis drumgluegui.ui globalinstrumentview.ui outputinstrumentview.ui ) - -add_library ( drumglue SHARED - drumglue.cpp - drumgluegui.cpp - drumgluegui.h - globalinstrumentview.cpp - globalinstrumentview.h - outputinstrumentview.cpp - outputinstrumentview.h - ${drumglue_mocs} - ${drumglue_uis} - ) - -target_link_libraries( drumglue - midiplugin awl - ${QT_LIBRARIES} - ) - -# - tell cmake to name target name.so instead of -# libname.so -# - use precompiled header files -set_target_properties ( drumglue - PROPERTIES PREFIX "" - COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all-pic.h" - ) - -install_targets ( /${CMAKE_INSTALL_LIBDIR}/${MusE_INSTALL_NAME}/midiplugins/ drumglue ) - diff --git a/muse/midiplugins/drumglue/drumglue.cpp b/muse/midiplugins/drumglue/drumglue.cpp deleted file mode 100644 index 7a9b6ed2..00000000 --- a/muse/midiplugins/drumglue/drumglue.cpp +++ /dev/null @@ -1,250 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// -// drumglue - filter -// -// (C) Copyright 2008 Robert Jonsson (rj@spamatica.se) -// (C) Copyright 2005- Werner Schweer (ws@seh.de) -// Copyright: See COPYING file that comes with this distribution -//========================================================= - -#include "drumgluegui.h" -#include "drumglue.h" -#include "midi.h" -#include "midievent.h" - - - -//--------------------------------------------------------- -// DrumInstrument - get next index -// - next output instrument to use -//--------------------------------------------------------- -int DrumInstrument::getNextIndex(int /*velocity*/) -{ - // for now we simply do a round robin - // - // future improvements are to keep track of - // the time since the last hit and the - // weight set for each instrument. - // the incoming velocity should be checked that it's in range - if (outputInstruments.size() == 0) - return -1; - - if (lastOutputIndex+1 > outputInstruments.size()-1) - return 0; - else - return lastOutputIndex+1; -} - -//--------------------------------------------------------- -// DrumInstrument - get velocity -// - velocity value to use -//--------------------------------------------------------- -int DrumInstrument::getVelocity(int /*index*/, int velocity) -{ - // for now we just return the same velocity - // future improvements are to allow for some - return velocity; -} - - -//--------------------------------------------------------- -// DrumGlue - constructor -//--------------------------------------------------------- -DrumGlue::DrumGlue(const char* name, const MempiHost* h) - : Mempi(name, h) - { - gui = 0; - saveData = NULL; - } - -//--------------------------------------------------------- -// DrumGlue - destructor -//--------------------------------------------------------- -DrumGlue::~DrumGlue() - { - if (gui) - delete gui; - if (saveData) - delete saveData; - } - -//--------------------------------------------------------- -// init -//--------------------------------------------------------- - -bool DrumGlue::init() - { - gui = new DrumGlueGui(this, 0); - gui->setWindowTitle("MusE: "+QString(name())); - gui->show(); - return false; - } - -//--------------------------------------------------------- -// getGeometry -//--------------------------------------------------------- - -void DrumGlue::getGeometry(int* x, int* y, int* w, int* h) const - { - QPoint pos(gui->pos()); - QSize size(gui->size()); - *x = pos.x(); - *y = pos.y(); - *w = size.width(); - *h = size.height(); - } - -//--------------------------------------------------------- -// setGeometry -//--------------------------------------------------------- - -void DrumGlue::setGeometry(int x, int y, int w, int h) - { - gui->resize(QSize(w, h)); - gui->move(QPoint(x, y)); - } - -//--------------------------------------------------------- -// process -//--------------------------------------------------------- - -void DrumGlue::process(unsigned , unsigned , MidiEventList* il, MidiEventList* ol) - { - - for (iMidiEvent i = il->begin(); i != il->end(); ++i) { - MidiEvent temp=*i; - if (temp.isNote() && !temp.isNoteOff()) - { - foreach(DrumInstrument *di, drumInstruments) { - if (temp.dataA() == di->inKey) { - int inVelocity = temp.dataB(); - int instrumentIdx = di->getNextIndex(inVelocity); - if (instrumentIdx==-1) { - // no instrument defined, yet, skip it - break; - } - int outKey = di->outputInstruments[instrumentIdx]->outKey; - int outVelocity= di->getVelocity(instrumentIdx, inVelocity); - printf("inKey=%d outKey =%d outVelocity=%d instrumentIdx=%d\n", di->inKey, outKey, outVelocity, instrumentIdx); - temp.setA(outKey); - temp.setB(outVelocity); - - ol->insert(temp); // note on - - temp.setB(0); - ol->insert(temp); // note off - - di->lastOutputIndex = instrumentIdx; - di->outputTime = temp.time(); - break; - } - } - } - if (temp.isNoteOff()) ; // we just throw it away, we will insert noteoffs for each note on - } - } - -// -// getInitData - return configuration to MusE -// -void DrumGlue::getInitData(int* n, const unsigned char** p) const - { - QString saveStr; - - foreach (DrumInstrument *di, drumInstruments) { - QString drumline = "DRUM " +di->name + " " + QString("%1").arg(di->inKey) + "\n"; - saveStr.append(drumline); - foreach (DrumOutputInstrument *doi, di->outputInstruments) { - QString outputline = "OUTPUT " + - QString("%1").arg(doi->outKey) + " " + - QString("%1").arg(doi->lowestVelocity) + " " + - QString("%1").arg(doi->highestVelocity) + " " + - QString("%1").arg(doi->prefer) + " " + - QString("%1").arg(doi->preferFast) + "\n"; - saveStr.append(outputline); - - } - } - - *n = saveStr.length(); - - if (saveData) - delete saveData; - - - saveData = new unsigned char[saveStr.length()]; - - strncpy((char*)saveData, saveStr.toLatin1().data(), saveStr.length()); - saveData[saveStr.length()]=0; - printf("getInitData -\n%s\n",saveData); - - *p = saveData; - - } - -void DrumGlue::setInitData(int n, const unsigned char* p) - { - if (saveData) - delete saveData; - saveData = new unsigned char[n+1]; - - strncpy((char*)saveData,(char*)p,n); - saveData[n]=0; - - QString loadStr = (char*)saveData; - printf("setInitData -\n%s\n",saveData); - - QStringList loadList = loadStr.split("\n"); - - DrumInstrument *currentInstrument=NULL; - foreach (QString line, loadList) { - QStringList splitLine = line.split(" "); - if (splitLine[0] == "DRUM") { - if (currentInstrument) - drumInstruments.append(currentInstrument); - - currentInstrument = new DrumInstrument(); - currentInstrument->name = splitLine[1]; - currentInstrument->inKey = splitLine[2].toInt(); - } - if (splitLine[0] == "OUTPUT") { - DrumOutputInstrument *doi = new DrumOutputInstrument; - doi->outKey = splitLine[1].toInt(); - doi->lowestVelocity = splitLine[2].toInt(); - doi->highestVelocity = splitLine[3].toInt(); - doi->prefer = splitLine[4].toInt(); - doi->preferFast = splitLine[5].toInt(); - currentInstrument->outputInstruments.append(doi); - } - } - if (currentInstrument) - drumInstruments.append(currentInstrument); - - if (gui) - gui->init(); - } - -//--------------------------------------------------------- -// inst -//--------------------------------------------------------- - -static Mempi* instantiate(const char* name, const MempiHost* h) - { - return new DrumGlue(name, h); - } - -extern "C" { - static MEMPI descriptor = { - "DrumGlue", - "Drum instrument mux filter", - "0.1", // filter version string - MEMPI_FILTER, // plugin type - MEMPI_MAJOR_VERSION, MEMPI_MINOR_VERSION, - instantiate - }; - - const MEMPI* mempi_descriptor() { return &descriptor; } - } - diff --git a/muse/midiplugins/drumglue/drumglue.h b/muse/midiplugins/drumglue/drumglue.h deleted file mode 100644 index 49a19b55..00000000 --- a/muse/midiplugins/drumglue/drumglue.h +++ /dev/null @@ -1,86 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// -// drumglue - filter -// -// (C) Copyright 2008 Robert Jonsson (rj@spamatica.se) -// (C) Copyright 2005- Werner Schweer (ws@seh.de) -// Copyright: See COPYING file that comes with this distribution -//========================================================= - -#ifndef __DRUMGLUE_H__ -#define __DRUMGLUE_H__ - -#include - -#include "../libmidiplugin/mempi.h" - -#include "drumgluegui.h" -//--------------------------------------------------------- -// drumglue - filter -//--------------------------------------------------------- - -struct DrumOutputInstrument { - int outKey; // key to send - int lowestVelocity; // lower velocity valid for this instrument - int highestVelocity; // highest velocity valid for this instrument - bool prefer; // true if this instrument is preferred - bool preferFast; // true if this instrument is preferred for fast transitions -}; - -class DrumInstrument { - public: - DrumInstrument() - { - inKey=0; - lastOutputIndex=0; - outputTime=0; - } - - int getNextIndex(int velocity); - int getVelocity(int index, int velocity); - - - int inKey; // the key which triggers this instrument - QString name; - QList outputInstruments; - -// storage of runtime variables - int lastOutputIndex; - unsigned int outputTime; -}; - - - - -class DrumGlue : public Mempi { - friend class DrumGlueGui; - friend class GlobalInstrumentView; - friend class OutputInstrumentView; - - QList drumInstruments; - - DrumGlueGui* gui; - - mutable unsigned char *saveData; - - virtual void process(unsigned, unsigned, MidiEventList*, MidiEventList*); - - public: - DrumGlue(const char* name, const MempiHost*); - ~DrumGlue(); - virtual bool init(); - - virtual bool hasGui() const { return true; } - virtual bool guiVisible() const { return gui->isVisible(); } - virtual void showGui(bool val) { gui->setShown(val); } - virtual void getGeometry(int* x, int* y, int* w, int* h) const; - virtual void setGeometry(int, int, int, int); - - virtual void getInitData(int*, const unsigned char**) const; - virtual void setInitData(int, const unsigned char*); - }; - -#endif - diff --git a/muse/midiplugins/drumglue/drumgluegui.cpp b/muse/midiplugins/drumglue/drumgluegui.cpp deleted file mode 100644 index 562adf2c..00000000 --- a/muse/midiplugins/drumglue/drumgluegui.cpp +++ /dev/null @@ -1,68 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// -// (C) Copyright 2008 Robert Jonsson (rj@spamatica.se) -// (C) Copyright 2005- Werner Schweer (ws@seh.de) -// Copyright: See COPYING file that comes with this distribution -//========================================================= - -#include "drumgluegui.h" -#include "drumglue.h" -#include "globalinstrumentview.h" - -//--------------------------------------------------------- -// DrumGlueGui -//--------------------------------------------------------- - -DrumGlueGui::DrumGlueGui(DrumGlue* f, QWidget* parent) - : QDialog(parent) - { - drumGlue = f; - setupUi(this); - instrumentsTabWidget->clear(); - - connect (addInstrumentButton, SIGNAL(clicked()), this, SLOT(addInstrument())); - } - -//--------------------------------------------------------- -// init -//--------------------------------------------------------- -void DrumGlueGui::init() - { - foreach(DrumInstrument *di, drumGlue->drumInstruments) { - GlobalInstrumentView *giView = new GlobalInstrumentView(drumGlue,this, di->name); - instrumentsTabWidget->addTab(giView, di->name); - } - } - -//--------------------------------------------------------- -// addInstrument -//--------------------------------------------------------- -void DrumGlueGui::addInstrument() - { - bool ok; - QString text = QInputDialog::getText(this, tr("Instrument name"), - tr("Name of instrument:"), QLineEdit::Normal, - "", &ok); - if (ok && !text.isEmpty()) { - DrumInstrument *di = new DrumInstrument(); - di->name = text; - drumGlue->drumInstruments.append(di); - GlobalInstrumentView *giView = new GlobalInstrumentView(drumGlue,this, text); - instrumentsTabWidget->addTab(giView, text); - } - } - -//--------------------------------------------------------- -// removeInstrument -//--------------------------------------------------------- -void DrumGlueGui::removeInstrument() - { - int ret = QMessageBox::warning(this, tr("Remove instrument"), - tr("Are you sure you want to remove current instrument?"), - QMessageBox::No, - QMessageBox::Yes); - if (ret == QMessageBox::Yes) - instrumentsTabWidget->removeTab(instrumentsTabWidget->currentIndex()); - } diff --git a/muse/midiplugins/drumglue/drumgluegui.h b/muse/midiplugins/drumglue/drumgluegui.h deleted file mode 100644 index cdbac7a3..00000000 --- a/muse/midiplugins/drumglue/drumgluegui.h +++ /dev/null @@ -1,41 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// -// (C) Copyright 2008 Robert Jonsson (rj@spamatica.se) -// (C) Copyright 2005- Werner Schweer (ws@seh.de) -// Copyright: See COPYING file that comes with this distribution -//========================================================= - -#ifndef __DRUMGLUEGUI_H__ -#define __DRUMGLUEGUI_H__ - -//#include "ui_drumglue.h" -#include "ui_drumgluegui.h" - - -//--------------------------------------------------------- -// DrumGlueGui -//--------------------------------------------------------- -class DrumGlue; - -class DrumGlueGui : public QDialog, public Ui::DrumGlueBase { - Q_OBJECT - - DrumGlue* drumGlue; - - signals: - void hideWindow(); - - public: - DrumGlueGui(DrumGlue*, QWidget* parent=0); - void init(); - - private slots: - void addInstrument(); - void removeInstrument(); - - }; - -#endif - diff --git a/muse/midiplugins/drumglue/drumgluegui.ui b/muse/midiplugins/drumglue/drumgluegui.ui deleted file mode 100644 index ddd402c4..00000000 --- a/muse/midiplugins/drumglue/drumgluegui.ui +++ /dev/null @@ -1,91 +0,0 @@ - - DrumGlueBase - - - - 0 - 0 - 444 - 270 - - - - Drumglue - midi filter - - - - - - - - - - Add instrument - - - - - - - Remove current - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - Arial - 14 - 75 - true - - - - DrumGlue 0.1 - - - - - - - - - QTabWidget::North - - - QTabWidget::Rounded - - - 0 - - - Qt::ElideLeft - - - - Snare - - - - - - - - - - - diff --git a/muse/midiplugins/drumglue/globalinstrumentview.cpp b/muse/midiplugins/drumglue/globalinstrumentview.cpp deleted file mode 100644 index 5ca81054..00000000 --- a/muse/midiplugins/drumglue/globalinstrumentview.cpp +++ /dev/null @@ -1,153 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// -// (C) Copyright 2008 Robert Jonsson (rj@spamatica.se) -// (C) Copyright 2005- Werner Schweer (ws@seh.de) -// Copyright: See COPYING file that comes with this distribution -//========================================================= - -#include "globalinstrumentview.h" -#include "outputinstrumentview.h" -#include "drumglue.h" - -//--------------------------------------------------------- -// GlobalInstrumentView -//--------------------------------------------------------- - -GlobalInstrumentView::GlobalInstrumentView(DrumGlue* f, QWidget* parent, QString name) - : QWidget(parent) - { - setupUi(this); - drumGlue = f; - - instrumentName=name; - - DrumInstrument *di =getCurrentOutputInstrument(); - printf("di->inKey=%d\n", di->inKey); - if (di) - inKeySpinBox->setValue(di->inKey); - - connect (addOutputButton, SIGNAL(clicked()), this, SLOT(addOutput())); - connect (editOutputButton, SIGNAL(clicked()), this, SLOT(editOutput())); - connect (removeOutputButton, SIGNAL(clicked()), this, SLOT(removeOutput())); - connect (inKeySpinBox, SIGNAL(valueChanged(int)), this, SLOT(updateInKey())); - updateList(); - } - - -DrumInstrument *GlobalInstrumentView::getCurrentOutputInstrument() -{ - // get the global instrument belonging to this instance - QList::iterator iter = drumGlue->drumInstruments.begin(); - while(iter != drumGlue->drumInstruments.end()) { - printf("name = %s instrumentName= %s\n", (*iter)->name.toLatin1().data(), instrumentName.toLatin1().data()); - if ((*iter)->name == instrumentName) { - break; - } - iter++; - } - if (iter == drumGlue->drumInstruments.end()) { - printf("Reached the end without getting a hit\n"); - return NULL; - } - return *iter; -} - -void GlobalInstrumentView::addOutput() - { - DrumInstrument *di = getCurrentOutputInstrument(); - if (!di) - return; - // create new output - DrumOutputInstrument *doi = new DrumOutputInstrument; - di->outputInstruments.append(doi); - - OutputInstrumentView *outputView = new OutputInstrumentView(doi,this); - int res = outputView->exec(); - if (res == QDialog::Rejected) { - // roll back - di->outputInstruments.removeAll(doi); - delete doi; - } - delete outputView; - updateList(); - } - -void GlobalInstrumentView::editOutput() - { - DrumInstrument *di = getCurrentOutputInstrument(); - - int currIdx = outputListWidget->currentRow(); - if (currIdx < 0 || currIdx >= di->outputInstruments.size()) { - printf("out of range!!\n"); - return; - } - - DrumOutputInstrument *doi = di->outputInstruments[currIdx]; - - DrumOutputInstrument doi_backup = *doi; - OutputInstrumentView *outputView = new OutputInstrumentView(doi,this); - int res = outputView->exec(); - if (res == QDialog::Rejected) { - // roll back - *doi = doi_backup; - } - delete outputView; - updateList(); - } - -void GlobalInstrumentView::removeOutput() - { - int ret = QMessageBox::warning(this, tr("Remove output"), - tr("Are you sure you want to remove current output?"), - QMessageBox::No, - QMessageBox::Yes); - if (ret == QMessageBox::Yes) { - DrumInstrument *di = getCurrentOutputInstrument(); - - int currIdx = outputListWidget->currentRow(); - if (currIdx < 0 || currIdx >= di->outputInstruments.size()) { - printf("out of range!!\n"); - return; - } - - DrumOutputInstrument *doi = di->outputInstruments[currIdx]; - di->outputInstruments.removeAll(doi); - delete doi; - } - updateList(); - } - -void GlobalInstrumentView::updateList() -{ - printf("updateList\n"); - outputListWidget->clear(); - - QList::iterator iter = drumGlue->drumInstruments.begin(); - while(iter != drumGlue->drumInstruments.end()) { - printf("name = %s instrumentName= %s\n", (*iter)->name.toLatin1().data(), instrumentName.toLatin1().data()); - if ((*iter)->name == instrumentName) { - printf("updating current list\n"); - foreach (DrumOutputInstrument *doi, (*iter)->outputInstruments) { - QListWidgetItem *outDrumItem = new QListWidgetItem(outputListWidget); - QString str = QString("%1 %2 %3 %4 %5").arg(doi->outKey).arg(doi->lowestVelocity).arg(doi->highestVelocity).arg(doi->prefer).arg(doi->preferFast); - printf("setting item to %s\n",str.toLatin1().data()); - outDrumItem->setText(str); - } - } - iter++; - } -} - -void GlobalInstrumentView::updateInKey() -{ - QList::iterator iter = drumGlue->drumInstruments.begin(); - while(iter != drumGlue->drumInstruments.end()) { - if ((*iter)->name == instrumentName) { - (*iter)->inKey = inKeySpinBox->value(); - } - iter++; - } - -} diff --git a/muse/midiplugins/drumglue/globalinstrumentview.h b/muse/midiplugins/drumglue/globalinstrumentview.h deleted file mode 100644 index f923ec49..00000000 --- a/muse/midiplugins/drumglue/globalinstrumentview.h +++ /dev/null @@ -1,41 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// -// (C) Copyright 2008 Robert Jonsson (rj@spamatica.se) -// (C) Copyright 2005- Werner Schweer (ws@seh.de) -// Copyright: See COPYING file that comes with this distribution -//========================================================= - -#ifndef __GLOBALINSTRUMENTVIEW_H__ -#define __GLOBALINSTRUMENTVIEW_H__ - -#include "ui_globalinstrumentview.h" - -#include "drumglue.h" -//--------------------------------------------------------- -// GlobalInstrumentView -//--------------------------------------------------------- -class DrumGlue; - -class GlobalInstrumentView : public QWidget, public Ui::GlobalInstrumentViewBase { - Q_OBJECT - - DrumGlue *drumGlue; - QString instrumentName; - DrumInstrument *getCurrentOutputInstrument(); - - public: - GlobalInstrumentView(DrumGlue*, QWidget* parent, QString name); - private slots: - void addOutput(); - void editOutput(); - void removeOutput(); - void updateInKey(); - - public slots: - void updateList(); - }; - -#endif - diff --git a/muse/midiplugins/drumglue/globalinstrumentview.ui b/muse/midiplugins/drumglue/globalinstrumentview.ui deleted file mode 100644 index e817906a..00000000 --- a/muse/midiplugins/drumglue/globalinstrumentview.ui +++ /dev/null @@ -1,102 +0,0 @@ - - GlobalInstrumentViewBase - - - - 0 - 0 - 386 - 256 - - - - Form - - - - -1 - - - - - -1 - - - - - -1 - - - - - Midi input key: - - - - - - - 1 - - - 127 - - - - - - - Add output - - - - - - - Remove output - - - - - - - Edit output - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Midi output definitions: - - - - - - - - - - - - - - - diff --git a/muse/midiplugins/drumglue/outputinstrumentview.cpp b/muse/midiplugins/drumglue/outputinstrumentview.cpp deleted file mode 100644 index 2e4c97ce..00000000 --- a/muse/midiplugins/drumglue/outputinstrumentview.cpp +++ /dev/null @@ -1,45 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: filtergui.cpp,v 1.4 2005/11/06 17:49:34 wschweer Exp $ -// -// (C) Copyright 2005 Werner Schweer (ws@seh.de) -//========================================================= - -#include "outputinstrumentview.h" -#include "drumglue.h" -#include -//--------------------------------------------------------- -// OutputInstrumentView -//--------------------------------------------------------- - -OutputInstrumentView::OutputInstrumentView(DrumOutputInstrument* doi, QWidget* parent) - : QDialog(parent) - { - outputInstrument= doi; - setupUi(this); - - midiOutputSpinBox->setValue(outputInstrument->outKey); - highRangeSlider->setValue(outputInstrument->highestVelocity); - lowRangeSlider->setValue(outputInstrument->lowestVelocity); - preferWhenFastCheckBox->setChecked(outputInstrument->preferFast); - highProbabiltyCheckBox->setChecked(outputInstrument->prefer); - - - connect(midiOutputSpinBox,SIGNAL(valueChanged(int)),this, SLOT(update())); - connect(highRangeSlider,SIGNAL(valueChanged(int)),this, SLOT(update())); - connect(lowRangeSlider,SIGNAL(valueChanged(int)),this, SLOT(update())); - connect(preferWhenFastCheckBox,SIGNAL(stateChanged(int)),this, SLOT(update())); - connect(highProbabiltyCheckBox,SIGNAL(stateChanged(int)),this, SLOT(update())); - } - - -void OutputInstrumentView::update() -{ - outputInstrument->outKey = midiOutputSpinBox->value(); - outputInstrument->highestVelocity = highRangeSlider->value(); - outputInstrument->lowestVelocity = lowRangeSlider->value(); - outputInstrument->preferFast = preferWhenFastCheckBox->isChecked(); - outputInstrument->prefer = highProbabiltyCheckBox->isChecked(); - -} diff --git a/muse/midiplugins/drumglue/outputinstrumentview.h b/muse/midiplugins/drumglue/outputinstrumentview.h deleted file mode 100644 index b2b5dc12..00000000 --- a/muse/midiplugins/drumglue/outputinstrumentview.h +++ /dev/null @@ -1,31 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// -// (C) Copyright 2008 Robert Jonsson (rj@spamatica.se) -// (C) Copyright 2005- Werner Schweer (ws@seh.de) -// Copyright: See COPYING file that comes with this distribution -//========================================================= - -#ifndef __OUTPUTINSTRUMENTVIEW_H__ -#define __OUTPUTINSTRUMENTVIEW_H__ - -#include "ui_outputinstrumentview.h" - -#include "drumglue.h" -//--------------------------------------------------------- -// OutputInstrumentView -//--------------------------------------------------------- -class DrumGlue; - -class OutputInstrumentView : public QDialog, public Ui::OutputInstrumentViewBase { - Q_OBJECT - DrumOutputInstrument *outputInstrument; - public: - OutputInstrumentView(DrumOutputInstrument*, QWidget* parent); - private slots: - void update(); - }; - -#endif - diff --git a/muse/midiplugins/drumglue/outputinstrumentview.ui b/muse/midiplugins/drumglue/outputinstrumentview.ui deleted file mode 100644 index 250c2010..00000000 --- a/muse/midiplugins/drumglue/outputinstrumentview.ui +++ /dev/null @@ -1,292 +0,0 @@ - - OutputInstrumentViewBase - - - - 0 - 0 - 449 - 150 - - - - Dialog - - - - - - - - - - Midi output key: - - - - - - - 1 - - - 127 - - - - - - - If this instrument is to be used more often than others check this box. - - - - - - Prefer always - - - - - - - If this instrument is to be used more often when used often, check this checkbox. - - - - - - Prefer when fast - - - - - - - - - Qt::Horizontal - - - - - - - - - - 0 - 0 - - - - [low] - - - - - - - - 0 - 0 - - - - Qt::Vertical - - - - - - - - 0 - 0 - - - - Qt::Vertical - - - - - - - - 0 - 0 - - - - Qt::RightToLeft - - - [high] - - - - - - - - - - - - - - 24 - 0 - - - - QFrame::Box - - - 1 - - - - - - - 1 - - - 127 - - - Qt::Horizontal - - - - - - - - - use in range - - - - - - - - - - 24 - 0 - - - - QFrame::Box - - - 127 - - - - - - - 1 - - - 127 - - - 127 - - - Qt::Horizontal - - - - - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok - - - - - - - - - - - buttonBox - accepted() - OutputInstrumentViewBase - accept() - - - 248 - 254 - - - 157 - 274 - - - - - buttonBox - rejected() - OutputInstrumentViewBase - reject() - - - 316 - 260 - - - 286 - 274 - - - - - highRangeSlider - valueChanged(int) - highRangeLabel - setNum(int) - - - 215 - 107 - - - 165 - 108 - - - - - lowRangeSlider - valueChanged(int) - lowRangeLabel - setNum(int) - - - 75 - 107 - - - 25 - 108 - - - - - diff --git a/muse/midiplugins/dump/CMakeLists.txt b/muse/midiplugins/dump/CMakeLists.txt deleted file mode 100644 index c607ef1f..00000000 --- a/muse/midiplugins/dump/CMakeLists.txt +++ /dev/null @@ -1,40 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -add_library ( dump SHARED - dump.cpp - ) - -target_link_libraries( dump - midiplugin awl - ${QT_LIBRARIES} - ) - -# - tell cmake to name target dump.so instead of -# libdump.so -# - use precompiled header files -# -set_target_properties ( dump - PROPERTIES PREFIX "" - COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all-pic.h" - ) - -install_targets ( /${CMAKE_INSTALL_LIBDIR}/${MusE_INSTALL_NAME}/midiplugins/ dump ) - diff --git a/muse/midiplugins/dump/dump.cpp b/muse/midiplugins/dump/dump.cpp deleted file mode 100644 index e346a642..00000000 --- a/muse/midiplugins/dump/dump.cpp +++ /dev/null @@ -1,48 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: filter.cpp,v 1.10 2005/11/06 17:49:34 wschweer Exp $ -// -// dump- simple midi event dump for testing purposes -// -// (C) Copyright 2006 Werner Schweer (ws@seh.de) -//========================================================= - -#include "dump.h" -#include "midi.h" - -//--------------------------------------------------------- -// process -//--------------------------------------------------------- - -void Dump::process(unsigned, unsigned, MidiEventList* il, MidiEventList* ol) - { - for (iMidiEvent i = il->begin(); i != il->end(); ++i) { - printf("Event %6d ch:%2d type:%2d 0x%02x 0x%02x\n", i->time(), i->channel(), - i->type(), i->dataA(), i->dataB()); - ol->insert(*i); - } - } - -//--------------------------------------------------------- -// inst -//--------------------------------------------------------- - -static Mempi* instantiate(const char* name, const MempiHost* h) - { - return new Dump(name, h); - } - -extern "C" { - static MEMPI descriptor = { - "Dump", - "MusE Simple Midi Event Dump", - "0.1", // version string - MEMPI_FILTER, // plugin type - MEMPI_MAJOR_VERSION, MEMPI_MINOR_VERSION, - instantiate - }; - - const MEMPI* mempi_descriptor() { return &descriptor; } - } - diff --git a/muse/midiplugins/dump/dump.h b/muse/midiplugins/dump/dump.h deleted file mode 100644 index 2194e30f..00000000 --- a/muse/midiplugins/dump/dump.h +++ /dev/null @@ -1,28 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: filter.h,v 1.4 2005/06/12 08:18:37 wschweer Exp $ -// -// dump- simple midi event dump for testing purposes -// -// (C) Copyright 2006 Werner Schweer (ws@seh.de) -//========================================================= - -#ifndef __DUMP_H__ -#define __DUMP_H__ - -#include "../libmidiplugin/mempi.h" - -//--------------------------------------------------------- -// dump - simple midi event dump -//--------------------------------------------------------- - -class Dump : public Mempi { - virtual void process(unsigned, unsigned, MidiEventList*, MidiEventList*); - - public: - Dump(const char* name, const MempiHost* h) :Mempi(name, h) {} - }; - -#endif - diff --git a/muse/midiplugins/filter/CMakeLists.txt b/muse/midiplugins/filter/CMakeLists.txt deleted file mode 100644 index 7bdb8544..00000000 --- a/muse/midiplugins/filter/CMakeLists.txt +++ /dev/null @@ -1,49 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -QT4_WRAP_CPP ( filter_mocs filtergui.h ctrlcombo.h ) -QT4_WRAP_UI ( filter_uis filtergui.ui ) - -add_library ( filter SHARED - filter.cpp - filtergui.cpp - filtergui.h - ctrlcombo.cpp - ctrlcombo.h - ${filter_mocs} - ${filter_uis} - ) - -target_link_libraries( filter - midiplugin awl - ${QT_LIBRARIES} - ) - -# - tell cmake to name target filter.so instead of -# libfilter.so -# - use precompiled header files -# -set_target_properties ( filter - PROPERTIES PREFIX "" - COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all-pic.h" - ) - -install_targets ( /${CMAKE_INSTALL_LIBDIR}/${MusE_INSTALL_NAME}/midiplugins/ filter ) - diff --git a/muse/midiplugins/filter/ctrlcombo.cpp b/muse/midiplugins/filter/ctrlcombo.cpp deleted file mode 100644 index b4c436c6..00000000 --- a/muse/midiplugins/filter/ctrlcombo.cpp +++ /dev/null @@ -1,56 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: ctrlcombo.cpp,v 1.2 2005/11/06 17:49:34 wschweer Exp $ -// -// (C) Copyright 1999/2000 Werner Schweer (ws@seh.de) -//========================================================= - -#include "ctrlcombo.h" - -//--------------------------------------------------------- -// CtrlComboBox -//--------------------------------------------------------- - -CtrlComboBox::CtrlComboBox(QWidget* parent) - : QComboBox(parent) - { - const char* ctxt[] = { - "No Ctrl", "BankSelMSB", "Modulation", "BreathCtrl", - "Control 3", "Foot Ctrl", "Porta Time", "DataEntMSB", - "MainVolume", "Balance", "Control 9", "Pan", - "Expression", "Control 12", "Control 13", "Control 14", - "Control 15", "Gen.Purp.1", "Gen.Purp.2", "Gen.Purp.3", - "Gen.Purp.4", "Control 20", "Control 21", "Control 22", - "Control 23", "Control 24", "Control 25", "Control 26", - "Control 27", "Control 28", "Control 29", "Control 30", - "Control 31", "BankSelLSB", "Modul. LSB", "BrthCt.LSB", - "Control 35", "FootCt.LSB", "Port.T LSB", "DataEntLSB", - "MainVolLSB", "BalanceLSB", "Control 41", "Pan LSB", - "Expr. LSB", "Control 44", "Control 45", "Control 46", - "Control 47", "Gen.P.1LSB", "Gen.P.2LSB", "Gen.P.3LSB", - "Gen.P.4LSB", "Control 52", "Control 53", "Control 54", - "Control 55", "Control 56", "Control 57", "Control 58", - "Control 59", "Control 60", "Control 61", "Control 62", - "Control 63", "Sustain", "Porta Ped", "Sostenuto", - "Soft Pedal", "Control 68", "Hold 2", "Control 70", - "HarmonicCo", "ReleaseTime", "Attack Time", "Brightness", - "Control 75", "Control 76", "Control 77", "Control 78", - "Control 79", "Gen.Purp.5", "Gen.Purp.6", "Gen.Purp.7", - "Gen.Purp.8", "Porta Ctrl", "Control 85", "Control 86", - "Control 87", "Control 88", "Control 89", "Control 90", - "Effect1Dep", "Effect2Dep", "Effect3Dep", "Effect4Dep", - "Phaser Dep", "Data Incr", "Data Decr", "NRPN LSB", - "NRPN MSB", "RPN LSB", "RPN MSB", "Control102", - "Control103", "Control104", "Control105", "Control106", - "Control107", "Control108", "Control109", "Control110", - "Control111", "Control112", "Control113", "Control114", - "Control115", "Control116", "Control117", "Control118", - "Control119", "AllSndOff", "Reset Ctrl", "Local Ctrl", - "AllNoteOff", "OmniModOff", "OmniModeOn", "MonoModeOn", - "PolyModeOn" - }; - for (unsigned int i = 0; i < sizeof(ctxt)/sizeof(*ctxt); ++i) - addItem(QString(ctxt[i])); - } - diff --git a/muse/midiplugins/filter/ctrlcombo.h b/muse/midiplugins/filter/ctrlcombo.h deleted file mode 100644 index 53044b20..00000000 --- a/muse/midiplugins/filter/ctrlcombo.h +++ /dev/null @@ -1,24 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: ctrlcombo.h,v 1.2 2005/11/06 17:49:34 wschweer Exp $ -// -// (C) Copyright 1999/2000 Werner Schweer (ws@seh.de) -//========================================================= - -#ifndef __CTRLGRP_H__ -#define __CTRLGRP_H__ - -//--------------------------------------------------------- -// CtrlComboBox -//--------------------------------------------------------- - -class CtrlComboBox : public QComboBox { - Q_OBJECT - public: - CtrlComboBox(QWidget* parent = 0); - }; - - -#endif - diff --git a/muse/midiplugins/filter/filter.cpp b/muse/midiplugins/filter/filter.cpp deleted file mode 100644 index ac99449e..00000000 --- a/muse/midiplugins/filter/filter.cpp +++ /dev/null @@ -1,167 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: filter.cpp,v 1.10 2005/11/06 17:49:34 wschweer Exp $ -// -// filter - simple midi filter -// -// (C) Copyright 2005 Werner Schweer (ws@seh.de) -//========================================================= - -#include "filtergui.h" -#include "filter.h" -#include "midi.h" - -//--------------------------------------------------------- -// Filter -//--------------------------------------------------------- - -Filter::Filter(const char* name, const MempiHost* h) - : Mempi(name, h) - { - data.type = 0; // allow any events - for (int i = 0; i < 4; ++i) - data.ctrl[i] = -1; - gui = 0; - } - -//--------------------------------------------------------- -// Filter -//--------------------------------------------------------- - -Filter::~Filter() - { - if (gui) - delete gui; - } - -//--------------------------------------------------------- -// init -//--------------------------------------------------------- - -bool Filter::init() - { - gui = new FilterGui(this, 0); - gui->setWindowTitle("MusE: "+QString(name())); - gui->show(); - return false; - } - -//--------------------------------------------------------- -// getGeometry -//--------------------------------------------------------- - -void Filter::getGeometry(int* x, int* y, int* w, int* h) const - { - QPoint pos(gui->pos()); - QSize size(gui->size()); - *x = pos.x(); - *y = pos.y(); - *w = size.width(); - *h = size.height(); - } - -//--------------------------------------------------------- -// setGeometry -//--------------------------------------------------------- - -void Filter::setGeometry(int x, int y, int w, int h) - { - gui->resize(QSize(w, h)); - gui->move(QPoint(x, y)); - } - -//--------------------------------------------------------- -// process -//--------------------------------------------------------- - -void Filter::process(unsigned, unsigned, MidiEventList* il, MidiEventList* ol) - { - for (iMidiEvent i = il->begin(); i != il->end(); ++i) { - if (!filterEvent(*i)) - ol->insert(*i); - } - } - -//--------------------------------------------------------- -// filterEvent -// return true if event filtered -//--------------------------------------------------------- - -bool Filter::filterEvent(const MidiEvent& event) - { - switch(event.type()) { - case ME_NOTEON: - case ME_NOTEOFF: - if (data.type & MIDI_FILTER_NOTEON) - return true; - break; - case ME_POLYAFTER: - if (data.type & MIDI_FILTER_POLYP) - return true; - break; - case ME_CONTROLLER: - if (data.type & MIDI_FILTER_CTRL) - return true; - for (int i = 0; i < 4; ++i) { - if (data.ctrl[i] == event.dataA()) - return true; - } - break; - case ME_PROGRAM: - if (data.type & MIDI_FILTER_PROGRAM) - return true; - break; - case ME_AFTERTOUCH: - if (data.type & MIDI_FILTER_AT) - return true; - break; - case ME_PITCHBEND: - if (data.type & MIDI_FILTER_PITCH) - return true; - break; - case ME_SYSEX: - if (data.type & MIDI_FILTER_SYSEX) - return true; - break; - default: - break; - } - return false; - } - -void Filter::getInitData(int* n, const unsigned char** p) const - { - *n = sizeof(data); - *p = (unsigned char*)&data; - } - -void Filter::setInitData(int n, const unsigned char* p) - { - memcpy((void*)&data, p, n); - if (gui) - gui->init(); - } - -//--------------------------------------------------------- -// inst -//--------------------------------------------------------- - -static Mempi* instantiate(const char* name, const MempiHost* h) - { - return new Filter(name, h); - } - -extern "C" { - static MEMPI descriptor = { - "Filter", - "MusE Simple Midi Filter", - "0.1", // filter version string - MEMPI_FILTER, // plugin type - MEMPI_MAJOR_VERSION, MEMPI_MINOR_VERSION, - instantiate - }; - - const MEMPI* mempi_descriptor() { return &descriptor; } - } - diff --git a/muse/midiplugins/filter/filter.h b/muse/midiplugins/filter/filter.h deleted file mode 100644 index c8a357b4..00000000 --- a/muse/midiplugins/filter/filter.h +++ /dev/null @@ -1,51 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: filter.h,v 1.4 2005/06/12 08:18:37 wschweer Exp $ -// -// filter - simple midi filter -// -// (C) Copyright 2005 Werner Schweer (ws@seh.de) -//========================================================= - -#ifndef __FILTER_H__ -#define __FILTER_H__ - -#include "../libmidiplugin/mempi.h" - -//--------------------------------------------------------- -// filter - simple midi filter -//--------------------------------------------------------- - -class Filter : public Mempi { - struct initData { - int type; - int ctrl[4]; - } data; - FilterGui* gui; - - bool filterEvent(const MidiEvent& event); - virtual void process(unsigned, unsigned, MidiEventList*, MidiEventList*); - - public: - Filter(const char* name, const MempiHost*); - ~Filter(); - virtual bool init(); - - int midiType() const { return data.type; } - void setMidiType(int t) { data.type = t; } - int midiCtrl(int i) const { return data.ctrl[i]; } - void setMidiCtrl(int i, int val) { data.ctrl[i] = val; } - - virtual bool hasGui() const { return true; } - virtual bool guiVisible() const { return gui->isVisible(); } - virtual void showGui(bool val) { gui->setShown(val); } - virtual void getGeometry(int* x, int* y, int* w, int* h) const; - virtual void setGeometry(int, int, int, int); - - virtual void getInitData(int*, const unsigned char**) const; - virtual void setInitData(int, const unsigned char*); - }; - -#endif - diff --git a/muse/midiplugins/filter/filtergui.cpp b/muse/midiplugins/filter/filtergui.cpp deleted file mode 100644 index 306ae392..00000000 --- a/muse/midiplugins/filter/filtergui.cpp +++ /dev/null @@ -1,187 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: filtergui.cpp,v 1.4 2005/11/06 17:49:34 wschweer Exp $ -// -// (C) Copyright 2005 Werner Schweer (ws@seh.de) -//========================================================= - -#include "filtergui.h" -#include "filter.h" -#include "ctrlcombo.h" - -//--------------------------------------------------------- -// MidiFilterConfig -//--------------------------------------------------------- - -FilterGui::FilterGui(Filter* f, QWidget* parent) - : QDialog(parent) - { - setupUi(this); - filter = f; - connect(rf1, SIGNAL(toggled(bool)), SLOT(rf1Toggled(bool))); - connect(rf2, SIGNAL(toggled(bool)), SLOT(rf2Toggled(bool))); - connect(rf3, SIGNAL(toggled(bool)), SLOT(rf3Toggled(bool))); - connect(rf4, SIGNAL(toggled(bool)), SLOT(rf4Toggled(bool))); - connect(rf5, SIGNAL(toggled(bool)), SLOT(rf5Toggled(bool))); - connect(rf6, SIGNAL(toggled(bool)), SLOT(rf6Toggled(bool))); - connect(rf7, SIGNAL(toggled(bool)), SLOT(rf7Toggled(bool))); - connect(cb1, SIGNAL(activated(int)), SLOT(cb1Activated(int))); - connect(cb2, SIGNAL(activated(int)), SLOT(cb2Activated(int))); - connect(cb3, SIGNAL(activated(int)), SLOT(cb3Activated(int))); - connect(cb4, SIGNAL(activated(int)), SLOT(cb4Activated(int))); - } - -//--------------------------------------------------------- -// init -//--------------------------------------------------------- - -void FilterGui::init() - { - int midiType = filter->midiType(); - rf1->setChecked(midiType & MIDI_FILTER_NOTEON); - rf2->setChecked(midiType & MIDI_FILTER_POLYP); - rf3->setChecked(midiType & MIDI_FILTER_CTRL); - rf4->setChecked(midiType & MIDI_FILTER_PROGRAM); - rf5->setChecked(midiType & MIDI_FILTER_AT); - rf6->setChecked(midiType & MIDI_FILTER_PITCH); - rf7->setChecked(midiType & MIDI_FILTER_SYSEX); - cb1->setCurrentIndex(filter->midiCtrl(0) + 1); - cb2->setCurrentIndex(filter->midiCtrl(1) + 1); - cb3->setCurrentIndex(filter->midiCtrl(2) + 1); - cb4->setCurrentIndex(filter->midiCtrl(3) + 1); - } - -//--------------------------------------------------------- -// cb1Activated -//--------------------------------------------------------- - -void FilterGui::cb1Activated(int idx) - { - filter->setMidiCtrl(0, idx - 1); - } - -//--------------------------------------------------------- -// cb2Activated -//--------------------------------------------------------- - -void FilterGui::cb2Activated(int idx) - { - filter->setMidiCtrl(1, idx - 1); - } - -//--------------------------------------------------------- -// cb3Activated -//--------------------------------------------------------- - -void FilterGui::cb3Activated(int idx) - { - filter->setMidiCtrl(2, idx - 1); - } - -//--------------------------------------------------------- -// cb4Activated -//--------------------------------------------------------- - -void FilterGui::cb4Activated(int idx) - { - filter->setMidiCtrl(3, idx - 1); - } - -//--------------------------------------------------------- -// rf1Toggled -//--------------------------------------------------------- - -void FilterGui::rf1Toggled(bool) - { - int midiType = filter->midiType(); - if (rf1->isChecked()) - midiType |= MIDI_FILTER_NOTEON; - else - midiType &= ~MIDI_FILTER_NOTEON; - filter->setMidiType(midiType); - } - -//--------------------------------------------------------- -// rf2Toggled -//--------------------------------------------------------- - -void FilterGui::rf2Toggled(bool) - { - int midiType = filter->midiType(); - if (rf2->isChecked()) - midiType |= MIDI_FILTER_POLYP; - else - midiType &= ~MIDI_FILTER_POLYP; - filter->setMidiType(midiType); - } - -//--------------------------------------------------------- -// rf3Toggled -//--------------------------------------------------------- - -void FilterGui::rf3Toggled(bool) - { - int midiType = filter->midiType(); - if (rf3->isChecked()) - midiType |= MIDI_FILTER_CTRL; - else - midiType &= ~MIDI_FILTER_CTRL; - filter->setMidiType(midiType); - } - -//--------------------------------------------------------- -// rf4Toggled -//--------------------------------------------------------- - -void FilterGui::rf4Toggled(bool) - { - int midiType = filter->midiType(); - if (rf4->isChecked()) - midiType |= MIDI_FILTER_PROGRAM; - else - midiType &= ~MIDI_FILTER_PROGRAM; - filter->setMidiType(midiType); - } - -//--------------------------------------------------------- -// rf5Toggled -//--------------------------------------------------------- - -void FilterGui::rf5Toggled(bool) - { - int midiType = filter->midiType(); - if (rf5->isChecked()) - midiType |= MIDI_FILTER_AT; - else - midiType &= ~MIDI_FILTER_AT; - filter->setMidiType(midiType); - } - -//--------------------------------------------------------- -// rf6Toggled -//--------------------------------------------------------- - -void FilterGui::rf6Toggled(bool) - { - int midiType = filter->midiType(); - if (rf1->isChecked()) - midiType |= MIDI_FILTER_PITCH; - else - midiType &= ~MIDI_FILTER_PITCH; - filter->setMidiType(midiType); - } - -//--------------------------------------------------------- -// rf7Toggled -//--------------------------------------------------------- - -void FilterGui::rf7Toggled(bool) - { - int midiType = filter->midiType(); - if (rf7->isChecked()) - midiType |= MIDI_FILTER_SYSEX; - else - midiType &= ~MIDI_FILTER_SYSEX; - filter->setMidiType(midiType); - } diff --git a/muse/midiplugins/filter/filtergui.h b/muse/midiplugins/filter/filtergui.h deleted file mode 100644 index 701bfec9..00000000 --- a/muse/midiplugins/filter/filtergui.h +++ /dev/null @@ -1,57 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: filtergui.h,v 1.4 2005/11/06 17:49:34 wschweer Exp $ -// -// (C) Copyright 2005 Werner Schweer (ws@seh.de) -//========================================================= - -#ifndef __FILTERGUI_H__ -#define __FILTERGUI_H__ - -#include "ui_filtergui.h" - -class Filter; - -enum { - MIDI_FILTER_NOTEON = 1, - MIDI_FILTER_POLYP = 2, - MIDI_FILTER_CTRL = 4, - MIDI_FILTER_PROGRAM = 8, - MIDI_FILTER_AT = 16, - MIDI_FILTER_PITCH = 32, - MIDI_FILTER_SYSEX = 64 - }; - -//--------------------------------------------------------- -// FilterGui -//--------------------------------------------------------- - -class FilterGui : public QDialog, public Ui::FilterBase { - Q_OBJECT - - Filter* filter; - - signals: - void hideWindow(); - - private slots: - void rf1Toggled(bool); - void rf2Toggled(bool); - void rf3Toggled(bool); - void rf4Toggled(bool); - void rf5Toggled(bool); - void rf6Toggled(bool); - void rf7Toggled(bool); - void cb1Activated(int); - void cb2Activated(int); - void cb3Activated(int); - void cb4Activated(int); - - public: - FilterGui(Filter*, QWidget* parent=0); - void init(); - }; - -#endif - diff --git a/muse/midiplugins/filter/filtergui.ui b/muse/midiplugins/filter/filtergui.ui deleted file mode 100644 index 8e1693f2..00000000 --- a/muse/midiplugins/filter/filtergui.ui +++ /dev/null @@ -1,269 +0,0 @@ - - - - - FilterBase - - - - 0 - 0 - 388 - 213 - - - - - 3 - 5 - 0 - 0 - - - - MusE: Midi Input Filter - - - - 6 - - - 2 - - - - - - 5 - 5 - 0 - 0 - - - - Event Filter - - - - 6 - - - 2 - - - - - - 5 - 0 - 0 - 0 - - - - Note On - - - - - - - - 5 - 0 - 0 - 0 - - - - Poly Pressure - - - - - - - - 5 - 0 - 0 - 0 - - - - Controller - - - - - - - - 1 - 0 - 0 - 0 - - - - Program Change - - - - - - - - 5 - 0 - 0 - 0 - - - - After Touch - - - - - - - - 5 - 0 - 0 - 0 - - - - Pitch Bend - - - - - - - - 5 - 0 - 0 - 0 - - - - Sysex - - - - - - - - - - - 5 - 5 - 0 - 0 - - - - Controller Filter - - - - 6 - - - 2 - - - - - - 5 - 0 - 0 - 0 - - - - - - - - - 5 - 0 - 0 - 0 - - - - - - - - - 5 - 0 - 0 - 0 - - - - - - - - - 5 - 5 - 0 - 0 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - CtrlComboBox - QComboBox -
ctrlcombo.h
- 0 - -
-
- - rf1 - rf2 - rf3 - rf4 - rf5 - rf6 - rf7 - - - -
diff --git a/muse/midiplugins/libmidiplugin/CMakeLists.txt b/muse/midiplugins/libmidiplugin/CMakeLists.txt deleted file mode 100644 index 5988205f..00000000 --- a/muse/midiplugins/libmidiplugin/CMakeLists.txt +++ /dev/null @@ -1,26 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -add_library ( midiplugin mempi.cpp ) - -set_target_properties( midiplugin - PROPERTIES COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all.h" - ) - diff --git a/muse/midiplugins/libmidiplugin/evdata.h b/muse/midiplugins/libmidiplugin/evdata.h deleted file mode 100644 index 8247b6e0..00000000 --- a/muse/midiplugins/libmidiplugin/evdata.h +++ /dev/null @@ -1,64 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: evdata.h,v 1.2 2005/05/11 14:18:39 wschweer Exp $ -// -// (C) Copyright 1999-2003 Werner Schweer (ws@seh.de) -//========================================================= - -#ifndef __EVDATA_H__ -#define __EVDATA_H__ - -//--------------------------------------------------------- -// EvData -// variable len event data (sysex, meta etc.) -//--------------------------------------------------------- - -class EvData { - int* refCount; - - public: - unsigned char* data; - int dataLen; - - EvData() { - data = 0; - dataLen = 0; - refCount = new int(1); - } - EvData(const EvData& ed) { - data = ed.data; - dataLen = ed.dataLen; - refCount = ed.refCount; - (*refCount)++; - } - - EvData& operator=(const EvData& ed) { - if (data == ed.data) - return *this; - if (--(*refCount) == 0) { - delete refCount; - delete[] data; - } - data = ed.data; - dataLen = ed.dataLen; - refCount = ed.refCount; - (*refCount)++; - return *this; - } - - ~EvData() { - if (--(*refCount) == 0) { - delete[] data; - delete refCount; - } - } - void setData(const unsigned char* p, int l) { - data = new unsigned char[l]; - memcpy(data, p, l); - dataLen = l; - } - }; - -#endif - diff --git a/muse/midiplugins/libmidiplugin/mempi.cpp b/muse/midiplugins/libmidiplugin/mempi.cpp deleted file mode 100644 index 91171c3b..00000000 --- a/muse/midiplugins/libmidiplugin/mempi.cpp +++ /dev/null @@ -1,81 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: mempi.cpp,v 1.4 2005/05/24 15:27:48 wschweer Exp $ -// (C) Copyright 2005 Werner Schweer (ws@seh.de) -//========================================================= - -#include "mempi.h" - -static const int FIFO_SIZE = 128; - -//--------------------------------------------------------- -// MidiEvent -//--------------------------------------------------------- - -MidiEvent::MidiEvent(unsigned t, int tpe, const unsigned char* data, int len) - { - _time = t; - edata.setData(data, len); - _type = tpe; - } - -//--------------------------------------------------------- -// operator < -//--------------------------------------------------------- - -bool MidiEvent::operator<(const MidiEvent& e) const - { - if (time() != e.time()) - return time() < e.time(); - - // play note off events first to prevent overlapping - // notes - - if (channel() == e.channel()) - return type() == 0x80 - || (type() == 0x90 && dataB() == 0); - - int map[16] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 10, 11, 12, 13, 14, 15 }; - return map[channel()] < map[e.channel()]; - } - -//--------------------------------------------------------- -// MempiP -// Mempi private data structure -//--------------------------------------------------------- - -struct MempiP { - int dummy; - }; - -//--------------------------------------------------------- -// Mempi -//--------------------------------------------------------- - -Mempi::Mempi(const char* n, const MempiHost* h) - { - _name = strdup(n); - host = h; - d = new MempiP; - } - -Mempi::~Mempi() - { - delete _name; - delete d; - } - -//--------------------------------------------------------- -// getGeometry -// dummy -//--------------------------------------------------------- - -void Mempi::getGeometry(int* x, int* y, int* w, int* h) const - { - x = 0; - y = 0; - w = 0; - h = 0; - } - diff --git a/muse/midiplugins/libmidiplugin/mempi.h b/muse/midiplugins/libmidiplugin/mempi.h deleted file mode 100644 index a5f114b6..00000000 --- a/muse/midiplugins/libmidiplugin/mempi.h +++ /dev/null @@ -1,97 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: mempi.h,v 1.10 2005/07/16 09:31:50 wschweer Exp $ -// (C) Copyright 2005 Werner Schweer (ws@seh.de) -//========================================================= - -// -// MusE experimental midi plugin interface -// - -#ifndef __MEMPI_H__ -#define __MEMPI_H__ - -#define MEMPI_MAJOR_VERSION 1 -#define MEMPI_MINOR_VERSION 1 - -#include -#include "evdata.h" -#include "memory.h" -#include "midievent.h" - -class MempiP; - -//--------------------------------------------------------- -// MempiHost -// Host Infos -//--------------------------------------------------------- - -struct MempiHost { - virtual int division() const; // midi division - virtual int tempo(unsigned tick) const; - virtual unsigned tick2frame(unsigned tick) const; - virtual unsigned frame2tick(unsigned frame) const; - virtual void bar(int tick, int* bar, int* beat, unsigned* rest) const; - virtual unsigned bar2tick(int bar, int beat, int tick) const; - virtual ~MempiHost() {} - }; - -//--------------------------------------------------------- -// Mempi -// Instance class -// MusE experimental midi plugin interface -// Instance virtual interface class -//--------------------------------------------------------- - -class Mempi { - MempiP* d; - const char* _name; // mempi instance name - - protected: - const MempiHost* host; - - public: - // modul interface - Mempi(const char* name, const MempiHost*); - virtual ~Mempi(); - virtual bool init() { return false; } - const char* name() const { return _name; } - - // process interface - virtual void process(unsigned, unsigned, MidiEventList*, MidiEventList*) = 0; - - // session interface - virtual void getInitData(int*, const unsigned char**) const {} - virtual void setInitData(int, const unsigned char*) {} - - // GUI interface routines - virtual bool hasGui() const { return false; } - virtual bool guiVisible() const { return false; } - virtual void showGui(bool) {} - virtual void getGeometry(int* x, int* y, int* w, int* h) const; - virtual void setGeometry(int, int, int, int) {} - }; - -//--------------------------------------------------------- -// MEMPI -// Class descriptor -//--------------------------------------------------------- - -enum MempiType { MEMPI_FILTER = 0, MEMPI_GENERATOR = 1 }; - -struct MEMPI { - const char* name; - const char* description; - const char* version; - MempiType type; - int majorMempiVersion, minorMempiVersion; - Mempi* (*instantiate)(const char* name, const MempiHost*); - }; - -extern "C" { - const MEMPI* mempi_descriptor(); - } - -#endif - diff --git a/muse/midiplugins/libmidiplugin/midievent.cpp b/muse/midiplugins/libmidiplugin/midievent.cpp deleted file mode 100644 index 972bc8a2..00000000 --- a/muse/midiplugins/libmidiplugin/midievent.cpp +++ /dev/null @@ -1,21 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: mpevent.cpp,v 1.1 2005/05/08 17:01:30 wschweer Exp $ -// -// (C) Copyright 2002-2004 Werner Schweer (ws@seh.de) -//========================================================= - -#include "midievent.h" - -//--------------------------------------------------------- -// MEvent -//--------------------------------------------------------- - -MEvent::MEvent(unsigned t, int tpe, const unsigned char* data, int len) - { - _time = t; - edata.setData(data, len); - _type = tpe; - } - diff --git a/muse/midiplugins/libmidiplugin/midievent.h b/muse/midiplugins/libmidiplugin/midievent.h deleted file mode 100644 index a21bec88..00000000 --- a/muse/midiplugins/libmidiplugin/midievent.h +++ /dev/null @@ -1,87 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: mpevent.h,v 1.3 2005/06/06 14:24:53 wschweer Exp $ -// -// (C) Copyright 1999-2002 Werner Schweer (ws@seh.de) -//========================================================= - -#ifndef __MIDIEVENT_H__ -#define __MIDIEVENT_H__ - -#include -#include "evdata.h" -#include - -class Event; -class EvData; - -//--------------------------------------------------------- -// MidiEvent -//--------------------------------------------------------- - -class MidiEvent { - unsigned _time; - EvData edata; - unsigned char _channel, _type; - int _a, _b; - - public: - MidiEvent() {} - MidiEvent(unsigned tm, int c, int t, int a, int b) - : _time(tm), _channel(c & 0xf), _type(t), _a(a), _b(b) {} - MidiEvent(unsigned t, int type, const unsigned char* data, int len); - MidiEvent(unsigned t, int tpe, EvData d) : _time(t), edata(d), _type(tpe) {} - MidiEvent(unsigned t, int channel, const Event& e); - - ~MidiEvent() {} - - MidiEvent& operator=(const MidiEvent& ed) { - _time = ed._time; - edata = ed.edata; - _channel = ed._channel; - _type = ed._type; - _a = ed._a; - _b = ed._b; - return *this; - } - - int channel() const { return _channel; } - int type() const { return _type; } - int dataA() const { return _a; } - int dataB() const { return _b; } - unsigned time() const { return _time; } - - void setChannel(int val) { _channel = val; } - void setType(int val) { _type = val; } - void setA(int val) { _a = val; } - void setB(int val) { _b = val; } - void setTime(unsigned val) { _time = val; } - - const EvData& eventData() const { return edata; } - unsigned char* data() const { return edata.data; } - int len() const { return edata.dataLen; } - void setData(const EvData& e) { edata = e; } - void setData(const unsigned char* p, int len) { edata.setData(p, len); } - void dump() const; - bool isNote() const { return _type == 0x90; } - bool isNoteOff() const { return (_type == 0x80)||(_type == 0x90 && _b == 0); } - bool operator<(const MidiEvent&) const; - }; - -//--------------------------------------------------------- -// MidiEventList -//--------------------------------------------------------- - -// typedef std::multiset, -// __gnu_cxx::__mt_alloc > MPEL; - -struct MidiEventList : public std::multiset > - { - }; - -typedef MidiEventList::iterator iMidiEvent; -typedef MidiEventList::const_iterator ciMidiEvent; - -#endif - diff --git a/muse/midiplugins/metronom/CMakeLists.txt b/muse/midiplugins/metronom/CMakeLists.txt deleted file mode 100644 index 5153e6d4..00000000 --- a/muse/midiplugins/metronom/CMakeLists.txt +++ /dev/null @@ -1,46 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -QT4_WRAP_CPP ( metronom_mocs metronomgui.h ) -QT4_WRAP_UI ( metronom_uis metronomgui.ui ) - -add_library ( metronom SHARED - metronom.cpp - metronomgui.cpp - metronomgui.h - ${metronom_mocs} - ${metronom_uis} - ) -target_link_libraries( metronom - midiplugin - ${QT_LIBRARIES} - ) - -# - tell cmake to name target metronom.so instead of -# libmetronom.so -# - use precompiled header files -# -set_target_properties ( metronom - PROPERTIES PREFIX "" - COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all-pic.h" - ) - -install_targets ( /${CMAKE_INSTALL_LIBDIR}/${MusE_INSTALL_NAME}/midiplugins/ metronom ) - diff --git a/muse/midiplugins/metronom/metronom.cpp b/muse/midiplugins/metronom/metronom.cpp deleted file mode 100644 index ece1e466..00000000 --- a/muse/midiplugins/metronom/metronom.cpp +++ /dev/null @@ -1,167 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: metronom.cpp,v 1.3 2005/11/16 17:55:59 wschweer Exp $ -// -// metronom - midi metronom -// -// (C) Copyright 2005 Werner Schweer (ws@seh.de) -//========================================================= - -#include "metronomgui.h" -#include "metronom.h" -#include "midi.h" -#include "midievent.h" - -//--------------------------------------------------------- -// Metronom -//--------------------------------------------------------- - -Metronom::Metronom(const char* name, const MempiHost* h) - : Mempi(name, h) - { - gui = 0; - } - -//--------------------------------------------------------- -// Metronom -//--------------------------------------------------------- - -Metronom::~Metronom() - { - if (gui) - delete gui; - } - -//--------------------------------------------------------- -// init -//--------------------------------------------------------- - -bool Metronom::init() - { - nextTick = 0; - lastTo = 0; - data.measureNote = 63; - data.measureVelo = 127; - data.beatNote = 63; - data.beatVelo = 70; - - gui = new MetronomGui(this, 0); - gui->hide(); - gui->setWindowTitle(QString(name())); - - return false; - } - -//--------------------------------------------------------- -// getGeometry -//--------------------------------------------------------- - -void Metronom::getGeometry(int* x, int* y, int* w, int* h) const - { - QPoint pos(gui->pos()); - QSize size(gui->size()); - *x = pos.x(); - *y = pos.y(); - *w = size.width(); - *h = size.height(); - } - -//--------------------------------------------------------- -// setGeometry -//--------------------------------------------------------- - -void Metronom::setGeometry(int x, int y, int w, int h) - { - gui->resize(QSize(w, h)); - gui->move(QPoint(x, y)); - } - -//--------------------------------------------------------- -// process -//--------------------------------------------------------- - -void Metronom::process(unsigned from, unsigned to, MidiEventList* /*il*/, MidiEventList* ol) - { - if (from == to) { - nextTick = 0; - return; - } - if (lastTo != from) { // seek? -// printf(" seek? %d-%d\n", lastTo, from); - nextTick = 0; - } - lastTo = to; - if (nextTick > to) - return; - while (nextTick < to) { - int bar, beat; - unsigned tick; - if (nextTick < from) { - host->bar(from, &bar, &beat, &tick); - if (tick) - nextTick = host->bar2tick(bar, beat+1, 0); - else - nextTick = from; - } - host->bar(nextTick, &bar, &beat, &tick); - bool isMeasure = beat == 0; - - MidiEvent ev(nextTick, 0, ME_NOTEON, data.beatNote, data.beatVelo); - if (isMeasure) { - ev.setA(data.measureNote); - ev.setB(data.measureVelo); - } - ol->insert(ev); // insert note on - ev.setB(0); - ev.setTime(nextTick + 10); - ev.setB(0); - ol->insert(ev); // insert note off - - nextTick = host->bar2tick(bar, beat+1, 0); - } - } - -//--------------------------------------------------------- -// getInitData -//--------------------------------------------------------- - -void Metronom::getInitData(int* n, const unsigned char** p) const - { - *n = sizeof(data); - *p = (unsigned char*)&data; - } - -//--------------------------------------------------------- -// setInitData -//--------------------------------------------------------- - -void Metronom::setInitData(int n, const unsigned char* p) - { - memcpy((void*)&data, p, n); - if (gui) - gui->init(); - } - -//--------------------------------------------------------- -// inst -//--------------------------------------------------------- - -static Mempi* instantiate(const char* name, const MempiHost* h) - { - return new Metronom(name, h); - } - -extern "C" { - static MEMPI descriptor = { - "Metronom", - "MusE Simple Midi Metronom", - "0.1", // version string - MEMPI_GENERATOR, - MEMPI_MAJOR_VERSION, MEMPI_MINOR_VERSION, - instantiate - }; - - const MEMPI* mempi_descriptor() { return &descriptor; } - } - diff --git a/muse/midiplugins/metronom/metronom.h b/muse/midiplugins/metronom/metronom.h deleted file mode 100644 index 3d570613..00000000 --- a/muse/midiplugins/metronom/metronom.h +++ /dev/null @@ -1,53 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: metronom.h,v 1.3 2005/06/12 09:22:51 wschweer Exp $ -// -// metronom - simple midi metronom -// -// (C) Copyright 2005 Werner Schweer (ws@seh.de) -//========================================================= - -#ifndef __METRONOM_H__ -#define __METRONOM_H__ - -#include "../libmidiplugin/mempi.h" - -//--------------------------------------------------------- -// metronom - simple midi metronom -//--------------------------------------------------------- - -class Metronom : public Mempi { - - protected: - struct InitData { - char measureNote; - char measureVelo; - char beatNote; - char beatVelo; - } data; - MetronomGui* gui; - friend class MetronomGui; - - unsigned int nextTick; - unsigned int lastTo; - - virtual void process(unsigned, unsigned, MidiEventList*, MidiEventList*); - - public: - Metronom(const char* name, const MempiHost*); - ~Metronom(); - virtual bool init(); - - virtual bool hasGui() const { return true; } - virtual bool guiVisible() const { return gui->isVisible(); } - virtual void showGui(bool val) { gui->setShown(val); } - virtual void getGeometry(int* x, int* y, int* w, int* h) const; - virtual void setGeometry(int, int, int, int); - - virtual void getInitData(int*, const unsigned char**) const; - virtual void setInitData(int, const unsigned char*); - }; - -#endif - diff --git a/muse/midiplugins/metronom/metronomgui.cpp b/muse/midiplugins/metronom/metronomgui.cpp deleted file mode 100644 index e6705f7c..00000000 --- a/muse/midiplugins/metronom/metronomgui.cpp +++ /dev/null @@ -1,75 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: metronomgui.cpp,v 1.2 2005/10/05 17:02:03 lunar_shuttle Exp $ -// -// (C) Copyright 2005 Werner Schweer (ws@seh.de) -//========================================================= - -#include "metronomgui.h" -#include "metronom.h" - -//--------------------------------------------------------- -// MidiMetronomConfig -//--------------------------------------------------------- - -MetronomGui::MetronomGui(Metronom* f, QWidget* parent) - : QDialog(parent) - { - setupUi(this); - metronom = f; - init(); - connect(beatNote, SIGNAL(valueChanged(int)), SLOT(beatNoteChanged(int))); - connect(measureVelocity, SIGNAL(valueChanged(int)), SLOT(measureVelocityChanged(int))); - connect(measureNote, SIGNAL(valueChanged(int)), SLOT(measureNoteChanged(int))); - connect(beatVelocity, SIGNAL(valueChanged(int)), SLOT(beatVelocityChanged(int))); - } - -//--------------------------------------------------------- -// init -//--------------------------------------------------------- - -void MetronomGui::init() - { - beatNote->setValue(metronom->data.beatNote); - measureNote->setValue(metronom->data.measureNote); - beatVelocity->setValue(metronom->data.beatVelo); - measureVelocity->setValue(metronom->data.measureVelo); - } - -//--------------------------------------------------------- -// beatNoteChanged -//--------------------------------------------------------- - -void MetronomGui::beatNoteChanged(int val) - { - metronom->data.beatNote = val; - } - -//--------------------------------------------------------- -// measureVelocityChanged -//--------------------------------------------------------- - -void MetronomGui::measureVelocityChanged(int val) - { - metronom->data.measureVelo = val; - } - -//--------------------------------------------------------- -// measureNoteChanged -//--------------------------------------------------------- - -void MetronomGui::measureNoteChanged(int val) - { - metronom->data.measureNote = val; - } - -//--------------------------------------------------------- -// beatVelocityChanged -//--------------------------------------------------------- - -void MetronomGui::beatVelocityChanged(int val) - { - metronom->data.beatVelo = val; - } - diff --git a/muse/midiplugins/metronom/metronomgui.h b/muse/midiplugins/metronom/metronomgui.h deleted file mode 100644 index cceea61d..00000000 --- a/muse/midiplugins/metronom/metronomgui.h +++ /dev/null @@ -1,36 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: metronomgui.h,v 1.3 2005/10/05 17:02:03 lunar_shuttle Exp $ -// -// (C) Copyright 2005 Werner Schweer (ws@seh.de) -//========================================================= - -#ifndef __METRONOMGUI_H__ -#define __METRONOMGUI_H__ - -#include "ui_metronomgui.h" - -class Metronom; - -//--------------------------------------------------------- -// MetronomGui -//--------------------------------------------------------- - -class MetronomGui : public QDialog, public Ui::MetronomBase { - Q_OBJECT - Metronom* metronom; - - private slots: - void beatNoteChanged(int); - void measureVelocityChanged(int); - void measureNoteChanged(int); - void beatVelocityChanged(int); - - public: - MetronomGui(Metronom*, QWidget* parent=0); - void init(); - }; - -#endif - diff --git a/muse/midiplugins/metronom/metronomgui.ui b/muse/midiplugins/metronom/metronomgui.ui deleted file mode 100644 index 188735d4..00000000 --- a/muse/midiplugins/metronom/metronomgui.ui +++ /dev/null @@ -1,150 +0,0 @@ - - - - - MetronomBase - - - - 0 - 0 - 429 - 164 - - - - - 3 - 5 - 0 - 0 - - - - MusE: Midi Metronome - - - - 9 - - - 6 - - - - - 0 - - - 6 - - - - - - 0 - 0 - 0 - 0 - - - - - ZappedChancellor - 48 - 75 - false - true - false - false - - - - Metronome - - - Metronome - - - M - - - Qt::AlignCenter - - - - - - - 0 - - - 6 - - - - - Measure Note - - - - - - - Measure Velocity - - - - - - - Beat Velocity - - - - - - - Beat Note - - - - - - - 127 - - - - - - - 127 - - - - - - - 127 - - - - - - - 127 - - - - - - - - - - - qPixmapFromMimeSource - - - diff --git a/muse/midiplugins/splitlayer/CMakeLists.txt b/muse/midiplugins/splitlayer/CMakeLists.txt deleted file mode 100644 index b6803d8b..00000000 --- a/muse/midiplugins/splitlayer/CMakeLists.txt +++ /dev/null @@ -1,45 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -QT4_WRAP_CPP ( splitlayer_mocs splitlayergui.h ) -## QT4_WRAP_UI ( splitlayer_uis splitlayergui.ui ) - -add_library ( splitlayer SHARED - splitlayer.cpp - splitlayergui.cpp - splitlayergui.h - ${splitlayer_mocs} - ) -target_link_libraries( splitlayer - midiplugin - ${QT_LIBRARIES} - ) - -# - tell cmake to name target splitlayer.so instead of -# libsplitlayer.so -# - use precompiled header files -# -set_target_properties ( splitlayer - PROPERTIES PREFIX "" - COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all-pic.h" - ) - -install_targets ( /${CMAKE_INSTALL_LIBDIR}/${MusE_INSTALL_NAME}/midiplugins/ splitlayer ) - diff --git a/muse/midiplugins/splitlayer/splitlayer.cpp b/muse/midiplugins/splitlayer/splitlayer.cpp deleted file mode 100644 index 7ea4ba3e..00000000 --- a/muse/midiplugins/splitlayer/splitlayer.cpp +++ /dev/null @@ -1,209 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2006 by Werner Schweer -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "splitlayergui.h" -#include "splitlayer.h" -#include "midi.h" -#include "midievent.h" - -//--------------------------------------------------------- -// SplitLayer -//--------------------------------------------------------- - -SplitLayer::SplitLayer(const char* name, const MempiHost* h) - : Mempi(name, h) - { - gui = 0; - } - -//--------------------------------------------------------- -// SplitLayer -//--------------------------------------------------------- - -SplitLayer::~SplitLayer() - { - if (gui) - delete gui; - } - -//--------------------------------------------------------- -// init -//--------------------------------------------------------- - -bool SplitLayer::init() - { - data.startVelo[0] = 0; - data.endVelo[0] = 128; - data.startPitch[0] = 0; - data.endPitch[0] = 128; - data.pitchOffset[0] = 0; - data.veloOffset[0] = 0; - for (int i = 1; i < MIDI_CHANNELS; ++i) { - data.startVelo[i] = 0; - data.endVelo[i] = 0; - data.startPitch[i] = 0; - data.endPitch[i] = 0; - data.pitchOffset[i] = 0; - data.veloOffset[i] = 0; - } - memset(notes, 0, 128 * sizeof(int)); - learnMode = false; - gui = new SplitLayerGui(this, 0); - gui->hide(); - gui->setWindowTitle(QString(name())); - gui->init(); - return false; - } - -//--------------------------------------------------------- -// getGeometry -//--------------------------------------------------------- - -void SplitLayer::getGeometry(int* x, int* y, int* w, int* h) const - { - QPoint pos(gui->pos()); - QSize size(gui->size()); - *x = pos.x(); - *y = pos.y(); - *w = size.width(); - *h = size.height(); - } - -//--------------------------------------------------------- -// setGeometry -//--------------------------------------------------------- - -void SplitLayer::setGeometry(int x, int y, int w, int h) - { - gui->resize(QSize(w, h)); - gui->move(QPoint(x, y)); - } - -//--------------------------------------------------------- -// process -//--------------------------------------------------------- - -void SplitLayer::process(unsigned, unsigned, MidiEventList* il, MidiEventList* ol) - { - for (iMidiEvent i = il->begin(); i != il->end(); ++i) { - if (i->type() != ME_NOTEON && i->type() != ME_NOTEOFF) { - ol->insert(*i); - continue; - } - int pitch = i->dataA(); - int velo = i->dataB(); - if (learnMode) { - if (learnStartPitch) - data.startPitch[learnChannel] = pitch; - else - data.endPitch[learnChannel] = pitch; - learnMode = false; - gui->sendResetLearnMode(); - return; - } - if (i->type() == ME_NOTEON && velo) { - for (int ch = 0; ch < MIDI_CHANNELS; ++ch) { - MidiEvent event(*i); - if (pitch >= data.startPitch[ch] - && pitch <= data.endPitch[ch] - && velo >= data.startVelo[ch] - && velo <= data.endVelo[ch]) { - notes[pitch] |= (1 << ch); - event.setChannel(ch); - int p = pitch; - int v = velo; - p += data.pitchOffset[ch]; - if (p > 127) - p = 127; - else if (p < 0) - p = 0; - v += data.veloOffset[ch]; - if (v > 127) - v = 127; - else if (v < 0) - v = 0; - event.setA(p); - event.setB(v); - ol->insert(event); - } - } - } - else { - for (int ch = 0; ch < MIDI_CHANNELS; ++ch) { - if (notes[pitch] & (1 << ch)) { - MidiEvent event(*i); - event.setChannel(ch); - int p = pitch + data.pitchOffset[ch]; - if (p < 0) - p = 0; - else if (p > 127) - p = 127; - event.setA(p); - ol->insert(event); - } - } - notes[pitch] = 0; - } - } - } - -//--------------------------------------------------------- -// getInitData -//--------------------------------------------------------- - -void SplitLayer::getInitData(int* n, const unsigned char** p) const - { - *n = sizeof(data); - *p = (unsigned char*)&data; - } - -//--------------------------------------------------------- -// setInitData -//--------------------------------------------------------- - -void SplitLayer::setInitData(int n, const unsigned char* p) - { - memcpy((void*)&data, p, n); - if (gui) - gui->init(); - } - -//--------------------------------------------------------- -// inst -//--------------------------------------------------------- - -static Mempi* instantiate(const char* name, const MempiHost* h) - { - return new SplitLayer(name, h); - } - -extern "C" { - static MEMPI descriptor = { - "SplitLayer", - "MusE Midi Splits and Layers", - "0.1", // version string - MEMPI_FILTER, - MEMPI_MAJOR_VERSION, MEMPI_MINOR_VERSION, - instantiate - }; - - const MEMPI* mempi_descriptor() { return &descriptor; } - } - diff --git a/muse/midiplugins/splitlayer/splitlayer.h b/muse/midiplugins/splitlayer/splitlayer.h deleted file mode 100644 index 7c213c01..00000000 --- a/muse/midiplugins/splitlayer/splitlayer.h +++ /dev/null @@ -1,69 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2006 by Werner Schweer -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __METRONOM_H__ -#define __METRONOM_H__ - -#include "../libmidiplugin/mempi.h" - -static const int MIDI_CHANNELS = 16; - -//--------------------------------------------------------- -// SplitLayer - splits and layers for midi input -//--------------------------------------------------------- - -class SplitLayer : public Mempi { - - protected: - struct InitData { - int startVelo[MIDI_CHANNELS]; - int endVelo[MIDI_CHANNELS]; - int startPitch[MIDI_CHANNELS]; - int endPitch[MIDI_CHANNELS]; - int pitchOffset[MIDI_CHANNELS]; - int veloOffset[MIDI_CHANNELS]; - } data; - int notes[128]; // bitmapped note-on/channel values - bool learnMode; - int learnChannel; - bool learnStartPitch; - - SplitLayerGui* gui; - friend class SplitLayerGui; - - virtual void process(unsigned, unsigned, MidiEventList*, MidiEventList*); - - public: - SplitLayer(const char* name, const MempiHost*); - ~SplitLayer(); - virtual bool init(); - - virtual bool hasGui() const { return true; } - virtual bool guiVisible() const { return gui->isVisible(); } - virtual void showGui(bool val) { gui->setShown(val); } - virtual void getGeometry(int* x, int* y, int* w, int* h) const; - virtual void setGeometry(int, int, int, int); - - virtual void getInitData(int*, const unsigned char**) const; - virtual void setInitData(int, const unsigned char*); - }; - -#endif - diff --git a/muse/midiplugins/splitlayer/splitlayergui.cpp b/muse/midiplugins/splitlayer/splitlayergui.cpp deleted file mode 100644 index b5d2bdb4..00000000 --- a/muse/midiplugins/splitlayer/splitlayergui.cpp +++ /dev/null @@ -1,263 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2006 by Werner Schweer -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "splitlayergui.h" -#include "splitlayer.h" -#include "gui.h" - -//--------------------------------------------------------- -// SplitLayerGui -//--------------------------------------------------------- - -SplitLayerGui::SplitLayerGui(SplitLayer* f, QWidget* parent) - : QWidget(parent) - { - sl = f; - QGridLayout* grid = new QGridLayout; - grid->setSpacing(1); - setLayout(grid); - QSignalMapper* m1 = new QSignalMapper(this); - QSignalMapper* m2 = new QSignalMapper(this); - QSignalMapper* m3 = new QSignalMapper(this); - QSignalMapper* m4 = new QSignalMapper(this); - QSignalMapper* m5 = new QSignalMapper(this); - QSignalMapper* m6 = new QSignalMapper(this); - connect(m1, SIGNAL(mapped(int)), SLOT(startPitchChanged(int))); - connect(m2, SIGNAL(mapped(int)), SLOT(endPitchChanged(int))); - connect(m3, SIGNAL(mapped(int)), SLOT(pitchOffsetChanged(int))); - connect(m4, SIGNAL(mapped(int)), SLOT(startVeloChanged(int))); - connect(m5, SIGNAL(mapped(int)), SLOT(endVeloChanged(int))); - connect(m6, SIGNAL(mapped(int)), SLOT(veloOffsetChanged(int))); - for (int i = 0; i < MIDI_CHANNELS; ++i) { - QLabel* l = new QLabel(QString("Ch %1").arg(i+1)); - grid->addWidget(l, i, 0); - - p1[i] = new Awl::PitchEdit(0); - p1[i]->setToolTip(tr("start pitch for split")); - connect(p1[i], SIGNAL(valueChanged(int)), m1, SLOT(map())); - m1->setMapping(p1[i], i); - - a1[i] = new QAction(this); - a1[i]->setToolTip(tr("enable learn mode for start pitch")); - a1[i]->setCheckable(true); - QIcon icon; - icon.addFile(":/xpm/recordOn.svg", ICON_SIZE, QIcon::Normal, QIcon::On); - icon.addFile(":/xpm/recordOff.svg", ICON_SIZE, QIcon::Normal, QIcon::Off); - a1[i]->setIcon(icon); - a1[i]->setData(i); - QToolButton* rb1 = new QToolButton; - rb1->setDefaultAction(a1[i]); - connect(rb1, SIGNAL(triggered(QAction*)), SLOT(learnStartPitch(QAction*))); - - p2[i] = new Awl::PitchEdit(0); - p2[i]->setToolTip(tr("end pitch for split")); - connect(p2[i], SIGNAL(valueChanged(int)), m2, SLOT(map())); - m2->setMapping(p2[i], i); - - a2[i] = new QAction(this); - a2[i]->setToolTip(tr("enable learn mode for end pitch")); - a2[i]->setCheckable(true); - a2[i]->setIcon(icon); - a2[i]->setData(i); - QToolButton* rb2 = new QToolButton; - rb2->setDefaultAction(a2[i]); - connect(rb2, SIGNAL(triggered(QAction*)), SLOT(learnEndPitch(QAction*))); - - p3[i] = new Awl::PitchEdit(0); - p3[i]->setToolTip(tr("pitch offset for split")); - p3[i]->setDeltaMode(true); - connect(p3[i], SIGNAL(valueChanged(int)), m3, SLOT(map())); - m3->setMapping(p3[i], i); - - p4[i] = new QSpinBox; - p4[i]->setRange(0, 127); - p4[i]->setToolTip(tr("start velocity for split")); - connect(p4[i], SIGNAL(valueChanged(int)), m4, SLOT(map())); - m4->setMapping(p4[i], i); - - p5[i] = new QSpinBox; - p5[i]->setRange(0, 127); - p5[i]->setToolTip(tr("end velocity for split")); - connect(p5[i], SIGNAL(valueChanged(int)), m5, SLOT(map())); - m5->setMapping(p5[i], i); - - p6[i] = new QSpinBox; - p6[i]->setRange(-127, 127); - p6[i]->setToolTip(tr("velocity offset for split")); - connect(p6[i], SIGNAL(valueChanged(int)), m6, SLOT(map())); - m6->setMapping(p6[i], i); - - grid->addWidget(p1[i], i, 1); - grid->addWidget(rb1, i, 2); - grid->addWidget(p2[i], i, 3); - grid->addWidget(rb2, i, 4); - grid->addWidget(p3[i], i, 5); - grid->addWidget(p4[i], i, 7); - grid->addWidget(p5[i], i, 8); - grid->addWidget(p6[i], i, 9); - } - QFrame* fr = new QFrame; - fr->setFrameStyle(QFrame::VLine | QFrame::Raised); - fr->setLineWidth(4); - grid->addWidget(fr, 0, 6, MIDI_CHANNELS, 1); - - int filedes[2]; // 0 - reading 1 - writing - if (pipe(filedes) == -1) { - perror("SplitLayerGui:creating pipe"); - exit(-1); - } - fd2 = filedes[0]; - fd1 = filedes[1]; - - QSocketNotifier* socket = new QSocketNotifier(fd2, - QSocketNotifier::Read, this); - connect(socket, SIGNAL(activated(int)), SLOT(resetLearnMode(int))); - init(); - } - -//--------------------------------------------------------- -// init -//--------------------------------------------------------- - -void SplitLayerGui::init() - { - for (int i = 0; i < MIDI_CHANNELS; ++i) { - p1[i]->setValue(sl->data.startPitch[i]); - p2[i]->setValue(sl->data.endPitch[i]); - p3[i]->setValue(sl->data.pitchOffset[i]); - p4[i]->setValue(sl->data.startVelo[i]); - p5[i]->setValue(sl->data.endVelo[i]); - p6[i]->setValue(sl->data.veloOffset[i]); - } - } - -//--------------------------------------------------------- -// learnStartPitch -//--------------------------------------------------------- - -void SplitLayerGui::learnStartPitch(QAction* a) - { - sl->learnChannel = a->data().toInt(); - sl->learnStartPitch = true; - sl->learnMode = true; - for (int i = 0; i < MIDI_CHANNELS; ++i) { - if (a != a1[i]) - a1[i]->setChecked(false); - if (a != a2[i]) - a2[i]->setChecked(false); - } - } - -//--------------------------------------------------------- -// learnEndPitch -//--------------------------------------------------------- - -void SplitLayerGui::learnEndPitch(QAction* a) - { - sl->learnChannel = a->data().toInt(); - sl->learnStartPitch = false; - sl->learnMode = true; - for (int i = 0; i < MIDI_CHANNELS; ++i) { - if (a != a1[i]) - a1[i]->setChecked(false); - if (a != a2[i]) - a2[i]->setChecked(false); - } - } - -//--------------------------------------------------------- -// startPitchChanged -//--------------------------------------------------------- - -void SplitLayerGui::startPitchChanged(int n) - { - sl->data.startPitch[n] = p1[n]->value(); - } - -//--------------------------------------------------------- -// endPitchChanged -//--------------------------------------------------------- - -void SplitLayerGui::endPitchChanged(int n) - { - sl->data.endPitch[n] = p2[n]->value(); - } - -//--------------------------------------------------------- -// pitchOffsetChanged -//--------------------------------------------------------- - -void SplitLayerGui::pitchOffsetChanged(int n) - { - sl->data.pitchOffset[n] = p3[n]->value(); - } - -//--------------------------------------------------------- -// startVeloChanged -//--------------------------------------------------------- - -void SplitLayerGui::startVeloChanged(int n) - { - sl->data.startVelo[n] = p4[n]->value(); - } - -//--------------------------------------------------------- -// endVeloChanged -//--------------------------------------------------------- - -void SplitLayerGui::endVeloChanged(int n) - { - sl->data.endVelo[n] = p5[n]->value(); - } - -//--------------------------------------------------------- -// veloOffsetChanged -//--------------------------------------------------------- - -void SplitLayerGui::veloOffsetChanged(int n) - { - sl->data.veloOffset[n] = p6[n]->value(); - } - -//--------------------------------------------------------- -// resetLearnMode -//--------------------------------------------------------- - -void SplitLayerGui::resetLearnMode(int fd) - { - char buffer[16]; - read(fd, buffer, 16); - - for (int i = 0; i < MIDI_CHANNELS; ++i) { - a1[i]->setChecked(false); - a2[i]->setChecked(false); - } - init(); - } - -//--------------------------------------------------------- -// sendResetLearnMode -//--------------------------------------------------------- - -void SplitLayerGui::sendResetLearnMode() - { - write(fd1, "X", 1); - } - diff --git a/muse/midiplugins/splitlayer/splitlayergui.h b/muse/midiplugins/splitlayer/splitlayergui.h deleted file mode 100644 index 4f2006ca..00000000 --- a/muse/midiplugins/splitlayer/splitlayergui.h +++ /dev/null @@ -1,65 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2006 by Werner Schweer -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __SPLITLAYERGUI_H__ -#define __SPLITLAYERGUI_H__ - -#include "awl/pitchedit.h" - -class SplitLayer; - -//--------------------------------------------------------- -// SplitLayerGui -//--------------------------------------------------------- - -class SplitLayerGui : public QWidget { - Q_OBJECT - SplitLayer* sl; - - Awl::PitchEdit* p1[16]; - Awl::PitchEdit* p2[16]; - Awl::PitchEdit* p3[16]; - QSpinBox* p4[16]; - QSpinBox* p5[16]; - QSpinBox* p6[16]; - - QAction* a1[16]; - QAction* a2[16]; - int fd1, fd2; - - private slots: - void learnStartPitch(QAction*); - void learnEndPitch(QAction*); - void startPitchChanged(int); - void endPitchChanged(int); - void pitchOffsetChanged(int); - void resetLearnMode(int); - void startVeloChanged(int); - void endVeloChanged(int); - void veloOffsetChanged(int); - - public: - SplitLayerGui(SplitLayer*, QWidget* parent=0); - void init(); - void sendResetLearnMode(); - }; - -#endif - diff --git a/muse/midiplugins/transform/CMakeLists.txt b/muse/midiplugins/transform/CMakeLists.txt deleted file mode 100644 index 1ac2652c..00000000 --- a/muse/midiplugins/transform/CMakeLists.txt +++ /dev/null @@ -1,45 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -QT4_WRAP_CPP ( transform_mocs transform.h ) -QT4_WRAP_UI ( transform_uis transform.ui ) - -add_library ( transform SHARED - transform.cpp - ${transform_mocs} - ${transform_uis} - ) - -target_link_libraries( transform - midiplugin - ${QT_LIBRARIES} - ) - -# - tell cmake to name target transform.so instead of -# libtransform.so -# - use precompiled header files -# -set_target_properties ( transform - PROPERTIES PREFIX "" - COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all-pic.h" - ) - -install_targets ( /${CMAKE_INSTALL_LIBDIR}/${MusE_INSTALL_NAME}/midiplugins/ transform ) - diff --git a/muse/midiplugins/transform/transform.cpp b/muse/midiplugins/transform/transform.cpp deleted file mode 100644 index 1376d2fc..00000000 --- a/muse/midiplugins/transform/transform.cpp +++ /dev/null @@ -1,904 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: transform.cpp,v 1.8 2005/11/17 18:19:30 wschweer Exp $ -// -// (C) Copyright 2001-2005 Werner Schweer (ws@seh.de) -//========================================================= - -#include "midievent.h" -#include "transform.h" - -static int eventTypeTable[] = { - 1, 6, 4, 7, 8, 10, 11 - }; -static int procVal2Map[] = { 0, 1, 2, 3, 4, 5, 6, 7, 10, 11 }; - -struct TDict { - TransformFunction id; - const QString text; - TDict(TransformFunction f, const QString& s) : id(f), text(s) {} - }; - -static const TDict oplist[] = { - TDict(Trans, QString("Transform")), - TDict(Delete, QString("Filter")) - }; - -static const char* vall[] = { - "c","c#","d","d#","e","f","f#","g","g#","a","a#","h" - }; -static const char* valu[] = { - "C","C#","D","D#","E","F","F#","G","G#","A","A#","H" - }; - -//--------------------------------------------------------- -// pitch2string -//--------------------------------------------------------- - -static QString pitch2string(int v) - { - if (v < 0 || v > 127) - return QString("----"); - int octave = (v / 12) - 2; - QString o; - o.sprintf("%d", octave); - int i = v % 12; - QString s(octave < 0 ? valu[i] : vall[i]); - return s + o; - } -//--------------------------------------------------------- -// Transform -//--------------------------------------------------------- - -Transform::Transform(const char* name, const MempiHost* h) - : Mempi(name, h) - { - } - -bool Transform::init() - { - gui = new TransformDialog(this, 0); - gui->setWindowTitle(QString(name())); - gui->show(); - - data.selEventOp = All; - data.selType = 0x90; - data.selVal1 = Ignore; - data.selVal1a = 0; - data.selVal1b = 0; - data.selVal2 = Ignore; - data.selVal2a = 0; - data.selVal2b = 0; - data.procEvent = Keep; - data.eventType = 0x90; - data.procVal1 = Keep; - data.procVal1a = 0; - data.procVal1b = 0; - data.procVal2 = Keep; - data.procVal2a = 0; - data.procVal2b = 0; - data.funcOp = Trans; - data.quantVal = host->division(); - data.selChannel = Ignore; - data.selChannela = 0; - data.selChannelb = 0; - data.procChannel = Keep; - data.procChannela = 0; - data.procChannelb = 0; - return false; - } - -//--------------------------------------------------------- -// filterValOp -//--------------------------------------------------------- - -static bool filterValOp(ValOp op, int val, int val1, int val2) - { - switch (op) { - case Ignore: - break; - case Equal: - if (val != val1) - return true; - break; - case Unequal: - if (val == val1) - return true; - break; - case Higher: - if (val <= val1) - return true; - break; - case Lower: - if (val >= val1) - return true; - break; - case Inside: - if ((val < val1) || (val >= val2)) - return true; - break; - case Outside: - if ((val >= val1) && (val < val2)) - return true; - break; - } - return false; - } - -//--------------------------------------------------------- -// apply -// apply Select filter -// return 0 - not applied -// 1 - drop event -// 2 - event changed -//--------------------------------------------------------- - -void Transform::process(unsigned, unsigned, MidiEventList* il, MidiEventList* ol) - { - for (iMidiEvent i = il->begin(); i != il->end(); ++i) { - MidiEvent event(*i); - if (filterEvent(event) == 1) - continue; - ol->insert(event); - } - } - -//--------------------------------------------------------- -// filterEvent -//--------------------------------------------------------- - -int Transform::filterEvent(MidiEvent& event) - { - switch (data.selEventOp) { - case Equal: - switch(event.type()) { - case 0x90: - case 0x80: - if (data.selType != 0x90) - return 0; - break; - default: - if (event.type() != data.selType) - return 0; - break; - } - break; - case Unequal: - switch(event.type()) { - case 0x90: - case 0x80: - if (data.selType == 0x90) - return 0; - break; - default: - if (event.type() == data.selType) - return 0; - break; - } - break; - default: - break; - } - if (filterValOp(data.selVal1, event.dataA(), data.selVal1a, data.selVal1b)) - return 0; - if (filterValOp(data.selVal2, event.dataB(), data.selVal2a, data.selVal2b)) - return 0; - if (filterValOp(data.selChannel, event.channel(), data.selChannela, data.selChannelb)) - return 0; - - if (data.funcOp == Delete) - return 1; // discard event - - // transform event - if (data.procEvent != Keep) - event.setType(data.eventType); - - //--------------------------------------------------- - // transform value A - //--------------------------------------------------- - - int val = event.dataA(); - switch (data.procVal1) { - case Keep: - break; - case Plus: - val += data.procVal1a; - break; - case Minus: - val -= data.procVal1a; - break; - case Multiply: - val = int(val * (data.procVal1a/100.0) + .5); - break; - case Divide: - val = int(val / (data.procVal1a/100.0) + .5); - break; - case Fix: - val = data.procVal1a; - break; - case Value: - val = data.procVal2a; - break; - case Invert: - val = 127 - val; - break; - case ScaleMap: - printf("scale map not implemented\n"); - break; - case Flip: - val = data.procVal1a - val; - break; - case Dynamic: // "crescendo" - printf("transform not implemented\n"); - break; - case Random: - { - int range = data.procVal1b - data.procVal1a; - if (range > 0) - val = (rand() % range) + data.procVal1a; - else if (range < 0) - val = (rand() % -range) + data.procVal1b; - else - val = data.procVal1a; - } - break; - } - if (val < 0) - val = 0; - if (val > 127) - val = 127; - event.setA(val); - - //--------------------------------------------------- - // transform value B - //--------------------------------------------------- - - val = event.dataB(); - switch (data.procVal2) { - case Plus: - val += data.procVal2a; - break; - case Minus: - val -= data.procVal2a; - break; - case Multiply: - val = int(val * (data.procVal2a/100.0) + .5); - break; - case Divide: - val = int(val / (data.procVal2a/100.0) + .5); - break; - case Fix: - val = data.procVal2a; - break; - case Value: - val = data.procVal1a; - break; - case Invert: - val = 127 - val; - break; - case Dynamic: - printf("transform not implemented\n"); - break; - case Random: - { - int range = data.procVal2b - data.procVal2a; - if (range > 0) - val = (rand() % range) + data.procVal2a; - else if (range < 0) - val = (rand() % -range) + data.procVal2b; - else - val = data.procVal2a; - } - break; - case ScaleMap: - case Keep: - case Flip: - break; - } - if (val < 0) - val = 0; - if (val > 127) - val = 127; - event.setB(val); - - //--------------------------------------------------- - // transform channel - //--------------------------------------------------- - - val = event.channel(); - switch (data.procChannel) { - case Plus: - val += data.procChannela; - break; - case Minus: - val -= data.procChannela; - break; - case Multiply: - val = int(val * (data.procChannela/100.0) + .5); - break; - case Divide: - val = int(val / (data.procChannela/100.0) + .5); - break; - case Fix: - val = data.procChannela; - break; - case Value: - val = data.procChannela; - break; - case Invert: - val = 16 - val; - break; - case Dynamic: - printf("transform not implemented\n"); - break; - case Random: - { - int range = data.procChannelb - data.procChannela; - if (range > 0) - val = (rand() % range) + data.procChannela; - else if (range < 0) - val = (rand() % -range) + data.procChannelb; - else - val = data.procChannela; - } - break; - case ScaleMap: - case Keep: - case Flip: - break; - } - if (val < 0) - val = 0; - if (val > 15) - val = 15; - event.setChannel(val); - return 2; - } - -//--------------------------------------------------------- -// getGeometry -//--------------------------------------------------------- - -void Transform::getGeometry(int* x, int* y, int* w, int* h) const - { - QPoint pos(gui->pos()); - QSize size(gui->size()); - *x = pos.x(); - *y = pos.y(); - *w = size.width(); - *h = size.height(); - } - -//--------------------------------------------------------- -// setGeometry -//--------------------------------------------------------- - -void Transform::setGeometry(int x, int y, int w, int h) - { - gui->resize(QSize(w, h)); - gui->move(QPoint(x, y)); - } - -//--------------------------------------------------------- -// TransformDialog -// Widgets: -// selEventOp selType -// selVal1Op selVal1a selVal1b -// selVal2Op selVal2a selVal2b -// -// procEventOp procType -// procVal1Op procVal1a procVal1b -// procVal2Op procVal2a procVal2b -// funcOp funcQuantVal -// buttonNew buttonDelete -// -// selChannelOp selChannelVala selChannelValb -// procChannelOp procChannelVala procChannelValb -//--------------------------------------------------------- - -TransformDialog::TransformDialog(Transform* tf, QWidget* parent) - : QDialog(parent) - { - setupUi(this); - cmt = tf; - - for (unsigned i = 0; i < sizeof(oplist)/sizeof(*oplist); ++i) - funcOp->addItem(oplist[i].text, i); - - connect(selEventOp, SIGNAL(activated(int)), SLOT(selEventOpSel(int))); - connect(selType, SIGNAL(activated(int)), SLOT(selTypeSel(int))); - connect(selVal1Op, SIGNAL(activated(int)), SLOT(selVal1OpSel(int))); - connect(selVal2Op, SIGNAL(activated(int)), SLOT(selVal2OpSel(int))); - connect(procEventOp, SIGNAL(activated(int)), SLOT(procEventOpSel(int))); - connect(procType, SIGNAL(activated(int)), SLOT(procEventTypeSel(int))); - connect(procVal1Op, SIGNAL(activated(int)), SLOT(procVal1OpSel(int))); - connect(procVal2Op, SIGNAL(activated(int)), SLOT(procVal2OpSel(int))); - connect(funcOp, SIGNAL(activated(int)), SLOT(funcOpSel(int))); - connect(selVal1a, SIGNAL(valueChanged(int)), SLOT(selVal1aChanged(int))); - connect(selVal1b, SIGNAL(valueChanged(int)), SLOT(selVal1bChanged(int))); - connect(selVal2a, SIGNAL(valueChanged(int)), SLOT(selVal2aChanged(int))); - connect(selVal2b, SIGNAL(valueChanged(int)), SLOT(selVal2bChanged(int))); - connect(procVal1a, SIGNAL(valueChanged(int)), SLOT(procVal1aChanged(int))); - connect(procVal1b, SIGNAL(valueChanged(int)), SLOT(procVal1bChanged(int))); - connect(procVal2a, SIGNAL(valueChanged(int)), SLOT(procVal2aChanged(int))); - connect(procVal2b, SIGNAL(valueChanged(int)), SLOT(procVal2bChanged(int))); - connect(selChannelOp, SIGNAL(activated(int)), SLOT(selChannelOpSel(int))); - connect(selChannelVala, SIGNAL(valueChanged(int)), SLOT(selChannelValaChanged(int))); - connect(selChannelValb, SIGNAL(valueChanged(int)), SLOT(selChannelValbChanged(int))); - connect(procChannelOp, SIGNAL(activated(int)), SLOT(procChannelOpSel(int))); - connect(procChannelVala, SIGNAL(valueChanged(int)), SLOT(procChannelValaChanged(int))); - connect(procChannelValb, SIGNAL(valueChanged(int)), SLOT(procChannelValbChanged(int))); - } - -//--------------------------------------------------------- -// init -//--------------------------------------------------------- - -void TransformDialog::init() - { - selEventOp->setCurrentIndex(cmt->data.selEventOp); - selEventOpSel(cmt->data.selEventOp); - - for (unsigned i = 0; i < sizeof(eventTypeTable)/sizeof(*eventTypeTable); ++i) { - if (eventTypeTable[i] == cmt->data.selType) { - selType->setCurrentIndex(i); - break; - } - } - - selVal1Op->setCurrentIndex(cmt->data.selVal1); - selVal1OpSel(cmt->data.selVal1); - - selVal2Op->setCurrentIndex(cmt->data.selVal2); - selVal2OpSel(cmt->data.selVal2); - - selChannelOp->setCurrentIndex(cmt->data.selChannel); - selChannelOpSel(cmt->data.selChannel); - - { - unsigned i; - for (i = 0; i < sizeof(oplist)/sizeof(*oplist); ++i) { - if (oplist[i].id == cmt->data.funcOp) { - funcOp->setCurrentIndex(i); - break; - } - } - if (i == sizeof(oplist)/sizeof(*oplist)) - printf("internal error: bad OpCode\n"); - funcOpSel(i); - } - - procEventOp->setCurrentIndex(cmt->data.procEvent); - procEventOpSel(cmt->data.procEvent); - - procVal1Op->setCurrentIndex(cmt->data.procVal1); - procVal1OpSel(cmt->data.procVal1); - - for (unsigned i = 0; i < sizeof(procVal2Map)/sizeof(*procVal2Map); ++i) { - if (procVal2Map[i] == cmt->data.procVal2) { - procVal2Op->setCurrentIndex(i); - break; - } - } - - selVal1a->setValue(cmt->data.selVal1a); - selVal1b->setValue(cmt->data.selVal1b); - selVal1aChanged(cmt->data.selVal1a); - selVal1bChanged(cmt->data.selVal1b); - - selVal2a->setValue(cmt->data.selVal2a); - selVal2b->setValue(cmt->data.selVal2b); - - selChannelVala->setValue(cmt->data.selChannela); - selChannelValb->setValue(cmt->data.selChannelb); - - procVal1a->setValue(cmt->data.procVal1a); - procVal1b->setValue(cmt->data.procVal1b); - - procVal2a->setValue(cmt->data.procVal2a); - procVal2b->setValue(cmt->data.procVal2b); - - procChannelVala->setValue(cmt->data.procChannela); - procChannelValb->setValue(cmt->data.procChannelb); - } - -//--------------------------------------------------------- -// setValOp -//--------------------------------------------------------- - -void TransformDialog::setValOp(QWidget* a, QWidget* b, ValOp op) - { - switch (op) { - case Ignore: - a->setEnabled(false); - b->setEnabled(false); - break; - case Equal: - case Unequal: - case Higher: - case Lower: - a->setEnabled(true); - b->setEnabled(false); - break; - case Inside: - case Outside: - a->setEnabled(true); - b->setEnabled(true); - break; - } - } - -//--------------------------------------------------------- -// selEventOpSel -//--------------------------------------------------------- - -void TransformDialog::selEventOpSel(int val) - { - selType->setEnabled(val != All); - cmt->data.selEventOp = ValOp(val); - selVal1aChanged(cmt->data.selVal1a); - selVal1bChanged(cmt->data.selVal1b); - } - -//--------------------------------------------------------- -// selTypeSel -//--------------------------------------------------------- - -void TransformDialog::selTypeSel(int val) - { - cmt->data.selType = eventTypeTable[val]; - selVal1aChanged(cmt->data.selVal1a); - selVal1bChanged(cmt->data.selVal1b); - } - -//--------------------------------------------------------- -// selVal1OpSel -//--------------------------------------------------------- - -void TransformDialog::selVal1OpSel(int val) - { - setValOp(selVal1a, selVal1b, ValOp(val)); - cmt->data.selVal1 = ValOp(val); - } - -//--------------------------------------------------------- -// selVal2OpSel -//--------------------------------------------------------- - -void TransformDialog::selVal2OpSel(int val) - { - setValOp(selVal2a, selVal2b, ValOp(val)); - cmt->data.selVal2 = ValOp(val); - } - -//--------------------------------------------------------- -// procEventOpSel -//--------------------------------------------------------- - -void TransformDialog::procEventOpSel(int val) - { - TransformOperator op = val == 0 ? Keep : Fix; - procType->setEnabled(op == Fix); - cmt->data.procEvent = op; - } - -//--------------------------------------------------------- -// procEventTypeSel -//--------------------------------------------------------- - -void TransformDialog::procEventTypeSel(int val) - { - cmt->data.eventType = eventTypeTable[val]; - } - -//--------------------------------------------------------- -// procVal1OpSel -//--------------------------------------------------------- - -void TransformDialog::procVal1OpSel(int val) - { - cmt->data.procVal1 = TransformOperator(val); - switch(TransformOperator(val)) { - case Keep: - case Invert: - procVal1a->setEnabled(false); - procVal1b->setEnabled(false); - break; - case Multiply: - case Divide: - procVal1a->setEnabled(true); - procVal1b->setEnabled(false); - break; - case Plus: - case Minus: - case Fix: - case Value: - case Flip: - procVal1a->setEnabled(true); - procVal1b->setEnabled(false); - break; - case Random: - case ScaleMap: - case Dynamic: - procVal1a->setEnabled(true); - procVal1b->setEnabled(true); - break; - } - } - -//--------------------------------------------------------- -// procVal2OpSel -//--------------------------------------------------------- - -void TransformDialog::procVal2OpSel(int val) - { - TransformOperator op = TransformOperator(procVal2Map[val]); - cmt->data.procVal2 = op; - - switch (op) { - case Keep: - case Invert: - procVal2a->setEnabled(false); - procVal2b->setEnabled(false); - break; - case Multiply: - case Divide: - procVal2a->setEnabled(true); - procVal2b->setEnabled(false); - break; - case Plus: - case Minus: - case Fix: - case Value: - procVal2a->setEnabled(true); - procVal2b->setEnabled(false); - break; - case Random: - case Dynamic: - procVal2a->setEnabled(true); - procVal2b->setEnabled(true); - break; - default: - break; - } - } - -//--------------------------------------------------------- -// funcOpSel -//--------------------------------------------------------- - -void TransformDialog::funcOpSel(int val) - { - TransformFunction op = oplist[val].id; - - bool isFuncOp(op == Trans); - - procEventOp->setEnabled(isFuncOp); - procType->setEnabled(isFuncOp); - procVal1Op->setEnabled(isFuncOp); - procVal1a->setEnabled(isFuncOp); - procVal1b->setEnabled(isFuncOp); - procVal2Op->setEnabled(isFuncOp); - procVal2a->setEnabled(isFuncOp); - procVal2b->setEnabled(isFuncOp); - procChannelOp->setEnabled(isFuncOp); - procChannelVala->setEnabled(isFuncOp); - procChannelValb->setEnabled(isFuncOp); - if (isFuncOp) { - procEventOpSel(cmt->data.procEvent); - procVal1OpSel(cmt->data.procVal1); - procVal2OpSel(cmt->data.procVal2); - procChannelOpSel(cmt->data.procChannel); - } - cmt->data.funcOp = op; - } - -//--------------------------------------------------------- -// selVal1aChanged -//--------------------------------------------------------- - -void TransformDialog::selVal1aChanged(int val) - { - cmt->data.selVal1a = val; - if ((cmt->data.selEventOp != All) - && (cmt->data.selType == 0x90)) { - selVal1a->setSuffix(" - " + pitch2string(val)); - } - else - selVal1a->setSuffix(QString("")); - } - -//--------------------------------------------------------- -// selVal1bChanged -//--------------------------------------------------------- - -void TransformDialog::selVal1bChanged(int val) - { - cmt->data.selVal1b = val; - if ((cmt->data.selEventOp != All) - && (cmt->data.selType == 0x90)) { - selVal1b->setSuffix(" - " + pitch2string(val)); - } - else - selVal1b->setSuffix(QString("")); - } - -//--------------------------------------------------------- -// selVal2aChanged -//--------------------------------------------------------- - -void TransformDialog::selVal2aChanged(int val) - { - cmt->data.selVal2a = val; - } - -//--------------------------------------------------------- -// selVal2bChanged -//--------------------------------------------------------- - -void TransformDialog::selVal2bChanged(int val) - { - cmt->data.selVal2b = val; - } - -//--------------------------------------------------------- -// procVal1aChanged -//--------------------------------------------------------- - -void TransformDialog::procVal1aChanged(int val) - { - cmt->data.procVal1a = val; - } - -//--------------------------------------------------------- -// procVal1bChanged -//--------------------------------------------------------- - -void TransformDialog::procVal1bChanged(int val) - { - cmt->data.procVal1b = val; - } - -//--------------------------------------------------------- -// procVal2aChanged -//--------------------------------------------------------- - -void TransformDialog::procVal2aChanged(int val) - { - cmt->data.procVal2a = val; - } - -//--------------------------------------------------------- -// procVal2bChanged -//--------------------------------------------------------- - -void TransformDialog::procVal2bChanged(int val) - { - cmt->data.procVal2b = val; - } - -//--------------------------------------------------------- -// selChannelOpSel -//--------------------------------------------------------- - -void TransformDialog::selChannelOpSel(int val) - { - setValOp(selChannelVala, selChannelValb, ValOp(val)); - cmt->data.selChannel = ValOp(val); - } - -//--------------------------------------------------------- -// selChannelValaChanged -//--------------------------------------------------------- - -void TransformDialog::selChannelValaChanged(int val) - { - cmt->data.selChannela = val; - } - -//--------------------------------------------------------- -// selChannelValbChanged -//--------------------------------------------------------- - -void TransformDialog::selChannelValbChanged(int val) - { - cmt->data.selChannelb = val; - } - -//--------------------------------------------------------- -// procChannelOpSel -//--------------------------------------------------------- - -void TransformDialog::procChannelOpSel(int val) - { - cmt->data.procChannel = TransformOperator(val); - switch(TransformOperator(val)) { - case Keep: - case Invert: - procChannelVala->setEnabled(false); - procChannelValb->setEnabled(false); - break; - case Multiply: - case Divide: - procChannelVala->setEnabled(true); - procChannelValb->setEnabled(false); - break; - case Plus: - case Minus: - case Fix: - case Value: - case Flip: - procChannelVala->setEnabled(true); - procChannelValb->setEnabled(false); - break; - case Random: - case ScaleMap: - case Dynamic: - procChannelVala->setEnabled(true); - procChannelValb->setEnabled(true); - break; - } - } - -//--------------------------------------------------------- -// procChannelValaChanged -//--------------------------------------------------------- - -void TransformDialog::procChannelValaChanged(int val) - { - cmt->data.procChannela = val; - } - -//--------------------------------------------------------- -// procChannelValbChanged -//--------------------------------------------------------- - -void TransformDialog::procChannelValbChanged(int val) - { - cmt->data.procChannelb = val; - } - -//--------------------------------------------------------- -// getInitData -//--------------------------------------------------------- - -void Transform::getInitData(int* n, const unsigned char** p) const - { - *n = sizeof(data); - *p = (unsigned char*)&data; - } - -//--------------------------------------------------------- -// setInitData -//--------------------------------------------------------- - -void Transform::setInitData(int n, const unsigned char* p) - { - memcpy((void*)&data, p, n); - if (gui) - gui->init(); - } - -//--------------------------------------------------------- -// inst -//--------------------------------------------------------- - -static Mempi* instantiate(const char* name, const MempiHost* h) - { - return new Transform(name, h); - } - -extern "C" { - static MEMPI descriptor = { - "Transformator", - "MusE Midi Event Transformator", - "0.1", // version string - MEMPI_FILTER, - MEMPI_MAJOR_VERSION, MEMPI_MINOR_VERSION, - instantiate - }; - - const MEMPI* mempi_descriptor() { return &descriptor; } - } - diff --git a/muse/midiplugins/transform/transform.h b/muse/midiplugins/transform/transform.h deleted file mode 100644 index 6f68698d..00000000 --- a/muse/midiplugins/transform/transform.h +++ /dev/null @@ -1,126 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: transform.h,v 1.5 2005/10/05 17:02:03 lunar_shuttle Exp $ -// -// (C) Copyright 2005 Werner Schweer (ws@seh.de) -//========================================================= - -#ifndef __TRANSFORM_H__ -#define __TRANSFORM_H__ - -#include "../libmidiplugin/mempi.h" -#include "ui_transform.h" - -class Transform; - -namespace AL { - class Xml; - }; -using AL::Xml; - -enum ValOp { - All=0, Ignore=0, Equal=1, Unequal=2, Higher=3, Lower=4, - Inside=5, Outside=6 - }; - -enum TransformFunction { - Select, Quantize, Delete, Trans, Insert, Copy, Extract - }; - -enum TransformOperator { - Keep, Plus, Minus, Multiply, Divide, Fix, Value, Invert, - ScaleMap, Flip, Dynamic, Random - }; - -//--------------------------------------------------------- -// TransformDialog -//--------------------------------------------------------- - -class TransformDialog : public QDialog, public Ui::TransformDialogBase { - Q_OBJECT - Transform* cmt; - - void setValOp(QWidget* a, QWidget* b, ValOp op); - - signals: - void hideWindow(); - - private slots: - void selEventOpSel(int); - void selTypeSel(int); - void selVal1OpSel(int); - void selVal2OpSel(int); - void procEventOpSel(int); - void procEventTypeSel(int); - void procVal1OpSel(int); - void procVal2OpSel(int); - void funcOpSel(int); - void selVal1aChanged(int); - void selVal1bChanged(int); - void selVal2aChanged(int); - void selVal2bChanged(int); - void procVal1aChanged(int); - void procVal1bChanged(int); - void procVal2aChanged(int); - void procVal2bChanged(int); - void selChannelOpSel(int); - void selChannelValaChanged(int); - void selChannelValbChanged(int); - void procChannelOpSel(int); - void procChannelValaChanged(int); - void procChannelValbChanged(int); - - public: - TransformDialog(Transform*, QWidget* parent); - void init(); - }; - -//--------------------------------------------------------- -// Transform -//--------------------------------------------------------- - -class Transform : public Mempi { - int filterEvent(MidiEvent& event); - - public: - struct initData { - ValOp selEventOp; - int selType; - - ValOp selVal1; - int selVal1a, selVal1b; - ValOp selVal2; - int selVal2a, selVal2b; - ValOp selChannel; - int selChannela, selChannelb; - - TransformOperator procEvent; - int eventType; - TransformOperator procVal1; - int procVal1a, procVal1b; - TransformOperator procVal2; - int procVal2a, procVal2b; - TransformOperator procChannel; - int procChannela, procChannelb; - - TransformFunction funcOp; - int quantVal; - } data; - - TransformDialog* gui; - virtual void process(unsigned, unsigned, MidiEventList*, MidiEventList*); - - Transform(const char* name, const MempiHost*); - virtual bool init(); - virtual bool hasGui() const { return true; } - virtual bool guiVisible() const { return gui->isVisible(); } - virtual void showGui(bool val) { gui->setShown(val); } - virtual void getGeometry(int* x, int* y, int* w, int* h) const; - virtual void setGeometry(int, int, int, int); - virtual void getInitData(int*, const unsigned char**) const; - virtual void setInitData(int, const unsigned char*); - }; - -#endif - diff --git a/muse/midiplugins/transform/transform.ui b/muse/midiplugins/transform/transform.ui deleted file mode 100644 index c23cf343..00000000 --- a/muse/midiplugins/transform/transform.ui +++ /dev/null @@ -1,616 +0,0 @@ - - - - - TransformDialogBase - - - - 0 - 0 - 630 - 418 - - - - MusE: Midi Input Transformator - - - true - - - - 11 - - - 6 - - - - - Filter - - - - 11 - - - 6 - - - - - - All - - - - - Equal - - - - - Unequal - - - - - - - - - Note - - - - - Poly Pressure - - - - - Control Change - - - - - Aftertouch - - - - - Pitch Bend - - - - - NRPN - - - - - RPN - - - - - - - - Value 2 - - - - - - - Value 1 - - - - - - - Event Type - - - - - - - - Ignore - - - - - Equal - - - - - Unequal - - - - - Higher - - - - - Lower - - - - - Inside - - - - - Outside - - - - - - - - 127 - - - - - - - 127 - - - - - - - 127 - - - - - - - - Ignore - - - - - Equal - - - - - Unequal - - - - - Higher - - - - - Lower - - - - - Inside - - - - - Outside - - - - - - - - - Ignore - - - - - Equal - - - - - Unequal - - - - - Higher - - - - - Lower - - - - - Inside - - - - - Outside - - - - - - - - Channel - - - - - - - 127 - - - - - - - 127 - - - - - - - 127 - - - - - - - - - - Processing - - - - 11 - - - 6 - - - - - Event Type - - - - - - - - Keep - - - - - Fix - - - - - - - - - Note - - - - - Poly Pressure - - - - - Control Change - - - - - Aftertouch - - - - - Pitch Bend - - - - - NRPN - - - - - RPN - - - - - - - - - Keep - - - - - Plus - - - - - Minus - - - - - Multiply - - - - - Divide - - - - - Fix - - - - - Value 2 - - - - - Invert - - - - - ScaleMap - - - - - Flip - - - - - Dyn - - - - - Random - - - - - - - - Value 1 - - - - - - - Value 2 - - - - - - - 9999 - - - - - - - 9999 - - - - - - - 127 - - - - - - - - Keep - - - - - Plus - - - - - Minus - - - - - Multiply - - - - - Divide - - - - - Fix - - - - - Value 1 - - - - - Invert - - - - - Dyn - - - - - Random - - - - - - - - - Keep - - - - - Plus - - - - - Minus - - - - - Multiply - - - - - Divide - - - - - Fix - - - - - Value 1 - - - - - Invert - - - - - Dyn - - - - - Random - - - - - - - - Channel - - - - - - - - - - - - - - - - - - - - - - qPixmapFromMimeSource - - selEventOp - selType - selVal1Op - selVal1a - selVal1b - selVal2Op - selVal2a - selVal2b - selChannelOp - selChannelVala - selChannelValb - procEventOp - procType - procVal1Op - procVal1b - procVal2Op - procVal2b - procChannelOp - procChannelValb - - - - diff --git a/muse/midiplugins/trigg/CMakeLists.txt b/muse/midiplugins/trigg/CMakeLists.txt deleted file mode 100644 index 397ccf81..00000000 --- a/muse/midiplugins/trigg/CMakeLists.txt +++ /dev/null @@ -1,47 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -QT4_WRAP_CPP ( trigg_mocs trigggui.h ) -QT4_WRAP_UI ( trigg_uis trigggui.ui ) - -add_library ( trigg SHARED - trigg.cpp - trigggui.cpp - trigggui.h - ${trigg_mocs} - ${trigg_uis} - ) - -target_link_libraries( trigg - midiplugin awl - ${QT_LIBRARIES} - ) - -# - tell cmake to name target name.so instead of -# libname.so -# - use precompiled header files -# -set_target_properties ( trigg - PROPERTIES PREFIX "" - COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all-pic.h" - ) - -install_targets ( /${CMAKE_INSTALL_LIBDIR}/${MusE_INSTALL_NAME}/midiplugins/ trigg ) - diff --git a/muse/midiplugins/trigg/trigg.cpp b/muse/midiplugins/trigg/trigg.cpp deleted file mode 100644 index fb3703cb..00000000 --- a/muse/midiplugins/trigg/trigg.cpp +++ /dev/null @@ -1,131 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: filter.cpp,v 1.10 2005/11/06 17:49:34 wschweer Exp $ -// -// filter - simple midi filter -// -// (C) Copyright 2005 Werner Schweer (ws@seh.de) -//========================================================= - -#include "trigggui.h" -#include "trigg.h" -#include "midi.h" -#include "midievent.h" - -//--------------------------------------------------------- -// Trigg -//--------------------------------------------------------- - -Trigg::Trigg(const char* name, const MempiHost* h) - : Mempi(name, h) - { - data.note=30; // allow any events - data.velocity=127; - gui = 0; - } - -//--------------------------------------------------------- -// Trigg -//--------------------------------------------------------- - -Trigg::~Trigg() - { - if (gui) - delete gui; - } - -//--------------------------------------------------------- -// init -//--------------------------------------------------------- - -bool Trigg::init() - { - gui = new TriggGui(this, 0); - gui->setWindowTitle("MusE: "+QString(name())); - gui->show(); - return false; - } - -//--------------------------------------------------------- -// getGeometry -//--------------------------------------------------------- - -void Trigg::getGeometry(int* x, int* y, int* w, int* h) const - { - QPoint pos(gui->pos()); - QSize size(gui->size()); - *x = pos.x(); - *y = pos.y(); - *w = size.width(); - *h = size.height(); - } - -//--------------------------------------------------------- -// setGeometry -//--------------------------------------------------------- - -void Trigg::setGeometry(int x, int y, int w, int h) - { - gui->resize(QSize(w, h)); - gui->move(QPoint(x, y)); - } - -//--------------------------------------------------------- -// process -//--------------------------------------------------------- - -void Trigg::process(unsigned , unsigned , MidiEventList* il, MidiEventList* ol) - { - - for (iMidiEvent i = il->begin(); i != il->end(); ++i) { - MidiEvent temp=*i; - if (temp.isNote() || temp.isNoteOff()) - { - // for each event modify note and velocity - printf("a=%d b=%d isNote=%d isNoteOff=%d\n",temp.dataA(),temp.dataB(),temp.isNote(),temp.isNoteOff()); - temp.setA(data.note); - if (!temp.isNoteOff()) - temp.setB(data.velocity); - printf("AFTER a=%d b=%d\n",temp.dataA(),temp.dataB()); - } - ol->insert(temp); - } - } - -void Trigg::getInitData(int* n, const unsigned char** p) const - { - *n = sizeof(data); - *p = (unsigned char*)&data; - printf("::getInitData note=%d vel=%d\n",data.note,data.velocity); - } - -void Trigg::setInitData(int n, const unsigned char* p) - { - memcpy((void*)&data, p, n); - if (gui) - gui->init(); - } - -//--------------------------------------------------------- -// inst -//--------------------------------------------------------- - -static Mempi* instantiate(const char* name, const MempiHost* h) - { - return new Trigg(name, h); - } - -extern "C" { - static MEMPI descriptor = { - "Trigg", - "Any note triggers a specified note with specified velocity", - "1.0", // filter version string - MEMPI_FILTER, // plugin type - MEMPI_MAJOR_VERSION, MEMPI_MINOR_VERSION, - instantiate - }; - - const MEMPI* mempi_descriptor() { return &descriptor; } - } - diff --git a/muse/midiplugins/trigg/trigg.h b/muse/midiplugins/trigg/trigg.h deleted file mode 100644 index c29a06a0..00000000 --- a/muse/midiplugins/trigg/trigg.h +++ /dev/null @@ -1,49 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: filter.h,v 1.4 2005/06/12 08:18:37 wschweer Exp $ -// -// filter - simple midi filter -// -// (C) Copyright 2005 Werner Schweer (ws@seh.de) -//========================================================= - -#ifndef __TRIGG_H__ -#define __TRIGG_H__ - -#include "../libmidiplugin/mempi.h" - -//--------------------------------------------------------- -// filter - simple midi filter -//--------------------------------------------------------- -class Trigg : public Mempi { - struct initData { - int note; - int velocity; - } data; - friend class TriggGui; - - TriggGui* gui; - - virtual void process(unsigned, unsigned, MidiEventList*, MidiEventList*); - - public: - Trigg(const char* name, const MempiHost*); - ~Trigg(); - virtual bool init(); - - void setNote(int t) { data.note = t; } - void setVelocity(int t) { data.velocity = t; } - - virtual bool hasGui() const { return true; } - virtual bool guiVisible() const { return gui->isVisible(); } - virtual void showGui(bool val) { gui->setShown(val); } - virtual void getGeometry(int* x, int* y, int* w, int* h) const; - virtual void setGeometry(int, int, int, int); - - virtual void getInitData(int*, const unsigned char**) const; - virtual void setInitData(int, const unsigned char*); - }; - -#endif - diff --git a/muse/midiplugins/trigg/trigggui.cpp b/muse/midiplugins/trigg/trigggui.cpp deleted file mode 100644 index 0fd3c4c6..00000000 --- a/muse/midiplugins/trigg/trigggui.cpp +++ /dev/null @@ -1,56 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: filtergui.cpp,v 1.4 2005/11/06 17:49:34 wschweer Exp $ -// -// (C) Copyright 2005 Werner Schweer (ws@seh.de) -//========================================================= - -#include "trigggui.h" -#include "trigg.h" - -//--------------------------------------------------------- -// MidiTriggConfig -//--------------------------------------------------------- - -TriggGui::TriggGui(Trigg* f, QWidget* parent) - : QDialog(parent) - { - setupUi(this); - filter = f; - - connect(noteEntry, SIGNAL(valueChanged(int)), SLOT(setNote(int))); - connect(velocityEntry, SIGNAL(valueChanged(int)), SLOT(setVelocity(int))); - } - -//--------------------------------------------------------- -// init -//--------------------------------------------------------- -void TriggGui::init() - { - Trigg::initData *data; - int n; - filter->getInitData(&n,(const unsigned char **)&data); - printf("::init note=%d vel=%d\n",data->note,data->velocity); - noteEntry->setValue(data->note); - velocityEntry->setValue(data->velocity); - } - -//--------------------------------------------------------- -// setNote -//--------------------------------------------------------- -void TriggGui::setNote(int value) - { - printf("TriggGui::setNote %d\n",value); - filter->setNote(value); - } - -//--------------------------------------------------------- -// setVelocity -//--------------------------------------------------------- -void TriggGui::setVelocity(int value) - { - printf("TriggGui::setVelocity %d\n",value); - filter->setVelocity(value); - } - diff --git a/muse/midiplugins/trigg/trigggui.h b/muse/midiplugins/trigg/trigggui.h deleted file mode 100644 index f4c597fa..00000000 --- a/muse/midiplugins/trigg/trigggui.h +++ /dev/null @@ -1,48 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: filtergui.h,v 1.4 2005/11/06 17:49:34 wschweer Exp $ -// -// (C) Copyright 2005 Werner Schweer (ws@seh.de) -//========================================================= - -#ifndef __FILTERGUI_H__ -#define __FILTERGUI_H__ - -#include "ui_trigggui.h" - -class Trigg; - -enum { - MIDI_FILTER_NOTEON = 1, - MIDI_FILTER_POLYP = 2, - MIDI_FILTER_CTRL = 4, - MIDI_FILTER_PROGRAM = 8, - MIDI_FILTER_AT = 16, - MIDI_FILTER_PITCH = 32, - MIDI_FILTER_SYSEX = 64 - }; - -//--------------------------------------------------------- -// TriggGui -//--------------------------------------------------------- - -class TriggGui : public QDialog, public Ui::TriggBase { - Q_OBJECT - - Trigg* filter; - - signals: - void hideWindow(); - - private slots: - void setNote(int ); - void setVelocity(int ); - - public: - TriggGui(Trigg*, QWidget* parent=0); - void init(); - }; - -#endif - diff --git a/muse/midiplugins/trigg/trigggui.ui b/muse/midiplugins/trigg/trigggui.ui deleted file mode 100644 index 5c096e24..00000000 --- a/muse/midiplugins/trigg/trigggui.ui +++ /dev/null @@ -1,109 +0,0 @@ - - - - - TriggBase - - - - 0 - 0 - 233 - 125 - - - - - 3 - 5 - 0 - 0 - - - - MusE: Midi Input Trigg - - - - 9 - - - 6 - - - - - - 5 - 5 - 0 - 0 - - - - Trigg - - - - 9 - - - 6 - - - - - 0 - - - 6 - - - - - Velocity - - - - - - - 127 - - - 30 - - - - - - - 127 - - - 0 - - - 127 - - - - - - - Note - - - - - - - - - - - - - - - diff --git a/muse/muse.pro b/muse/muse.pro deleted file mode 100644 index ce277be6..00000000 --- a/muse/muse.pro +++ /dev/null @@ -1,240 +0,0 @@ -TRANSLATIONS = \ - share/locale/muse_de.ts \ - share/locale/muse_es.ts \ - share/locale/muse_fr.ts \ - share/locale/muse_ru.ts \ - share/locale/muse_sv_SE.ts \ - share/locale/muse_it.ts - -SOURCES = \ - plugins/freeverb/freeverb.cpp \ - plugins/freeverb/revmodel.cpp \ - plugins/doublechorus/doublechorus.cpp \ - plugins/doublechorus/simplechorusmodel.cpp \ - plugins/doublechorus/doublechorusmodel.cpp \ - awl/mslider.cpp \ - awl/volslider.cpp \ - awl/pitchlabel.cpp \ - awl/posedit.cpp \ - awl/combobox.cpp \ - awl/volknob.cpp \ - awl/slider.cpp \ - awl/awl.cpp \ - awl/tempolabel.cpp \ - awl/floatentry.cpp \ - awl/knob.cpp \ - awl/tempoedit.cpp \ - awl/midipanknob.cpp \ - awl/tcanvas.cpp \ - awl/panentry.cpp \ - awl/utils.cpp \ - awl/poslabel.cpp \ - awl/midimslider.cpp \ - awl/awlplugin.cpp \ - awl/midipanentry.cpp \ - awl/pitchedit.cpp \ - awl/midimeter.cpp \ - awl/volentry.cpp \ - awl/aslider.cpp \ - awl/midivolentry.cpp \ - awl/checkbox.cpp \ - awl/panknob.cpp \ - awl/sigedit.cpp \ - awl/ltest.cpp \ - midiplugins/metronom/metronomgui.cpp \ - midiplugins/metronom/metronom.cpp \ - midiplugins/dump/dump.cpp \ - midiplugins/filter/ctrlcombo.cpp \ - midiplugins/filter/filtergui.cpp \ - midiplugins/filter/filter.cpp \ - midiplugins/libmidiplugin/mempi.cpp \ - midiplugins/libmidiplugin/midievent.cpp \ - midiplugins/transform/transform.cpp \ - midiplugins/trigg/trigggui.cpp \ - midiplugins/trigg/trigg.cpp \ - midiplugins/splitlayer/splitlayergui.cpp \ - midiplugins/splitlayer/splitlayer.cpp \ - al/xml.cpp \ - al/marker.cpp \ - al/sig.cpp \ - al/tempo.cpp \ - al/al.cpp \ - al/pos.cpp \ - grepmidi/grepmidi.cpp \ - synti/deicsonze/deicsonze.cpp \ - synti/deicsonze/deicsonzepreset.cpp \ - synti/deicsonze/deicsonzegui.cpp \ - synti/deicsonze/deicsonzeplugin.cpp \ - synti/fluid/fluid.cpp \ - synti/fluid/fluidgui.cpp \ - synti/s1/s1.cpp \ - synti/vam/vam.cpp \ - synti/vam/vamgui.cpp \ - synti/simpledrums/simpledrums.cpp \ - synti/simpledrums/ssplugin.cpp \ - synti/simpledrums/simpledrumsgui.cpp \ - synti/simpledrums/ssplugingui.cpp \ - synti/organ/organgui.cpp \ - synti/organ/organ.cpp \ - synti/fluidsynth/fluidsynthgui.cpp \ - synti/fluidsynth/fluidsynti.cpp \ - synti/libsynti/poly.cpp \ - synti/libsynti/mess.cpp \ - synti/libsynti/mono.cpp \ - synti/libsynti/midievent.cpp \ - synti/libsynti/gui.cpp \ - synti/mus/mus.cpp \ - synti/zynaddsubfx/main.cpp \ - muse/arranger/arranger.cpp \ - muse/arranger/trackdrag.cpp \ - muse/arranger/partdrag.cpp \ - muse/arranger/tlwlayout.cpp \ - muse/arranger/tlswidget.cpp \ - muse/arranger/canvas.cpp \ - muse/arranger/configtrack.cpp \ - muse/arranger/tllineedit.cpp \ - muse/arranger/tlwidget.cpp \ - muse/arranger/trackinfo.cpp \ - muse/ctrl/ctrleditor.cpp \ - muse/ctrl/configmidictrl.cpp \ - muse/ctrl/ctrldialog.cpp \ - muse/widgets/tools.cpp \ - muse/widgets/shortcutconfig.cpp \ - muse/widgets/dentry.cpp \ - muse/widgets/comboQuant.cpp \ - muse/widgets/midisync.cpp \ - muse/widgets/mixdowndialog.cpp \ - muse/widgets/floatlabel.cpp \ - muse/widgets/splitter.cpp \ - muse/widgets/menutitle.cpp \ - muse/widgets/doublelabel.cpp \ - muse/widgets/fontsel.cpp \ - muse/widgets/tb1.cpp \ - muse/widgets/outportcombo.cpp \ - muse/widgets/filedialog.cpp \ - muse/widgets/utils.cpp \ - muse/widgets/editmetadialogbase.cpp \ - muse/widgets/quantcombo.cpp \ - muse/widgets/combobox.cpp \ - muse/widgets/shortcutcapturedialog.cpp \ - muse/widgets/rastercombo.cpp \ - muse/widgets/bigtime.cpp \ - muse/widgets/ctrlcombo.cpp \ - muse/widgets/comment.cpp \ - muse/widgets/noteinfo.cpp \ - muse/widgets/siglabel.cpp \ - muse/widgets/simplebutton.cpp \ - muse/marker/markerview.cpp \ - muse/instruments/editinstrument.cpp \ - muse/instruments/midictrledit.cpp \ - muse/instruments/minstrument.cpp \ - muse/midiedit/miditracker.cpp \ - muse/midiedit/velocity.cpp \ - muse/midiedit/gatetime.cpp \ - muse/midiedit/citem.cpp \ - muse/midiedit/prcanvas.cpp \ - muse/midiedit/dcanvas.cpp \ - muse/midiedit/midieditor.cpp \ - muse/midiedit/pianoroll.cpp \ - muse/midiedit/trackpattern.cpp \ - muse/midiedit/drummap.cpp \ - muse/midiedit/midicmd.cpp \ - muse/midiedit/ctrledit.cpp \ - muse/midiedit/drumedit.cpp \ - muse/midiedit/quantconfig.cpp \ - muse/midiedit/ecanvas.cpp \ - muse/waveedit/waveedit.cpp \ - muse/waveedit/waveview.cpp \ - muse/driver/posixtimer.cpp \ - muse/driver/dummyaudio.cpp \ - muse/driver/alsatimer.cpp \ - muse/driver/coretimer.cpp \ - muse/driver/rtctimer.cpp \ - muse/driver/coremidi.cpp \ - muse/driver/alsamidi.cpp \ - muse/driver/jack.cpp \ - muse/mixer/strip.cpp \ - muse/mixer/routedialog.cpp \ - muse/mixer/rack.cpp \ - muse/mixer/midirack.cpp \ - muse/mixer/mixer.cpp \ - muse/mixer/astrip.cpp \ - muse/mixer/mstrip.cpp \ - muse/liste/listedit.cpp \ - muse/liste/ctrllistedit.cpp \ - muse/master/masteredit.cpp \ - muse/master/master.cpp \ - muse/seqmsg.cpp \ - muse/audio.cpp \ - muse/plugingui.cpp \ - muse/icons.cpp \ - muse/ctrl.cpp \ - muse/waveevent.cpp \ - muse/undo.cpp \ - muse/track.cpp \ - muse/miditrack.cpp \ - muse/transpose.cpp \ - muse/ticksynth.cpp \ - muse/projectpropsdialog.cpp \ - muse/value.cpp \ - muse/conf.cpp \ - muse/globals.cpp \ - muse/mtc.cpp \ - muse/wavetrack.cpp \ - muse/help.cpp \ - muse/templatedialog.cpp \ - muse/midiseq.cpp \ - muse/part.cpp \ - muse/route.cpp \ - muse/extmidieditor.cpp \ - muse/vst.cpp \ - muse/synth.cpp \ - muse/eventlist.cpp \ - muse/midirc.cpp \ - muse/sync.cpp \ - muse/midi.cpp \ - muse/thread.cpp \ - muse/audiotrack.cpp \ - muse/audiogroup.cpp \ - muse/shortcuts.cpp \ - muse/helper.cpp \ - muse/plugin.cpp \ - muse/midiplugin.cpp \ - muse/wave.cpp \ - muse/editor.cpp \ - muse/midififo.cpp \ - muse/song.cpp \ - muse/songpart.cpp \ - muse/songtrack.cpp \ - muse/song.cpp \ - muse/midictrl.cpp \ - muse/esettings.cpp \ - muse/cobject.cpp \ - muse/transport.cpp \ - muse/dssihost.cpp \ - muse/gconfig.cpp \ - muse/preferences.cpp \ - muse/event.cpp \ - muse/midifile.cpp \ - muse/fifo.cpp \ - muse/muse.cpp \ - muse/songfile.cpp \ - muse/pipeline.cpp \ - muse/midievent.cpp \ - muse/midisynti.cpp \ - muse/miditransform.cpp \ - muse/audioprefetch.cpp \ - muse/audiowriteback.cpp \ - muse/importmidi.cpp \ - muse/exportmidi.cpp \ - muse/projectdialog.cpp \ - muse/ladspaplugin.cpp \ - muse/auxplugin.cpp \ - muse/midiinport.cpp \ - muse/audiooutput.cpp \ - muse/midiout.cpp \ - muse/audioinput.cpp \ - muse/midieventbase.cpp \ - muse/midioutport.cpp - - diff --git a/muse/muse/CMakeLists.txt b/muse/muse/CMakeLists.txt deleted file mode 100644 index 9ef460c3..00000000 --- a/muse/muse/CMakeLists.txt +++ /dev/null @@ -1,226 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2008 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -include(${PROJECT_SOURCE_DIR}/pch.txt) - -include_directories( - ${CMAKE_CURRENT_BINARY_DIR} - ) - -subdirs ( - ctrl - midiedit - widgets - master - instruments - marker - liste - waveedit - ) - -QT4_WRAP_UI (muse_ui_headers - preferences.ui - exportmididialog.ui - configmidifile.ui - transport.ui - aboutbox.ui - transpose.ui - projectpropsdialog.ui - projectdialog.ui - templatedialog.ui - importmidi.ui - routedialog.ui - configtrack.ui - midiportinfo.ui - miditrackinfo.ui - ) - -QT4_WRAP_CPP ( muse_moc_headers - projectpropsdialog.h - projectdialog.h - templatedialog.h - preferences.h - plugingui.h - midiplugin.h - muse.h - song.h - transport.h - conf.h - editor.h - cobject.h - transpose.h - track.h - miditrackbase.h - midisynti.h - miditrack.h - wavetrack.h - audiotrack.h - audiooutput.h - audioinput.h - audiogroup.h - synth.h - exportmidi.h - importmidi.h - midiinport.h - midioutport.h - astrip.h - midirack.h - mixer.h - mstrip.h - rack.h - routedialog.h - strip.h - arranger.h - canvas.h - configtrack.h - partdrag.h - tllineedit.h - tlswidget.h - tlwidget.h - trackdrag.h - trackinfo.h - ) - -QT4_ADD_RESOURCES (muse_qrc_files muse.qrc) - -add_executable ( muse - ${muse_qrc_files} - ${muse_moc_headers} - ${muse_ui_headers} - ${PROJECT_BINARY_DIR}/all.h.pch - - ticksynth.cpp - vst.cpp - dssihost.cpp - synth.cpp - plugin.cpp - ladspaplugin.cpp - auxplugin.cpp - pipeline.cpp - mtc.cpp - thread.cpp - audio.cpp - audioprefetch.cpp - audiowriteback.cpp - globals.cpp - sync.cpp - part.cpp - undo.cpp - songfile.cpp - midi.cpp - importmidi.cpp - importmidi.h - midifile.cpp - icons.cpp - event.cpp - eventlist.cpp - midieventbase.cpp - waveevent.cpp - midievent.cpp - wave.cpp - seqmsg.cpp - help.cpp - midictrl.cpp - fifo.cpp - helper.cpp - route.cpp - shortcuts.cpp - ctrl.cpp - gconfig.cpp - midirc.cpp - midififo.cpp - midioutport.cpp - midiinport.cpp - midiout.cpp - - projectpropsdialog.cpp - projectdialog.cpp - templatedialog.cpp - preferences.cpp - plugingui.cpp - midiplugin.cpp - muse.cpp - song.cpp - songpart.cpp - songtrack.cpp - transport.cpp - conf.cpp - editor.cpp - cobject.cpp - transpose.cpp - track.cpp - miditrackbase.cpp - midisynti.cpp - miditrack.cpp - wavetrack.cpp - audiotrack.cpp - audiooutput.cpp - audioinput.cpp - audiogroup.cpp - exportmidi.cpp - revision.cpp - jack.cpp dummyaudio.cpp - astrip.cpp - midirack.cpp - mixer.cpp - mstrip.cpp - rack.cpp - routedialog.cpp - strip.cpp - - arranger.cpp - canvas.cpp - configtrack.cpp - partdrag.cpp - tllineedit.cpp - tlswidget.cpp - tlwidget.cpp - tlwlayout.cpp - trackdrag.cpp - trackinfo.cpp - ) - -set_target_properties( muse - PROPERTIES COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all.h" - ) - -target_link_libraries(muse - midiedit - master - instruments - marker - liste - synti - waveedit - widgets - al - awl - ctrl - ${QT_LIBRARIES} - QtSvg - ${ALSA_LIB} - ${JACK_LIB} - ${SNDFILE_LIB} - ${SAMPLERATE_LIB} - ${LIBLO_LIB} - ) - -install_targets ( /bin muse ) - diff --git a/muse/muse/aboutbox.ui b/muse/muse/aboutbox.ui deleted file mode 100644 index 867c5536..00000000 --- a/muse/muse/aboutbox.ui +++ /dev/null @@ -1,612 +0,0 @@ - - AboutBox - - - - 0 - 0 - 585 - 348 - - - - - 0 - 0 - - - - - - - - - 0 - 0 - 0 - - - - - - - 221 - 223 - 228 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 85 - 85 - 85 - - - - - - - 199 - 199 - 199 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 239 - 237 - 165 - - - - - - - 0 - 0 - 0 - - - - - - - 103 - 141 - 178 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 238 - - - - - - - 82 - 24 - 139 - - - - - - - 232 - 232 - 232 - - - - - - - - - 0 - 0 - 0 - - - - - - - 221 - 223 - 228 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 85 - 85 - 85 - - - - - - - 199 - 199 - 199 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 239 - 237 - 165 - - - - - - - 0 - 0 - 0 - - - - - - - 103 - 141 - 178 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 238 - - - - - - - 82 - 24 - 139 - - - - - - - 232 - 232 - 232 - - - - - - - - - 128 - 128 - 128 - - - - - - - 221 - 223 - 228 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 85 - 85 - 85 - - - - - - - 199 - 199 - 199 - - - - - - - 199 - 199 - 199 - - - - - - - 255 - 255 - 255 - - - - - - - 128 - 128 - 128 - - - - - - - 239 - 237 - 165 - - - - - - - 239 - 237 - 165 - - - - - - - 0 - 0 - 0 - - - - - - - 86 - 117 - 148 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 238 - - - - - - - 82 - 24 - 139 - - - - - - - 232 - 232 - 232 - - - - - - - - AboutBox - - - - - - - - - 0 - 0 - - - - - - - Qt::PlainText - - - :/xpm/muse_icon_64x64.png - - - 20 - - - - - - - - - - 14 - 75 - true - - - - MusE - - - 10 - - - - - - - Version: 2.0.1 - - - 20 - - - - - - - Revision: 628 - - - 20 - - - - - - - - 0 - 0 - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Arial'; font-size:14pt; font-weight:600;"><span style=" font-size:10pt; font-weight:400;">(C) Copyright 1999-2008 Werner Schweer and Others. </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Arial'; font-size:10pt;">See http://www.muse-sequencer.org for new versions and</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Arial'; font-size:10pt;">more information.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Arial'; font-size:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Arial'; font-size:10pt;">Published under the GNU Public License</p></body></html> - - - false - - - - - - - - - - - QDialogButtonBox::Ok - - - - - - - - - - - - buttonBox - accepted() - AboutBox - accept() - - - 531 - 326 - - - 582 - 29 - - - - - diff --git a/muse/muse/arranger.cpp b/muse/muse/arranger.cpp deleted file mode 100644 index 82c859cb..00000000 --- a/muse/muse/arranger.cpp +++ /dev/null @@ -1,1382 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "song.h" -#include "muse.h" -#include "arranger.h" -#include "tlwidget.h" -#include "tlswidget.h" -#include "icons.h" -#include "widgets/simplebutton.h" -#include "configtrack.h" -#include "canvas.h" -#include "widgets/utils.h" -#include "widgets/splitter.h" -#include "astrip.h" -#include "mstrip.h" -#include "audio.h" -#include "shortcuts.h" -#include "trackinfo.h" -#include "midictrl.h" -#include "gconfig.h" -#include "part.h" - -//--------------------------------------------------------- -// TrElement elements -// list of available track gui elements -//--------------------------------------------------------- - -const TrElement trElements[] = { - TrElement(TR_NAME, 1, "trackname", -1), - TrElement(TR_RECORD, 0, "record", - Track::M_MIDI | Track::M_AUDIO_OUTPUT | Track::M_WAVE), - TrElement(TR_OFF, 2, "off", - Track::M_AUDIO_OUTPUT - | Track::M_AUDIO_GROUP - | Track::M_WAVE - | Track::M_AUDIO_INPUT - | Track::M_AUDIO_SOFTSYNTH), - TrElement(TR_DRUMMAP, 2, "use drum map", Track::M_MIDI), - TrElement(TR_MUTE, 3, "mute", -1), - TrElement(TR_SOLO, 3, "solo", -1), - TrElement(TR_MONITOR, 3, "monitor", - Track::M_MIDI | Track::M_WAVE), - TrElement(TR_AREAD, 4, "automation read", - -1 & ~(Track::M_MIDI_IN | Track::M_MIDI)), - TrElement(TR_AWRITE, 4, "automation write", - -1 & ~(Track::M_MIDI_IN | Track::M_MIDI)), - TrElement(TR_OCHANNEL, 5, "output channel", Track::M_MIDI), - TrElement(TR_INSTRUMENT, 6, "instrument", Track::M_MIDI_OUT), - TrElement(TR_PATCH, 7, "patch", Track::M_MIDI), - }; - -const int nTrElements = sizeof(trElements)/sizeof(*trElements); - -TrGroupList glist[Track::TRACK_TYPES]; - -extern void populateAddTrack(QMenu*); - -//--------------------------------------------------------- -// sizeHint -//--------------------------------------------------------- - -QSize InfoStack::sizeHint() const - { - return QSize(infoWidth, height()); - } - -//--------------------------------------------------------- -// TLayout -// simple layout for trackList -//--------------------------------------------------------- - -class TLayout : public QLayout { - QList itemList; - - public: - TLayout() {} - ~TLayout(); - - void addItem(QLayoutItem* item); - void insertWidget(int index, QWidget* item); - Qt::Orientations expandingDirections() const { return 0; } - bool hasHeightForWidth() const { return false; } - int count() const { return itemList.size(); } - void setGeometry(const QRect &rect); - QSize sizeHint() const { return ((QWidget*)parent())->size(); } - QLayoutItem *itemAt(int index) const { return itemList.value(index); } - QLayoutItem *takeAt(int idx) { - return idx >= 0 && idx < itemList.size() ? itemList.takeAt(idx) : 0; - } - void clear() { - QLayoutItem* child; - while ((child = takeAt(0)) != 0) { - delete child; - } - } - }; - -//--------------------------------------------------------- -// TLayout -//--------------------------------------------------------- - -TLayout::~TLayout() - { - QLayoutItem* child; - while ((child = takeAt(0)) != 0) - delete child; - } - -//--------------------------------------------------------- -// insertWidget -//--------------------------------------------------------- - -void TLayout::insertWidget(int index, QWidget* item) - { - if (item->parent() == 0) - item->setParent((QWidget*)parent()); - itemList.insert(index, new QWidgetItem(item)); - update(); - } - -//--------------------------------------------------------- -// addItem -//--------------------------------------------------------- - -void TLayout::addItem(QLayoutItem* item) - { - itemList.append(item); - update(); - } - -//--------------------------------------------------------- -// setGeometry -//--------------------------------------------------------- - -void TLayout::setGeometry(const QRect& r) - { - int y = r.y(); - int n = itemList.size(); - int width = r.width(); // ((QWidget*)parent())->width(); - for (int i = 0; i < n; ++i) { - QLayoutItem *item = itemList.at(i); - QWidget* w = item->widget(); - int h = w->height(); - w->setGeometry(0, y, width, h); - y += h; - } - } - -//--------------------------------------------------------- -// TlsvLayout -//--------------------------------------------------------- - -class TlsvLayout : public QLayout { - QList itemList; - int dx, dy; - - public: - TlsvLayout() { - dx = 0; - dy = 0; - } - ~TlsvLayout(); - - void setOffset(int x, int y) { - dx = x; - dy = y; - } - void addItem(QLayoutItem* item); - void insertWidget(int index, QWidget* item); - Qt::Orientations expandingDirections() const { return 0; } - bool hasHeightForWidth() const { return false; } - int count() const { return itemList.size(); } - void setGeometry(const QRect &rect); - QSize sizeHint() const { return ((QWidget*)parent())->size(); } - QLayoutItem *itemAt(int index) const { return itemList.value(index); } - QLayoutItem *takeAt(int idx) { - return idx >= 0 && idx < itemList.size() ? itemList.takeAt(idx) : 0; - } - }; - -//--------------------------------------------------------- -// TlsvLayout -//--------------------------------------------------------- - -TlsvLayout::~TlsvLayout() - { - QLayoutItem* child; - while ((child = takeAt(0)) != 0) - delete child; - } - -//--------------------------------------------------------- -// insertWidget -//--------------------------------------------------------- - -void TlsvLayout::insertWidget(int index, QWidget* item) - { - if (item->parent() == 0) - item->setParent((QWidget*)parent()); - itemList.insert(index, new QWidgetItem(item)); - update(); - } - -//--------------------------------------------------------- -// addItem -//--------------------------------------------------------- - -void TlsvLayout::addItem(QLayoutItem* item) - { - itemList.append(item); - update(); - } - -//--------------------------------------------------------- -// setGeometry -//--------------------------------------------------------- - -void TlsvLayout::setGeometry(const QRect& r) - { - QLayoutItem *item = itemList.at(0); - QWidget* w = item->widget(); - w->setGeometry(dx, dy, r.width(), w->height()); - } - -//--------------------------------------------------------- -// newAddTrackMenu -//--------------------------------------------------------- - -QMenu* newAddTrackMenu(QWidget* parent) - { - QMenu* menu = new QMenu(parent); - populateAddTrack(menu); - return menu; - } - -//--------------------------------------------------------- -// Arranger -//--------------------------------------------------------- - -Arranger::Arranger(QMainWindow* parent) - : QWidget(parent) - { -// setFocusPolicy(Qt::StrongFocus); - setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - - for (int i = 0; i < Track::TRACK_TYPES; ++i) - trackInfos[i] = 0; - - zeroTrackInfo = 0; - _curTrack = 0; - strip = 0; - info = 0; - tool = PointerTool; - - for (int tt = 0; tt < Track::TRACK_TYPES; ++tt) { - int gn = 0; - TrElementList group; - for (int i = 0; i < nTrElements; ++i) { - if (!(trElements[i].trackMask & (1<setSpacing(0); - ml->setMargin(0); - setLayout(ml); - - infoDock = new QDockWidget(tr("TrackInfo")); - infoDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); - infoDockAction = infoDock->toggleViewAction(); - - mixerDock = new QDockWidget(tr("")); - mixerDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); - mixerDockAction = mixerDock->toggleViewAction(); - - parent->setDockNestingEnabled(true); - - parent->addDockWidget(Qt::LeftDockWidgetArea, infoDock, Qt::Horizontal); - parent->addDockWidget(Qt::LeftDockWidgetArea, mixerDock, Qt::Horizontal); - - infoView = new QScrollArea; - infoView->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); - - infoDock->setWidget(infoView); - infoView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - - trackInfo = new InfoStack(); - infoView->setWidget(trackInfo); - infoView->setWidgetResizable(true); - - trackInfoVisible = false; - mixerStripVisible = false; - - infoDock->setVisible(false); - mixerDock->setVisible(false); - - connect(infoDockAction, SIGNAL(toggled(bool)), SLOT(toggleTrackInfo(bool))); - connect(mixerDockAction, SIGNAL(toggled(bool)), SLOT(toggleMixerStrip(bool))); - - tlsv = new TrackListWidget; - tlsv->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored); - tlsvLayout = new TlsvLayout; - tlsv->setLayout(tlsvLayout); - trackList = new QWidget; - trackList->setAttribute(Qt::WA_StaticContents); - trackList->setMouseTracking(true); - - tlsv->layout()->addWidget(trackList); - tl = new TLayout; - trackList->setLayout(tl); - - // - // Toolbox - // - QHBoxLayout* ttoolsLayout = new QHBoxLayout; - ttoolsLayout->setMargin(1); - ttoolsLayout->setSpacing(1); - - SimpleButton* configButton = new SimpleButton(configIcon, configIcon); - configButton->setAutoRaise(true); - configButton->setToolTip(tr("Config Tracklist")); - configButton->setFixedHeight(rulerHeight-4); - connect(configButton, SIGNAL(clicked()), SLOT(configTrackList())); - ttoolsLayout->addWidget(configButton); - ttoolsLayout->addStretch(100); - - gmute = newMuteButton(); - gmute->setFixedWidth(rulerHeight); - gmute->setToolTip(tr("all mute off")); - gmute->setFixedHeight(rulerHeight-4); - ttoolsLayout->addWidget(gmute); - setGMute(); - connect(song, SIGNAL(muteChanged(Track*,bool)), SLOT(setGMute())); - connect(gmute, SIGNAL(clicked(bool)), SLOT(offGMute())); - - gsolo = newSoloButton(); - gsolo->setFixedWidth(rulerHeight); - gsolo->setToolTip(tr("all solo off")); - gsolo->setFixedHeight(rulerHeight-4); - ttoolsLayout->addWidget(gsolo); - setGSolo(); - connect(song, SIGNAL(soloChanged(Track*,bool)), SLOT(setGSolo())); - connect(gsolo, SIGNAL(clicked(bool)), SLOT(offGSolo())); - - gar = newAutoReadButton(); - gar->setFixedWidth(rulerHeight); - gar->setToolTip(tr("all autoRead off")); - gar->setFixedHeight(rulerHeight-4); - ttoolsLayout->addWidget(gar); - setGar(); - connect(song, SIGNAL(autoReadChanged(Track*,bool)), SLOT(setGar())); - connect(gar, SIGNAL(clicked(bool)), SLOT(offGar())); - - gaw = newAutoWriteButton(); - gaw->setFixedWidth(rulerHeight); - gaw->setToolTip(tr("all autoWrite off")); - gaw->setFixedHeight(rulerHeight-4); - ttoolsLayout->addWidget(gaw); - setGaw(); - connect(song, SIGNAL(autoWriteChanged(Track*,bool)), SLOT(setGaw())); - connect(gaw, SIGNAL(clicked(bool)), SLOT(offGaw())); - - QHBoxLayout* infoboxLayout = new QHBoxLayout; - infoboxLayout->setMargin(1); - infoboxLayout->setSpacing(1); - - SimpleButton* tifButton = new SimpleButton(QString()); - tifButton->setCheckable(true); - tifButton->setFixedSize(infoHeight-2, infoHeight); - tifButton->setDefaultAction(infoDockAction); - infoDockAction->setText(tr("i")); - infoDockAction->setToolTip(tr("Show Track Info")); - infoboxLayout->addWidget(tifButton); - - SimpleButton* mstButton = new SimpleButton(QString()); - mstButton->setCheckable(true); - mstButton->setFixedSize(infoHeight-2, infoHeight); - mstButton->setDefaultAction(mixerDockAction); - mixerDockAction->setText(tr("m")); - mixerDockAction->setToolTip(tr("Show Mixer Strip")); - infoboxLayout->addWidget(mstButton); - - infoboxLayout->addStretch(100); - - split = new Splitter(Qt::Horizontal); - split->setOpaqueResize(true); - split->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - QWidget* tw = new QWidget; - split->addWidget(tw); - QVBoxLayout* trackListGrid = new QVBoxLayout; - trackListGrid->setMargin(0); - trackListGrid->setSpacing(0); - tw->setLayout(trackListGrid); - - trackListGrid->addLayout(ttoolsLayout); - QFrame* ruler = hLine(0); - ruler->setLineWidth(2); - trackListGrid->addWidget(ruler); - trackListGrid->addWidget(tlsv, 100); - trackListGrid->addLayout(infoboxLayout); - - // - // canvas widget - // - canvas = new PartCanvas; - canvas->setCornerWidget(new QSizeGrip(canvas)); - split->addWidget(canvas); - split->setStretchFactor(1, 100); - canvas->setTool(tool); - canvas->verticalScrollBar()->setSingleStep(minTrackHeight/2); - - connect(tlsv, SIGNAL(mouseWheel(QWheelEvent*)), SLOT(mouseWheel(QWheelEvent*))); - connect(song, SIGNAL(posChanged(int,const AL::Pos&,bool)), canvas, SLOT(setLocatorPos(int,const AL::Pos&,bool))); - connect(song, SIGNAL(lenChanged(const AL::Pos&)), canvas, SLOT(setEndPos(const AL::Pos&))); - connect(song, SIGNAL(tempoChanged()), canvas, SLOT(tempoChanged())); - connect(canvas, SIGNAL(kbdMovementUpdate(Track*, Part*)), SLOT(kbdMovementUpdate(Track*, Part*))); - connect(muse, SIGNAL(rasterChanged(int)), canvas, SLOT(setRaster(int))); - connect(canvas, SIGNAL(cursorPos(const AL::Pos&,bool)), SIGNAL(cursorPos(const AL::Pos&,bool))); - connect(canvas, SIGNAL(contentsMoving(int,int)), SLOT(setTLViewPos(int,int))); - connect(canvas, SIGNAL(posChanged(int,const AL::Pos&)), SLOT(setPos(int,const AL::Pos&))); - - connect(canvas, SIGNAL(createLRPart(Track*)), song, SLOT(cmdCreateLRPart(Track*))); - connect(canvas, SIGNAL(doubleClickPart(Part*)), SIGNAL(editPart(Part*))); - connect(canvas, SIGNAL(startEditor(Part*,int)), muse, SLOT(startEditor(Part*,int))); - connect(canvas, SIGNAL(partChanged(Part*,unsigned,unsigned)), - song, SLOT(cmdChangePart(Part*,unsigned,unsigned))); - connect(canvas, SIGNAL(addMarker(const AL::Pos&)), SLOT(addMarker(const AL::Pos&))); - connect(canvas, SIGNAL(removeMarker(const AL::Pos&)), SLOT(removeMarker(const AL::Pos&))); - - layout()->addWidget(split); - - connect(muse, SIGNAL(configChanged()), SLOT(updateConfiguration())); - connect(song, SIGNAL(trackSelectionChanged(Track*)), SLOT(setSelectedTrack(Track*))); - connect(song, SIGNAL(trackRemoved(Track*)), SLOT(removeTrack(Track*))); - connect(song, SIGNAL(trackAdded(Track*,int)), SLOT(insertTrack(Track*))); - connect(muse, SIGNAL(startLoadSong()), SLOT(startLoadSong())); - } - -//--------------------------------------------------------- -// setPos -//--------------------------------------------------------- - -void Arranger::setPos(int idx, const AL::Pos& pos) - { - song->setPos(idx, pos.snaped(muse->raster())); - } - -//--------------------------------------------------------- -// setTLViewPos -//--------------------------------------------------------- - -void Arranger::setTLViewPos(int /*x*/, int y) - { -#if 1 - int dy = y + trackList->y(); - tlsv->scroll(0, -dy); -#else - trackList->setGeometry(0, -y, trackList->width(), trackList->height()); -#endif - tlsvLayout->setOffset(0, -y); - } - -//--------------------------------------------------------- -// tlIndex -//--------------------------------------------------------- - -int Arranger::tlIndex(Track* t) const - { - const TrackList* stl = song->tracks(); - - int idx = 0; - for (ciTrack i = stl->begin(); i != stl->end(); ++i, ++idx) { - if (*i == t) - break; - ArrangerTrack* at = &(*i)->arrangerTrack; - if (at->tw == 0) - continue; - idx += (*i)->subtracks.size(); - } - return idx; - } - -int Arranger::tlIndex(ArrangerTrack* t) const - { - TrackList* stl = song->tracks(); - - int idx = 0; - for (ciTrack i = stl->begin(); i != stl->end(); ++i, ++idx) { - ArrangerTrack* at = &(*i)->arrangerTrack; - if (at->tw == 0) - continue; - ArrangerTrackList& atl = (*i)->subtracks; - for (iArrangerTrack k = atl.begin(); k != atl.end(); ++k) { - ++idx; - if (*k == t) - return idx; - } - } - return -1; // crash - } - -//--------------------------------------------------------- -// insertTrack -//--------------------------------------------------------- - -void Arranger::insertTrack1(Track* t) - { - int idx = tlIndex(t); - //------------------------- - // track list widget - //------------------------- - - TLWidget* tw = new TLWidget(t, &glist[t->type()]); - tw->setFixedHeight(t->arrangerTrack.h); - tl->insertWidget(idx, tw); - tw->show(); // needed if song is reloaded - - connect(tw, SIGNAL(plusClicked(TLWidget*)), SLOT(appendSubtrack(TLWidget*))); - connect(tw, SIGNAL(moveTrack(Track*,Track*)), SLOT(moveTrack(Track*,Track*))); - connect(this, SIGNAL(configChanged()), tw, SLOT(configChanged())); - connect(tw, SIGNAL(drag(int, int)), SLOT(drag(int,int))); - connect(tw, SIGNAL(startDrag(int)), SLOT(startDrag(int))); - connect(t, SIGNAL(partsChanged()), canvas->widget(), SLOT(update())); - - ArrangerTrack* at = &(t->arrangerTrack); - at->tw = tw; - } - -void Arranger::insertTrack(Track* t) - { - insertTrack1(t); - t->arrangerTrack.tw->show(); - updateIndex(); - if (_curTrack == 0) - setSelectedTrack(_curTrack); - } - -//--------------------------------------------------------- -// removeTrack -//--------------------------------------------------------- - -void Arranger::removeTrack(Track* t) - { - ArrangerTrack* at = &t->arrangerTrack; - if (at->tw == 0) - return; - - tl->removeWidget(at->tw); - - at->tw->close(); - at->tw = 0; - - for (iArrangerTrack i = t->subtracks.begin(); i != t->subtracks.end(); ++i) { - ArrangerTrack* at = *i; - tl->removeWidget(at->tw); - at->tw->close(); - } - t->subtracks.clear(); - - if (t == _curTrack) { - if (!song->tracks()->isEmpty()) - song->selectTrack(song->tracks()->front()); - } - updateIndex(); - } - -//--------------------------------------------------------- -// drag -//--------------------------------------------------------- - -void Arranger::drag(int trackIdx, int delta) - { - int h = startH + delta; - if (h < minTrackHeight) - h = minTrackHeight; - ArrangerTrack* at = atrack(trackIdx); - at->tw->setFixedHeight(h); - updateIndex(); - } - -//--------------------------------------------------------- -// startDrag -//--------------------------------------------------------- - -void Arranger::startDrag(int trackIdx) - { - ArrangerTrack* at = atrack(trackIdx); - startH = at->tw->height(); - } - -//--------------------------------------------------------- -// TrackListWidget -//--------------------------------------------------------- - -TrackListWidget::TrackListWidget(QWidget* parent) - : QWidget(parent) - { - setAttribute(Qt::WA_NoSystemBackground); - setAttribute(Qt::WA_StaticContents); - } - -//--------------------------------------------------------- -// paintEvent -//--------------------------------------------------------- - -void TrackListWidget::paintEvent(QPaintEvent* ev) - { - QPainter p(this); - p.eraseRect(ev->rect()); - } - -//--------------------------------------------------------- -// mousePressEvent -//--------------------------------------------------------- - -void TrackListWidget::mousePressEvent(QMouseEvent* ev) - { - if (ev->button() == Qt::RightButton) { - QMenu* menu = newAddTrackMenu(this); - menu->exec(ev->globalPos()); - } - } - -//--------------------------------------------------------- -// wheelEvent -//--------------------------------------------------------- - -void TrackListWidget::wheelEvent(QWheelEvent* e) - { - emit mouseWheel(e); - } - -//--------------------------------------------------------- -// mouseWheel -// get redirected mouse wheel events from TrackListWidget -//--------------------------------------------------------- - -void Arranger::mouseWheel(QWheelEvent* e) - { - if (e->orientation() != Qt::Vertical) - return; - QScrollBar* sb = canvas->verticalScrollBar(); - int step = qMin(QApplication::wheelScrollLines() * sb->singleStep(), sb->pageStep()); - if ((e->modifiers() & Qt::ControlModifier) || (e->modifiers() & Qt::ShiftModifier)) - step = sb->pageStep(); - int offset = e->delta() * step / 120; - if (sb->invertedControls()) - offset = -offset; - if (qAbs(offset) < 1) - return; - sb->setValue(sb->value() + offset); - e->accept(); - } - -//--------------------------------------------------------- -// appendSubtrack -// the user requests a new controller subtrack -//--------------------------------------------------------- - -void Arranger::appendSubtrack(TLWidget* trackWidget) - { - Track* t = trackWidget->track(); - - ArrangerTrack* at = new ArrangerTrack; - at->h = minTrackHeight; - at->ctrl = CTRL_NO_CTRL; - t->subtracks.push_back(at); - if(initSubtrack(t, at)==true) { - updateIndex(); - } - else { - t->subtracks.remove(at); - delete at; - } - } - -//--------------------------------------------------------- -// initSubtrack -//--------------------------------------------------------- - -bool Arranger::initSubtrack(Track* t, ArrangerTrack* at) - { - TLSWidget* tw = new TLSWidget(t, at, canvas); - tw->setFixedHeight(at->h); - - if(tw->setCtrl(at->ctrl) == true) { - tl->insertWidget(tlIndex(at), tw); - at->tw = tw; - connect(tw, SIGNAL(minusClicked(TLSWidget*)), SLOT(removeSubtrack(TLSWidget*))); - connect(tw, SIGNAL(controllerChanged(int)), canvas->widget(), SLOT(update())); - connect(tw, SIGNAL(drag(int, int)), SLOT(drag(int,int))); - connect(tw, SIGNAL(startDrag(int)), SLOT(startDrag(int))); - tw->show(); - } - else { - delete tw; - return false; - } - return true; - } - -//--------------------------------------------------------- -// removeSubtrack -//--------------------------------------------------------- - -void Arranger::removeSubtrack(TLSWidget* w) - { - Track* t = w->track(); - for (iArrangerTrack it = t->subtracks.begin(); it != t->subtracks.end(); ++it) { - ArrangerTrack* at = *it; - if (at->tw == w) { - tl->removeWidget(at->tw); -// at->tw->close(); - delete at->tw; - t->subtracks.erase(it); - delete at; - break; - } - } - updateIndex(); - } - -//--------------------------------------------------------- -// configTrackList -//--------------------------------------------------------- - -void Arranger::configTrackList() - { - if (configTrackEditor == 0) { - configTrackEditor = new ConfigTrackList(this); - connect(configTrackEditor, SIGNAL(trackConfigChanged()), SIGNAL(configChanged())); - } - configTrackEditor->show(); - } - -//--------------------------------------------------------- -// atrack -//--------------------------------------------------------- - -ArrangerTrack* Arranger::atrack(int idx) - { - int k = 0; - TrackList* stl = song->tracks(); - for (iTrack i = stl->begin(); i != stl->end(); ++i) { - ArrangerTrack* at = &(*i)->arrangerTrack; - if (idx == k) - return at; - ++k; - for (iArrangerTrack it = (*i)->subtracks.begin(); it != (*i)->subtracks.end(); ++it) { - ArrangerTrack* t = *it; - if (idx == k) - return t; - ++k; - } - } - return 0; - } - -//--------------------------------------------------------- -// updateIndex -// update vertical scrollbar & index values -//--------------------------------------------------------- - -void Arranger::updateIndex() - { - int idx = 0; - int h = 2 * defaultTrackHeight; // always show room for at least two - // tracks at end of list - - TrackList* stl = song->tracks(); - for (iTrack i = stl->begin(); i != stl->end(); ++i) { - ArrangerTrack* at = &(*i)->arrangerTrack; - if (at->tw == 0) - continue; - ((TLWidget*)at->tw)->setIdx(idx); - h += at->tw->height(); - ++idx; - for (iArrangerTrack it = (*i)->subtracks.begin(); it != (*i)->subtracks.end(); ++it) { - ArrangerTrack* t = *it; - if (t->tw == 0) - continue; - ((TLSWidget*)t->tw)->setIdx(idx); - h += t->tw->height(); - ++idx; - } - } - setGMute(); - setGSolo(); - setGar(); - setGaw(); - canvas->setVSize(h); - trackList->setFixedHeight(h + 32); - canvas->widget()->update(); - QPoint p(canvas->getWPos()); - setTLViewPos(0, p.y()); - } - -//--------------------------------------------------------- -// toggleTrackInfo -//--------------------------------------------------------- - -void Arranger::toggleTrackInfo(bool val) - { - trackInfoVisible = val; - if (trackInfoVisible) { - if (_curTrack == 0) { - if (zeroTrackInfo == 0) { - zeroTrackInfo = new QWidget(this); - trackInfo->addWidget(zeroTrackInfo); - } - trackInfo->setCurrentWidget(zeroTrackInfo); - - return; - } - Track::TrackType t = _curTrack->type(); - TrackInfo* w = trackInfos[t]; - if (w == 0) { - w = trackInfos[t] = createTrackInfo(); - trackInfo->addWidget(w); - } - w->init(_curTrack); - trackInfo->setCurrentWidget(w); - } -// infoDock->layout()->invalidate(); -// infoDock->layout()->update(); - } - -//--------------------------------------------------------- -// toggleMixerStrip -//--------------------------------------------------------- - -void Arranger::toggleMixerStrip(bool val) - { - mixerStripVisible = val; - if (mixerStripVisible && _curTrack) { - if (strip && _curTrack != strip->getTrack()) { - strip->close(); - strip = 0; - } - if (!strip) { - switch(_curTrack->type()) { - case Track::MIDI_IN: - strip = new MidiInPortStrip(0, (MidiInPort*)_curTrack, false); - break; - case Track::MIDI_OUT: - strip = new MidiOutPortStrip(0, (MidiOutPort*)_curTrack, false); - break; - case Track::MIDI_SYNTI: - strip = new MidiSyntiStrip(0, (MidiSynti*)_curTrack, false); - break; - case Track::MIDI: - strip = new MidiStrip(0, (MidiTrack*)_curTrack, false); - break; - default: - strip = new AudioStrip(0, (AudioTrack*)_curTrack, false); - break; - } - // - // it looks like the dock widget has a minimum - // width - strip->setFixedWidth(STRIP_WIDTH + 10); - mixerDock->setWidget(strip); - } - } - else { - if (strip) { - strip->close(); - strip = 0; - } - } - } - -//--------------------------------------------------------- -// startLoadSong -//--------------------------------------------------------- - -void Arranger::startLoadSong() - { - if (strip) - strip->close(); - strip = 0; - - TrackList* stl = song->tracks(); - for (iTrack i = stl->begin(); i != stl->end(); ++i) { - ArrangerTrack* at = &(*i)->arrangerTrack; - tl->removeWidget(at->tw); - at->tw->close(); - delete at->tw; - at->tw = 0; - for (iArrangerTrack it = (*i)->subtracks.begin(); it != (*i)->subtracks.end(); ++it) { - ArrangerTrack* at = *it; - tl->removeWidget(at->tw); - at->tw->close(); - delete at->tw; - } - (*i)->subtracks.clear(); - } - _curTrack = 0; - } - -//--------------------------------------------------------- -// endLoadSong -// create track list widgets -//--------------------------------------------------------- - -void Arranger::endLoadSong() - { - TrackList* stl = song->tracks(); - - for (iTrack i = stl->begin(); i != stl->end(); ++i) { - Track* t = *i; - insertTrack1(t); - for (iArrangerTrack i = t->subtracks.begin(); i != t->subtracks.end(); ++i) { - initSubtrack(t, *i); - } - } - updateIndex(); - setSelectedTrack(song->selectedTrack()); - infoDock->setVisible(trackInfoVisible); - mixerDock->setVisible(mixerStripVisible); - } - -//--------------------------------------------------------- -// updateConfiguration -//--------------------------------------------------------- - -void Arranger::updateConfiguration() - { - if (config.canvasUseBgPixmap) { - canvas->setCanvasBackground(QPixmap(config.canvasBgPixmap)); - } - else - canvas->setCanvasBackground(config.canvasBgColor); -//TD canvas->setShowGrid(config.canvasShowGrid); -//TD update(); - } - -//--------------------------------------------------------- -// readStatus -//--------------------------------------------------------- - -void Arranger::readStatus(QDomNode node) - { - TrackList* tl = song->tracks(); - iTrack it = tl->begin(); - - QPoint wpos; - double xmag = 0.05; - double ymag = 1.0; - - for (; !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - QString tag(e.tagName()); - QString s = e.text(); - int i = s.toInt(); - if (tag == "info") - trackInfoVisible = i; - else if (tag == "strip") - mixerStripVisible = i; - else if (tag == "TrackConf") { - } - else if (tag == "hmag") - xmag = s.toDouble(); - else if (tag == "vmag") - ymag = s.toDouble(); - else if (tag == "hpos") - wpos.setX(i); - else if (tag == "vpos") - wpos.setY(i); - else if (tag == "raster") { - muse->initRaster(i); - canvas->setRaster(i); - } - else if (tag == "splitter") { - split->readStatus(node); - QList sizes = split->sizes(); - split->setSizes(sizes); - } - else - printf("Arranger: unknown tag %s\n", tag.toLatin1().data()); - } - canvas->setMag(xmag, ymag); - canvas->setWPos(wpos); - } - -//--------------------------------------------------------- -// writeStatus -//--------------------------------------------------------- - -void Arranger::writeStatus(Xml& xml) - { - xml.stag("arranger"); - - for (int i = 0; i < Track::TRACK_TYPES; ++i) { - TrGroupList* gl = &glist[i]; - xml.stag(QString("TrackConf type=\"%1\"").arg(i)); - for (iTrGroup ig = gl->begin(); ig != gl->end(); ++ig) { - TrElementList& el = *ig; - xml.stag("group"); - for (iTrElement ie = el.begin(); ie != el.end(); ++ie) - xml.tagE(QString("element id=\"%1\"").arg((*ie)->id)); - xml.etag("group"); - } - xml.etag("TrackConf"); - } - xml.tag("info", trackInfoVisible); - xml.tag("strip", mixerStripVisible); - xml.tag("hmag", canvas->xmag()); - xml.tag("vmag", canvas->ymag()); - xml.tag("hpos", canvas->getWPos().x()); - xml.tag("vpos", canvas->getWPos().y()); - xml.tag("raster", muse->raster()); - split->writeStatus("splitter", xml); - xml.etag("arranger"); - } - -//--------------------------------------------------------- -// setGMute -//--------------------------------------------------------- - -void Arranger::setGMute() - { - TrackList* tl = song->tracks(); - bool mute = false; - for (iTrack i = tl->begin(); i != tl->end(); ++i) { - if ((*i)->mute()) { - mute = true; - break; - } - } - gmute->setChecked(mute); - } - -//--------------------------------------------------------- -// setGSolo -//--------------------------------------------------------- - -void Arranger::setGSolo() - { - TrackList* tl = song->tracks(); - bool solo = false; - for (iTrack i = tl->begin(); i != tl->end(); ++i) { - if ((*i)->solo()) { - solo = true; - break; - } - } - gsolo->setChecked(solo); - } - -//--------------------------------------------------------- -// setGar -//--------------------------------------------------------- - -void Arranger::setGar() - { - TrackList* tl = song->tracks(); - bool ar = false; - for (iTrack i = tl->begin(); i != tl->end(); ++i) { - if ((*i)->autoRead()) { - ar = true; - break; - } - } - if (ar == false) { - MidiTrackList* cl = song->midis(); - for (iMidiTrack i = cl->begin(); i != cl->end(); ++i) { - if ((*i)->autoRead()) { - ar = true; - break; - } - } - } - gar->setChecked(ar); - } - -//--------------------------------------------------------- -// setGaw -//--------------------------------------------------------- - -void Arranger::setGaw() - { - TrackList*tl = song->tracks(); - bool aw = false; - for (iTrack i = tl->begin(); i != tl->end(); ++i) { - if ((*i)->autoWrite()) - aw = true; - } - if (aw == false) { - MidiTrackList* cl = song->midis(); - for (iMidiTrack i = cl->begin(); i != cl->end(); ++i) { - if ((*i)->autoWrite()) { - aw = true; - break; - } - } - } - gaw->setChecked(aw); - } - -//--------------------------------------------------------- -// offGMute -//--------------------------------------------------------- - -void Arranger::offGMute() - { - TrackList*tl = song->tracks(); - for (iTrack i = tl->begin(); i != tl->end(); ++i) - song->setMute(*i,false); - gmute->setChecked(false); - } - -//--------------------------------------------------------- -// offGSolo -//--------------------------------------------------------- - -void Arranger::offGSolo() - { - TrackList*tl = song->tracks(); - for (iTrack i = tl->begin(); i != tl->end(); ++i) - song->setSolo(*i, false); - gsolo->setChecked(false); - } - -//--------------------------------------------------------- -// offGar -//--------------------------------------------------------- - -void Arranger::offGar() - { - TrackList*tl = song->tracks(); - for (iTrack i = tl->begin(); i != tl->end(); ++i) - song->setAutoRead(*i, false); - MidiTrackList* cl = song->midis(); - for (iMidiTrack i = cl->begin(); i != cl->end(); ++i) - song->setAutoRead(*i, false); - gar->setChecked(false); - } - -//--------------------------------------------------------- -// offGaw -//--------------------------------------------------------- - -void Arranger::offGaw() - { - TrackList*tl = song->tracks(); - for (iTrack i = tl->begin(); i != tl->end(); ++i) - song->setAutoWrite(*i, false); - MidiTrackList* cl = song->midis(); - for (iMidiTrack i = cl->begin(); i != cl->end(); ++i) - song->setAutoWrite(*i, false); - gaw->setChecked(false); - } - -//--------------------------------------------------------- -// setTool -//--------------------------------------------------------- - -void Arranger::setTool(int t) - { - tool = Tool(t); - canvas->setTool(tool); - } - -//--------------------------------------------------------- -// setSelectedTrack -//--------------------------------------------------------- - -void Arranger::setSelectedTrack(Track* t) - { - _curTrack = t; - toggleTrackInfo(trackInfoVisible); - toggleMixerStrip(mixerStripVisible); - } - -//--------------------------------------------------------- -// moveTrack -// move src before dst -//--------------------------------------------------------- - -void Arranger::moveTrack(Track* src, Track* dst) - { - audio->msgMoveTrack(src, dst); - tl->clear(); - TrackList* stl = song->tracks(); - for (iTrack i = stl->begin(); i != stl->end(); ++i) { - tl->addWidget((*i)->arrangerTrack.tw); - for (iArrangerTrack it = (*i)->subtracks.begin(); it != (*i)->subtracks.end(); ++it) - tl->addWidget((*it)->tw); - } - tl->setGeometry(((QWidget*)tl->parent())->geometry()); - updateIndex(); - } - -//--------------------------------------------------------- -//! \fn Arranger::keyPressEvent(QKeyEvent* e) -//! \brief Called when a key is pressed -//! @param e The key event -//--------------------------------------------------------- - -void Arranger::keyPressEvent(QKeyEvent* /*e*/) - { - printf("Arranger::keyPressEvent\n"); -#if 0 //TODOB - int key = e->key(); - bool keypress_handled = false; - - if (e->modifiers() & Qt::ShiftModifier) - key += Qt::SHIFT; - if (e->modifiers() & Qt::AltModifier) - key += Qt::ALT; - if (e->modifiers() & Qt::ControlModifier) - key += Qt::CTRL; - - if (shortcutsKbdMovement.isValid()) { - if (key == shortcuts[SHRT_SEL_LEFT].key || key == shortcuts[SHRT_SEL_LEFT_ADD].key) { - keypress_handled = true; - bool add = (key == shortcuts[SHRT_SEL_LEFT_ADD].key); - PartList* parts = shortcutsKbdMovement.track()->parts(); - Part* nextLeft = 0; - - for (iPart i = parts->begin(); i != parts->end(); i++) { - Part* tmp = i->second; - if (!nextLeft) { - if (tmp->tick() < shortcutsKbdMovement.getLpos()) - nextLeft = tmp; - } - else { - if (tmp->tick() > nextLeft->tick() && tmp->tick() < shortcutsKbdMovement.getLpos() ) - nextLeft = tmp; - } - } - if (nextLeft) { - song->selectPart(nextLeft, add); - shortcutsKbdMovement.setPart(nextLeft); - shortcutsKbdMovement.setPos(nextLeft->tick(), nextLeft->tick() + nextLeft->lenTick()); - } - } - else if (key == shortcuts[SHRT_SEL_RIGHT].key || key == shortcuts[SHRT_SEL_RIGHT_ADD].key) { - keypress_handled = true; - bool add = (key == shortcuts[SHRT_SEL_RIGHT_ADD].key); - PartList* parts = shortcutsKbdMovement.track()->parts(); - Part* nextRight = 0; - - for (iPart i = parts->begin(); i != parts->end(); i++) { - Part* tmp = i->second; - if (!nextRight) { - if (tmp->tick() > shortcutsKbdMovement.getLpos()) - nextRight = tmp; - } - else { - if (tmp->tick() < nextRight->tick() && tmp->tick() > shortcutsKbdMovement.getLpos() ) - nextRight = tmp; - } - } - if (nextRight) { - song->selectPart(nextRight, add); - shortcutsKbdMovement.setPart(nextRight); - shortcutsKbdMovement.setPos(nextRight->tick(), nextRight->tick() + nextRight->lenTick()); - } - } - - else if (key == shortcuts[SHRT_SEL_ABOVE].key) { - // TODO - } - else if (key == shortcuts[SHRT_SEL_BELOW].key) { - // TODO - } - } // -- end movement - else { - if (key == shortcuts[SHRT_TOOL_POINTER].key) { - emit toolChanged(PointerTool); - return; - } - else if (key == shortcuts[SHRT_TOOL_PENCIL].key) { - emit toolChanged(PencilTool); - return; - } - else if (key == shortcuts[SHRT_TOOL_RUBBER].key) { - emit toolChanged(RubberTool); - return; - } - else if (key == shortcuts[SHRT_TOOL_LINEDRAW].key) { - emit toolChanged(DrawTool); - return; - } - } - // If we haven't dealt with the keypress, pass it along - if (!keypress_handled) { - e->ignore(); - } -#endif -// e->ignore(); - } - - -/*! - \fn Arranger::kbdMovementUpdate(Track* t, Part* p) - \brief Slot connected to canvaswidget, called when a part is selected - @param t Track the selected part belongs to (null if no part selected) - @param p The selected Part (null if no part selected) - */ -void Arranger::kbdMovementUpdate(Track*, Part*) - { - printf("kbdMovementUpdate\n"); -// if (t && p ) { -// // If other track selected: -// if (t != shortcutsKbdMovement.track()) { -// TrackList* stl = song->tracks(); -// for (iTrack i = stl->begin(); i != stl->end(); ++i) { -// if (*i == t) { -// // Set focus and select current track -// t->arrangerTrack.tw->setFocus(); -// song->selectTrack(t); -// } -// } -// } -// shortcutsKbdMovement.setTrack(t); -// shortcutsKbdMovement.setPart(p); -// shortcutsKbdMovement.setPos(p->tick(), p->tick() + p->lenTick()); -// } -// else { // Deselected -// shortcutsKbdMovement.reset(); -// } - } - -//--------------------------------------------------------- -// addMarker -//--------------------------------------------------------- - -void Arranger::addMarker(const AL::Pos& pos) - { - song->addMarker(QString(), pos); - canvas->widget()->update(); - } - -//--------------------------------------------------------- -// removeMarker -//--------------------------------------------------------- - -void Arranger::removeMarker(const AL::Pos& pos) - { - AL::MarkerList* ml = song->marker(); - for (AL::iMarker i = ml->begin(); i != ml->end(); ++i) { - AL::iMarker ni = i; - ++ni; - if (i->second <= pos && (ni == ml->end() || ni->second > pos)) { - song->removeMarker(&(i->second)); - canvas->widget()->update(); - return; - } - } - printf("marker not found\n"); - } diff --git a/muse/muse/arranger.h b/muse/muse/arranger.h deleted file mode 100644 index 1c9f6e38..00000000 --- a/muse/muse/arranger.h +++ /dev/null @@ -1,175 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __ARRANGER_H__ -#define __ARRANGER_H__ - -#include "widgets/tools.h" -#include "track.h" - -namespace AL { - class Xml; - class Pos; - }; -using AL::Xml; -class AL::Pos; - -class Track; -class TrackInfo; -class TLWidget; -class TLSWidget; -class PartCanvas; -class Part; -class SimpleButton; -class Strip; -class ArrangerTrack; -class Splitter; -class TlsvLayout; -class TLayout; - -//--------------------------------------------------------- -// InfoStack -//--------------------------------------------------------- - -class InfoStack : public QStackedWidget { - Q_OBJECT; - - virtual QSize sizeHint() const; - - public: - InfoStack() : QStackedWidget() {} - }; - -//--------------------------------------------------------- -// TrackListWidget -//--------------------------------------------------------- - -class TrackListWidget : public QWidget { - Q_OBJECT - - void mousePressEvent(QMouseEvent*); - void wheelEvent(QWheelEvent*); - virtual void paintEvent(QPaintEvent*); - - signals: - void mouseWheel(QWheelEvent*); - - public: - TrackListWidget(QWidget* parent = 0); - }; - -//--------------------------------------------------------- -// Arranger -//--------------------------------------------------------- - -class Arranger : public QWidget { - Q_OBJECT - - QAction* infoDockAction; - QAction* mixerDockAction; - - TrackInfo* trackInfos[Track::TRACK_TYPES]; - QWidget* zeroTrackInfo; - Tool tool; - QWidget* trackList; - PartCanvas* canvas; - TLayout* tl; // tracklist layout - TrackListWidget* tlsv; - TlsvLayout* tlsvLayout; - QDialog* configTrackEditor; - QStackedWidget* trackInfo; - QScrollArea* infoView; - Track* _curTrack; // current selected track - SimpleButton* gmute; - SimpleButton* gsolo; - SimpleButton* gar; - SimpleButton* gaw; - Strip* strip; - QStackedWidget* info; - - Splitter* split; - QDockWidget* infoDock; - QDockWidget* mixerDock; - - int startH; // start value for resize track height - - bool trackInfoVisible; - bool mixerStripVisible; - - void updateIndex(); - TrackInfo* createTrackInfo(); - int tlIndex(Track*) const; - int tlIndex(ArrangerTrack* t) const; - bool initSubtrack(Track* t, ArrangerTrack*); - ArrangerTrack* atrack(int idx); - void insertTrack1(Track*); - - private slots: - void startDrag(int idx); - void drag(int idx, int); - void setTLViewPos(int, int); - void appendSubtrack(TLWidget*); - void removeSubtrack(TLSWidget*); - void configTrackList(); - void toggleTrackInfo(bool); - void toggleMixerStrip(bool); - void setGMute(); - void setGSolo(); - void setGar(); - void setGaw(); - void offGMute(); - void offGSolo(); - void offGar(); - void offGaw(); - void setSelectedTrack(Track*); - void moveTrack(Track* src, Track* dst); - void kbdMovementUpdate(Track* t, Part* p); - void mouseWheel(QWheelEvent*); - void setPos(int, const AL::Pos&); - void addMarker(const AL::Pos&); - void removeMarker(const AL::Pos&); - - public slots: - void insertTrack(Track*); - void removeTrack(Track*); - void setTool(int t); - void updateConfiguration(); - void startLoadSong(); - - signals: - void configChanged(); - void toolChanged(int); - void editPart(Part*); - void cursorPos(const AL::Pos&,bool); - - public: - Arranger(QMainWindow* parent = 0); - void readStatus(QDomNode); - void writeStatus(Xml&); - Track* curTrack() const { return _curTrack; } - void endLoadSong(); - Strip* getStrip() const { return strip; } - - protected: - virtual void keyPressEvent(QKeyEvent* e); - }; - -#endif - diff --git a/muse/muse/astrip.cpp b/muse/muse/astrip.cpp deleted file mode 100644 index 8d6cdd09..00000000 --- a/muse/muse/astrip.cpp +++ /dev/null @@ -1,791 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2000-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "audio.h" -#include "audiodev.h" -#include "song.h" -#include "astrip.h" -#include "synth.h" -#include "rack.h" -#include "gconfig.h" -#include "muse.h" -#include "widgets/simplebutton.h" -#include "widgets/utils.h" -#include "auxplugin.h" -#include "midiinport.h" -#include "midioutport.h" - -#include "awl/volknob.h" -#include "awl/panknob.h" -#include "awl/mslider.h" -#include "awl/volentry.h" -#include "awl/panentry.h" - -//--------------------------------------------------------- -// AudioStrip -// create mixer strip -//--------------------------------------------------------- - -AudioStrip::AudioStrip(Mixer* m, AudioTrack* t, bool align) - : Strip(m, t, align) - { - iR = 0; - oR = 0; - off = 0; - volume = -1.0; - channel = t->channels(); - - //--------------------------------------------------- - // prefader plugin rack - //--------------------------------------------------- - - rack1 = new EffectRack(this, t, true); - rack1->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - rack1->setFixedHeight(rack1->sizeHint().height() + 2); - grid->addWidget(rack1, 1, 0, 1, 2); - - //--------------------------------------------------- - // mono/stereo pre/post - //--------------------------------------------------- - - stereo = newStereoButton(); - stereo->setChecked(channel == 2); - stereo->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - stereo->setFixedHeight(LABEL_HEIGHT); - connect(stereo, SIGNAL(clicked(bool)), SLOT(stereoToggled(bool))); - - pre = new QToolButton; - pre->setObjectName("preButton"); - pre->setCheckable(true); - pre->setText(tr("Pre")); - pre->setToolTip(tr("pre fader - post fader")); - pre->setChecked(t->prefader()); - pre->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - pre->setFixedHeight(LABEL_HEIGHT); - connect(pre, SIGNAL(clicked(bool)), SLOT(preToggled(bool))); - - grid->addWidget(stereo, 2, 0); - grid->addWidget(pre, 2, 1); - - //--------------------------------------------------- - // slider, label - //--------------------------------------------------- - - slider = new Awl::MeterSlider(this); - slider->setRange(config.minSlider, config.maxSlider); - slider->setFixedWidth(60); - slider->setChannel(channel); - Ctrl* ctrl = t->getController(AC_VOLUME); - double vol = 0.0f; - if (ctrl) - vol = ctrl->curVal().f; - slider->setValue(vol); - grid->addWidget(slider, 3, 0, 1, 2); // 100, Qt::AlignRight); - - sl = new Awl::VolEntry(this); - sl->setSuffix(tr("dB")); - sl->setFrame(true); - sl->setValue(vol); - sl->setFixedHeight(entrySize.height()); - - connect(slider, SIGNAL(valueChanged(double,int)), SLOT(volumeChanged(double))); - connect(sl, SIGNAL(valueChanged(double,int)), SLOT(volumeChanged(double))); - - connect(slider, SIGNAL(sliderPressed(int)), SLOT(volumePressed())); - connect(slider, SIGNAL(sliderReleased(int)), SLOT(volumeReleased())); - connect(slider, SIGNAL(meterClicked()), SLOT(resetPeaks())); - grid->addWidget(sl, 4, 0, 1, 2); - - //--------------------------------------------------- - // pan, balance - //--------------------------------------------------- - - pan = addPanKnob(&panl, 5); - double panv = t->getController(AC_PAN)->curVal().f; - pan->setValue(panv); - panl->setValue(panv); - - //--------------------------------------------------- - // postfader plugin rack - //--------------------------------------------------- - - rack2 = new EffectRack(this, t, false); - rack2->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - rack2->setFixedHeight(rack1->sizeHint().height() + 2); - grid->addWidget(rack2, 7, 0, 1, 2); - - //--------------------------------------------------- - // mute, solo, record - //--------------------------------------------------- - - Track::TrackType type = t->type(); - - mute = newMuteButton(); - mute->setChecked(t->mute()); - mute->setFixedHeight(BUTTON_HEIGHT); - connect(mute, SIGNAL(clicked(bool)), SLOT(muteToggled(bool))); - connect(t, SIGNAL(muteChanged(bool)), mute, SLOT(setChecked(bool))); - - solo = newSoloButton(); - solo->setDisabled(true); - solo->setFixedHeight(BUTTON_HEIGHT); - connect(solo, SIGNAL(clicked(bool)), SLOT(soloToggled(bool))); - connect(t, SIGNAL(soloChanged(bool)), solo, SLOT(setChecked(bool))); - - off = newOffButton(); - off->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - off->setFixedHeight(BUTTON_HEIGHT); - off->setChecked(t->off()); - connect(off, SIGNAL(clicked(bool)), SLOT(offToggled(bool))); - connect(t, SIGNAL(offChanged(bool)), this, SLOT(updateOffState())); - - if (track->canRecord()) { - record = newRecordButton(); - record->setFixedHeight(BUTTON_HEIGHT); - if (type == Track::AUDIO_OUTPUT) - record->setToolTip(tr("record downmix")); - record->setChecked(t->recordFlag()); - connect(record, SIGNAL(clicked(bool)), SLOT(recordToggled(bool))); - connect(t, SIGNAL(recordChanged(bool)), record, SLOT(setChecked(bool))); - } - else - record = 0; - - grid->addWidget(off, 8, 0); - if (record) - grid->addWidget(record, 8, 1); - grid->addWidget(mute, 9, 0); - grid->addWidget(solo, 9, 1); - - //--------------------------------------------------- - // automation read write - //--------------------------------------------------- - - addAutomationButtons(10); - - //--------------------------------------------------- - // routing - //--------------------------------------------------- - - iR = newInRouteButton(); - grid->addWidget(iR, 12, 0); - connect(iR->menu(), SIGNAL(aboutToShow()), SLOT(iRouteShow())); - connect(iR->menu(), SIGNAL(aboutToHide()), SLOT(iRouteHide())); - connect(iR->menu(), SIGNAL(triggered(QAction*)), song, SLOT(routeChanged(QAction*))); - - oR = newOutRouteButton(); - grid->addWidget(oR, 12, 1); - connect(oR->menu(), SIGNAL(aboutToShow()), SLOT(oRouteShow())); - connect(oR->menu(), SIGNAL(aboutToHide()), SLOT(oRouteHide())); - connect(oR->menu(), SIGNAL(triggered(QAction*)), song, SLOT(routeChanged(QAction*))); - - if (off) { - updateOffState(); // init state - } - connect(song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); - connect(track, SIGNAL(controllerChanged(int)), SLOT(controllerChanged(int))); - connect(track, SIGNAL(autoReadChanged(bool)), SLOT(autoChanged())); - connect(track, SIGNAL(autoWriteChanged(bool)), SLOT(autoChanged())); - autoChanged(); - } - -//--------------------------------------------------------- -// heartBeat -//--------------------------------------------------------- - -void AudioStrip::heartBeat() - { - int peakHold = (config.peakHoldTime * config.guiRefresh) / 1000; - for (int ch = 0; ch < channel; ++ch) { - int n = track->peakTimer(ch); - ++n; - double f = track->peak(ch); - if (n >= peakHold) { - // track->resetPeak(ch); - track->setPeak(ch, f * 0.7); - } - track->setPeakTimer(ch, n); - slider->setMeterVal(ch, track->meter(ch), f); - } - } - -//--------------------------------------------------------- -// songChanged -//--------------------------------------------------------- - -void AudioStrip::songChanged(int val) - { - AudioTrack* src = (AudioTrack*)track; - if (val & SC_TRACK_MODIFIED) - updateLabel(); - if ((val & SC_ROUTE) && pre) - pre->setChecked(src->prefader()); - if (val & SC_CHANNELS) - updateChannels(); - } - -//--------------------------------------------------------- -// offToggled -//--------------------------------------------------------- - -void AudioStrip::offToggled(bool val) - { - song->setOff(track, !val); - } - -//--------------------------------------------------------- -// updateOffState -//--------------------------------------------------------- - -void AudioStrip::updateOffState() - { - bool val = !track->off(); - slider->setEnabled(val); - sl->setEnabled(val); - pan->setEnabled(val); - panl->setEnabled(val); - pre->setEnabled(val); - rack1->setEnabled(val); - rack2->setEnabled(val); - - if (track->type() != Track::AUDIO_SOFTSYNTH) - stereo->setEnabled(val); - label->setEnabled(val); - if (solo) - solo->setEnabled(val); - if (mute) - mute->setEnabled(val); - if (iR) - iR->setEnabled(val); - if (oR) - oR->setEnabled(val); - if (off) - off->setChecked(track->off()); - if (ar) - ar->setEnabled(val); - if (aw) - aw->setEnabled(val); - } - -//--------------------------------------------------------- -// preToggled -//--------------------------------------------------------- - -void AudioStrip::preToggled(bool val) - { - ((AudioTrack*)track)->setPrefader(val); - resetPeaks(); - song->update(SC_ROUTE); - } - -//--------------------------------------------------------- -// stereoToggled -//--------------------------------------------------------- - -void AudioStrip::stereoToggled(bool val) - { - int nc = val ? 1 : 2; - if (channel == nc) - return; - audio->msgSetChannels((AudioTrack*)track, nc); - song->update(SC_CHANNELS); - } - -//--------------------------------------------------------- -// volumeChanged -//--------------------------------------------------------- - -void AudioStrip::volumeChanged(double v) - { - CVal val; - val.f = v; - song->setControllerVal(track, AC_VOLUME, val); - } - -//--------------------------------------------------------- -// volumePressed -//--------------------------------------------------------- - -void AudioStrip::volumePressed() - { - ((AudioTrack*)track)->startAutoRecord(AC_VOLUME); - } - -//--------------------------------------------------------- -// volumeReleased -//--------------------------------------------------------- - -void AudioStrip::volumeReleased() - { - ((AudioTrack*)track)->stopAutoRecord(AC_VOLUME); - } - -//--------------------------------------------------------- -// panChanged -//--------------------------------------------------------- - -void AudioStrip::panChanged(double v) - { - if (v != panVal) { - CVal val; - val.f = v; - song->setControllerVal(track, AC_PAN, val); - panVal = v; - } - } - -//--------------------------------------------------------- -// setPan -//--------------------------------------------------------- - -void AudioStrip::setPan(double val) - { - if (val != panVal) { - panVal = val; - pan->setValue(val); - panl->setValue(val); - } - } - -//--------------------------------------------------------- -// panPressed -//--------------------------------------------------------- - -void AudioStrip::panPressed() - { - track->startAutoRecord(AC_PAN); - } - -//--------------------------------------------------------- -// panReleased -//--------------------------------------------------------- - -void AudioStrip::panReleased() - { - track->stopAutoRecord(AC_PAN); - } - -//--------------------------------------------------------- -// updateChannels -//--------------------------------------------------------- - -void AudioStrip::updateChannels() - { - AudioTrack* t = (AudioTrack*)track; - int c = t->channels(); - if (c == channel) - return; - channel = c; - slider->setChannel(c); - stereo->setChecked(channel == 2); - } - -//--------------------------------------------------------- -// addPanKnob -//--------------------------------------------------------- - -Awl::PanKnob* AudioStrip::addPanKnob(Awl::PanEntry** dlabel, int row) - { - Awl::PanKnob* knob = new Awl::PanKnob(this); - knob->setToolTip(tr("panorama")); - knob->setFixedHeight(entrySize.height() * 2); - - Awl::PanEntry* pl = new Awl::PanEntry(this); - pl->setPrecision(2); - - if (dlabel) - *dlabel = pl; -// pl->setFont(config.fonts[1]); - pl->setFrame(true); - - pl->setFixedSize(entrySize); - - QLabel* plb = new QLabel; - plb->setObjectName("knobLabel"); - plb->setText(tr("Pan")); - plb->setFixedSize(entrySize); - plb->setAlignment(Qt::AlignCenter); - - grid->addWidget(plb, row, 0); - grid->addWidget(pl, row+1, 0); - grid->addWidget(knob, row, 1, 2, 1); - - connect(knob, SIGNAL(valueChanged(double,int)), SLOT(panChanged(double))); - connect(pl, SIGNAL(valueChanged(double,int)), SLOT(panChanged(double))); - connect(knob, SIGNAL(sliderPressed(int)), SLOT(panPressed())); - connect(knob, SIGNAL(sliderReleased(int)), SLOT(panReleased())); - return knob; - } - -//--------------------------------------------------------- -// addAuxPorts -//--------------------------------------------------------- - -static void addAuxPorts(AudioTrack* track, QMenu* lb, const RouteList& rl) - { - QList pre = track->preAux(); - QList post = track->postAux(); - foreach (AuxPluginIF* p, pre) { - QString s = p->pluginInstance()->name(); - QAction* a = lb->addAction(p->pluginInstance()->name()); - a->setCheckable(true); -// Route route(RouteNode(p), RouteNode(track)); - Route route = Route(RouteNode(p), RouteNode(track)); - a->setData(QVariant::fromValue(route)); - a->setChecked(rl.indexOf(route) != -1); - } - foreach(AuxPluginIF* p, post) { - QAction* a = lb->addAction(p->pluginInstance()->name()); - a->setCheckable(true); -// Route route(RouteNode(p), RouteNode(track)); // does not compile?! - Route route = Route(RouteNode(p), RouteNode(track)); - a->setData(QVariant::fromValue(route)); - a->setChecked(rl.indexOf(route) != -1); - } - } - -//--------------------------------------------------------- -// addInPorts -//--------------------------------------------------------- - -static void addInPorts(AudioTrack* t, QMenu* lb, const RouteList& rl, bool input) - { - RouteNode a(t); - - InputList* al = song->inputs(); - for (iAudioInput i = al->begin(); i != al->end(); ++i) { - AudioTrack* track = (AudioTrack*)*i; - if (t == track) - continue; - QAction* it = lb->addAction(track->name()); - it->setCheckable(true); - RouteNode b(track); - Route route = input ? Route(b, a) : Route(a, b); - it->setData(QVariant::fromValue(route)); - it->setChecked(rl.indexOf(route) != -1); - if (input) - addAuxPorts(track, lb, rl); - } - } - -//--------------------------------------------------------- -// addOutPorts -//--------------------------------------------------------- - -static void addOutPorts(AudioTrack* t, QMenu* lb, const RouteList& rl) - { - OutputList* al = song->outputs(); - for (iAudioOutput i = al->begin(); i != al->end(); ++i) { - Track* track = *i; - if (t == track) - continue; - QAction* it = lb->addAction(track->name()); - it->setCheckable(true); - Route route = Route(RouteNode(t), RouteNode(track)); - it->setData(QVariant::fromValue(route)); - it->setChecked(rl.indexOf(route) != -1); - } - } - -//--------------------------------------------------------- -// addGroupPorts -//--------------------------------------------------------- - -static void addGroupPorts(AudioTrack* t, QMenu* lb, const RouteList& rl) - { - GroupList* al = song->groups(); - for (iAudioGroup i = al->begin(); i != al->end(); ++i) { - AudioTrack* track = (AudioTrack*)*i; - if (t == track) - continue; - QAction* it = lb->addAction(track->name()); - it->setCheckable(true); - Route route = Route(RouteNode(t), RouteNode(track)); - it->setData(QVariant::fromValue(route)); - it->setChecked(rl.indexOf(route) != -1); - } - } - -//--------------------------------------------------------- -// addWavePorts -//--------------------------------------------------------- - -static void addWavePorts(AudioTrack* t, QMenu* lb, const RouteList& rl, bool input) - { - RouteNode a(t); - WaveTrackList* al = song->waves(); - for (iWaveTrack i = al->begin(); i != al->end(); ++i) { - AudioTrack* track = (AudioTrack*)*i; - if (t == track) // cannot connect to itself - continue; - QAction* it = lb->addAction(track->name()); - it->setCheckable(true); - RouteNode b(track); - Route route = input ? Route(b, a) : Route(a, b); - it->setData(QVariant::fromValue(route)); - it->setChecked(rl.indexOf(route) != -1); - if (input) - addAuxPorts(track, lb, rl); - } - } - -//--------------------------------------------------------- -// addSyntiPorts -//--------------------------------------------------------- - -static void addSyntiPorts(AudioTrack* t, QMenu* lb, const RouteList& rl) - { - SynthIList* al = song->syntis(); - for (iSynthI i = al->begin(); i != al->end(); ++i) { - AudioTrack* track = (AudioTrack*)*i; - if (t == track) - continue; - QAction* it = lb->addAction(track->name()); - it->setCheckable(true); - RouteNode a(t); - RouteNode b(track); - Route route = Route(b, a); - it->setData(QVariant::fromValue(route)); - it->setChecked(rl.indexOf(route) != -1); - } - } - -//--------------------------------------------------------- -// iRouteShow -//--------------------------------------------------------- - -extern void addMidiTracks(QMenu* menu, Track* track, int channel, bool input); -extern void addMidiInPorts(QMenu* menu, Track* dtrack, int channel); - -void AudioStrip::iRouteShow() - { - QMenu* pup = iR->menu(); - pup->clear(); - AudioTrack* t = (AudioTrack*)track; - RouteList* irl = t->inRoutes(); - - switch(track->type()) { - default: - return; - case Track::AUDIO_INPUT: - { - for (int i = 0; i < channel; ++i) { - pup->addSeparator()->setText(QString(tr("Channel %1")).arg(i+1)); - QList ol = audioDriver->outputPorts(false); - foreach (PortName ip, ol) { - QAction* id = pup->addAction(ip.name); - id->setCheckable(true); - RouteNode src(ip.port, -1, RouteNode::AUDIOPORT); - RouteNode dst(t, i, RouteNode::TRACK); - Route route = Route(src, dst); - id->setData(QVariant::fromValue(route)); - id->setChecked(irl->indexOf(route) != -1); - } - } - } - break; - case Track::AUDIO_OUTPUT: - addWavePorts(t, pup, *irl, true); - addInPorts(t, pup, *irl, true); - addGroupPorts(t, pup, *irl); - addSyntiPorts(t, pup, *irl); - break; - case Track::WAVE: - addInPorts(t, pup, *irl, true); - break; - case Track::AUDIO_GROUP: - addWavePorts(t, pup, *irl, true); - addInPorts(t, pup, *irl, true); - addGroupPorts(t, pup, *irl); - addSyntiPorts(t, pup, *irl); - break; - case Track::AUDIO_SOFTSYNTH: - pup->addSeparator()->setText(tr("MidiChannel")); - for (int ch = 0; ch < MIDI_CHANNELS; ++ch) { - QMenu* m = pup->addMenu(QString("Channel %1").arg(ch+1)); - addMidiTracks(m, track, ch, true); - addMidiInPorts(m, track, ch); - } - break; - } - } - -//--------------------------------------------------------- -// iRouteHide -//--------------------------------------------------------- - -void AudioStrip::iRouteHide() - { - // dont leave the menu if SHIFT is pressed; this allows - // for fast selecting of more than one input source - // - if (qApp->keyboardModifiers() & Qt::ShiftModifier) { - iR->menu()->show(); - } - } - -//--------------------------------------------------------- -// oRouteHide -//--------------------------------------------------------- - -void AudioStrip::oRouteHide() - { - // dont leave the menu if SHIFT is pressed; this allows - // for fast selecting of more than one input source - // - if (qApp->keyboardModifiers() & Qt::ShiftModifier) { - oR->menu()->show(); - } - } - -//--------------------------------------------------------- -// oRouteShow -//--------------------------------------------------------- - -void AudioStrip::oRouteShow() - { - QMenu* pup = oR->menu(); - pup->clear(); - AudioTrack* t = (AudioTrack*)track; - RouteList* orl = t->outRoutes(); - - switch(track->type()) { - default: - return; - case Track::AUDIO_OUTPUT: - { - for (int i = 0; i < channel; ++i) { - char buffer[128]; - snprintf(buffer, 128, "%s %d", tr("Channel").toLatin1().data(), i+1); - pup->addSeparator()->setText(QString(buffer)); - - QList ol = audioDriver->inputPorts(false); - foreach (PortName ip, ol) { - QAction* action = pup->addAction(ip.name); - action->setCheckable(true); - RouteNode src(t, i, RouteNode::TRACK); - RouteNode dst(ip.port, -1, RouteNode::AUDIOPORT); - Route r = Route(src, dst); - action->setData(QVariant::fromValue(r)); - action->setChecked(orl->indexOf(r) != -1); - } - } - } - break; - case Track::AUDIO_INPUT: - addWavePorts(t, pup, *orl, false); - case Track::WAVE: - case Track::AUDIO_GROUP: - case Track::AUDIO_SOFTSYNTH: - addOutPorts(t, pup, *orl); - addGroupPorts(t, pup, *orl); - break; - } - } - -//--------------------------------------------------------- -// muteToggled -//--------------------------------------------------------- - -void AudioStrip::muteToggled(bool val) - { - song->setMute(track, val); - } - -//--------------------------------------------------------- -// soloToggled -//--------------------------------------------------------- - -void AudioStrip::soloToggled(bool val) - { - song->setSolo(track, val); - } - -//--------------------------------------------------------- -// recordToggled -//--------------------------------------------------------- - -void AudioStrip::recordToggled(bool val) - { - song->setRecordFlag(track, !val); - } - -//--------------------------------------------------------- -// controllerChanged -//--------------------------------------------------------- - -void AudioStrip::controllerChanged(int id) - { - double val = track->getController(id)->curVal().f; - switch (id) { - case AC_VOLUME: - slider->setValue(val); - sl->setValue(val); - break; - case AC_PAN: - pan->setValue(val); - panl->setValue(val); - panVal = val; - break; - case AC_MUTE: - break; - default: - break; - } - } - -//--------------------------------------------------------- -// autoChanged -//--------------------------------------------------------- - -void AudioStrip::autoChanged() - { - bool ar = track->autoRead(); - bool aw = track->autoWrite(); - - // controller are enabled if - // autoRead is off - // autoRead and autoWrite are on (touch mode) - - bool ec = !ar || (ar && aw); - slider->setEnabled(ec); - sl->setEnabled(ec); - pan->setEnabled(ec); - panl->setEnabled(ec); - } - -//--------------------------------------------------------- -// autoReadToggled -//--------------------------------------------------------- - -void AudioStrip::autoReadToggled(bool val) - { - song->setAutoRead(track, val); - } - -//--------------------------------------------------------- -// autoWriteToggled -//--------------------------------------------------------- - -void AudioStrip::autoWriteToggled(bool val) - { - song->setAutoWrite(track, val); - } - diff --git a/muse/muse/astrip.h b/muse/muse/astrip.h deleted file mode 100644 index f0806fda..00000000 --- a/muse/muse/astrip.h +++ /dev/null @@ -1,101 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __ASTRIP_H__ -#define __ASTRIP_H__ - -#include "strip.h" - -namespace Awl { - class MeterSlider; - class VolEntry; - class VolKnob; - class PanKnob; - class PanEntry; - }; - -class AudioTrack; -class SimpleButton; -class EffectRack; -class Mixer; - -//--------------------------------------------------------- -// AudioStrip -//--------------------------------------------------------- - -class AudioStrip : public Strip { - Q_OBJECT - - int channel; - EffectRack* rack1; - EffectRack* rack2; - - Awl::MeterSlider* slider; - Awl::VolEntry* sl; - double volume; - - Awl::PanKnob* pan; - Awl::PanEntry* panl; - double panVal; - - QToolButton* stereo; - QToolButton* pre; - - Awl::PanKnob* addPanKnob(Awl::PanEntry**, int); - - QToolButton* iR; - QToolButton* oR; - SimpleButton* off; - SimpleButton* record; - - void updateChannels(); - - private slots: - void stereoToggled(bool); - void preToggled(bool); - void offToggled(bool); - void iRouteShow(); - void iRouteHide(); - void oRouteShow(); - void oRouteHide(); - void volumeChanged(double); - void volumePressed(); - void volumeReleased(); - void panChanged(double); - void setPan(double); - void panPressed(); - void panReleased(); - void muteToggled(bool); - void soloToggled(bool); - void recordToggled(bool); - void autoChanged(); - virtual void controllerChanged(int id); - virtual void songChanged(int); - void autoReadToggled(bool); - void autoWriteToggled(bool); - void updateOffState(); - - public: - AudioStrip(Mixer*, AudioTrack*, bool align); - virtual void heartBeat(); - }; - -#endif - diff --git a/muse/muse/audio.cpp b/muse/muse/audio.cpp deleted file mode 100644 index 1ad9eefc..00000000 --- a/muse/muse/audio.cpp +++ /dev/null @@ -1,655 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include - -#include "al/al.h" -#include "muse.h" -#include "globals.h" -#include "song.h" -#include "audiodev.h" -#include "audioprefetch.h" -#include "audiowriteback.h" -#include "audio.h" -#include "sync.h" -#include "midi.h" -#include "gconfig.h" -#include "al/sig.h" -#include "al/tempo.h" -#include "widgets/utils.h" -#include "synth.h" -#include "midioutport.h" -#include "midiinport.h" -#include "midictrl.h" -#include "sync.h" - -extern bool initJackAudio(); - -Audio* audio; -AudioDriver* audioDriver; // current audio device in use - -const char* seqMsgList[] = { - "SEQM_ADD_TRACK", - "SEQM_REMOVE_TRACK", - "SEQM_MOVE_TRACK", - "SEQM_ADD_PART", - "SEQM_REMOVE_PART", - "SEQM_CHANGE_PART", - "SEQM_ADD_EVENT", - "SEQM_REMOVE_EVENT", - "SEQM_CHANGE_EVENT", - "SEQM_ADD_TEMPO", -/*10*/"SEQM_SET_TEMPO", - "SEQM_REMOVE_TEMPO", - "SEQM_ADD_SIG", - "SEQM_REMOVE_SIG", - "SEQM_SET_GLOBAL_TEMPO", - "SEQM_UNDO", - "SEQM_REDO", - "SEQM_RESET_DEVICES", - "SEQM_INIT_DEVICES", - "AUDIO_ROUTEADD", - "AUDIO_ROUTEREMOVE", -/*20*/"AUDIO_ADDPLUGIN", - "AUDIO_ADDMIDIPLUGIN", - "AUDIO_SET_SEG_SIZE", - "AUDIO_SET_CHANNELS", - "MS_PROCESS", - "MS_START", - "MS_STOP", - "MS_SET_RTC", - "SEQM_IDLE", - "SEQM_ADD_CTRL", - "SEQM_REMOVE_CTRL" - }; - -const char* audioStates[] = { - "STOP", "START_PLAY", "PLAY", "LOOP1", "LOOP2", "SYNC", "PRECOUNT" - }; - - -//--------------------------------------------------------- -// Audio -//--------------------------------------------------------- - -Audio::Audio() - { - recording = false; - idle = false; - _freewheel = false; - _bounce = 0; - loopPassed = false; - - _seqTime.pos.setType(AL::FRAMES); - startRecordPos.setType(AL::TICKS); - endRecordPos.setType(AL::TICKS); - - //--------------------------------------------------- - // establish pipes/sockets - //--------------------------------------------------- - - int filedes[2]; // 0 - reading 1 - writing - if (pipe(filedes) == -1) { - perror("creating pipe0"); - fatalError("cannot create pipe0"); - } - fromThreadFdw = filedes[1]; // blocking file descriptor - fromThreadFdr = filedes[0]; // non blocking file descriptor - - int rv = fcntl(fromThreadFdw, F_SETFL, O_NONBLOCK); - if (rv == -1) - perror("set pipe O_NONBLOCK"); - - if (pipe(filedes) == -1) { - perror("creating pipe1"); - fatalError("cannot create pipe1"); - } - sigFd = filedes[1]; - QSocketNotifier* ss = new QSocketNotifier(filedes[0], QSocketNotifier::Read); - song->connect(ss, SIGNAL(activated(int)), song, SLOT(seqSignal(int))); - } - -//--------------------------------------------------------- -// start -// start audio processing -//--------------------------------------------------------- - -bool Audio::start() - { - TrackList* tl = song->tracks(); - - _seqTime.curTickPos = 0; - _seqTime.nextTickPos = 0; - _seqTime.pos.setFrame(~0); // make sure seek is not optimized away - - msg = 0; - - // - // init marker for synchronous loop processing - // - lmark = song->lPos().frame(); - rmark = song->rPos().frame(); - state = STOP; - muse->setHeartBeat(); - - if (audioDriver) { - // - // allocate ports - // - for (iTrack i = tl->begin(); i != tl->end(); ++i) - (*i)->activate1(); - seek(song->cpos()); - process(segmentSize, STOP); // warm up caches; audio must be stopped - } - else { - - // if audio device has disappeared it probably - // means jack has performed a shutdown - // try to restart and reconnect everything - - if (false == initJackAudio()) { - // - // allocate ports, first resetting the old connection - // - InputList* itl = song->inputs(); - for (iAudioInput i = itl->begin(); i != itl->end(); ++i) { - for (int x=0; x < (*i)->channels();x++) { - (*i)->setJackPort(Port(), x); // zero out the old connection - } - (*i)->activate1(); - } - - OutputList* otl = song->outputs(); - for (iAudioOutput i = otl->begin(); i != otl->end(); ++i) { - for (int x=0; x < (*i)->channels();x++) - (*i)->setJackPort(Port(), x); // zero out the old connection - (*i)->activate1(); - } - } - else { - printf("Failed to init audio!\n"); - return false; - } - } - audioDriver->start(realTimePriority); - audioDriver->stopTransport(); - return true; - } - -//--------------------------------------------------------- -// stop -// stop audio processing -// non realtime -//--------------------------------------------------------- - -void Audio::stop() - { -#if 0 - MidiOutPortList* opl = song->midiOutPorts(); - for (iMidiOutPort i = opl->begin(); i != opl->end(); ++i) - (*i)->deactivate(); - MidiInPortList* ipl = song->midiInPorts(); - for (iMidiInPort i = ipl->begin(); i != ipl->end(); ++i) - (*i)->deactivate(); -#endif - if (audioDriver) - audioDriver->stop(); - } - -//--------------------------------------------------------- -// sync -// return true if sync is completed -//--------------------------------------------------------- - -bool Audio::sync(int jackState, unsigned frame) - { -// printf("Audio::sync() state %s jackState %s frame 0x%x\n", audioStates[state], audioStates[jackState], frame); - bool done = true; - if (state == LOOP1) - state = LOOP2; - else { - State s = State(jackState); - // - // STOP -> START_PLAY start rolling - // STOP -> STOP seek in stop state - // PLAY -> START_PLAY seek in play state - - if (state != START_PLAY) { - Pos p(frame, AL::FRAMES); - seek(p); - if (!_freewheel) - done = audioPrefetch->seekDone(); - if (s == START_PLAY) - state = START_PLAY; - } - else { - if (frame != _seqTime.pos.frame()) { - // seek during seek - seek(Pos(frame, AL::FRAMES)); - } - done = audioPrefetch->seekDone(); - } - } - return done; - } - -//--------------------------------------------------------- -// setFreewheel -//--------------------------------------------------------- - -void Audio::setFreewheel(bool val) - { -// printf("JACK: freewheel callback %d\n", val); - _freewheel = val; - } - -//--------------------------------------------------------- -// shutdown -//--------------------------------------------------------- - -void Audio::shutdown() - { - audioState = AUDIO_STOP; -printf("JACK: shutdown callback\n"); - sendMsgToGui(MSG_JACK_SHUTDOWN); - } - -//--------------------------------------------------------- -// process -// process one audio buffer at position "_seqTime._pos " -// of size "frames" -//--------------------------------------------------------- - -void Audio::process(unsigned frames, int jackState) - { - _seqTime.lastFrameTime = audioDriver->frameTime(); - - for (iMidiOutPort i = song->midiOutPorts()->begin(); i != song->midiOutPorts()->end(); ++i) - audioDriver->startMidiCycle((*i)->jackPort(0)); - - // - // process messages from gui - // - if (msg) { - processMsg(); - msg = 0; // dont process again - int rv = write(fromThreadFdw, "x", 1); - if (rv != 1) { - fprintf(stderr, "audio: write(%d) pipe failed: %s\n", - fromThreadFdw, strerror(errno)); - } - } - - if (jackState != state) { - if (state == START_PLAY && jackState == PLAY) { - startRolling(); - if (_bounce) - sendMsgToGui(MSG_START_BOUNCE); - } - else if (state == LOOP2 && jackState == PLAY) { - Pos newPos(loopFrame, AL::FRAMES); - seek(newPos); - startRolling(); - } - else if (isPlaying() && jackState == STOP) - stopRolling(); - else if (state == START_PLAY && jackState == STOP) { - state = STOP; - updateController = true; - if (_bounce) - audioDriver->startTransport(); - else - sendMsgToGui(MSG_STOP); - } - else if (state == STOP && jackState == PLAY) - startRolling(); - } - - if (idle || (state == START_PLAY)) { - // deliver silence - OutputList* ol = song->outputs(); - for (iAudioOutput i = ol->begin(); i != ol->end(); ++i) - (*i)->silence(frames); - return; - } - - if (state == PLAY) { - // - // clear prefetch FIFO if left/right locators - // have changed - // - unsigned llmark = song->lPos().frame(); - unsigned rrmark = song->rPos().frame(); - - if (lmark != llmark || rmark != rrmark) { - // - // invalidate audio prefetch buffer - // - audioPrefetch->getFifo()->clear(); - audioPrefetch->msgSeek(_seqTime.startFrame()); - lmark = llmark; - rmark = rrmark; - } - } - - if (isPlaying()) { - if (_bounce == 1 && _seqTime.pos >= song->rPos()) { - _bounce = 2; - sendMsgToGui(MSG_STOP_BOUNCE); - } - // - // check for end of song - // - if ((_seqTime.curTickPos >= song->len()) - && !(song->record() || _bounce || song->loop())) { - audioDriver->stopTransport(); - return; - } - - // - // check for loop end - // - if (state == PLAY && song->loop() && !_bounce && !extSyncFlag) { - unsigned n = rmark - _seqTime.startFrame() - (3 * frames); - if (n < frames) { - // loop end in current cycle - // adjust loop start so we get exact loop len - if (n > lmark) - n = 0; - state = LOOP1; - loopFrame = lmark - n; - audioDriver->seekTransport(loopFrame); - } - } - - Pos ppp(_seqTime.pos); - ppp += frames; - _seqTime.nextTickPos = ppp.tick(); - } - - // - // compute current controller values - // (automation) - // - TrackList* tl = song->tracks(); - if (state == PLAY || updateController) { - updateController = false; - for (iTrack it = tl->begin(); it != tl->end(); ++it) { - if ((*it)->isMidiTrack()) - continue; - AudioTrack* track = (AudioTrack*)(*it); - if (!track->autoRead()) - continue; - CtrlList* cl = track->controller(); - for (iCtrl i = cl->begin(); i != cl->end(); ++i) { - Ctrl* c = i->second; - float val = c->value(_seqTime.startFrame()).f; - if (val != c->curVal().f) { - c->setCurVal(val); - c->setChanged(true); - } - } - } - } - - //----------------------------------------- - // process midi - //----------------------------------------- - - SynthIList* sl = song->syntis(); - { - MidiOutPortList* ol = song->midiOutPorts(); - MidiInPortList* mil = song->midiInPorts(); - MidiTrackList* mtl = song->midis(); - - for (iMidiInPort i = mil->begin(); i != mil->end(); ++i) - (*i)->beforeProcess(); - for (iMidiTrack i = mtl->begin(); i != mtl->end(); ++i) - (*i)->processMidi(&_seqTime); - for (iMidiOutPort i = ol->begin(); i != ol->end(); ++i) - (*i)->processMidi(&_seqTime); - for (iSynthI i = sl->begin(); i != sl->end(); ++i) - (*i)->processMidi(&_seqTime); - - for (iMidiInPort i = mil->begin(); i != mil->end(); ++i) - (*i)->afterProcess(); - } - - //----------------------------------------- - // process audio - //----------------------------------------- - - GroupList* gl = song->groups(); - InputList* il = song->inputs(); - WaveTrackList* wl = song->waves(); - - for (iAudioInput i = il->begin(); i != il->end(); ++i) - (*i)->process(); - for (iSynthI i = sl->begin(); i != sl->end(); ++i) - (*i)->process(); - - _curReadIndex = -1; - if (isPlaying() && !wl->empty()) { - Fifo1* fifo = audioPrefetch->getFifo(); - if (fifo->count() == 0) { - printf("MusE::Audio: fifo underflow at 0x%x\n", _seqTime.curTickPos); - audioPrefetch->msgTick(); - } - else { - bool msg = true; - do { - unsigned fifoPos = fifo->readPos(); - if (fifoPos == _seqTime.startFrame()) { - _curReadIndex = fifo->readIndex(); - break; - } - else { - if (msg) { - printf("Muse::Audio: wrong prefetch data 0x%x, expected 0x%x\n", - fifoPos, _seqTime.startFrame()); - msg = false; - } - if (fifoPos > _seqTime.startFrame()) { - // discard whole prefetch buffer - seek(_seqTime.pos + frames); - break; - } - fifo->pop(); // discard buffer - } - } while (fifo->count()); - } - } - for (iWaveTrack i = wl->begin(); i != wl->end(); ++i) { - if (song->bounceTrack != *i) - (*i)->process(); - } - for (iAudioGroup i = gl->begin(); i != gl->end(); ++i) - (*i)->process(); - - OutputList* aol = song->outputs(); - for (iAudioOutput i = aol->begin(); i != aol->end(); ++i) - (*i)->process(); - - if (_bounce == 1 && song->bounceTrack && song->bounceTrack->type() == Track::WAVE) - song->bounceTrack->process(); - - if (isPlaying()) { - if (!freewheel()) { - // - // consume prefetch buffer - // - if (_curReadIndex != -1) { - audioPrefetch->getFifo()->pop(); - audioPrefetch->msgTick(); // wakeup prefetch thread - } - } - if (recording && (_bounce == 0 || _bounce == 1)) - audioWriteback->trigger(); - _seqTime.pos += frames; - _seqTime.curTickPos = _seqTime.nextTickPos; - } - } - -//--------------------------------------------------------- -// processMsg -//--------------------------------------------------------- - -void Audio::processMsg() - { -// printf("---msg %d\n", msg->id); - switch(msg->id) { - case AUDIO_ROUTEADD: - addRoute(msg->route); - break; - case AUDIO_ROUTEREMOVE: - removeRoute(msg->route); - break; - case AUDIO_SET_CHANNELS: - msg->track->setChannels(msg->ival); - break; - case AUDIO_ADDPLUGIN: - ((AudioTrack*)msg->track)->addPlugin(msg->plugin, msg->ival, - msg->iival); - break; - - case AUDIO_SET_SEG_SIZE: - segmentSize = msg->ival; - AL::sampleRate = msg->iival; -#if 0 //TODO - audioOutput.segmentSizeChanged(); - for (int i = 0; i < mixerGroups; ++i) - audioGroups[i].segmentSizeChanged(); - for (iSynthI ii = synthiInstances.begin(); ii != synthiInstances.end();++ii) - (*ii)->segmentSizeChanged(); -#endif - break; - - case SEQM_INIT_DEVICES: - initMidiDevices(); - break; - case SEQM_RESET_DEVICES: - resetMidiDevices(); - break; - case SEQM_ADD_TEMPO: - case SEQM_REMOVE_TEMPO: - case SEQM_SET_GLOBAL_TEMPO: - case SEQM_SET_TEMPO: - song->processMsg(msg); - if (isPlaying()) - _seqTime.pos.setTick(_seqTime.curTickPos); - break; - - case SEQM_IDLE: - idle = msg->a; - break; - - case AUDIO_ADDMIDIPLUGIN: - ((MidiTrackBase*)msg->track)->addPlugin(msg->mplugin, msg->ival); - break; - default: - song->processMsg(msg); - break; - } - } - -//--------------------------------------------------------- -// seek -// - called before start play -// - initiated from gui -//--------------------------------------------------------- - -void Audio::seek(const Pos& p) - { - _seqTime.pos.setFrame(p.frame()); - _seqTime.curTickPos = _seqTime.pos.tick(); - _seqTime.nextTickPos = _seqTime.curTickPos; - updateController = true; - - loopPassed = true; // for record loop mode - if (state != LOOP2 && !freewheel()) - audioPrefetch->msgSeek(_seqTime.pos.frame()); - - MidiOutPortList* ol = song->midiOutPorts(); - for (iMidiOutPort i = ol->begin(); i != ol->end(); ++i) - (*i)->seek(_seqTime.curTickPos, _seqTime.pos.frame()); - SynthIList* sl = song->syntis(); - for (iSynthI i = sl->begin(); i != sl->end(); ++i) - (*i)->seek(_seqTime.curTickPos, _seqTime.pos.frame()); - sendMsgToGui(MSG_SEEK); - } - -//--------------------------------------------------------- -// startRolling -//--------------------------------------------------------- - -void Audio::startRolling() - { - if (song->record()) { - startRecordPos = _seqTime.pos; - recording = true; - TrackList* tracks = song->tracks(); - for (iTrack i = tracks->begin(); i != tracks->end(); ++i) { - if ((*i)->isMidiTrack()) - continue; - ((AudioTrack*)(*i))->recEvents()->clear(); - } - } - state = PLAY; - sendMsgToGui(MSG_PLAY); - - MidiOutPortList* ol = song->midiOutPorts(); - for (iMidiOutPort i = ol->begin(); i != ol->end(); ++i) - (*i)->start(); - SynthIList* sl = song->syntis(); - for (iSynthI i = sl->begin(); i != sl->end(); ++i) - (*i)->start(); - } - -//--------------------------------------------------------- -// stopRolling -// execution environment: realtime thread -//--------------------------------------------------------- - -void Audio::stopRolling() - { - state = STOP; - MidiOutPortList* ol = song->midiOutPorts(); - for (iMidiOutPort i = ol->begin(); i != ol->end(); ++i) - (*i)->stop(); - SynthIList* sl = song->syntis(); - for (iSynthI i = sl->begin(); i != sl->end(); ++i) - (*i)->stop(); - - recording = false; - endRecordPos = _seqTime.pos; - _bounce = 0; - sendMsgToGui(MSG_STOP); - seek(_seqTime.pos); - } - -//--------------------------------------------------------- -// sendMsgToGui -//--------------------------------------------------------- - -void Audio::sendMsgToGui(char c) - { - write(sigFd, &c, 1); - } - diff --git a/muse/muse/audio.h b/muse/muse/audio.h deleted file mode 100644 index 5d52ee0f..00000000 --- a/muse/muse/audio.h +++ /dev/null @@ -1,306 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AUDIO_H__ -#define __AUDIO_H__ - -#include "thread.h" -#include "midievent.h" -#include "route.h" -#include "al/tempo.h" -#include "al/pos.h" -#include "event.h" -#include "ctrl.h" - -namespace AL { - class TimeSignature; - }; - -using AL::Xml; -class SndFile; -class PluginI; -class MidiPluginI; -class SynthI; -class AudioDriver; -class Track; -class AudioTrack; -class Part; -class Event; -class MidiEvent; -class Event; -class MidiTrack; -class MidiSeq; -class MidiTrackBase; - -//--------------------------------------------------------- -// GuiMessages -// messages from sequencer to GUI -// used in Audio::sendMsgToGui(char c) -//--------------------------------------------------------- - -#define MSG_STOP '0' -#define MSG_PLAY '1' -#define MSG_RECORD '2' -#define MSG_SEEK 'G' -#define MSG_JACK_SHUTDOWN 'S' -#define MSG_START_BOUNCE 'f' -#define MSG_STOP_BOUNCE 'F' -#define MSG_GRAPH_CHANGED 'C' -#define MSG_ALSA_CHANGED 'P' - -//--------------------------------------------------------- -// AudioMsgId -// this are the messages send from the GUI thread to -// the midi thread -//--------------------------------------------------------- - -enum { - SEQM_ADD_TRACK, - SEQM_REMOVE_TRACK, - SEQM_MOVE_TRACK, - SEQM_ADD_PART, - SEQM_REMOVE_PART, - SEQM_CHANGE_PART, - SEQM_ADD_EVENT, - SEQM_ADD_EVENTS, - SEQM_REMOVE_EVENT, - SEQM_CHANGE_EVENT, - SEQM_ADD_TEMPO, - SEQM_SET_TEMPO, - SEQM_REMOVE_TEMPO, - SEQM_ADD_SIG, - SEQM_REMOVE_SIG, - SEQM_SET_GLOBAL_TEMPO, - SEQM_UNDO, - SEQM_REDO, - SEQM_RESET_DEVICES, - SEQM_INIT_DEVICES, - // - AUDIO_ROUTEADD, - AUDIO_ROUTEREMOVE, - AUDIO_ADDPLUGIN, - AUDIO_ADDMIDIPLUGIN, - AUDIO_SET_SEG_SIZE, - AUDIO_SET_CHANNELS, - - MS_PROCESS, - MS_START, - MS_STOP, - MS_SET_RTC, - - SEQM_IDLE, - SEQM_ADD_CTRL, - SEQM_REMOVE_CTRL - }; - -extern const char* seqMsgList[]; // for debug - -//--------------------------------------------------------- -// Msg -//--------------------------------------------------------- - -struct AudioMsg : public ThreadMsg { // this should be an union - int serialNo; - SndFile* downmix; - Route route; - int ival; - int iival; - CVal cval1, cval2; - PluginI* plugin; - MidiPluginI* mplugin; - SynthI* synth; - Part* spart; - Part* dpart; - Track* track; - QList* el; - - const void *p1, *p2, *p3; - Event ev1, ev2; - char port, channel, ctrl; - int a, b, c; - Pos pos; - unsigned time; - }; - -class AudioOutput; - - -//--------------------------------------------------------- -// SeqTime -// timing information for sequencer cycle -//--------------------------------------------------------- - -extern unsigned int segmentSize; - -struct SeqTime { - unsigned lastFrameTime; // free running counter - - // transport values for current cycle: - Pos pos; // current play position - unsigned curTickPos; // pos at start of frame during play/record - unsigned nextTickPos; // pos at start of next frame during play/record - - unsigned startFrame() const { return pos.frame(); } - unsigned endFrame() const { return startFrame() + segmentSize; } - - //--------------------------------------------------------- - // tick2frame - // translate from tick to frameTime, this event has to - // be scheduled - //--------------------------------------------------------- - - unsigned tick2frame(unsigned tick) { - return AL::tempomap.tick2frame(tick) - pos.frame() + lastFrameTime + segmentSize; - } - unsigned frame2tick(unsigned frame) { - return AL::tempomap.frame2tick(frame - lastFrameTime + pos.frame()); - } - }; - -//--------------------------------------------------------- -// Audio -//--------------------------------------------------------- - -class Audio { - public: - enum State {STOP, START_PLAY, PLAY, LOOP1, LOOP2, SYNC, PRECOUNT}; - - private: - bool recording; // recording is active - bool idle; // do nothing in idle mode - bool _freewheel; - int _bounce; - bool loopPassed; - unsigned loopFrame; // startframe of loop if in LOOP mode - unsigned lmark; // left loop position - unsigned rmark; // right loop position - - SeqTime _seqTime; - Pos startRecordPos; - Pos endRecordPos; - - int _curReadIndex; - - State state; - bool updateController; - - AudioMsg* volatile msg; - int fromThreadFdw, fromThreadFdr; // message pipe - - int sigFd; // pipe fd for messages to gui - - bool filterEvent(const MidiEvent* event, int type, bool thru); - - void startRolling(); - void stopRolling(); - - void collectEvents(MidiTrack*, unsigned startTick, unsigned endTick); - void processMsg(); - void initMidiDevices(); - void resetMidiDevices(); - - public: - Audio(); - virtual ~Audio() {} - - void process(unsigned frames, int jackState); - bool sync(int state, unsigned frame); - void shutdown(); - - // transport: - bool start(); - void stop(); - void seek(const Pos& pos); - - bool isPlaying() const { return state == PLAY || state == LOOP1 || state == LOOP2; } - bool isRecording() const { return state == PLAY && recording; } - - //----------------------------------------- - // message interface - //----------------------------------------- - - void msgSeek(const Pos&); - void msgPlay(bool val); - - void msgRemoveTrack(Track*); - void msgRemoveTracks(); - void msgMoveTrack(Track*, Track*); - - void msgAddEvent(const Event&, Part*, bool u = true); - void msgAddEvents(QList* el, Part* part); - void msgDeleteEvent(const Event&, Part*, bool u = true); - void msgChangeEvent(const Event&, const Event&, Part*, bool u = true); - - void msgAddTempo(int tick, int tempo, bool doUndoFlag = true); - void msgSetTempo(int tick, int tempo, bool doUndoFlag = true); - void msgSetGlobalTempo(int val); - void msgDeleteTempo(int tick, int tempo, bool doUndoFlag = true); - void msgAddSig(int tick, const AL::TimeSignature&, bool doUndoFlag = true); - void msgRemoveSig(int tick, int z, int n, bool doUndoFlag = true); - void msgPanic(); - void sendMsg(AudioMsg*); - bool sendMessage(AudioMsg* m, bool doUndo); - void msgRoute(bool add, Route); - void msgRemoveRoute(Route); - void msgRemoveRoute1(Route); - void msgAddRoute(Route); - void msgAddRoute1(Route); - void msgAddPlugin(AudioTrack*, int idx, PluginI* plugin, bool prefader); - void msgAddMidiPlugin(MidiTrackBase*, int idx, MidiPluginI* plugin); - void msgSetMute(AudioTrack*, bool val); - void msgAddSynthI(SynthI* synth); - void msgRemoveSynthI(SynthI* synth); - void msgSetSegSize(int, int); - void msgSetChannels(AudioTrack*, int); - void msgSetOff(AudioTrack*, bool); - void msgUndo(); - void msgRedo(); - void msgLocalOff(); - void msgInitMidiDevices(); - void msgResetMidiDevices(); - void msgIdle(bool); - void msgBounce(); - void msgAddController(Track*, int id, unsigned time, CVal); - void msgRemoveController(Track*, int id, unsigned time); - void msgSetRtc(); - - const Pos& getStartRecordPos() const { return startRecordPos; } - const Pos& getEndRecordPos() const { return endRecordPos; } - - bool freewheel() const { return _freewheel; } - void setFreewheel(bool val); - - void sendMsgToGui(char c); - bool bounce() const { return _bounce != 0; } - MidiEvent* getMidiEvent(); - void popMidiEvent(); - int curReadIndex() const { return _curReadIndex; } - - const SeqTime* seqTime() const { return &_seqTime; } - }; - -extern int processAudio(unsigned long, void*); -extern void processAudio1(void*, void*); - -extern Audio* audio; -class AudioDriver; -extern AudioDriver* audioDriver; // current audio device in use -#endif - diff --git a/muse/muse/audiodev.h b/muse/muse/audiodev.h deleted file mode 100644 index 39521a03..00000000 --- a/muse/muse/audiodev.h +++ /dev/null @@ -1,57 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AUDIODEV_H__ -#define __AUDIODEV_H__ - -#include "driver.h" - -class MidiInPort; - -//--------------------------------------------------------- -// AudioDevice -//--------------------------------------------------------- - -class AudioDriver : public Driver { - - public: - AudioDriver() {} - virtual ~AudioDriver() {} - - virtual void start(int priority) = 0; - virtual bool restart() { return false; } // return true on error - virtual void stop () = 0; - virtual unsigned frameTime() const = 0; - virtual float* getBuffer(Port, unsigned long nframes) = 0; - virtual void registerClient() = 0; - virtual Port registerOutPort(const QString& name, bool midi) = 0; - virtual Port registerInPort(const QString& name, bool midi) = 0; - virtual int realtimePriority() const = 0; // return zero if not realtime - virtual void startTransport() = 0; - virtual void stopTransport() = 0; - virtual void seekTransport(unsigned frame) = 0; - virtual void setFreewheel(bool f) = 0; - virtual void graphChanged() {} - virtual void startMidiCycle(Port) {} - virtual void collectMidiEvents(MidiInPort*, Port) {} - }; - -#endif - diff --git a/muse/muse/audiogroup.cpp b/muse/muse/audiogroup.cpp deleted file mode 100644 index 7adc30e5..00000000 --- a/muse/muse/audiogroup.cpp +++ /dev/null @@ -1,47 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "audiogroup.h" -#include "al/xml.h" - -//--------------------------------------------------------- -// read -//--------------------------------------------------------- - -void AudioGroup::read(QDomNode node) - { - while (!node.isNull()) { - AudioTrack::readProperties(node); - node = node.nextSibling(); - } - } - - -//--------------------------------------------------------- -// write -//--------------------------------------------------------- - -void AudioGroup::write(Xml& xml) const - { - xml.stag("AudioGroup"); - AudioTrack::writeProperties(xml); - xml.etag("AudioGroup"); - } - diff --git a/muse/muse/audiogroup.h b/muse/muse/audiogroup.h deleted file mode 100644 index d9837c74..00000000 --- a/muse/muse/audiogroup.h +++ /dev/null @@ -1,46 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AUDIOGROUP_H__ -#define __AUDIOGROUP_H__ - -#include "audiotrack.h" - -//--------------------------------------------------------- -// AudioGroup -//--------------------------------------------------------- - -class AudioGroup : public AudioTrack { - Q_OBJECT - - public: - AudioGroup() : AudioTrack() {} - virtual TrackType type() const { return AUDIO_GROUP; } - virtual void read(QDomNode); - virtual void write(Xml&) const; - virtual bool hasAuxSend() const { return true; } - }; - -typedef QList GroupList; -typedef GroupList::iterator iAudioGroup; -typedef GroupList::const_iterator ciAudioGroup; - -#endif - diff --git a/muse/muse/audioinput.cpp b/muse/muse/audioinput.cpp deleted file mode 100644 index fe7c57bb..00000000 --- a/muse/muse/audioinput.cpp +++ /dev/null @@ -1,131 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "globals.h" -#include "audioinput.h" -#include "jackaudio.h" -#include "audio.h" - -//--------------------------------------------------------- -// AudioInput -//--------------------------------------------------------- - -AudioInput::AudioInput() - : AudioTrack() - { - // set Default for Input Ports: - _mute = muteDefault(); - _channels = 0; - setChannels(2); - // - // buffers are allocated from AudioTrack() - // and not needed by AudioInput which uses - // the JACK supplied buffers - for (int i = 0; i < MAX_CHANNELS; ++i) { - if (buffer[i]) { - free(buffer[i]); - buffer[i] = 0; - } - } - } - -//--------------------------------------------------------- -// ~AudioInput -//--------------------------------------------------------- - -AudioInput::~AudioInput() - { - for (int i = 0; i < _channels; ++i) { - if (!jackPort(i).isZero()) - audioDriver->unregisterPort(jackPort(i)); - } - // AudioInput does not own buffers (they are from JACK) - // make sure ~AudioTrack() does not delete them: - for (int i = 0; i < MAX_CHANNELS; ++i) - buffer[i] = 0; - } - -//--------------------------------------------------------- -// write -//--------------------------------------------------------- - -void AudioInput::write(Xml& xml) const - { - xml.stag("AudioInput"); - AudioTrack::writeProperties(xml); - xml.etag("AudioInput"); - } - -//--------------------------------------------------------- -// read -//--------------------------------------------------------- - -void AudioInput::read(QDomNode node) - { - for (;!node.isNull(); node = node.nextSibling()) { - AudioTrack::readProperties(node); - } - setName(name()); // allocate jack ports - } - -//--------------------------------------------------------- -// setChannels -//--------------------------------------------------------- - -void AudioInput::setChannels(int n) - { - if (n == _channels) - return; - AudioTrack::setChannels(n); - } - -//--------------------------------------------------------- -// setName -//--------------------------------------------------------- - -void AudioInput::setName(const QString& s) - { - Track::setName(s); - for (int i = 0; i < channels(); ++i) { - if (!jackPort(i).isZero()) { - char buffer[128]; - snprintf(buffer, 128, "%s-%d", _name.toAscii().data(), i); - if (!jackPort(i).isZero()) - audioDriver->setPortName(jackPort(i), buffer); - } - } - } - -//--------------------------------------------------------- -// collectInputData -// if buffer contains silence, set bufferEmpty to true -//--------------------------------------------------------- - -void AudioInput::collectInputData() - { - bufferEmpty = false; - for (int ch = 0; ch < channels(); ++ch) { - Port port = jackPort(ch); - if (!port.isZero()) - buffer[ch] = audioDriver->getBuffer(port, segmentSize); - } - } - - diff --git a/muse/muse/audioinput.h b/muse/muse/audioinput.h deleted file mode 100644 index 9982daf1..00000000 --- a/muse/muse/audioinput.h +++ /dev/null @@ -1,53 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AUDIOINPUT_H__ -#define __AUDIOINPUT_H__ - -#include "audiotrack.h" - -//--------------------------------------------------------- -// AudioInput -//--------------------------------------------------------- - -class AudioInput : public AudioTrack { - Q_OBJECT - - void collectInputData(); - - public: - AudioInput(); - virtual ~AudioInput(); - virtual TrackType type() const { return AUDIO_INPUT; } - - virtual void read(QDomNode); - virtual void write(Xml&) const; - virtual void setName(const QString& s); - virtual void setChannels(int n); - virtual bool hasAuxSend() const { return true; } - virtual bool muteDefault() const { return true; } - }; - -typedef QList InputList; -typedef InputList::iterator iAudioInput; -typedef InputList::const_iterator ciAudioInput; - -#endif - diff --git a/muse/muse/audiooutput.cpp b/muse/muse/audiooutput.cpp deleted file mode 100644 index e4937a74..00000000 --- a/muse/muse/audiooutput.cpp +++ /dev/null @@ -1,191 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "audiooutput.h" -#include "jackaudio.h" -#include "audio.h" -#include "globals.h" -#include "song.h" -#include "ticksynth.h" - -//--------------------------------------------------------- -// AudioOutput -//--------------------------------------------------------- - -AudioOutput::AudioOutput() - : AudioTrack() - { - _channels = 0; - setChannels(2); - - // - // buffers are allocated from AudioTrack() - // and not needed by AudioOutput which uses - // the JACK supplied buffers - - for (int i = 0; i < MAX_CHANNELS; ++i) { - if (buffer[i]) { - free(buffer[i]); - buffer[i] = 0; - } - } - } - -//--------------------------------------------------------- -// ~AudioOutput -//--------------------------------------------------------- - -AudioOutput::~AudioOutput() - { - for (int i = 0; i < _channels; ++i) { - if (!jackPort(i).isZero()) - audioDriver->unregisterPort(jackPort(i)); - } - // AudioOutput does not own buffers (they are from JACK) - // make sure ~AudioTrack() does not delete them: - for (int i = 0; i < MAX_CHANNELS; ++i) - buffer[i] = 0; - } - -//--------------------------------------------------------- -// write -//--------------------------------------------------------- - -void AudioOutput::write(Xml& xml) const - { - xml.stag("AudioOutput"); - AudioTrack::writeProperties(xml); - xml.etag("AudioOutput"); - } - -//--------------------------------------------------------- -// read -//--------------------------------------------------------- - -void AudioOutput::read(QDomNode node) - { - while (!node.isNull()) { - AudioTrack::readProperties(node); - node = node.nextSibling(); - } - setName(name()); // allocate jack ports - } - -//--------------------------------------------------------- -// setChannels -//--------------------------------------------------------- - -void AudioOutput::setChannels(int n) - { - if (n == _channels) - return; - AudioTrack::setChannels(n); - } - -//--------------------------------------------------------- -// silence -//--------------------------------------------------------- - -void AudioOutput::silence(unsigned n) - { - for (int i = 0; i < channels(); ++i) { - if (!jackPort(i).isZero()) - buffer[i] = audioDriver->getBuffer(jackPort(i), n); - else { - printf("PANIC: silence(): no buffer from audio driver\n"); - abort(); - return; - } - } - for (int i = 0; i < channels(); ++i) - memset(buffer[i], 0, n * sizeof(float)); - } - -//--------------------------------------------------------- -// setName -//--------------------------------------------------------- - -void AudioOutput::setName(const QString& s) - { - Track::setName(s); - for (int i = 0; i < channels(); ++i) { - if (!jackPort(i).isZero()) { - char buffer[128]; - snprintf(buffer, 128, "%s-%d", _name.toAscii().data(), i); - audioDriver->setPortName(jackPort(i), buffer); - } - } - } - -//--------------------------------------------------------- -// stopRecording -// gui context -//--------------------------------------------------------- - -void AudioOutput::stopRecording(const Pos& /*s*/, const Pos& /*e*/) - { - SndFile* sf = recFile(); - if (sf) - delete sf; // close - setRecFile(0); - setRecordFlag(false); - } - -//--------------------------------------------------------- -// process -// synthesize segmentSize frames at buffer offset "offset" -// current frame position is "pos" -//--------------------------------------------------------- - -void AudioOutput::process() - { - for (int c = 0; c < channels(); ++c) - buffer[c] = audioDriver->getBuffer(jackPort(c), segmentSize); - - AudioTrack::process(); - - if (bufferEmpty) { - for (int c = 0; c < channels(); ++c) - memset(buffer[c], 0, sizeof(float) * segmentSize); - } - - int n = segmentSize; - if (audio->isRecording() && recordFlag() && _recFile) { - // bounce to file - if (audio->freewheel()) - _recFile->write(channels(), buffer, n); - else - putFifo(channels(), n, buffer); - } - -#if 0 - if (audioClickFlag && song->click() && metronome) { - float b[n]; - float* bp[1]; - bp[0] = b; - metronome->getData(pos, 1, n, bp); - for (unsigned i = 0; i < n; ++i) { - for (int k = 0; k < channels(); ++k) - buffer[k][i] += b[i] * audioClickVolume; - } - } -#endif - } - diff --git a/muse/muse/audiooutput.h b/muse/muse/audiooutput.h deleted file mode 100644 index 8e0c5161..00000000 --- a/muse/muse/audiooutput.h +++ /dev/null @@ -1,55 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AUDIOOUTPUT_H__ -#define __AUDIOOUTPUT_H__ - -#include "audiotrack.h" - -//--------------------------------------------------------- -// AudioOutput -//--------------------------------------------------------- - -class AudioOutput : public AudioTrack { - Q_OBJECT - - public: - AudioOutput(); - virtual ~AudioOutput(); - virtual TrackType type() const { return AUDIO_OUTPUT; } - - virtual void read(QDomNode); - virtual void write(Xml&) const; - virtual void setName(const QString& s); - virtual void setChannels(int n); - - virtual bool canRecord() const { return true; } - virtual void stopRecording(const AL::Pos&, const AL::Pos&); - - void silence(unsigned); - virtual void process(); - }; - -typedef QList OutputList; -typedef OutputList::iterator iAudioOutput; -typedef OutputList::const_iterator ciAudioOutput; - -#endif - diff --git a/muse/muse/audioprefetch.cpp b/muse/muse/audioprefetch.cpp deleted file mode 100644 index d433c1ac..00000000 --- a/muse/muse/audioprefetch.cpp +++ /dev/null @@ -1,199 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include - -#include "audioprefetch.h" -#include "globals.h" -#include "track.h" -#include "song.h" -#include "audio.h" -#include "sync.h" -#include "fifo.h" - -enum { PREFETCH_TICK, PREFETCH_SEEK }; - -//--------------------------------------------------------- -// PrefetchMsg -//--------------------------------------------------------- - -struct PrefetchMsg : public ThreadMsg { - int pos; - }; - -AudioPrefetch* audioPrefetch; - -//--------------------------------------------------------- -// AudioPrefetch -//--------------------------------------------------------- - -AudioPrefetch::AudioPrefetch(const char* name) - : Thread(name) - { - seekPos = ~0; - writePos = ~0; - seekCount = 0; - } - -//--------------------------------------------------------- -// readMsg -//--------------------------------------------------------- - -static void readMsgP(void* p, void*) - { - AudioPrefetch* at = (AudioPrefetch*)p; - at->readMsg1(sizeof(PrefetchMsg)); - } - -//--------------------------------------------------------- -// start -//--------------------------------------------------------- - -void AudioPrefetch::start(int priority) - { - clearPollFd(); - addPollFd(toThreadFdr, POLLIN, ::readMsgP, this, 0); - Thread::start(priority); - } - -//--------------------------------------------------------- -// ~AudioPrefetch -//--------------------------------------------------------- - -AudioPrefetch::~AudioPrefetch() - { - } - -//--------------------------------------------------------- -// processMsg -//--------------------------------------------------------- - -void AudioPrefetch::processMsg1(const void* m) - { - const PrefetchMsg* msg = (PrefetchMsg*)m; - switch(msg->id) { - case PREFETCH_TICK: - prefetch(false); - seekPos = ~0; // invalidate cached last seek position - break; - - case PREFETCH_SEEK: - // process seek in background - seek(msg->pos); - break; - - default: - printf("AudioPrefetch::processMsg1: unknown message\n"); - } - } - -//--------------------------------------------------------- -// msgTick -// trigger audio prefetch with next buffer position -//--------------------------------------------------------- - -void AudioPrefetch::msgTick() - { - if (fifo.count() < FIFO_BUFFER/3) { - PrefetchMsg msg; - msg.id = PREFETCH_TICK; - while (sendMsg1(&msg, sizeof(msg))) { - printf("AudioPrefetch::msgTick(): send failed!\n"); - } - } - } - -//--------------------------------------------------------- -// msgSeek -// called from audio RT context -//--------------------------------------------------------- - -void AudioPrefetch::msgSeek(unsigned samplePos) - { - // - // optimize unecessary seeks; seekPos is invalidated on - // first prefetch tick - // - if (samplePos == seekPos) - return; - - //q_atomic_increment(&seekCount); - ++seekCount; - - PrefetchMsg msg; - msg.id = PREFETCH_SEEK; - msg.pos = samplePos; - msg.serialNo = 0; - while (sendMsg1(&msg, sizeof(msg))) { - printf("AudioPrefetch::msgSeek::sleep(1)\n"); - sleep(1); - } - } - -//--------------------------------------------------------- -// prefetch -//--------------------------------------------------------- - -void AudioPrefetch::prefetch(bool seekFlag) - { - WaveTrackList* tl = song->waves(); - if (tl->empty()) - return; - while (fifo.count() < FIFO_BUFFER) { - if (song->loop() && !audio->bounce() && !extSyncFlag) { - unsigned rpos = song->rPos().frame(); - unsigned n = rpos - writePos; - // - // dont loop if we are beyond right marker - // - if (writePos <= rpos && (n < segmentSize)) { - unsigned lpos = song->lPos().frame(); - // adjust loop start so we get exact loop len - if (n > lpos) - n = 0; - writePos = lpos - n; - } - } - int widx = fifo.setWritePos(writePos); - for (iWaveTrack it = tl->begin(); it != tl->end(); ++it) { - WaveTrack* track = *it; - if (!seekFlag && ((audio->isRecording() && track->recordFlag()) || !audio->isPlaying())) - continue; - track->fetchData(writePos, segmentSize, widx); - } - writePos += segmentSize; - fifo.push(); - } - } - -//--------------------------------------------------------- -// seek -//--------------------------------------------------------- - -void AudioPrefetch::seek(unsigned seekTo) - { - fifo.clear(); - writePos = seekTo; - prefetch(true); - seekPos = seekTo; - // q_atomic_decrement(&seekCount); - --seekCount; - } - diff --git a/muse/muse/audioprefetch.h b/muse/muse/audioprefetch.h deleted file mode 100644 index 14e8096c..00000000 --- a/muse/muse/audioprefetch.h +++ /dev/null @@ -1,54 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AUDIOPREFETCH_H__ -#define __AUDIOPREFETCH_H__ - -#include "thread.h" -#include "fifo.h" - -//--------------------------------------------------------- -// AudioPrefetch -//--------------------------------------------------------- - -class AudioPrefetch : public Thread { - Fifo1 fifo; - unsigned writePos; - unsigned seekPos; // remember last seek to optimize seeks - - virtual void processMsg1(const void*); - void prefetch(bool seekFlag); - void seek(unsigned pos); - volatile int seekCount; - - public: - AudioPrefetch(const char* name); - ~AudioPrefetch(); - virtual void start(int); - - void msgTick(); - void msgSeek(unsigned pos); - bool seekDone() const { return seekCount == 0; } - Fifo1* getFifo() { return &fifo; } - }; - -extern AudioPrefetch* audioPrefetch; - -#endif diff --git a/muse/muse/audiotrack.cpp b/muse/muse/audiotrack.cpp deleted file mode 100644 index 04d215f2..00000000 --- a/muse/muse/audiotrack.cpp +++ /dev/null @@ -1,582 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "al/al.h" -#include "al/dsp.h" -#include "al/xml.h" -#include "track.h" -#include "event.h" -#include "song.h" -#include "audio.h" -#include "wave.h" -#include "auxplugin.h" -#include "pipeline.h" -#include "audiodev.h" -#include "gconfig.h" - -//--------------------------------------------------------- -// AudioTrack -//--------------------------------------------------------- - -AudioTrack::AudioTrack() - : Track() - { - _tt = AL::FRAMES; - _prefader = false; - _prePipe = new Pipeline(); - _postPipe = new Pipeline(); - _recFile = 0; - _channels = 0; - bufferEmpty = false; - setChannels(1); - - // - // add two managed standard controller: - // volume and pan - // - Ctrl* c; - c = new Ctrl(AC_VOLUME, "Volume"); - c->setType(Ctrl::INTERPOLATE | Ctrl::LOG); - c->setRange(pow(10.0f, config.minSlider*0.05f), pow(10.0f, config.maxSlider*0.05f)); - - addController(c); - c = new Ctrl(AC_PAN, "Pan"); - c->setRange(-1.0f, +1.0f); - addController(c); - - for (int i = 0; i < MAX_CHANNELS; ++i) - posix_memalign((void**)(buffer + i), 16, sizeof(float) * segmentSize); - } - -//--------------------------------------------------------- -// ~AudioTrack -//--------------------------------------------------------- - -AudioTrack::~AudioTrack() - { - foreach(PluginI* plugin, *_prePipe) - delete plugin; - foreach(PluginI* plugin, *_postPipe) - delete plugin; - delete _prePipe; - delete _postPipe; - for (int i = 0; i < MAX_CHANNELS; ++i) { - if (buffer[i]) - free(buffer[i]); - } - } - -//--------------------------------------------------------- -// newPart -//--------------------------------------------------------- - -Part* AudioTrack::newPart(Part*, bool /*clone*/) - { - return 0; - } - -//--------------------------------------------------------- -// addPlugin -// idx = -1 append -// plugin = 0 remove plugin -//--------------------------------------------------------- - -void AudioTrack::addPlugin(PluginI* plugin, int idx, bool pre) - { - Pipeline* pipe = pre ? _prePipe : _postPipe; - if (plugin == 0) { - PluginI* oldPlugin = (*pipe)[idx]; - if (oldPlugin) { - int controller = oldPlugin->plugin()->parameter(); - for (int i = 0; i < controller; ++i) { - int id = genACnum(idx, i, pre); - removeController(id); - } - pipe->removeAt(idx); - } - } - else { - if (idx == -1) - idx = pipe->size(); - pipe->insert(idx, plugin); - int ncontroller = plugin->plugin()->parameter(); - for (int i = 0; i < ncontroller; ++i) { - int id = genACnum(idx, i, pre); - QString name(plugin->getParameterName(i)); - double min, max; - plugin->range(i, &min, &max); - Ctrl* cl = getController(id); - //printf("Plugin name: %s id:%d\n",name.toAscii().data(), id); - if (cl == 0) { - cl = new Ctrl(id, name); - cl->setRange(min, max); - float defaultValue = plugin->defaultValue(i); - cl->setDefault(defaultValue); - cl->setCurVal(defaultValue); - addController(cl); - } - cl->setRange(min, max); - cl->setName(name); - plugin->setParam(i, cl->curVal().f); - plugin->setControllerList(cl); - } - } - _preAux.clear(); - _postAux.clear(); - foreach(PluginI* pi, *_prePipe) { - if (pi->plugin() == auxPlugin) - _preAux.append((AuxPluginIF*)(pi->pluginIF(0))); - } - foreach(PluginI* pi, *_postPipe) { - if (pi->plugin() == auxPlugin) - _postAux.append((AuxPluginIF*)(pi->pluginIF(0))); - } - } - -//--------------------------------------------------------- -// plugin -//--------------------------------------------------------- - -PluginI* AudioTrack::plugin(int idx, bool prefader) const - { - Pipeline* pipe = prefader ? _prePipe : _postPipe; - return (*pipe)[idx]; - } - -//--------------------------------------------------------- -// addAuxSend -//--------------------------------------------------------- - -void AudioTrack::addAuxSend(int n) - { - if (n >= NUM_AUX) { - printf("too many aux sends (>%d)\n", n); - n = NUM_AUX; - } - for (int i = 0; i < n; ++i) { - Ctrl* c = getController(AC_AUX + i); - if (c) - continue; - QString s("AuxSend-"); - s += QString("%1").arg(i+1); - Ctrl* ctrl = new Ctrl(AC_AUX + i, s); - ctrl->setRange(pow(10.0f, config.minSlider*0.05f), pow(10.0f, config.maxSlider*0.05f)); - addController(ctrl); - - c = getController(AC_AUX_PAN + i); - if (c) - continue; - s = ("AuxSendPan-"); - s += QString("%1").arg(i+1); - ctrl = new Ctrl(AC_AUX_PAN + i, s); - ctrl->setRange(-1.0f, +1.0f); - addController(ctrl); - } - } - -//--------------------------------------------------------- -// AudioTrack::writeProperties -//--------------------------------------------------------- - -void AudioTrack::writeProperties(Xml& xml) const - { - Track::writeProperties(xml); - foreach (PluginI* plugin, *_prePipe) - plugin->writeConfiguration(xml, true); - foreach (PluginI* plugin, *_postPipe) - plugin->writeConfiguration(xml, false); - } - -//--------------------------------------------------------- -// AudioTrack::readProperties -//--------------------------------------------------------- - -bool AudioTrack::readProperties(QDomNode node) - { - QDomElement e = node.toElement(); - QString tag(e.tagName()); - if (tag == "plugin") { - PluginI* pi = new PluginI(this); - bool prefader; - if (pi->readConfiguration(node, &prefader)) { - delete pi; - } - else { - // insert plugin into first free slot - // of plugin rack - addPlugin(pi, -1, prefader); - } - } - else if (tag == "prefader") - _prefader = e.text().toInt(); - else if (tag == "recfile") - readRecfile(node.firstChild()); - else - return Track::readProperties(node); - return false; - } - -//--------------------------------------------------------- -// setAutoRead -//--------------------------------------------------------- - -void AudioTrack::setAutoRead(bool val) - { - if (_autoRead != val) { - _autoRead = val; - emit autoReadChanged(_autoRead); - } - } - -//--------------------------------------------------------- -// setAutoWrite -//--------------------------------------------------------- - -void AudioTrack::setAutoWrite(bool val) - { - if (_autoWrite != val) { - _autoWrite = val; - emit autoWriteChanged(_autoWrite); - } - } - -//--------------------------------------------------------- -// isMute -//--------------------------------------------------------- - -bool AudioTrack::isMute() const - { - if (_solo) - return false; - if (song->solo()) - return true; - return _mute; - } - -//--------------------------------------------------------- -// setSolo -//--------------------------------------------------------- - -bool AudioTrack::setSolo(bool val) - { - if (Track::setSolo(val)) { - if (mute()) - resetMeter(); - return true; - } - return false; - } - -//--------------------------------------------------------- -// readRecfile -//--------------------------------------------------------- - -void AudioTrack::readRecfile(QDomNode node) - { - QString path; - int channels = 2; - int format = SF_FORMAT_WAV | SF_FORMAT_PCM_16; - while (!node.isNull()) { - QDomElement e = node.toElement(); - QString tag(e.nodeName()); - if (tag == "path") - path = e.text(); - else if (tag == "channels") - channels = e.text().toInt(); - else if (tag == "format") - format = e.text().toInt(); - else - printf("MusE:readRecfile: unknown tag %s\n", e.tagName().toAscii().data()); - node = node.nextSibling(); - } - if (QFile::exists(path)) { - setRecFile(SndFile::getWave(path, true)); - } - else { - setRecFile(new SndFile(path)); - recFile()->setFormat(format, channels, AL::sampleRate); - if (recFile()->openWrite()) { - fprintf(stderr, "create wave file(%s) failed: %s\n", - path.toAscii().data(), recFile()->strerror().toAscii().data()); - delete _recFile; - _recFile = 0; - } - } - } - -//--------------------------------------------------------- -// putFifo -//--------------------------------------------------------- - -void AudioTrack::putFifo(int channels, unsigned long n, float** bp) - { - if (fifo.put(channels, n, bp, audio->seqTime()->pos.frame())) { - printf("AudioTrack(%s)::putFifo(): overrun\n", name().toAscii().data()); - } - } - -//--------------------------------------------------------- -// setMute -//--------------------------------------------------------- - -bool AudioTrack::setMute(bool f) - { - if (Track::setMute(f)) { - resetAllMeter(); - return true; - } - return false; - } - -//--------------------------------------------------------- -// setOff -//--------------------------------------------------------- - -bool AudioTrack::setOff(bool val) - { - if (Track::setOff(val)) { - resetAllMeter(); - return true; - } - return false; - } - -//--------------------------------------------------------- -// setPrefader -//--------------------------------------------------------- - -void AudioTrack::setPrefader(bool val) - { - _prefader = val; - if (!_prefader && isMute()) - resetAllMeter(); - } - -//--------------------------------------------------------- -// record -// called from audio writeback task -//--------------------------------------------------------- - -void AudioTrack::record() - { - float* recBuffer[_channels]; - - if (fifo.get(_channels, segmentSize, recBuffer)) { - printf("AudioTrack(%s)::record():: fifo underflow\n", - name().toAscii().data()); - return; - } - if (_recFile) { - _recFile->write(_channels, recBuffer, segmentSize); - } - else { - printf("AudioTrack(%s)::record(): no recFile\n", - name().toAscii().data()); - } - } - -//--------------------------------------------------------- -// setChannels -//--------------------------------------------------------- - -void AudioTrack::setChannels(int n) - { - if (n > MAX_CHANNELS) { - fprintf(stderr, "AudioTrack::setChannels(%d): too many channels(>%d)!\n", - n, MAX_CHANNELS); - n = MAX_CHANNELS; - } - Track::setChannels(n); - if (_prePipe) - _prePipe->setChannels(n); - if (_postPipe) - _postPipe->setChannels(n); - } - -//--------------------------------------------------------- -// startRecording -//--------------------------------------------------------- - -void AudioTrack::startRecording() - { - if (!recordFlag()) - return; - if (!_recFile) - _recFile = SndFile::createRecFile(_channels); - _recFile->openWrite(); - if (debugMsg) - printf("AudioTrack::startRecording: create internal file %s\n", - _recFile->finfo()->filePath().toAscii().data()); - } - -//--------------------------------------------------------- -// process -// this is called only once per cycle -//--------------------------------------------------------- - -void AudioTrack::process() - { - bufferEmpty = false; - if (_off) { - bufferEmpty = true; - return; - } - collectInputData(); - _prePipe->apply(channels(), segmentSize, buffer); - - if (_prefader) { - for (int i = 0; i < channels(); ++i) - setMeter(i, AL::dsp->peak(buffer[i], segmentSize, 0.0)); - } - - // - // TODO: we can only handle 1 or 2 channels - // - double vol[2]; - double _volume = _mute ? 0.0 : ctrlVal(AC_VOLUME).f; - double _pan = ctrlVal(AC_PAN).f; - vol[0] = _volume * (1.0 - _pan); - vol[1] = _volume * (1.0 + _pan); - - for (int i = 0; i < channels(); ++i) - AL::dsp->applyGainToBuffer(buffer[i], segmentSize, vol[i]); - - _postPipe->apply(channels(), segmentSize, buffer); - - if (!_prefader) { - for (int i = 0; i < channels(); ++i) - setMeter(i, AL::dsp->peak(buffer[i], segmentSize, 0.0)); - } - } - -//--------------------------------------------------------- -// add -// add audio buffer to track buffer -//--------------------------------------------------------- - -void AudioTrack::add(int srcChannels, float** srcBuffer) - { - int dstChannels = channels(); - float** dstBuffer = buffer; - - if (srcChannels == dstChannels) { - for (int c = 0; c < dstChannels; ++c) - AL::dsp->mix(dstBuffer[c], srcBuffer[c], segmentSize); - } - // - // mix mono to stereo - // - else if (srcChannels == 1 && dstChannels == 2) { - float* dp1 = dstBuffer[0]; - float* dp2 = dstBuffer[1]; - float* sp = srcBuffer[0]; - for (unsigned k = 0; k < segmentSize; ++k) { - dp1[k] += sp[k]; - dp2[k] += sp[k]; - } - } - // - // downmix stereo to mono - // - else if (srcChannels == 2 && dstChannels == 1) { - float* sp1 = srcBuffer[0]; - float* sp2 = srcBuffer[1]; - float* dp = dstBuffer[0]; - for (unsigned k = 0; k < segmentSize; ++k) - dp[k] += sp1[k] + sp2[k]; - } - } - -//--------------------------------------------------------- -// copy -// add audio buffer to track buffer -//--------------------------------------------------------- - -bool AudioTrack::copy(int srcChannels, float** srcBuffer) - { - int dstChannels = channels(); - - if (srcChannels == dstChannels) { - for (int c = 0; c < dstChannels; ++c) - AL::dsp->cpy(buffer[c], srcBuffer[c], segmentSize); - } - else if (srcChannels == 1 && dstChannels == 2) { - float* sp = srcBuffer[0]; - for (unsigned k = 0; k < segmentSize; ++k) { - float val = *sp++; - *(buffer[0] + k) = val; - *(buffer[1] + k) = val; - } - } - else if (srcChannels == 2 && dstChannels == 1) { - float* sp1 = srcBuffer[0]; - float* sp2 = srcBuffer[1]; - float* dp = buffer[0]; - for (unsigned k = 0; k < segmentSize; ++k) - dp[k] = sp1[k] + sp2[k]; - } - return true; - } - -//--------------------------------------------------------- -// collectInputData -// if buffer contains silence, set bufferEmpty to true -//--------------------------------------------------------- - -void AudioTrack::collectInputData() - { - bufferEmpty = false; - bool copyFlag = true; - foreach (const Route& r, _inRoutes) { - float** ptr; - int ch; - if (r.src.type == RouteNode::TRACK) { - AudioTrack* track = (AudioTrack*)r.src.track; - if (track->off() || song->bounceTrack == track) - continue; - ptr = track->buffer; - ch = track->channels(); - } - else if (r.src.type == RouteNode::AUXPLUGIN) { - ch = r.src.plugin->channel(); - ptr = r.src.plugin->buffer(); - } - else { - printf("AudioTrack::collectInputRoutes(): bad route type\n"); - return; - } - if (copyFlag) { - copy(ch, ptr); - copyFlag = false; - } - else - add(ch, ptr); - } - if (copyFlag) { - // - // no input, - // fill with silence - // - for (int i = 0; i < channels(); ++i) - memset(buffer[i], 0, sizeof(float) * segmentSize); - bufferEmpty = true; - } - } - diff --git a/muse/muse/audiotrack.h b/muse/muse/audiotrack.h deleted file mode 100644 index 1dc77d65..00000000 --- a/muse/muse/audiotrack.h +++ /dev/null @@ -1,105 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AUDIOTRACK_H__ -#define __AUDIOTRACK_H__ - -#include "fifo.h" -#include "track.h" - -class Pipeline; -class SndFile; -class PluginI; -class AuxPluginIF; - -//--------------------------------------------------------- -// AudioTrack -//--------------------------------------------------------- - -class AudioTrack : public Track { - Q_OBJECT - - bool _prefader; // prefader metering - Pipeline* _prePipe; - Pipeline* _postPipe; - QList _preAux; - QList _postAux; - - void readRecfile(QDomNode); - - protected: - float* buffer[MAX_CHANNELS]; // this buffer is filled by process() - - bool bufferEmpty; // set by process() to optimize - // data flow - - SndFile* _recFile; - Fifo fifo; // fifo -> _recFile - - virtual bool setMute(bool val); - virtual bool setOff(bool val); - virtual bool setSolo(bool val); - virtual void collectInputData(); - - private slots: - virtual void setAutoRead(bool); - virtual void setAutoWrite(bool); - - public: - AudioTrack(); - virtual ~AudioTrack(); - - bool readProperties(QDomNode); - void writeProperties(Xml&) const; - - virtual Part* newPart(Part*p=0, bool clone=false); - - SndFile* recFile() const { return _recFile; } - void setRecFile(SndFile* sf) { _recFile = sf; } - - virtual void setChannels(int n); - - virtual bool isMute() const; - - void putFifo(int channels, unsigned long n, float** bp); - - void record(); - virtual void startRecording(); - virtual void stopRecording(const AL::Pos&, const AL::Pos&) {} - - bool prefader() const { return _prefader; } - void addAuxSend(int n); - void setPrefader(bool val); - Pipeline* prePipe() { return _prePipe; } - Pipeline* postPipe() { return _postPipe; } - - void addPlugin(PluginI* plugin, int idx, bool pre); - PluginI* plugin(int idx, bool prefader) const; - - virtual bool hasAuxSend() const { return false; } - virtual void process(); - void add(int channel, float**); - bool copy(int channel, float**); - bool isBufferEmpty() const { return bufferEmpty; } - QList preAux() const { return _preAux; } - QList postAux() const { return _postAux; } - }; - -#endif diff --git a/muse/muse/audiowriteback.cpp b/muse/muse/audiowriteback.cpp deleted file mode 100644 index 391c89bd..00000000 --- a/muse/muse/audiowriteback.cpp +++ /dev/null @@ -1,101 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include - -#include "audiowriteback.h" -#include "globals.h" -#include "audio.h" -#include "song.h" - -AudioWriteback* audioWriteback; - -//--------------------------------------------------------- -// AudioWriteback -//--------------------------------------------------------- - -AudioWriteback::AudioWriteback(const char* name) - : Thread(name) - { - counter = 0; - } - -//--------------------------------------------------------- -// readMsg -//--------------------------------------------------------- - -static void readMsgP(void* p, void*) - { - AudioWriteback* at = (AudioWriteback*)p; - at->readMsg1(1); - } - -//--------------------------------------------------------- -// start -//--------------------------------------------------------- - -void AudioWriteback::start(int priority) - { - clearPollFd(); - addPollFd(toThreadFdr, POLLIN, ::readMsgP, this, 0); - Thread::start(priority); - } - -//--------------------------------------------------------- -// processMsg -//--------------------------------------------------------- - -void AudioWriteback::processMsg1(const void*) - { - while (counter) { - //q_atomic_decrement(&counter); - --counter; - - OutputList* ol = song->outputs(); - if (!ol->empty()) { - AudioOutput* ao = ol->front(); - if (ao->recordFlag()) - ao->record(); - } - WaveTrackList* tl = song->waves(); - for (iWaveTrack t = tl->begin(); t != tl->end(); ++t) { - WaveTrack* track = *t; - if (track->recordFlag()) - track->record(); - } - } - } - -//--------------------------------------------------------- -// trigger -// trigger audio writeback loop -//--------------------------------------------------------- - -void AudioWriteback::trigger() - { - // q_atomic_increment(&counter); - ++counter; - if (counter < 2) { - if (sendMsg1("0", 1)) { - printf("AudioWriteback::msgTick(): send failed!\n"); - } - } - } - diff --git a/muse/muse/audiowriteback.h b/muse/muse/audiowriteback.h deleted file mode 100644 index 000ff2f1..00000000 --- a/muse/muse/audiowriteback.h +++ /dev/null @@ -1,44 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AUDIOWRITEBACK_H__ -#define __AUDIOWRITEBACK_H__ - -#include "thread.h" - -//--------------------------------------------------------- -// AudioWriteback -//--------------------------------------------------------- - -class AudioWriteback : public Thread { - virtual void processMsg1(const void*); - volatile int counter; - - public: - AudioWriteback(const char* name); - ~AudioWriteback() {} - virtual void start(int); - void trigger(); - bool active() const { return counter > 0; } - }; - -extern AudioWriteback* audioWriteback; - -#endif diff --git a/muse/muse/auxplugin.cpp b/muse/muse/auxplugin.cpp deleted file mode 100644 index ad203c84..00000000 --- a/muse/muse/auxplugin.cpp +++ /dev/null @@ -1,190 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "globaldefs.h" -#include "auxplugin.h" -#include "gconfig.h" - -AuxPlugin* auxPlugin; - -//--------------------------------------------------------- -// AuxPlugin -//--------------------------------------------------------- - -AuxPlugin::AuxPlugin() - : Plugin(0) - { - } - -//--------------------------------------------------------- -// range -//--------------------------------------------------------- - -void AuxPlugin::range(int idx, double* min, double* max) const - { - switch(idx) { - case 0: // volume - *min = pow(10.0f, config.minSlider * 0.05f); - *max = pow(10.0f, config.maxSlider * 0.05f); - break; - case 1: // pan - *min = -1.0; - *max = 1.0; - break; - default: - printf("AuxPlugin::bad index\n"); - break; - } - } - -//--------------------------------------------------------- -// createPIF -//--------------------------------------------------------- - -PluginIF* AuxPlugin::createPIF(PluginI* pi) - { - AuxPluginIF* pif = new AuxPluginIF(pi); - pif->init(pi->plugin()); - return pif; - } - -//--------------------------------------------------------- -// isLog -//--------------------------------------------------------- - -bool AuxPlugin::isLog(int idx) const - { - return idx == 0 ? true : false; - } - -//--------------------------------------------------------- -// isBool -//--------------------------------------------------------- - -bool AuxPlugin::isBool(int) const - { - return false; - } - -//--------------------------------------------------------- -// isInt -//--------------------------------------------------------- - -bool AuxPlugin::isInt(int) const - { - return false; - } - -//--------------------------------------------------------- -// defaultValue -//--------------------------------------------------------- - -double AuxPlugin::defaultValue(int idx) const - { - return idx == 0 ? -70.0 : 0.0; - } - -//--------------------------------------------------------- -// AuxPluginIF -//--------------------------------------------------------- - -AuxPluginIF::AuxPluginIF(PluginI* pi) - : PluginIF(pi) - { - for (int i = 0; i < MAX_CHANNELS; ++i) - posix_memalign((void**)(_buffer + i), 16, sizeof(float) * segmentSize); - } - -//--------------------------------------------------------- -// AuxPluginIF -//--------------------------------------------------------- - -AuxPluginIF::~AuxPluginIF() - { - for (int i = 0; i < MAX_CHANNELS; ++i) { - if (_buffer[i]) - free(_buffer[i]); - } - } - -//--------------------------------------------------------- -// apply -//--------------------------------------------------------- - -void AuxPluginIF::apply(unsigned nframes, float** s, float** /*dst*/) - { - // TODO: optimize copy away if there is no route - double vol[2]; - vol[0] = volume * (1.0 - pan); - vol[1] = volume * (1.0 + pan); - - for (int i = 0; i < pluginI->channel(); ++i) { - float* dst = _buffer[i]; - float* src = s[i]; - double v = vol[i]; - for (unsigned k = 0; k < nframes; ++k) - *dst++ = (*src++) * v; - } - } - -//--------------------------------------------------------- -// getParameterName -//--------------------------------------------------------- - -const char* AuxPluginIF::getParameterName(int i) const - { - if (i == 0) - return "Volume"; - else - return "Pan"; - } - -//--------------------------------------------------------- -// setParam -//--------------------------------------------------------- - -void AuxPluginIF::setParam(int i, double val) - { - if (i == 0) - volume = val; - else - pan = val; - } - -//--------------------------------------------------------- -// param -//--------------------------------------------------------- - -float AuxPluginIF::param(int i) const - { - return i == 0 ? volume : pan; - } - -//--------------------------------------------------------- -// init -//--------------------------------------------------------- - -bool AuxPluginIF::init(Plugin* p) - { - volume = p->defaultValue(0); - pan = p->defaultValue(1); - return true; - } - diff --git a/muse/muse/auxplugin.h b/muse/muse/auxplugin.h deleted file mode 100644 index cb9c2e4e..00000000 --- a/muse/muse/auxplugin.h +++ /dev/null @@ -1,84 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AUXPLUGIN_H__ -#define __AUXPLUGIN_H__ - -#include "globaldefs.h" -#include "plugin.h" - -//--------------------------------------------------------- -// AuxPlugin -//--------------------------------------------------------- - -class AuxPlugin : public Plugin { - - public: - AuxPlugin(); - - virtual QString label() const { return "Aux"; } - virtual QString name() const { return "Aux"; } - virtual unsigned long id() const { return 0; } - virtual QString maker() const { return ""; } - virtual QString copyright() const { return ""; } - - void* instantiate() { return 0; } - virtual void range(int i, double*, double*) const; - virtual int parameter() const { return 2; } - virtual int inports() const { return 100; } - virtual int outports() const { return 100; } - - virtual bool inPlaceCapable() const { return true; } - virtual PluginIF* createPIF(PluginI*); - - virtual bool isLog(int k) const; - virtual bool isBool(int k) const; - virtual bool isInt(int k) const; - virtual double defaultValue(int) const; - }; - -//--------------------------------------------------------- -// AuxPluginIF -//--------------------------------------------------------- - -class AuxPluginIF : public PluginIF { - double volume; - double pan; - float* _buffer[MAX_CHANNELS]; // this buffer is filled by apply() - // _volume and _pan is applied - - public: - AuxPluginIF(PluginI* pi); - virtual ~AuxPluginIF(); - - virtual void apply(unsigned nframes, float** src, float** dst); - virtual void activate() {} - virtual void deactivate() {} - virtual void cleanup() {} - virtual const char* getParameterName(int i) const; - virtual void setParam(int i, double val); - virtual float param(int i) const; - bool init(Plugin*); - float** buffer() { return _buffer; } - int channel() const { return pluginInstance()->channel(); } - }; - -extern AuxPlugin* auxPlugin; -#endif diff --git a/muse/muse/canvas.cpp b/muse/muse/canvas.cpp deleted file mode 100644 index c445c446..00000000 --- a/muse/muse/canvas.cpp +++ /dev/null @@ -1,1187 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "canvas.h" -#include "al/al.h" -#include "al/sig.h" -#include "gconfig.h" -#include "song.h" -#include "icons.h" -#include "audio.h" -#include "partdrag.h" -#include "muse.h" -#include "midictrl.h" -#include "tlswidget.h" -#include "part.h" -#include "gui.h" - -#include - -static const int partLabelHeight = 13; -static const int handleWidth = 5; -static const int partBorderWidth = 2; - -enum { HIT_NOTHING, HIT_TRACK, HIT_PART, HIT_SUBTRACK }; - -//--------------------------------------------------------- -// PartCanvas -//--------------------------------------------------------- - -PartCanvas::PartCanvas() - : TimeCanvas(TIME_CANVAS) - { - setFocusPolicy(Qt::StrongFocus); - state = S_NORMAL; - _drawBackground = true; - lselected = -1; - starty = -1; - setMarkerList(song->marker()); - rubberBand=NULL; - connect(song, SIGNAL(markerChanged(int)), SLOT(markerChanged(int))); - } - -//--------------------------------------------------------- -// markerChanged -//--------------------------------------------------------- - -void PartCanvas::markerChanged(int val) - { - if (val == Song::MARKER_CUR) - updateRuler(); - } - -//--------------------------------------------------------- -// drawWavePart -// y0 - start of track -// th - track height -// from - x pixel coordinate start drawing -// to - x end drawing -// -// redraw area is QRect(from, y0, to-from, th) -//--------------------------------------------------------- - -void PartCanvas::drawWavePart(QPainter& p, Part* wp, int y0, int th, int from, int to) - { - int h = th/2; - int y = y0 + 1 + h; - int cc = th % 2 ? 0 : 1; - - const Pos pos(pix2pos(from)); - EventList* el = wp->events(); - for (iEvent e = el->begin(); e != el->end(); ++e) { - Event event = e->second; - SndFileR f = event.sndFile(); - if (f.isNull()) - continue; - unsigned channels = f.channels(); - if (channels == 0) { - printf("drawWavePart: channels==0! %s\n", f.finfo()->fileName().toLatin1().data()); - continue; - } - - int x1 = pos2pix(event.pos() + *wp); - int x2 = pos2pix(event.end() + *wp); - int w = x2 - x1; - if (w == 0) - continue; - - int samples = event.lenFrame(); - int xScale = (samples + w/2)/w; - int frame = pos.frame() - wp->frame() - - event.pos().frame() + event.spos(); - - if (h < 20) { - // - // combine multi channels into one waveform - // - for (int i = from; i < to; i++) { - SampleV sa[channels]; - f.read(sa, xScale, frame); - frame += xScale; - int peak = 0; - int rms = 0; - for (unsigned k = 0; k < channels; ++k) { - if (sa[k].peak > peak) - peak = sa[k].peak; - rms += sa[k].rms; - } - rms /= channels; - peak = (peak * (th-2)) >> 9; - rms = (rms * (th-2)) >> 9; - p.setPen(QColor(Qt::darkGray)); - p.drawLine(i, y - peak - cc, i, y + peak); - p.setPen(QColor(Qt::black)); - p.drawLine(i, y - rms - cc, i, y + rms); - } - } - else { - // - // multi channel display - // - h = th / (channels * 2); - int cc = th % (channels * 2) ? 0 : 1; - for (int i = from; i < to; i++) { - y = y0 + 1 + h; - SampleV sa[channels]; - f.read(sa, xScale, frame); - frame += xScale; - for (unsigned k = 0; k < channels; ++k) { - // peak = (sa[k].peak * h) / 256; - int peak = (sa[k].peak * (h - 1)) >> 8; - int rms = (sa[k].rms * (h - 1)) >> 8; - p.setPen(QColor(Qt::darkGray)); - p.drawLine(i, y - peak - cc, i, y + peak); - p.setPen(QColor(Qt::black)); - p.drawLine(i, y - rms - cc, i, y + rms); - y += 2 * h; - } - } - } - } - } - -//--------------------------------------------------------- -// paint -//--------------------------------------------------------- - -void PartCanvas::paint(QPainter& p, QRect r) - { - //printf("canvas paint %d %d %d %d\n", r.x(), r.y(), r.width(), r.height()); - QFont f = font(); - f.setPointSize(8); - p.setFont(f); - - int from = r.x(); - int to = from + r.width(); - - TrackList* tl = song->tracks(); - ArrangerTrack* at = 0; - for (iTrack i = tl->begin(); i != tl->end(); ++i) { - Track* t = *i; - at = &(t->arrangerTrack); - if (at->tw == 0) - continue; - - int y = at->tw->y(); // - splitWidth/2; - int h = at->tw->height() - 1; - - PartList* pl = t->parts(); - for (iPart ip = pl->begin(); ip != pl->end(); ++ip) { - Part* part = ip->second; - int x1 = pos2pix(*part); - int x2 = pos2pix(part->end()); - int len = x2 - x1; - - if (x2 <= from) - continue; - if (x1 > to) - break; - - QRect pr(x1, y, len, h - partBorderWidth); - bool clone = part->isClone(); - - QPen pen(QColor(100, 100, 100), partBorderWidth, clone ? Qt::DashLine : Qt::SolidLine); - QBrush brush(Qt::SolidPattern); - QLinearGradient lg(0, pr.y() - wpos.y()-r.y(), - 0, pr.y()+ 2*pr.height() -wpos.y()-r.y()); - lg.setColorAt(0, part->selected()?Qt::gray - :config.partColors[part->colorIndex()]); - lg.setColorAt(1, Qt::white); - QBrush brushLG(lg); - if (part->selected()) { - pen.setColor(config.partColors[part->colorIndex()]); - brush.setColor(config.selectPartBg); - p.setBrush(brushLG); - } - else if (part->mute()) { - pen.setColor(Qt::red); - brush.setColor(Qt::gray); - p.setBrush(brush); - } - else { - //brush.setColor(config.partColors[part->colorIndex()]); - p.setBrush(brushLG); - } - p.setPen(pen); - // - // we want to draw the rectangle without transformation - // to get equal border width horizontal and vertical - // - QRect rr(p.matrix().mapRect(pr).adjusted(1, 0, -1, 0)); - p.save(); - p.resetMatrix(); - p.drawRect(rr); - p.restore(); - - int xx1 = x1; - if (xx1 < from) - xx1 = from; - int xx2 = x2; - if (xx2 > to) - xx2 = to; - if (t->isMidiTrack()) - drawMidiPart(p, part, y, h, xx1, xx2); - else if (t->type() == Track::WAVE) - drawWavePart(p, part, y, h, xx1, xx2); - int yy = y + h - partLabelHeight; - p.drawText(x1 + 3, yy, len - 6, - partLabelHeight-1, Qt::AlignVCenter | Qt::AlignLeft, - part->name()); - - // redraw border - p.save(); - p.resetMatrix(); - p.setPen(pen); - p.setBrush(Qt::NoBrush); - p.drawRect(rr); - p.restore(); - } - - if (i != tl->begin()) { - p.setPen(QPen(Qt::lightGray, trackSeparator, Qt::SolidLine)); - p.drawLine(from, y + yTrackOffset, to, y + yTrackOffset); - } - for (iArrangerTrack i = t->subtracks.begin(); i != t->subtracks.end(); ++i) { - at = *i; - if (at->tw == 0) - continue; - TLSWidget* tls = (TLSWidget*)(at->tw); - int y = tls->y(); - // int h = tls->height(); - p.setPen(QPen(Qt::lightGray, trackSeparator, Qt::SolidLine)); - p.drawLine(from, y + yTrackOffset, to, y + yTrackOffset); - y += yTrackOffset + trackSeparator; - QPoint off(0, y); - p.translate(off); - // tls->paint(p, r); - tls->paint(p, QRect(from, 0, to-from, tls->height() - (yTrackOffset + trackSeparator))); - p.translate(-off); - } - } - if (at && at->tw) { - // draw last line - int y = at->tw->y() + at->tw->height() + yTrackOffset; - p.setPen(QPen(Qt::lightGray, trackSeparator, Qt::SolidLine)); - p.drawLine(from, y, to, y); - } - if (state == S_DRAG4 || state == S_DRAG1 || state == S_DRAG2 || state == S_DRAG5) { - p.setBrush(Qt::NoBrush); - p.setPen(QPen(QColor(Qt::red), partBorderWidth)); - p.drawRect(drag); - } - } - -//--------------------------------------------------------- -// drawMidiPart -//--------------------------------------------------------- - -void PartCanvas::drawMidiPart(QPainter& p, Part* mp, int y, int th, int from, int to) - { - p.setPen(Qt::black); - - EventList* events = mp->events(); - // iEvent ito(events->lower_bound(to)); - - iEvent ito = events->end(); -// int pos = pos2pix(*mp); - - if (config.canvasShowPartType & 2) { // show events - for (iEvent i = events->lower_bound(from); i != ito; ++i) { - EventType type = i->second.type(); - if ( - ((config.canvasShowPartEvent & 1) && (type == Note)) - || ((config.canvasShowPartEvent & 2) && (type == PAfter)) - || ((config.canvasShowPartEvent & 4) && (type == Controller)) - || ((config.canvasShowPartEvent &16) && (type == CAfter)) - || ((config.canvasShowPartEvent &64) && (type == Sysex || type == Meta)) - ) { - int t = pos2pix(*mp + i->second.pos()); - p.drawLine(t, y + 1, t, y + th - 2); - } - } - } - - else { // show Cakewalk Style - for (iEvent i = events->begin(); i != ito; ++i) { - if (i->second.type() != Note) - continue; - int x1 = pos2pix(*mp + i->second.pos()); - int x2 = pos2pix(*mp + i->second.end()); - - if (x1 > to) - break; - if (x2 < from) - continue; - - if (x2 > to) // clip to drawing area - x2 = to; - if (x1 < from) - x1 = from; - int pitch = i->second.pitch(); - int yy = y + th - (pitch * th / 127); - p.drawLine(x1, yy, x2, yy); - } - } - } - -//--------------------------------------------------------- -// searchPart -//--------------------------------------------------------- - -int PartCanvas::searchPart(const QPoint& pp) - { - Pos tp(pix2pos(pp.x())); - QPoint p(tp.tick(), pp.y() + wpos.y()); - -// printf("searchPart %d %d\n", p.x(), p.y()); - track = 0; - part = 0; - at = 0; - int yp = p.y(); - if (yp < 0) - return HIT_NOTHING; - - TrackList* tl = song->tracks(); - iTrack i; - int y1, y2; - for (i = tl->begin(); i != tl->end(); ++i) { - track = *i; - QWidget* tw = track->arrangerTrack.tw; - if (tw == 0) { - printf(" invisible Track\n"); - continue; - } - y1 = tw->y(); - y2 = y1 + tw->height(); - if (yp >= y1 && yp < y2) { -// printf(" track <%s> %d - %d\n", track->name().toLatin1().data(), y1, y2); - break; - } - for (iArrangerTrack i = track->subtracks.begin(); i != track->subtracks.end(); ++i) { - at = *i; - if (at->tw == 0) { - printf("----empty subtrack?\n"); - break; - } - y1 = at->tw->y(); - y2 = y1 + at->tw->height(); - if (yp >= y1 && yp < y2) { - return HIT_SUBTRACK; - } - } - } - if (i == tl->end()) { - track = 0; - at = 0; - return HIT_NOTHING; - } - - unsigned x = p.x(); - PartList* pl = track->parts(); - for (iPart ip = pl->begin(); ip != pl->end(); ++ip) { - part = ip->second; - if (x >= part->tick() && x < part->endTick()) { - ppos = mapx(part->tick()); - psize = rmapx(part->lenTick()); -// printf(" part\n"); - return HIT_PART; - } - } - part = 0; - return HIT_TRACK; - } - -//--------------------------------------------------------- -// contextMenu -//--------------------------------------------------------- - -void PartCanvas::contextMenu(const QPoint& pos) - { - QMenu* pop = new QMenu(widget()); - QAction* a; - if (part) { - pop->addAction(getAction("cut", this)); - pop->addAction(getAction("copy", this)); - pop->addSeparator(); - a = pop->addAction(tr("Rename")); - a->setData("rename"); - - QMenu* cp = pop->addMenu(tr("Color")); - - // part color selection - for (int i = 0; i < NUM_PARTCOLORS; ++i) { - a = cp->addAction(partColorNames[i]); - a->setData(QString("color%1").arg(i)); - QPixmap pm(20, 20); - QPainter p(&pm); - p.fillRect(0, 0, 20, 20, config.partColors[i]); - a->setIcon(QIcon(pm)); - } - pop->addAction(getAction("delete", this)); - pop->addAction(getAction("scissor", this)); - pop->addAction(getAction("glue", this)); - a = getAction("declone", this); - a->setEnabled(part->isClone()); - pop->addAction(a); - if (track->type() == Track::MIDI) { - a = pop->addAction(tr("AutoFill...")); - a->setData("autofill"); - } - pop->addSeparator(); - if (track->type() == Track::MIDI) { - MidiTrack* track = (MidiTrack*)part->track(); - if (track->useDrumMap()) { - a = pop->addAction(*edit_drummsIcon, tr("drums")); - a->setData("editdrums"); - } - else { - a = pop->addAction(QIcon(":/xpm/piano.xpm"), tr("pianoroll")); - a->setData("editpiano"); - } - a = pop->addAction(*edit_listIcon, tr("miditracker")); - a->setData("miditracker"); - pop->addAction(getAction("listedit", this)); - } - else { - a = pop->addAction(*waveIcon, tr("wave edit")); - a->setData("waveedit"); - } - - a = pop->exec(mapToGlobal(pos)); - if (a) { - QString cmd = a->data().toString(); - if (cmd == "rename") - renamePart(part); - else if (cmd == "delete") - song->cmdRemovePart(part); - else if (cmd == "scissor") - splitPart(part, startDrag); - else if (cmd == "glue") - song->cmdGluePart(part); - else if (cmd == "cut") - cutPart(part); - else if (cmd == "copy") - copyPart(part); - else if (cmd == "editpiano") - emit startEditor(part, 0); - else if (cmd == "miditracker") - emit startEditor(part, 2); - else if (cmd == "listedit") - emit startEditor(part, 1); - else if (cmd == "drumedit") - emit startEditor(part, 3); - else if (cmd == "waveedit") - emit startEditor(part, 4); - else if (cmd == "declone") - declonePart(part); - else if (cmd == "autofill") { - bool ok; - int ticksM = AL::sigmap.ticksMeasure(part->tick()); - int n = QInputDialog::getInteger(this, - tr("MusE: Get auto fill loop len"), - tr("Measures: "), - part->fillLen() / ticksM, - 0, 16, 1, &ok); - if (ok) { - part->setFillLen(n * ticksM); - } - } - else if (cmd.startsWith("color")) { - int idx = cmd.mid(5).toInt(); - part->setColorIndex(idx); - widget()->update(); - } - else { - printf("unknown action <%s>\n", cmd.toLatin1().data()); - } - } - } - else { - for (int i = 0; i < TOOLS; ++i) { - if ((arrangerTools & (1 << i))==0) - continue; - a = getAction(toolList[i], this); - pop->addAction(a); - a->setCheckable(true); - a->setChecked((1 <exec(mapToGlobal(pos)); - if (a) - muse->setTool(a->data().toString()); - } - } - -//--------------------------------------------------------- -// mousePressEvent -//--------------------------------------------------------- - -void PartCanvas::mousePress(QMouseEvent* me) - { - if (state == S_SUBTRACK) { - ((TLSWidget*)(at->tw))->mouseRelease(); - state = S_NORMAL; - } - - QPoint pos(me->pos().x(), me->pos().y() - rulerHeight); - startDrag = pos; - int hit = searchPart(startDrag); - - if (hit == HIT_SUBTRACK) { - TLSWidget* w = (TLSWidget*)(at->tw); - int y = wpos.y() + pos.y() - w->y(); - w->mousePress(QPoint(pos.x(), y), me); - // propagate drag events to subtrack if left button pressed: - if (me->button() == Qt::LeftButton) - state = S_SUBTRACK; - return; - } - else if ( hit == HIT_NOTHING ) { // nothing here we put up a rubberband - rubberBandStartPos = me->pos(); - if (!rubberBand) - rubberBand = new QRubberBand(QRubberBand::Rectangle, this); - rubberBand->setGeometry(QRect(rubberBandStartPos, QSize())); - rubberBand->show(); - } - - if (button & Qt::RightButton) { - contextMenu(me->pos()); - return; - } - - QRect r1,r2; - QPoint pos2; - int xpos = 0, y = 0, len = 0, h = 0; - - if (hit == HIT_PART) { - h = track->arrangerTrack.tw->height(); - len = rmapx(part->lenTick()); - y = track->arrangerTrack.tw->y() - splitWidth/2; - xpos = mapx(part->tick()); - - r1 = QRect(xpos, y, handleWidth, h); - r2 = QRect(xpos + len - handleWidth, y, handleWidth, h); - pos2 = QPoint(pos.x(), pos.y() + wpos.y()); - } - - switch (_tool) { - case PencilTool: - if (r1.contains(pos2)) - state = S_START_DRAG1; - else if (r2.contains(pos2)) - state = S_START_DRAG2; - else - state = S_START_DRAG5; - ppos = pos2pix(pix2pos(startDrag.x()).downSnaped(raster())); - psize = pos2pix(pix2pos(ppos+1).upSnaped(raster())) - ppos; - startDragTime = QTime::currentTime(); - setCursor(); - break; - case RubberTool: - if (part) - song->cmdRemovePart(part); - break; - case GlueTool: - if (part) - song->cmdGluePart(part); - break; - case CutTool: - if (part) - splitPart(part, pos); - break; - case MuteTool: - if (part) { - part->setMute(!part->mute()); - widget()->update(); - } - break; - default: - if (hit == HIT_PART) { - QRect r3(xpos, y, len, h); - - if (r1.contains(pos2)) { - state = S_START_DRAG1; - } - else if (r2.contains(pos2)) { - state = S_START_DRAG2; - } - else if (r3.contains(pos2)) { - state = S_START_DRAG3; - bool add = keyState & Qt::ShiftModifier; - song->selectPart(part, add); - emit kbdMovementUpdate(track, part); - } - } - if (state == S_NORMAL) { - song->selectPart(0, false); // deselect all parts - emit kbdMovementUpdate(0, 0); // Tell arranger nothing is selected (Keyboard movement) - } - startDragTime = QTime::currentTime(); - setCursor(); - break; - } - } - -//--------------------------------------------------------- -// mouseMove -//--------------------------------------------------------- - -void PartCanvas::mouseMove(QPoint pos) - { - - if(rubberBand) - rubberBand->setGeometry(QRect(rubberBandStartPos, pos).normalized()); - - if (state == S_SUBTRACK) { - TLSWidget* w = (TLSWidget*)(at->tw); - int y = wpos.y() + pos.y() - w->y() - rulerHeight; - w->mouseMove(QPoint(pos.x(), y)); - return; - } - pos -= rCanvasA.topLeft(); - bool update = false; - int x = pos.x(); - int delta = startDrag.x() - x; - int t = startDragTime.msecsTo(QTime::currentTime()); - bool dragActive = (startDrag - pos).manhattanLength() > - QApplication::startDragDistance() - || t > QApplication::startDragTime(); - switch (state) { - case S_START_DRAG1: - if (dragActive) - state = S_DRAG1; - break; - case S_START_DRAG2: - if (dragActive) - state = S_DRAG2; - break; - case S_START_DRAG3: - if (dragActive) - state = S_DRAG3; - break; - case S_START_DRAG5: - if (dragActive) - state = S_DRAG5; - break; - case S_NORMAL: - { - searchPart(pos); - bool found = false; - if (part) { - int h = track->arrangerTrack.tw->height(); - int xpos = mapx(part->tick()); - int len = rmapx(part->lenTick()); - int y = track->arrangerTrack.tw->y(); - QRect r1(xpos, y, handleWidth, h); - QRect r2(xpos + len - handleWidth, y, handleWidth, h); - if (r1.contains(pos) || r2.contains(pos)) - found = true; - } - if (found) { - widget()->setCursor(Qt::SizeHorCursor); - } - else - setCursor(); - } - break; - default: - break; - } - if (!track) - return; - int y = track->arrangerTrack.tw->y(); // - splitWidth/2; - int ph = track->arrangerTrack.tw->height() - 1 - partBorderWidth; - if (state == S_DRAG1) { - // - // drag left edge of part - // - Pos p(pix2pos(ppos - delta)); - p.snap(raster()); - int x1 = pos2pix(p); - int x2 = pos2pix(part->end()); - int size = x2 - x1; - drag.setRect(x1, y, size, ph); - update = true; - } - else if (state == S_DRAG2) { - // - // drag right edge of part - // - int size = psize - delta; - if (size < 10) - size = 10; - int x2 = mapx(AL::sigmap.raster(part->tick() + rmapxDev(size), raster())); - drag.setRect(ppos, y, x2 - ppos, ph); - update = true; - } - else if (state == S_DRAG5) { - // - // draw part with pencil tool - // - int size = psize - delta; - if (size < 10) - size = 10; - int x2 = mapx(AL::sigmap.raster(mapxDev(ppos + size), raster())); - drag.setRect(ppos, y, x2 - ppos, ph); - update = true; - } - else if (state == S_DRAG3) { - // - // drag whole part - // - srcPart = part; - QDrag* d = 0; - if (track->type() == Track::MIDI) - d = new MidiPartDrag(srcPart, this); - else if (track->type() == Track::WAVE) - d = new AudioPartDrag(srcPart, this); - if (d) { - Qt::KeyboardModifiers kb = QApplication::keyboardModifiers(); - Qt::DropActions da = kb ? (Qt::MoveAction | Qt::CopyAction | Qt::LinkAction) : Qt::MoveAction; - song->startUndo(); - _dragOffset = startDrag.x() - rCanvasA.x() - ppos; - if (d->start(da) == Qt::MoveAction) - song->removePart(srcPart); - song->endUndo(0); - update = true; - } - state = S_NORMAL; - } - if (update) - widget()->update(); - } - -//--------------------------------------------------------- -// mouseRelease -//--------------------------------------------------------- - -void PartCanvas::mouseRelease(QMouseEvent* me) - { - - if (rubberBand) - rubberBand->hide(); // TODO robert, nothing more happens for the moment/ - - if (state == S_SUBTRACK) { - ((TLSWidget*)(at->tw))->mouseRelease(); - state = S_NORMAL; - return; - } - - QPoint pos(me->pos()); - int x = pos.x(); - int delta = startDrag.x() - x; - - if (state == S_DRAG1) { - int val = mapxDev(ppos-delta); - int pos = AL::sigmap.raster(val, raster()); - int size = part->tick() + part->lenTick() - pos; - emit partChanged(part, pos, size); - } - else if (state == S_DRAG2) { - int size = psize - delta; - int x1 = part->tick(); - int x2 = AL::sigmap.raster(part->tick() + rmapxDev(size), raster()); - - int step = AL::sigmap.rasterStep(x1, raster()); - if (x2 - x1 < step) - x2 = AL::sigmap.raster(x1 + step, raster()); - emit partChanged(part, x1, x2-x1); - } - else if (state == S_DRAG5) { - if (track && (track->type() == Track::MIDI || track->type() == Track::WAVE)) { - Part* part = track->newPart(); - Pos p1 = pix2pos(drag.x()).snaped(raster()); - Pos p2 = pix2pos(drag.x() + drag.width()).snaped(raster()); - part->setPos(p1); - part->setLenTick(p2.tick() - p1.tick()); - song->cmdAddPart(part); - } - else - widget()->update(); - } - state = S_NORMAL; - setCursor(); - } - -//--------------------------------------------------------- -// mouseDoubleClickEvent -//--------------------------------------------------------- - -void PartCanvas::mouseDoubleClick(QMouseEvent* me) - { - QPoint pos(me->pos().x(), me->pos().y() - rulerHeight); - if (_tool != PointerTool) { -//TD mousePress(pos); - return; - } - bool shift = keyState & Qt::ShiftModifier; - if (searchPart(pos) == HIT_PART) { - if (button == Qt::LeftButton && shift) { - renamePart(part); - } - else if (button == Qt::LeftButton) { - emit doubleClickPart(part); - } - } - // - // double click creates new part between left and - // right mark - - else if (track && track->isMidiTrack()) - emit createLRPart(track); - } - - -//--------------------------------------------------------- -// keyboardNavigate -//--------------------------------------------------------- - -void PartCanvas::keyboardNavigate(QKeyEvent*) - { - printf("nothing here go away\n"); - } - - -//--------------------------------------------------------- -// setCursor -//--------------------------------------------------------- - -void PartCanvas::setCursor() - { - switch(state) { - case S_START_DRAG1: - case S_START_DRAG2: - case S_DRAG1: - case S_DRAG2: - widget()->setCursor(Qt::SizeHorCursor); - return; - default: - break; - } - TimeCanvas::setCursor(); - } - -//--------------------------------------------------------- -// declonePart -//--------------------------------------------------------- - -void PartCanvas::declonePart(Part* oPart) - { - Track* track = oPart->track(); - Part* nPart = track->newPart(oPart, false); - - EventList* se = oPart->events(); - for (iEvent i = se->begin(); i != se->end(); ++i) { - Event oldEvent = i->second; -// Event ev = oldEvent.clone(); - nPart->addEvent(oldEvent); - } - oPart->deref(); - song->cmdChangePart(oPart, nPart); - } - -//--------------------------------------------------------- -// splitPart -//--------------------------------------------------------- - -void PartCanvas::splitPart(Part* part, const QPoint& p) - { - song->cmdSplitPart(part, pix2pos(p.x()).snaped(raster())); - } - -//--------------------------------------------------------- -// renamePart -//--------------------------------------------------------- - -void PartCanvas::renamePart(Part* part) - { - bool ok; - - QString s = QInputDialog::getText(this, - tr("MusE: Change Part Name"), - tr("PartName:"), - QLineEdit::Normal, - part->name(), - &ok - ); - if (ok && s != part->name()) { - song->startUndo(); - Part* newPart = new Part(*part); - newPart->setName(s); - song->cmdChangePart(part, newPart); - widget()->update(); - } - } - -//--------------------------------------------------------- -// cutPart -//--------------------------------------------------------- - -void PartCanvas::cutPart(Part* part) - { - copyPart(part); - song->cmdRemovePart(part); - } - -//--------------------------------------------------------- -// copyPart -//--------------------------------------------------------- - -void PartCanvas::copyPart(Part* part) - { - QBuffer buffer; - buffer.open(QIODevice::WriteOnly); - AL::Xml xml(&buffer); - part->write(xml); - buffer.close(); - QMimeData* mimeData = new QMimeData; - mimeData->setData(MidiPartDrag::type, buffer.buffer()); - QApplication::clipboard()->setMimeData(mimeData); - } - -//--------------------------------------------------------- -// dragEnter -//--------------------------------------------------------- - -void PartCanvas::dragEnter(QDragEnterEvent* event) - { -#if 0 - QPoint p(event->pos() - rCanvasA.topLeft()); - searchPart(p); - if (!track) { - event->ignore(); - return; - } - int srcIsMidi = -1; - const QMimeData* md = event->mimeData(); - - if (MidiPartDrag::canDecode(md)) - srcIsMidi = 1; - else if (AudioPartDrag::canDecode(md)) - srcIsMidi = 0; - else if (WavUriDrag::canDecode(md)) - srcIsMidi = 0; - - int dstIsMidi = -1; - if (track->type() == Track::MIDI) - dstIsMidi = 1; - else if (track->type() == Track::WAVE) - dstIsMidi = 0; - - if ((srcIsMidi == -1) || (dstIsMidi != srcIsMidi)) { - event->ignore(); - return; - } - Qt::KeyboardModifiers kb = event->keyboardModifiers(); - if (kb == 0 && (Qt::MoveAction & event->possibleActions())) { - event->setDropAction(Qt::MoveAction); - event->accept(); - } - else -#endif - event->acceptProposedAction(); - } - -//--------------------------------------------------------- -// dragMoveEvent -//--------------------------------------------------------- - -void PartCanvas::dragMove(QDragMoveEvent* event) - { - QPoint p(event->pos() - rCanvasA.topLeft()); - searchPart(p); - if (!track) { - event->acceptProposedAction(); - return; - } - Part* srcPart = 0; - QString filename; - - bool srcIsMidi; - const QMimeData* md = event->mimeData(); - if (MidiPartDrag::canDecode(md)) { - MidiPartDrag::decode(md, srcPart); - srcIsMidi = true; - } - else if (AudioPartDrag::canDecode(md)) { - AudioPartDrag::decode(md, srcPart); - srcIsMidi = false; - } - else if (WavUriDrag::canDecode(md)) { - WavUriDrag::decode(md, &filename); - if (state != S_NORMAL) { - state = S_NORMAL; - widget()->update(); - } - if (track->type() == Track::WAVE) - event->acceptProposedAction(); - else - event->ignore(); - return; - } - else { - state = S_NORMAL; - event->ignore(); - return; - } - - int dstIsMidi = -1; - if (track->type() == Track::MIDI) - dstIsMidi = 1; - else if (track->type() == Track::WAVE) - dstIsMidi = 0; - if ((srcIsMidi == -1) || (dstIsMidi != srcIsMidi)) { - if (state != S_NORMAL) { - state = S_NORMAL; - widget()->update(); - } - event->ignore(); - return; - } - Qt::KeyboardModifiers kb = event->keyboardModifiers(); - if (kb == 0 && (Qt::MoveAction & event->possibleActions())) { - event->setDropAction(Qt::MoveAction); - event->accept(); - } - else - event->acceptProposedAction(); - state = S_DRAG4; - ArrangerTrack* at = &(track->arrangerTrack); - - PartCanvas* cw = (PartCanvas*)event->source(); - QRect updateRect(drag); - - Pos pos; - if (cw) - pos = pix2pos(p.x() - cw->dragOffset()).snaped(raster()); - else - pos = pix2pos(p.x()).snaped(raster()); - drag.setRect( - pos2pix(pos), - at->tw->y(), - rmapx(srcPart->lenTick()), - at->tw->height() - 1 - partBorderWidth - ); - delete srcPart; - updateRect |= drag; - updateRect.adjust(-1, -1 + rCanvasA.y(), 1, 1 + rCanvasA.y()); - widget()->update(updateRect); - } - -//--------------------------------------------------------- -// dropEvent -//--------------------------------------------------------- - -void PartCanvas::drop(QDropEvent* event) - { - state = S_NORMAL; - Part* dstPart = 0; - QString filename; - - QPoint pos(event->pos() - rCanvasA.topLeft()); - const QMimeData* md = event->mimeData(); - if (WavUriDrag::canDecode(md)) { - WavUriDrag::decode(md, &filename); - int tick = AL::sigmap.raster(mapxDev(pos.x()), raster()); - Pos pos(tick); - muse->importWaveToTrack(filename, track, pos); - widget()->update(); - return; - } - - bool isMidi = false; - if (MidiPartDrag::canDecode(md)) { - MidiPartDrag::decode(md, dstPart); - isMidi = true; - } - else if (AudioPartDrag::canDecode(md)) - AudioPartDrag::decode(md, dstPart); - - searchPart(pos); - if (!dstPart) - return; - PartCanvas* cw = (PartCanvas*)event->source(); - bool needEndUndo = false; - if (!track) { - if (isMidi) - track = new MidiTrack(); - else - track = new WaveTrack(); - track->setDefaultName(); - if (cw) - song->insertTrack(track, -1); - else { - song->startUndo(); - song->insertTrack(track, -1); - needEndUndo = true; - } - } - else if (isMidi != track->isMidiTrack()) - return; - - dstPart->setTrack(track); - - // - // cw == 0 means that we are dropping to - // another application - - unsigned tick; - if (cw) - tick = AL::sigmap.raster(mapxDev(pos.x() - cw->dragOffset()), raster()); - else - tick = AL::sigmap.raster(mapxDev(pos.x()), raster()); - - dstPart->setTick(tick); - - Qt::DropAction da = event->proposedAction(); - Qt::KeyboardModifiers kb = event->keyboardModifiers(); - if (kb == 0 && (Qt::MoveAction & event->possibleActions())) - da = Qt::MoveAction; - - if ((da == Qt::LinkAction) && (cw == this)) { - delete dstPart->events(); - dstPart->clone(srcPart->events()); - event->setDropAction(Qt::LinkAction); - } - else if (da == Qt::MoveAction) - event->setDropAction(Qt::MoveAction); - else - event->setDropAction(Qt::CopyAction); - event->accept(); - if (cw || needEndUndo) - song->addPart(dstPart); - else - song->cmdAddPart(dstPart); - if (needEndUndo) - song->endUndo(0); - widget()->update(); - } - -//--------------------------------------------------------- -// dragLeave -//--------------------------------------------------------- - -void PartCanvas::dragLeave(QDragLeaveEvent*) - { - if (state == S_DRAG4) { - state = S_NORMAL; - widget()->update(); - } - } - diff --git a/muse/muse/canvas.h b/muse/muse/canvas.h deleted file mode 100644 index 911936c2..00000000 --- a/muse/muse/canvas.h +++ /dev/null @@ -1,124 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __CANVAS_H__ -#define __CANVAS_H__ - -#include "awl/tcanvas.h" -#include "widgets/tools.h" - -class CanvasWidget; -class Part; -class Track; -class ArrangerTrack; - -static const int HANDLE1 = 6; -static const int HANDLE2 = 3; - -//--------------------------------------------------------- -// PartCanvas -//--------------------------------------------------------- - -class PartCanvas : public TimeCanvas { - Q_OBJECT - - // DRAG1 drag part head - // DRAG2 drag part tail - // DRAG3 drag whole part - // DRAG4 Drag&Drop drag - // DRAG5 draw part with pencil tool - - enum { S_NORMAL, S_START_DRAG1, S_START_DRAG2, S_START_DRAG3, - S_DRAG1, S_DRAG2, S_DRAG3, - S_DRAG4, - S_START_DRAG5, S_DRAG5, // draw new Part - S_SUBTRACK - }; - int state; - QPoint startDrag; - int _dragOffset; - QRect drag; - QTime startDragTime; - unsigned ppos, psize; - - // values set by searchPart(): - Track* track; - Part* part; - ArrangerTrack* at; - - Part* srcPart; // src part of a drag/drop operation - - bool _drawBackground; - int selected; - int lselected; // in local coordinates - int starty; - int dragy; - - virtual void paint(QPainter&, QRect); - void drawWavePart(QPainter& p, Part* part, int, int, int, int); - void drawMidiPart(QPainter& p, Part* mp, int, int, int, int); - virtual void mousePress(QMouseEvent*); - virtual void mouseMove(QPoint); - virtual void mouseRelease(QMouseEvent*); - virtual void mouseDoubleClick(QMouseEvent*); - - virtual void dragEnter(QDragEnterEvent*); - virtual void drop(QDropEvent*); - virtual void dragMove(QDragMoveEvent*); - virtual void dragLeave(QDragLeaveEvent*); - - virtual void keyboardNavigate(QKeyEvent *e); - - - int searchPart(const QPoint& p); - - void declonePart(Part* part); - void renamePart(Part*); - void splitPart(Part*, const QPoint&); - void cutPart(Part*); - void copyPart(Part*); - - void setCursor(); - int dragOffset() const { return _dragOffset; } - void drawHandle(QPainter& p, int x, int y) { - p.fillRect(x-HANDLE2, y-HANDLE2, HANDLE1, HANDLE1, x == lselected ? Qt::red : Qt::yellow); - } - void contextMenu(const QPoint&); - - QRubberBand *rubberBand; - QPoint rubberBandStartPos; - - private slots: - void markerChanged(int); - - signals: - void kbdMovementUpdate(Track* t, Part* p); - void startEditor(Part*, int); - void createLRPart(Track*); - void partChanged(Part*, unsigned, unsigned); - void doubleClickPart(Part*); - - public: - PartCanvas(); - void setDrawBackground(bool val) { _drawBackground = val; } - }; - -#endif - diff --git a/muse/muse/cliplist/cliplist.cpp b/muse/muse/cliplist/cliplist.cpp deleted file mode 100644 index b39fa367..00000000 --- a/muse/muse/cliplist/cliplist.cpp +++ /dev/null @@ -1,251 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: cliplist.cpp,v 1.10 2005/09/22 20:12:59 wschweer Exp $ -// -// (C) Copyright 2000 Werner Schweer (ws@seh.de) -//========================================================= - -#include "cliplist.h" -#include "song.h" -#include "globals.h" -#include "wave.h" -#include "xml.h" -// #include "posedit.h" -#include "cliplisteditorbase.h" -//Added by qt3to4: -#include - -extern int mtcType; -enum { COL_NAME=0, COL_REFS, COL_POS, COL_LEN }; - -//--------------------------------------------------------- -// ClipItem -//--------------------------------------------------------- - -class ClipItem : public Q3ListViewItem { - SndFileR _wf; - - virtual QString text(int) const; - - public: - ClipItem(Q3ListView*, const SndFileR&); - SndFileR* wf() { return &_wf; } - }; - -ClipItem::ClipItem(Q3ListView* parent, const SndFileR& w) - : Q3ListViewItem(parent), _wf(w) - { - } - -//--------------------------------------------------------- -// samples2smpte -//--------------------------------------------------------- - -#if 0 -static QString samples2smpte(int samples) - { - double time = double(samples) / double(sampleRate); - int min = int(time) / 60; - int sec = int(time) % 60; - double rest = time - (min * 60 + sec); - switch(mtcType) { - case 0: // 24 frames sec - rest *= 24; - break; - case 1: // 25 - rest *= 25; - break; - case 2: // 30 drop frame - rest *= 30; - break; - case 3: // 30 non drop frame - rest *= 30; - break; - } - int frame = int(rest); - int subframe = int((rest-frame)*100); - QString s; - s.sprintf("%03d:%02d:%02d:%02d", min, sec, frame, subframe); - return s; - } -#endif - -//--------------------------------------------------------- -// text -//--------------------------------------------------------- - -QString ClipItem::text(int col) const - { - QString s(""); - switch(col) { - case COL_NAME: - s = _wf.name(); - break; - case COL_POS: - case COL_LEN: - break; - case COL_REFS: - s.setNum(_wf.getRefCount()); - break; - } - return s; - } - -//--------------------------------------------------------- -// ClipListEdit -//--------------------------------------------------------- - -ClipListEdit::ClipListEdit() - : TopWin(0, "cliplist", Qt::WType_TopLevel /*|WDestructiveClose*/) - { - setCaption(tr("MusE: Clip List Editor")); - - editor = new ClipListEditorBase(this, "edit"); - setCentralWidget(editor); - - editor->view->setColumnAlignment(COL_REFS, AlignRight); - - QFontMetrics fm(editor->view->font()); - int fw = style().pixelMetric(QStyle::PM_DefaultFrameWidth, this); - int w = 2 + fm.width('9') * 9 + fm.width(':') * 3 + fw * 4; - editor->view->setColumnAlignment(COL_POS, AlignRight); - editor->view->setColumnWidth(COL_POS, w); - editor->view->setColumnAlignment(COL_LEN, AlignRight); - editor->view->setColumnWidth(COL_LEN, w); - - connect(editor->view, SIGNAL(selectionChanged()), SLOT(clipSelectionChanged())); - connect(editor->view, SIGNAL(clicked(Q3ListViewItem*)), SLOT(clicked(Q3ListViewItem*))); - - connect(song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); - connect(editor->start, SIGNAL(valueChanged(const Pos&)), SLOT(startChanged(const Pos&))); - connect(editor->len, SIGNAL(valueChanged(const Pos&)), SLOT(lenChanged(const Pos&))); - - updateList(); - } - -//--------------------------------------------------------- -// updateList -//--------------------------------------------------------- - -void ClipListEdit::updateList() - { - editor->view->clear(); - for (iSndFile f = SndFile::sndFiles.begin(); f != SndFile::sndFiles.end(); ++f) { - new ClipItem(editor->view, *f); - } - clipSelectionChanged(); - } - -//--------------------------------------------------------- -// closeEvent -//--------------------------------------------------------- - -void ClipListEdit::closeEvent(QCloseEvent* e) - { - emit deleted((int)this); - e->accept(); - } - -//--------------------------------------------------------- -// songChanged -//--------------------------------------------------------- - -void ClipListEdit::songChanged(int) - { - updateList(); - } - -//--------------------------------------------------------- -// readStatus -//--------------------------------------------------------- - -void ClipListEdit::readStatus(QDomNode node) - { -#if 0 //TODO2 - for (;;) { - Xml::Token token = xml.parse(); - const QString& tag = xml.s1(); - if (token == Xml::Error || token == Xml::End) - break; - switch (token) { - case Xml::TagStart: - if (tag == "topwin") - TopWin::readStatus(xml); - else - xml.unknown("CliplistEdit"); - break; - case Xml::TagEnd: - if (tag == "cliplist") - return; - default: - break; - } - } -#endif - } - -//--------------------------------------------------------- -// writeStatus -//--------------------------------------------------------- - -void ClipListEdit::writeStatus(Xml& xml) const - { - xml.tag("cliplist"); - TopWin::writeStatus(xml); - xml.etag("cliplist"); - } - -//--------------------------------------------------------- -// startChanged -//--------------------------------------------------------- - -void ClipListEdit::startChanged(const Pos& pos) - { -// editor->view->triggerUpdate(); - } - -//--------------------------------------------------------- -// lenChanged -//--------------------------------------------------------- - -void ClipListEdit::lenChanged(const Pos& pos) - { -// curClip.setLenFrame(pos.frame()); -// editor->view->triggerUpdate(); - } - -//--------------------------------------------------------- -// clipSelectionChanged -//--------------------------------------------------------- - -void ClipListEdit::clipSelectionChanged() - { - ClipItem* item = (ClipItem*)(editor->view->selectedItem()); -// if (item == 0) { - editor->start->setEnabled(false); - editor->len->setEnabled(false); - return; -#if 0 - } - editor->start->setEnabled(true); - editor->len->setEnabled(true); - Pos pos, len; - pos.setType(Pos::FRAMES); - len.setType(Pos::FRAMES); - pos.setFrame(curClip.spos()); - len.setFrame(curClip.lenFrame()); - editor->start->setValue(pos); - editor->len->setValue(len); -#endif - } - -//--------------------------------------------------------- -// clicked -//--------------------------------------------------------- - -void ClipListEdit::clicked(Q3ListViewItem*) - { -// printf("clicked\n"); - } - diff --git a/muse/muse/cliplist/cliplist.h b/muse/muse/cliplist/cliplist.h deleted file mode 100644 index c3a6d5aa..00000000 --- a/muse/muse/cliplist/cliplist.h +++ /dev/null @@ -1,47 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: cliplist.h,v 1.7 2006/01/06 22:48:09 wschweer Exp $ -// -// (C) Copyright 2000 Werner Schweer (ws@seh.de) -//========================================================= - -#ifndef __CLIPLIST_H__ -#define __CLIPLIST_H__ - -#include "../cobject.h" -#include "event.h" - -class Xml; -class Pos; -class ClipListEditorBase; - -//--------------------------------------------------------- -// ClipListEdit -//--------------------------------------------------------- - -class ClipListEdit : public TopWin { - Q_OBJECT - ClipListEditorBase* editor; - - virtual void closeEvent(QCloseEvent*); - void updateList(); - - private slots: - void songChanged(int); - void startChanged(const Pos&); - void lenChanged(const Pos&); - void clipSelectionChanged(); - void clicked(Q3ListViewItem*); - - signals: - void deleted(int); - - public: - ClipListEdit(); - virtual void readStatus(QDomNode); - virtual void writeStatus(Xml&) const; - }; - -#endif - diff --git a/muse/muse/cobject.cpp b/muse/muse/cobject.cpp deleted file mode 100644 index 6339a2b7..00000000 --- a/muse/muse/cobject.cpp +++ /dev/null @@ -1,55 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "cobject.h" -#include "al/xml.h" -#include "gui.h" - -//--------------------------------------------------------- -// TopWin -//--------------------------------------------------------- - -TopWin::TopWin() - : QMainWindow() - { - setIconSize(ICON_SIZE); - } - -//--------------------------------------------------------- -// readStatus -//--------------------------------------------------------- - -void TopWin::read(QDomNode node) - { - for (node = node.firstChild(); !node.isNull(); node = node.nextSibling()) - AL::readProperties(this, node); - } - -//--------------------------------------------------------- -// write -//--------------------------------------------------------- - -void TopWin::write(Xml& xml) const - { - xml.stag(metaObject()->className()); - xml.writeProperties(this); - xml.etag(metaObject()->className()); - } - diff --git a/muse/muse/cobject.h b/muse/muse/cobject.h deleted file mode 100644 index 0dcbdf9d..00000000 --- a/muse/muse/cobject.h +++ /dev/null @@ -1,46 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __COBJECT_H__ -#define __COBJECT_H__ - -namespace AL { - class Xml; - }; -using AL::Xml; - -//--------------------------------------------------------- -// TopWin -//--------------------------------------------------------- - -class TopWin : public QMainWindow - { - Q_OBJECT - Q_PROPERTY(bool muse) // hack: start MusE property list - Q_PROPERTY(QRect geometry READ geometry WRITE setGeometry) - - public: - virtual void read(QDomNode); - virtual void write(Xml& xml) const; - TopWin(); - }; - -#endif - diff --git a/muse/muse/conf.cpp b/muse/muse/conf.cpp deleted file mode 100644 index 162f6f9b..00000000 --- a/muse/muse/conf.cpp +++ /dev/null @@ -1,694 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "al/al.h" -#include "muse.h" -#include "shortcuts.h" -#include "transport.h" -#include "widgets/bigtime.h" -#include "conf.h" -#include "gconfig.h" -#include "al/xml.h" -#include "widgets/midisync.h" -#include "sync.h" -#include "mixer.h" -#include "globals.h" -#include "midirc.h" -#include "awl/tcanvas.h" -#include "midiedit/pianoroll.h" -#include "midiedit/drumedit.h" - -extern void writeMidiTransforms(Xml& xml); -extern void readMidiTransform(QDomNode); - -//--------------------------------------------------------- -// readColor -//--------------------------------------------------------- - -QColor readColor(QDomNode node) - { - QDomElement e = node.toElement(); - int r = e.attribute("r","0").toInt(); - int g = e.attribute("g","0").toInt(); - int b = e.attribute("b","0").toInt(); - return QColor(r, g, b); - } - -//--------------------------------------------------------- -// readConfiguration -//--------------------------------------------------------- - -void readConfiguration(QDomNode node) - { - for (; !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - QString tag(e.tagName()); - QString s(e.text()); - int i = s.toInt(); - if (tag == "palette0") - QColorDialog::setCustomColor(0, readColor(node).rgb()); - else if (tag == "palette1") - QColorDialog::setCustomColor(1, readColor(node).rgb()); - else if (tag == "palette2") - QColorDialog::setCustomColor(2, readColor(node).rgb()); - else if (tag == "palette3") - QColorDialog::setCustomColor(3, readColor(node).rgb()); - else if (tag == "palette4") - QColorDialog::setCustomColor(4, readColor(node).rgb()); - else if (tag == "palette5") - QColorDialog::setCustomColor(5, readColor(node).rgb()); - else if (tag == "palette6") - QColorDialog::setCustomColor(6, readColor(node).rgb()); - else if (tag == "palette7") - QColorDialog::setCustomColor(7, readColor(node).rgb()); - else if (tag == "palette8") - QColorDialog::setCustomColor(8, readColor(node).rgb()); - else if (tag == "palette9") - QColorDialog::setCustomColor(9, readColor(node).rgb()); - else if (tag == "palette10") - QColorDialog::setCustomColor(10, readColor(node).rgb()); - else if (tag == "palette11") - QColorDialog::setCustomColor(11, readColor(node).rgb()); - else if (tag == "palette12") - QColorDialog::setCustomColor(12, readColor(node).rgb()); - else if (tag == "palette13") - QColorDialog::setCustomColor(13, readColor(node).rgb()); - else if (tag == "palette14") - QColorDialog::setCustomColor(14, readColor(node).rgb()); - else if (tag == "palette15") - QColorDialog::setCustomColor(15, readColor(node).rgb()); - else if (tag == "selectPartBg") - config.selectPartBg = readColor(node); - else if (tag == "outputTrackBg") - config.trackBg[Track::AUDIO_OUTPUT] = readColor(node); - else if (tag == "groupTrackBg") - config.trackBg[Track::AUDIO_GROUP] = readColor(node); - else if (tag == "waveTrackBg") - config.trackBg[Track::WAVE] = readColor(node); - else if (tag == "inputTrackBg") - config.trackBg[Track::AUDIO_INPUT] = readColor(node); - else if (tag == "synthTrackBg") - config.trackBg[Track::AUDIO_SOFTSYNTH] = readColor(node); - else if (tag == "midiTrackBg") - config.trackBg[Track::MIDI] = readColor(node); - else if (tag == "midiOutputBg") - config.trackBg[Track::MIDI_OUT] = readColor(node); - else if (tag == "midiInputBg") - config.trackBg[Track::MIDI_IN] = readColor(node); - else if (tag == "midiSyntiBg") - config.trackBg[Track::MIDI_SYNTI] = readColor(node); - else if (tag == "extendedMidi") - config.extendedMidi = i; - else if (tag == "midiExportDivision") - config.midiDivision = i; - else if (tag == "copyright") - config.copyright = s; - else if (tag == "smfFormat") - config.smfFormat = i; - else if (tag == "bigtimeVisible") - config.bigTimeVisible = i; - else if (tag == "transportVisible") - config.transportVisible = i; - else if (tag == "mixer1Visible") - config.mixer1Visible = i; - else if (tag == "mixer2Visible") - config.mixer2Visible = i; - else if (tag == "showSplashScreen") - config.showSplashScreen = i; - else if (tag == "canvasShowPartType") - config.canvasShowPartType = i; - else if (tag == "canvasShowPartEvent") - config.canvasShowPartEvent = i; - else if (tag == "canvasShowGrid") - config.canvasShowGrid = i; - else if (tag == "canvasBgPixmap") - config.canvasBgPixmap = s; - else if (tag == "canvasUsePixmap") - config.canvasUseBgPixmap = i; - else if (tag == "geometryMain") - ; // obsolete - else if (tag == "geometryTransport") - config.geometryTransport = AL::readGeometry(node); - else if (tag == "geometryBigTime") - config.geometryBigTime = AL::readGeometry(node); - else if (tag == "geometryPianoroll") - config.geometryPianoroll = AL::readGeometry(node); - else if (tag == "geometryDrumedit") - config.geometryDrumedit = AL::readGeometry(node); - else if (tag == "mixer1") - config.mixer1.read(node); - else if (tag == "mixer2") - config.mixer2.read(node); - else if (tag == "bigtimeForegroundcolor") - config.bigTimeForegroundColor = readColor(node); - else if (tag == "bigtimeBackgroundcolor") - config.bigTimeBackgroundColor = readColor(node); - else if (tag == "freewheelMode") - config.useJackFreewheelMode = i; - else if (tag == "mtctype") - AL::mtcType = i; - else if (tag == "extSync") - extSyncFlag = i; - else if (tag == "syncgentype") { - // for compatibility - int syncGenType= i; - genMTCSync = syncGenType == 1; - genMCSync = syncGenType == 2; - } - else if (tag == "genMTCSync") - genMTCSync = i; - else if (tag == "genMCSync") - genMCSync = i; - else if (tag == "genMMC") - genMMC = i; - else if (tag == "acceptMTC") - acceptMTC = i; - else if (tag == "acceptMMC") - acceptMMC = i; - else if (tag == "acceptMC") - acceptMC = i; - else if (tag == "mtcoffset") { - QStringList l = s.simplified().split(":", QString::SkipEmptyParts); - if (l.size() != 5) { - printf("cannot convert mtcoffset <%s>n\n", s.toAscii().data()); - } - else { - int h = l.at(0).toInt(); - int m = l.at(0).toInt(); - int s = l.at(0).toInt(); - int f = l.at(0).toInt(); - int sf = l.at(0).toInt(); - mtcOffset = MTC(h, m, s, f, sf); - } - } - else if (tag == "shortcuts") - readShortCuts(node.firstChild()); - else if (tag == "midiRC") - midiRCList.read(node); - else if (tag == "division") - config.division = i; - else if (tag == "guiDivision") - config.guiDivision = i; - else if (tag == "rtcTicks") - config.rtcTicks = i; - else if (tag == "minMeter") - config.minMeter = s.toDouble(); - else if (tag == "maxMeter") - config.maxMeter = s.toDouble(); - else if (tag == "minSlider") - config.minSlider = s.toDouble(); - else if (tag == "maxSlider") - config.maxSlider = s.toDouble(); - else if (tag == "guiRefresh") - config.guiRefresh = i; - else if (tag == "peakHoldTime") - config.peakHoldTime = i; - else if (tag == "helpBrowser") - config.helpBrowser = s; -//TD else if (tag == "midiTransform") -// readMidiTransform(node.firstChild()); - else if (tag == "startMode") - config.startMode = (StartMode)i; - else if (tag == "startProject") - config.startProject = s; - else if (tag == "followMode") - TimeCanvas::followMode = (FollowMode)i; - else if (tag == "defaultMidiInputDevice") - config.defaultMidiInputDevice = s; - else if (tag == "defaultMidiOutputDevice") - config.defaultMidiOutputDevice = s; - else if (tag == "defaultMidiInstrument") - config.defaultMidiInstrument = s; - else if (tag == "connectToAllMidiDevices") - config.connectToAllMidiDevices = i; - else if (tag == "connectToAllMidiTracks") - config.connectToAllMidiTracks = i; - else if (tag == "createDefaultMidiInput") - config.createDefaultMidiInput = i; - else if (tag == "projectPath") - config.projectPath = s; - else if (tag == "templatePath") - config.templatePath = s; - else if (tag == "instrumentPath") - config.instrumentPath = s; - else if (tag == "importMidiPath") { - config.importMidiPath = s; - lastMidiPath = museUser + "/" + s; - } - else if (tag == "importWavePath") { - config.importWavePath = s; - lastWavePath = museUser + "/" + s; - } - else if (tag == "PianoRoll") - PianoRoll::readConfiguration(node); - else if (tag == "DrumEdit") - DrumEdit::readConfiguration(node); - else { - printf("MusE:readConfiguration(): unknown tag %s\n", - e.tagName().toAscii().data()); - } - } - } - -//--------------------------------------------------------- -// probeMachineSpecificConfiguration -//--------------------------------------------------------- - -static void probeMachineSpecificConfiguration() - { - // set a default help browser (crude way to find out) - if (!system("which konqueror &>/dev/null")) { - config.helpBrowser = QString("konqueror"); - } - else if (!system("which opera &>/dev/null")) { - config.helpBrowser = QString("opera"); - } - else if (!system("which firebird &>/dev/null")) { - config.helpBrowser = QString("firebird"); - } - else if (!system("which mozilla &>/dev/null")) { - config.helpBrowser = QString("mozilla"); - } - else { - // was not able to find a browser - } - // More preconfiguration - } - -//--------------------------------------------------------- -// readConfiguration -//--------------------------------------------------------- - -bool readConfiguration() - { - if (debugMsg) - printf("readConfiguration <%s>\n", configName.toAscii().data()); - - QFile qf(configName); - if (!qf.open(QIODevice::ReadOnly)) { - if (debugMsg || debugMode) - fprintf(stderr, "NO Config File <%s> found\n", configName.toAscii().data()); - - // if the config file does not exist launch probeMachineSpecificConfiguration - probeMachineSpecificConfiguration(); - return true; - } - if (debugMsg) - printf("readConfiguration <%s>\n", configName.toAscii().data()); - - QDomDocument doc; - int line, column; - QString err; - if (!doc.setContent(&qf, false, &err, &line, &column)) { - QString col, ln, error; - col.setNum(column); - ln.setNum(line); - error = err + "\n at line: " + ln + " col: " + col; - printf("error reading med file: %s\n", error.toAscii().data()); - return true; - } - QDomNode node = doc.documentElement(); - while (!node.isNull()) { - QDomElement e = node.toElement(); - if (e.isNull()) - continue; - if (e.tagName() == "muse") { - node = node.firstChild(); - // QString version = e.attribute(QString("version")); - while (!node.isNull()) { - QDomElement e = node.toElement(); - if (e.tagName() == "configuration") - readConfiguration(node.firstChild()); - else - printf("MusE:readConfiguration(): unknown tag %s\n", e.tagName().toAscii().data()); - node = node.nextSibling(); - } - } - else - printf("MusE:readConfiguration() %s not supported\n", e.tagName().toAscii().data()); - node = node.nextSibling(); - } - return false; - } - -//--------------------------------------------------------- -// writeGlobalConfiguration -//--------------------------------------------------------- - -void MusE::writeGlobalConfiguration() const - { - QFile f(configName); - if (!f.open(QIODevice::WriteOnly)) { - printf("save configuration to <%s> failed: %s\n", - configName.toAscii().data(), strerror(errno)); - return; - } - Xml xml(&f); - xml.header(); - xml.stag("muse version=\"2.0\""); - writeGlobalConfiguration(xml); - xml.etag("muse"); - f.close(); - } - -void MusE::writeGlobalConfiguration(Xml& xml) const - { - xml.stag("configuration"); - - xml.tag("division", config.division); - xml.tag("rtcTicks", config.rtcTicks); - xml.tag("minMeter", config.minMeter); - xml.tag("maxMeter", config.maxMeter); - xml.tag("minSlider", config.minSlider); - xml.tag("maxSlider", config.maxSlider); - xml.tag("guiRefresh", config.guiRefresh); - xml.tag("peakHoldTime", config.peakHoldTime); - xml.tag("helpBrowser", config.helpBrowser); - xml.tag("extendedMidi", config.extendedMidi); - xml.tag("midiExportDivision", config.midiDivision); - xml.tag("guiDivision", config.guiDivision); - xml.tag("copyright", config.copyright); - xml.tag("smfFormat", config.smfFormat); - xml.tag("startMode", config.startMode); - if (!config.startProject.isEmpty()) - xml.tag("startProject", config.startProject); - xml.tag("freewheelMode", config.useJackFreewheelMode); - - for (int i = 0; i < QColorDialog::customCount(); ++i) { - char buffer[32]; - snprintf(buffer, 32, "palette%d", i); - xml.tag(buffer, QColorDialog::customColor(i)); - } - - xml.tag("selectPartBg", config.selectPartBg); - - static const char* colorNames[Track::TRACK_TYPES] = { - "outputTrackBg", - "groupTrackBg", - "waveTrackBg", - "inputTrackBg", - "synthTrackBg", - "midiTrackBg", - "midiOutputBg", - "midiInputBg", - "midiSyntiBg" - }; - for (int i = 0; i < Track::TRACK_TYPES; ++i) - xml.tag(colorNames[i], config.trackBg[i]); - - xml.tag("mtctype", AL::mtcType); - - xml.stag("mtcoffset"); - xml.put(QString("%1:%2:%3:%4:%5") - .arg(mtcOffset.h()).arg(mtcOffset.m()).arg(mtcOffset.s()) - .arg(mtcOffset.f()).arg(mtcOffset.sf())); - xml.etag("mtcoffset"); - - xml.tag("extSync", extSyncFlag); - xml.tag("genMTCSync", genMTCSync); - xml.tag("genMCSync", genMCSync); - xml.tag("genMMC", genMMC); - xml.tag("acceptMTC", acceptMTC); - xml.tag("acceptMMC", acceptMMC); - xml.tag("acceptMC", acceptMC); - - xml.tag("geometryTransport", config.geometryTransport); - xml.tag("geometryBigTime", config.geometryBigTime); - xml.tag("geometryPianoroll", config.geometryPianoroll); - xml.tag("geometryDrumedit", config.geometryDrumedit); - - xml.tag("bigtimeVisible", config.bigTimeVisible); - xml.tag("transportVisible", config.transportVisible); - - xml.tag("mixer1Visible", config.mixer1Visible); - xml.tag("mixer2Visible", config.mixer2Visible); - - config.mixer1.write(xml, "mixer1"); - config.mixer2.write(xml, "mixer2"); - - xml.tag("showSplashScreen", config.showSplashScreen); - xml.tag("canvasShowPartType", config.canvasShowPartType); - xml.tag("canvasShowPartEvent", config.canvasShowPartEvent); - xml.tag("canvasShowGrid", config.canvasShowGrid); - xml.tag("canvasUsePixmap", config.canvasUseBgPixmap); - xml.tag("canvasBgPixmap", config.canvasBgPixmap); - - xml.tag("bigtimeForegroundcolor", config.bigTimeForegroundColor); - xml.tag("bigtimeBackgroundcolor", config.bigTimeBackgroundColor); - - writeShortCuts(xml); - midiRCList.write(xml); - xml.tag("followMode", TimeCanvas::followMode); - - xml.tag("defaultMidiInputDevice", config.defaultMidiInputDevice); - xml.tag("defaultMidiOutputDevice", config.defaultMidiOutputDevice); - xml.tag("defaultMidiInstrument", config.defaultMidiInstrument); - xml.tag("connectToAllMidiDevices", config.connectToAllMidiDevices); - xml.tag("connectToAllMidiTracks", config.connectToAllMidiTracks); - xml.tag("createDefaultMidiInput", config.createDefaultMidiInput); - xml.tag("projectPath", config.projectPath); - xml.tag("templatePath", config.templatePath); - xml.tag("instrumentPath", config.instrumentPath); - xml.tag("importMidiPath", config.importMidiPath); - xml.tag("importWavePath", config.importWavePath); - - PianoRoll::writeConfiguration(xml); - DrumEdit::writeConfiguration(xml); - xml.etag("configuration"); - } - -//--------------------------------------------------------- -// writeConfiguration -// write song specific configuration -//--------------------------------------------------------- - -void MusE::writeConfiguration(Xml& xml) const - { - xml.stag("configuration"); - - xml.tag("mtctype", AL::mtcType); - xml.stag("mtcoffset"); - xml.put(QString("%1:%2:%3:%4:%5") - .arg(mtcOffset.h()).arg(mtcOffset.m()).arg(mtcOffset.s()) - .arg(mtcOffset.f()).arg(mtcOffset.sf())); - xml.etag("mtcoffset"); - xml.tag("extSync", extSyncFlag); - xml.tag("genMTCSync", genMTCSync); - xml.tag("genMCSync", genMCSync); - xml.tag("genMMC", genMMC); - xml.tag("acceptMTC", acceptMTC); - xml.tag("acceptMMC", acceptMMC); - xml.tag("acceptMC", acceptMC); - - xml.tag("bigtimeVisible", bt_id->isChecked()); - xml.tag("transportVisible", tr_id->isChecked()); - - if (transport) - xml.tag("geometryTransport", transport); - if (bigtime) - xml.tag("geometryBigTime", bigtime); - - xml.tag("mixer1Visible", aid1a->isChecked()); - xml.tag("mixer2Visible", aid1b->isChecked()); - if (mixer1) - mixer1->write(xml, "mixer1"); - if (mixer2) - mixer2->write(xml, "mixer2"); - - xml.etag("configuration"); - } - -//--------------------------------------------------------- -// configMidiSync -//--------------------------------------------------------- - -void MusE::configMidiSync() - { - if (!midiSyncConfig) { - midiSyncConfig = new MidiSyncConfig(this); - connect(midiSyncConfig, SIGNAL(syncChanged()), SLOT(syncChanged())); - } - midiSyncConfig->raise(); - midiSyncConfig->show(); - } - -//--------------------------------------------------------- -// syncChanged -//--------------------------------------------------------- - -void MusE::syncChanged() - { - transport->syncChanged(); - } - -//--------------------------------------------------------- -// configMidiFile -//--------------------------------------------------------- - -void MusE::configMidiFile() - { - if (!midiFileConfig) - midiFileConfig = new MidiFileConfig(); - midiFileConfig->updateValues(); - - if (midiFileConfig->isVisible()) { - midiFileConfig->raise(); -//TD midiFileConfig->setActiveWindow(); - } - else - midiFileConfig->show(); - } - -//--------------------------------------------------------- -// MidiFileConfig -// config properties of exported midi files -//--------------------------------------------------------- - -MidiFileConfig::MidiFileConfig() - : ConfigMidiFileBase() - { - setupUi(this); - connect(buttonOk, SIGNAL(clicked()), SLOT(okClicked())); - connect(buttonCancel, SIGNAL(clicked()), SLOT(cancelClicked())); - } - -//--------------------------------------------------------- -// updateValues -//--------------------------------------------------------- - -void MidiFileConfig::updateValues() - { - int divisionIdx = 2; - switch(config.midiDivision) { - case 96: divisionIdx = 0; break; - case 192: divisionIdx = 1; break; - case 384: divisionIdx = 2; break; - } - divisionCombo->setCurrentIndex(divisionIdx); - formatCombo->setCurrentIndex(config.smfFormat); - extendedFormat->setChecked(config.extendedMidi); - copyrightEdit->setText(config.copyright); - } - -//--------------------------------------------------------- -// okClicked -//--------------------------------------------------------- - -void MidiFileConfig::okClicked() - { - int divisionIdx = divisionCombo->currentIndex(); - - int divisions[3] = { 96, 192, 384 }; - if (divisionIdx >= 0 && divisionIdx < 3) - config.midiDivision = divisions[divisionIdx]; - config.extendedMidi = extendedFormat->isChecked(); - config.smfFormat = formatCombo->currentIndex(); - config.copyright = copyrightEdit->text(); - - muse->changeConfig(true); // write config file - close(); - } - -//--------------------------------------------------------- -// cancelClicked -//--------------------------------------------------------- - -void MidiFileConfig::cancelClicked() - { - close(); - } - -//--------------------------------------------------------- -// configGlobalSettings -//--------------------------------------------------------- - -//void MusE::configGlobalSettings() -// { -// if (!globalSettingsConfig) -// globalSettingsConfig = new GlobalSettingsConfig(); -// -// if (globalSettingsConfig->isVisible()) { -// globalSettingsConfig->raise(); -////TD globalSettingsConfig->setActiveWindow(); -// } -// else -// globalSettingsConfig->show(); -// } - -//--------------------------------------------------------- -// write -//--------------------------------------------------------- - -void MixerConfig::write(Xml& xml, const char* name) - { - xml.stag(QString(name)); - xml.tag("geometry", geometry); - xml.tag("showMidiTracks", showMidiTracks); - xml.tag("showMidiSyntiPorts", showMidiSyntiPorts); - xml.tag("showMidiTracks", showMidiTracks); - xml.tag("showOutputTracks", showOutputTracks); - xml.tag("showWaveTracks", showWaveTracks); - xml.tag("showGroupTracks", showGroupTracks); - xml.tag("showInputTracks", showInputTracks); - xml.tag("showAuxTracks", showAuxTracks); - xml.tag("showSyntiTracks", showSyntiTracks); - xml.tag("showMidiInPorts", showMidiInPorts); - xml.tag("showMidiOutPorts", showMidiOutPorts); - xml.etag(name); - } - -//--------------------------------------------------------- -// read -//--------------------------------------------------------- - -void MixerConfig::read(QDomNode node) - { - for (node = node.firstChild(); !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - QString tag(e.tagName()); - QString s = e.text(); - int i = s.toInt(); - if (tag == "geometry") - geometry = AL::readGeometry(node); - else if (tag == "showMidiTracks") - showMidiTracks = i; - else if (tag == "showMidiSyntiPorts") - showMidiSyntiPorts = i; - else if (tag == "showOutputTracks") - showOutputTracks = i; - else if (tag == "showWaveTracks") - showWaveTracks = i; - else if (tag == "showGroupTracks") - showGroupTracks = i; - else if (tag == "showInputTracks") - showInputTracks = i; - else if (tag == "showAuxTracks") - showAuxTracks = i; - else if (tag == "showSyntiTracks") - showSyntiTracks = i; - else if (tag == "showMidiInPorts") - showMidiInPorts = i; - else if (tag == "showMidiOutPorts") - showMidiOutPorts = i; - else - printf("MusE:MixerConfig: unknown tag %s\n", e.tagName().toAscii().data()); - } - } - diff --git a/muse/muse/conf.h b/muse/muse/conf.h deleted file mode 100644 index b026c080..00000000 --- a/muse/muse/conf.h +++ /dev/null @@ -1,46 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __CONF_H__ -#define __CONF_H__ - -#include "ui_configmidifile.h" - -//--------------------------------------------------------- -// MidiFileConfig -// config properties of exported midi files -//--------------------------------------------------------- - -class MidiFileConfig : public QDialog, public Ui::ConfigMidiFileBase { - Q_OBJECT - - private slots: - void okClicked(); - void cancelClicked(); - - public: - MidiFileConfig(); - void updateValues(); - }; - -extern bool readConfiguration(); -extern void readConfiguration(QDomNode); -#endif - diff --git a/muse/muse/configmidifile.ui b/muse/muse/configmidifile.ui deleted file mode 100644 index ca96f3f5..00000000 --- a/muse/muse/configmidifile.ui +++ /dev/null @@ -1,153 +0,0 @@ - - - - - ConfigMidiFileBase - - - - 0 - 0 - 541 - 280 - - - - MusE: Config Midi File Export - - - true - - - - 11 - - - 6 - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 20 - 20 - - - - - - - - &OK - - - - - - true - - - true - - - - - - - &Cancel - - - - - - true - - - - - - - - - - 0 (single track) - - - - - 1 (multiple tracks) - - - - - - - - Format: - - - - - - - - 96 - - - - - 192 - - - - - 384 - - - - - - - - Division: - - - - - - - Copyright: - - - - - - - - - - Enable extended smf format - - - - - - - qPixmapFromMimeSource - - - diff --git a/muse/muse/configtrack.cpp b/muse/muse/configtrack.cpp deleted file mode 100644 index a8fee6a3..00000000 --- a/muse/muse/configtrack.cpp +++ /dev/null @@ -1,265 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "configtrack.h" -#include "trelement.h" -#include "arranger.h" - -//--------------------------------------------------------- -// ConfigTrackList -//--------------------------------------------------------- - -ConfigTrackList::ConfigTrackList(QWidget* parent) - : QDialog(parent) - { - setupUi(this); - // does not work: - configuredList->setSelectionMode(QAbstractItemView::SingleSelection); - availableList->setSelectionMode(QAbstractItemView::SingleSelection); - - up->setEnabled(false); - down->setEnabled(false); - addItem->setEnabled(false); - removeItem->setEnabled(false); - dirty = false; - curType = 0; - init(); - - connect(trackType, SIGNAL(activated(int)), SLOT(trackTypeChanged(int))); - connect(availableList, SIGNAL(itemSelectionChanged()), SLOT(availableSelected())); - connect(configuredList, SIGNAL(itemSelectionChanged()), SLOT(configuredSelected())); - connect(up, SIGNAL(clicked()), SLOT(upClicked())); - connect(down, SIGNAL(clicked()), SLOT(downClicked())); - connect(addItem, SIGNAL(clicked()), SLOT(addItemClicked())); - connect(removeItem, SIGNAL(clicked()), SLOT(removeItemClicked())); - } - -//--------------------------------------------------------- -// init -//--------------------------------------------------------- - -void ConfigTrackList::init() - { - trackType->clear(); - for (int tt = 0; tt < Track::TRACK_TYPES; ++tt) { - list[tt] = glist[tt]; - trackType->addItem(Track::_clname[tt]); - } - trackTypeChanged(curType); - } - -//--------------------------------------------------------- -// done -//--------------------------------------------------------- - -void ConfigTrackList::done(int code) - { - if (code) { - // OK pressed - if (dirty) - saveTrackType(); - for (int tt = 0; tt < Track::TRACK_TYPES; ++tt) - glist[tt] = list[tt]; - emit trackConfigChanged(); - } - else { - dirty = false; - init(); - } - QDialog::done(code); - } - -//--------------------------------------------------------- -// saveTrackType -//--------------------------------------------------------- - -void ConfigTrackList::saveTrackType() - { - dirty = false; - list[curType].clear(); - int gn = 0; - TrElementList group; - int n = configuredList->count(); - for (int i = 0; i < n; ++i) { - QString s = configuredList->item(i)->text(); - int k; - for (k = 0; k < nTrElements; ++k) - if (trElements[k].name == s) - break; - if (trElements[k].grp != gn) { - list[curType].push_back(group); - group.clear(); - gn = trElements[k].grp; - } - group.push_back(&trElements[k]); - } - if (!group.empty()) - list[curType].push_back(group); - } - -//--------------------------------------------------------- -// trackTypeChanged -//--------------------------------------------------------- - -void ConfigTrackList::trackTypeChanged(int type) - { - curType = type; - if (dirty) - saveTrackType(); - - configuredList->clear(); - TrGroupList& gl = list[type]; - for (iTrGroup i = gl.begin(); i != gl.end(); ++i) { - for (iTrElement k = i->begin(); k != i->end(); ++k) - configuredList->addItem((*k)->name); - } - - availableList->clear(); - for (int i = 0; i < nTrElements; ++i) { - QString name(trElements[i].name); - bool f = false; - - // is gui element available for this track type? - - for (int i = 0; i < nTrElements; ++i) { - const TrElement& el = trElements[i]; - if (el.name == name) { - if (el.trackMask & (1 << type)) { - f = true; - break; - } - } - } - if (!f) - continue; - - // is gui element already configured? - - for (iTrGroup i = gl.begin(); i != gl.end(); ++i) { - for (iTrElement k = i->begin(); k != i->end(); ++k) { - if (name == (*k)->name) { - f = false; - break; - } - } - if (!f) - break; - } - if (f) { - availableList->addItem(name); - } - } - } - -//--------------------------------------------------------- -// configuredSelected -//--------------------------------------------------------- - -void ConfigTrackList::configuredSelected() - { - QListWidgetItem* item = configuredList->selectedItems().at(0); - up->setEnabled(item != 0); - down->setEnabled(item != 0); - removeItem->setEnabled(item != 0); - } - -//--------------------------------------------------------- -// availableSelected -//--------------------------------------------------------- - -void ConfigTrackList::availableSelected() - { - QListWidgetItem* item = availableList->selectedItems().at(0); - addItem->setEnabled(item != 0); - } - -//--------------------------------------------------------- -// upClicked -//--------------------------------------------------------- - -void ConfigTrackList::upClicked() - { - QListWidgetItem* item = configuredList->selectedItems().at(0); - int n = configuredList->row(item); - if (n <= 0) - return; - QString s = item->text(); - delete item; - configuredList->insertItem(n-1, s); - configuredList->setItemSelected(configuredList->item(n-1), true); - dirty = true; - } - -//--------------------------------------------------------- -// downClicked -//--------------------------------------------------------- - -void ConfigTrackList::downClicked() - { - QListWidgetItem* item = configuredList->selectedItems().at(0); - int n = configuredList->row(item); - if (n >= int(configuredList->count()-1)) - return; - QString s = item->text(); - - delete item; - configuredList->insertItem(n+1, s); - configuredList->setItemSelected(configuredList->item(n+1), true); - dirty = true; - } - -//--------------------------------------------------------- -// addItemClicked -//--------------------------------------------------------- - -void ConfigTrackList::addItemClicked() - { - QListWidgetItem* item = availableList->selectedItems().at(0); - if (item == 0) - return; - QString s = item->text(); - delete item; - configuredList->addItem(s); - configuredList->setItemSelected(configuredList->item(configuredList->count()-1), true); - QListWidgetItem* ci = availableList->currentItem(); - if (ci) - availableList->setItemSelected(ci, true); - dirty = true; - } - -//--------------------------------------------------------- -// removeItemClicked -//--------------------------------------------------------- - -void ConfigTrackList::removeItemClicked() - { - QListWidgetItem* item = configuredList->selectedItems().at(0); - if (item == 0) - return; - QString s = item->text(); - delete item; - availableList->addItem(s); - availableList->setItemSelected(availableList->item(availableList->count()-1), true); - QListWidgetItem* ci = configuredList->item(configuredList->currentRow()); - if (ci) - configuredList->setItemSelected(ci, true); - dirty = true; - } - diff --git a/muse/muse/configtrack.h b/muse/muse/configtrack.h deleted file mode 100644 index 47dd0f4a..00000000 --- a/muse/muse/configtrack.h +++ /dev/null @@ -1,61 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __CONFIG_TRACK_H__ -#define __CONFIG_TRACK_H__ - -#include "ui_configtrack.h" -#include "track.h" -#include "trelement.h" - -struct TrElement; -class TrGroupList; - -//--------------------------------------------------------- -// ConfigTrackList -//--------------------------------------------------------- - -class ConfigTrackList : public QDialog, Ui::ConfigTrackListBase { - Q_OBJECT - - TrGroupList list[Track::TRACK_TYPES]; - void init(); - bool dirty; - void saveTrackType(); - int curType; - - private slots: - void trackTypeChanged(int); - void availableSelected(); - void configuredSelected(); - void upClicked(); - void downClicked(); - void addItemClicked(); - void removeItemClicked(); - virtual void done(int); - - signals: - void trackConfigChanged(); - - public: - ConfigTrackList(QWidget*); - }; - -#endif diff --git a/muse/muse/configtrack.ui b/muse/muse/configtrack.ui deleted file mode 100644 index 350b405a..00000000 --- a/muse/muse/configtrack.ui +++ /dev/null @@ -1,299 +0,0 @@ - - - - - ConfigTrackListBase - - - - 0 - 0 - 545 - 352 - - - - MusE: Config Track List - - - true - - - - 11 - - - 6 - - - - - 0 - - - 6 - - - - - Track Type: - - - - - - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 40 - 20 - - - - - - - - - - 0 - - - 6 - - - - - 0 - - - 6 - - - - - Available Items: - - - - - - - QAbstractItemView::SelectRows - - - 0 - - - - - - - - - 0 - - - 6 - - - - - Add - - - - - - - Remove - - - - - - - Qt::Vertical - - - QSizePolicy::Expanding - - - - 20 - 40 - - - - - - - - Up - - - - - - - Down - - - - - - - - - 0 - - - 6 - - - - - Configured Items - - - - - - - QAbstractItemView::SelectRows - - - - - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 40 - 20 - - - - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 20 - 20 - - - - - - - - &OK - - - - - - true - - - true - - - - - - - &Cancel - - - - - - true - - - - - - - - - qPixmapFromMimeSource - - - - ok - clicked() - ConfigTrackListBase - accept() - - - 393 - 321 - - - 259 - 326 - - - - - cancel - clicked() - ConfigTrackListBase - reject() - - - 484 - 327 - - - 437 - 283 - - - - - diff --git a/muse/muse/ctrl.cpp b/muse/muse/ctrl.cpp deleted file mode 100644 index 82e8efef..00000000 --- a/muse/muse/ctrl.cpp +++ /dev/null @@ -1,450 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "fastlog.h" -#include "globals.h" -#include "ctrl.h" -#include "al/xml.h" -#include "midictrl.h" - -//--------------------------------------------------------- -// Ctrl -//--------------------------------------------------------- - -Ctrl::Ctrl(int id, const QString& s, int t) - : _id(id), _name(s), _type(t) - { - setRange(.0f, 1.f); - _default.f = 0.0f; - _curVal.f = 0.0f; - _touched = false; - _changed = false; - _moveWithPart = false; - } - -Ctrl::Ctrl(int id, const QString& s, int t, float a, float b) - : _id(id), _name(s), _type(t) - { - if (_type & INT) - setRange(int(a), int(b)); - else - setRange(a, b); - _default.f = 0.0f; - _curVal.f = 0.0f; - _touched = false; - _changed = false; - _moveWithPart = false; - } - -Ctrl::Ctrl() - { - _type = INTERPOLATE; - setRange(0.0f, 1.0f); - _id = 0; - _default.f = 0.0f; - _curVal.f = 0.0f; - _touched = false; - _changed = false; - _moveWithPart = false; - } - -Ctrl::Ctrl(const MidiController* mc) - { - _type = DISCRETE | INT; - setRange(mc->minVal(), mc->maxVal()); - _id = mc->num(); - _default.i = mc->initVal(); - _curVal.i = CTRL_VAL_UNKNOWN; - _name = mc->name(); - _touched = false; - _changed = false; - _moveWithPart = false; - } - -//--------------------------------------------------------- -// value -//--------------------------------------------------------- - -CVal Ctrl::value(unsigned time) - { - CVal rv; - - if (empty() || _touched) - return _curVal; - if (_type & DISCRETE) { - // - // midi controller - // - ciCtrlVal i = upperBound(time); - if (i == end()) { - --i; - rv = i.value(); - } - else if (i == begin()) { - if (i.key() == time) - rv = i.value(); - else - return _curVal; - } - else { - --i; - rv = i.value(); - } - } - else { - // - // linear interpolated audio - // controller - // - ciCtrlVal i = upperBound(time); - if (i == end()) { - --i; - rv = i.value(); - } - else { - int frame2 = i.key(); - CVal val2 = i.value(); - int frame1; - CVal val1; - if (i == begin()) { - rv = val2; - } - else { - --i; - frame1 = i.key(); - val1 = i.value(); - time -= frame1; - frame2 -= frame1; - if (_type & INT) { - val2.i -= val1.i; - rv.i = val1.i + (time * val2.i)/frame2; - } - else { - val2.f -= val1.f; - rv.f = val1.f + (time * val2.f)/frame2; - } - } - } - } - if (_type & LOG) { - if (rv.f <= -1000.0f) - rv.f = 0.0f; - else - rv.f = pow(10.0f, rv.f); - } - return rv; - } - -//--------------------------------------------------------- -// add -// return true if new value added -//--------------------------------------------------------- - -bool Ctrl::add(unsigned frame, CVal val) - { - if (_type & LOG) { - if (val.f <= 0.0) - val.f = -1001.0f; - else - val.f = log10(val.f); - } - bool rv = find(frame) == end(); - insert(frame, val); - return rv; - } - -//--------------------------------------------------------- -// del -//--------------------------------------------------------- - -void Ctrl::del(unsigned frame) - { - iCtrlVal e = find(frame); - erase(e); - } - -//--------------------------------------------------------- -// read -//--------------------------------------------------------- - -void Ctrl::read(QDomNode node, bool) - { - QDomElement e = node.toElement(); - _id = e.attribute("id").toInt(); - _name = e.attribute("name"); - _type = e.attribute("type","0").toInt(); - - const char* minS = "0.0f"; - const char* maxS = "1.0f"; - - if (_type & INT) { - minS = "0"; - maxS = "127"; - _curVal.i = e.attribute("cur","-1").toInt(); - _default.i = e.attribute("default","-1").toInt(); - } - else { - if (_id == AC_PAN) { - minS = "-1.0f"; - maxS = "+1.0f"; - } - _curVal.f = e.attribute("cur","0.0").toFloat(); - _default.f = e.attribute("default","0.0").toFloat(); - } - setCurVal(_curVal); - if (_type & INT) { - min.i = e.attribute("min", minS).toInt(); - max.i = e.attribute("max", maxS).toInt(); - } - else { - min.f = e.attribute("min", minS).toFloat(); - max.f = e.attribute("max", maxS).toFloat(); - } - - QStringList vp = e.text().simplified().split(",", QString::SkipEmptyParts); - int n = vp.size(); - for (int i = 0; i < n; ++i) { - QStringList sl = vp.at(i).simplified().split(" "); - bool ok; - int frame = sl.at(0).toInt(&ok, 0); - if (!ok) { - printf("Ctrl::read(1): conversion <%s><%s> to int failed\n", - vp.at(i).simplified().toAscii().data(), - sl.at(0).toAscii().data()); - break; - } - CVal val; - if (_type & INT) - val.i = sl.at(1).toInt(&ok, 0); - else - val.f = sl.at(1).toDouble(&ok); - if (!ok) { - printf("Ctrl::read(2): conversion <%s><%s> failed\n", - vp.at(i).simplified().toAscii().data(), - sl.at(1).toAscii().data()); - break; - } - add(frame, val); - } - } - -//--------------------------------------------------------- -// add -//--------------------------------------------------------- - -void CtrlList::add(Ctrl* vl) - { - insert(std::pair(vl->id(), vl)); - } - -//--------------------------------------------------------- -// write -//--------------------------------------------------------- - -void Ctrl::write(Xml& xml) - { - QString s("controller id=\"%1\" name=\"%2\" cur=\"%3\" type=\"%4\" min=\"%5\" max=\"%6\" default=\"%7\""); - - QString cn = Xml::xmlString(_name); - - if (empty()) { - if (_type & INT) - xml.tagE(s.arg(id()).arg(cn).arg(curVal().i).arg(_type).arg(min.i).arg(max.i).arg(_default.i).toAscii().data()); - else - xml.tagE(s.arg(id()).arg(cn).arg(curVal().f).arg(_type).arg(min.f).arg(max.f).arg(_default.f).toAscii().data()); - return; - } - if (_type & INT) - xml.stag(s.arg(id()).arg(cn).arg(curVal().i).arg(_type).arg(min.i).arg(max.i).arg(_default.i).toAscii().data()); - else - xml.stag(s.arg(id()).arg(cn).arg(curVal().f).arg(_type).arg(min.f).arg(max.f).arg(_default.f).toAscii().data()); - - int i = 0; - for (ciCtrlVal ic = begin(); ic != end(); ++ic) { - if (i == 0) - xml.putLevel(); - int time = ic.key(); - CVal val = ic.value(); - if (_type & LOG) - val.f = (val.f <= -1000.0) ? 0.0f : pow(10.0f, val.f); - if (_type & INT) { - xml << time << ' ' << val.i << ','; - } - else - xml << time << ' ' << val.f << ','; - ++i; - if (i >= 4) { - xml << endl; - i = 0; - } - } - if (i) - xml << endl; - xml.etag("controller"); - } - -//--------------------------------------------------------- -// val2pixelR -// input val is "raw" data -//--------------------------------------------------------- - -int Ctrl::val2pixelR(CVal val, int maxpixel) - { - maxpixel -= 1; - if (_type & INT) - return maxpixel - ((maxpixel * (val.i - min.i) + (max.i-min.i)/2) / (max.i - min.i)); - else { - if ((_type & LOG) && (val.f <= -1000.0f)) - return maxpixel; - int pixel = maxpixel - lrint(double(maxpixel) * (val.f - min.f) / (max.f-min.f)); - if (pixel < 0) { - printf("%d - lrint(double(%d) * (%f - %f)/(%f-%f)\n", - maxpixel, maxpixel, val.f, min.f, max.f, min.f); - printf(" %f/%f = %f\n", - val.f-min.f, max.f-min.f, (val.f-min.f)/(max.f-min.f)); - } - return pixel; -// return maxpixel - lrint(double(maxpixel) * (val.f - min.f) / (max.f-min.f)); - } - } - -int Ctrl::val2pixelR(int val, int maxpixel) - { - maxpixel -= 1; - int range = max.i - min.i; - return maxpixel - ((maxpixel * (val - min.i) + range / 2) / range); - } - -//--------------------------------------------------------- -// cur2pixel -//--------------------------------------------------------- - -int Ctrl::cur2pixel(int maxpixel) - { -#if 0 - return val2pixelR(_curVal, maxpixel); -#else - maxpixel -= 1; - - if (_type & INT) - return maxpixel - ((maxpixel * (_curVal.i - min.i) + (max.i-min.i)/2) / (max.i - min.i)); - float f = _curVal.f; - if (_type & LOG) { - if (f <= 0.0) - return maxpixel; - else - f = fast_log10(f); - } - return maxpixel - lrint(double(maxpixel) * (f - min.f) / (max.f-min.f)); -#endif - } - -//--------------------------------------------------------- -// pixel2val -//--------------------------------------------------------- - -CVal Ctrl::pixel2val(int pixel, int maxpixel) - { - maxpixel -= 1; - pixel = maxpixel - pixel; - -// printf("pixel2val %d(%d) int %d, min %d, max %d\n", -// pixel, maxpixel, _type & INT, min.i, max.i); - CVal rv; - if (_type & INT) { - rv.i = (pixel * (max.i - min.i) + (maxpixel+min.i)/2) / maxpixel + min.i; - if (rv.i < min.i) - rv.i = min.i; - else if (rv.i > max.i) - rv.i = max.i; - } - else { - rv.f = double(pixel) * (max.f - min.f) / double(maxpixel) + min.f; - if (rv.f < min.f) - rv.f = min.f; - else if (rv.f > max.f) - rv.f = max.f; - if (_type & LOG) - rv.f = pow(10.0f, rv.f); - } - return rv; - } - -//--------------------------------------------------------- -// pixel2valR -//--------------------------------------------------------- - -CVal Ctrl::pixel2valR(int pixel, int maxpixel) - { - maxpixel -= 1; - pixel = maxpixel - pixel; - -// printf("pixel2val %d(%d) int %d, min %d, max %d\n", -// pixel, maxpixel, _type & INT, min.i, max.i); - CVal rv; - if (_type & INT) { - rv.i = (pixel * (max.i - min.i) + (maxpixel+min.i)/2) / maxpixel + min.i; - if (rv.i < min.i) - rv.i = min.i; - else if (rv.i > max.i) - rv.i = max.i; - } - else { - rv.f = double(pixel) * (max.f - min.f) / double(maxpixel) + min.f; - if (rv.f < min.f) - rv.f = min.f; - else if (rv.f > max.f) - rv.f = max.f; - } - return rv; - } - -//--------------------------------------------------------- -// setRange -//--------------------------------------------------------- - -void Ctrl::setRange(double _min, double _max) - { - if (_type & LOG) { - min.f = log10(_min); - max.f = log10(_max); - } - else { - min.f = _min; - max.f = _max; - } - } - -void Ctrl::setRange(int _min, int _max) - { - min.i = _min; - max.i = _max; - } - -//--------------------------------------------------------- -// setRange -//--------------------------------------------------------- - -void Ctrl::setRange(CVal mi, CVal ma) - { - min = mi; - max = ma; - } - diff --git a/muse/muse/ctrl.h b/muse/muse/ctrl.h deleted file mode 100644 index eccd17c0..00000000 --- a/muse/muse/ctrl.h +++ /dev/null @@ -1,236 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __CTRL_H__ -#define __CTRL_H__ - -namespace AL { - class Xml; - }; -using AL::Xml; - -class MidiController; - -// -// predefined audio controller id's: -// -const int NUM_AUX = 32; // max number of aux channels - -const int AC_VOLUME = 0; -const int AC_PAN = 1; -const int AC_MUTE = 2; -const int AC_AUX = 3; // 3 -- 3+NUM_AUX -const int AC_AUX_PAN = AC_AUX + NUM_AUX; - -const int CTRL_PLUGIN_MASK = 0x3ff0000; -const int CTRL_PLUGIN_OFFSET = 0x10000; -const int CTRL_INDEX_MASK = 0xffff; -const int CTRL_PREFADER = 0x40000000; - -//--------------------------------------------------------- -// genACnum -// create a controller number out of plugin index, -// controller index and prefader flag -//--------------------------------------------------------- - -inline static int genACnum(int plugin, int ctrl, bool prefader) { - int pre = prefader ? CTRL_PREFADER : 0; - return pre | ((plugin+1) * CTRL_PLUGIN_OFFSET + ctrl); - } - -//--------------------------------------------------------- -// getCtrlPlugin -// destill plugin index, controller index and prefader -// flag from controller id -//--------------------------------------------------------- - -inline static void getCtrlPlugin(int id, bool* prefader, int* pluginIndex, - int* ctrlIndex) { - *prefader = (id & CTRL_PREFADER) ? true : false; - *pluginIndex = ((id & CTRL_PLUGIN_MASK) / CTRL_PLUGIN_OFFSET) - 1; - *ctrlIndex = id & CTRL_INDEX_MASK; - } - -//--------------------------------------------------------- -// ControllerName -//--------------------------------------------------------- - -struct ControllerName { - QString name; - int id; - ControllerName(const QString& s, int i) : name(s), id(i) {} - }; - -typedef std::vector ControllerNameList; -typedef ControllerNameList::iterator iControllerName; -typedef ControllerNameList::const_iterator ciControllerName; - -//--------------------------------------------------------- -// CVal -// Controller value, either float for audio or -// int for midi. -// -//--------------------------------------------------------- - -struct CVal { - union { - float f; - int i; - }; - }; - -//--------------------------------------------------------- -// CtrlVal -// This structure represents a controller event. Time -// is a midi tick value or a frame value depending on -// then containing controller list Ctrl -//--------------------------------------------------------- - -struct CtrlVal { - int time; - CVal val; - CtrlVal(int f, CVal v) { - time = f; - val = v; - } - CtrlVal(int f) { - time = f; - } - }; - -//--------------------------------------------------------- -// CtrlRecVal -// recorded controller event, mixer automation -//--------------------------------------------------------- - -struct CtrlRecVal : public CtrlVal { - int id; - int type; // 0 - ctrlVal, 1 - start, 2 - end - CtrlRecVal(int f, int n, CVal v) : CtrlVal(f, v), id(n), type(0) {} - CtrlRecVal(int f, int n, int t) : CtrlVal(f), id(n), type(t) {} - }; - -//--------------------------------------------------------- -// CtrlRecList -//--------------------------------------------------------- - -class CtrlRecList : public std::list { - public: - }; - -typedef CtrlRecList::iterator iCtrlRec; - -typedef QMap CTRL; -typedef CTRL::iterator iCtrlVal; -typedef CTRL::const_iterator ciCtrlVal; - -//--------------------------------------------------------- -// Ctrl -// this is a controller list -// -// CtrlType == LOG -// values are internally represented as log10(value) -//--------------------------------------------------------- - -class Ctrl : public CTRL { - public: - enum CtrlType { - INTERPOLATE = 0, // values are linear interpolated - DISCRETE = 1, // midi controller events - LINEAR = 0, - LOG = 2, - INT = 4 - }; - - private: - int _id; - QString _name; - int _type; // bitmask of CtrlType - CVal _default; - CVal _curVal; // used to optimize controller events - CVal min, max; - bool _changed; - bool _touched; - bool _moveWithPart; - - public: - Ctrl(); - Ctrl(const MidiController*); - Ctrl(int id, const QString& name, int t=INTERPOLATE); - Ctrl(int id, const QString& name, int t, float a, float b); - int type() const { return _type; } - void setType(int t) { _type = t; } - - const CVal& getDefault() const { return _default; } - void setDefault(float val) { _default.f = val; } - void setDefault(CVal val) { _default = val; } - void setDefault(int val) { _default.i = val; } - - const CVal& curVal() const { return _curVal; } - void setCurVal(CVal v) { _curVal = v; _changed = true; } - void setCurVal(float v) { _curVal.f = v; _changed = true; } - void setCurVal(int v) { _curVal.i = v; _changed = true; } - - int id() const { return _id; } - void setId(int i) { _id = i; } - QString name() const { return _name; } - void setName(const QString& s) { _name = s; } - CVal value(unsigned); - bool add(unsigned, CVal); - void del(unsigned); - void setChanged(bool val) { _changed = val; } - bool changed() const { return _changed; } - void setTouched(bool val) { _touched = val; } - bool touched() const { return _touched; } - void setRange(double min, double max); - void setRange(int min, int max); - void setRange(CVal, CVal); - CVal minVal() const { return min; } - CVal maxVal() const { return max; } - bool moveWithPart() const { return _moveWithPart; } - void setMoveWithPart(bool v) { _moveWithPart = v; } - - void read(QDomNode node, bool midi); - void write(Xml&); - int val2pixelR(CVal, int maxpixel); - int cur2pixel(int maxpixel); - int val2pixelR(int, int maxpixel); - CVal pixel2val(int pixel, int maxpixel); - CVal pixel2valR(int pixel, int maxpixel); - }; - -//--------------------------------------------------------- -// CtrlList -// List of controller value lists. -// This list represents the controller state of a -// mixer strip -//--------------------------------------------------------- - -typedef std::map > CLIST; -typedef CLIST::iterator iCtrl; -typedef CLIST::const_iterator ciCtrl; - -class CtrlList : public CLIST { - public: - void add(Ctrl* vl); - }; - -#endif - diff --git a/muse/muse/ctrl/CMakeLists.txt b/muse/muse/ctrl/CMakeLists.txt deleted file mode 100644 index 0bdb5be6..00000000 --- a/muse/muse/ctrl/CMakeLists.txt +++ /dev/null @@ -1,46 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -QT4_WRAP_CPP (ctrl_mocs - configmidictrl.h - definemidictrl.h - ctrldialog.h - ctrledit.h - ) - -QT4_WRAP_UI (ctrl_ui_headers - configmidictrl.ui - definemidictrl.ui - ctrldialog.ui - ) - -add_library ( ctrl STATIC - configmidictrl.cpp - definemidictrl.cpp - ctrldialog.cpp - ctrleditor.cpp - ctrledit.cpp - ${ctrl_mocs} - ${ctrl_ui_headers} - ) -set_target_properties( ctrl - PROPERTIES COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all.h" - ) - diff --git a/muse/muse/ctrl/configmidictrl.cpp b/muse/muse/ctrl/configmidictrl.cpp deleted file mode 100644 index 395518a8..00000000 --- a/muse/muse/ctrl/configmidictrl.cpp +++ /dev/null @@ -1,202 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "configmidictrl.h" -#include "definemidictrl.h" -#include "miditrack.h" -#include "midioutport.h" -#include "midictrl.h" -#include "midiout.h" -#include "instruments/minstrument.h" - -//--------------------------------------------------------- -// ConfigMidiCtrl -//--------------------------------------------------------- - -ConfigMidiCtrl::ConfigMidiCtrl(MidiTrack* t) - { - setupUi(this); - track = t; - - //--------------------------------------------------- - // populate list of managed controllers - //--------------------------------------------------- - - ControllerNameList* cn = track->controllerNames(); - for (iControllerName i = cn->begin(); i != cn->end(); ++i) - managedController->addItem(i->name); - - //--------------------------------------------------- - // populate list of available controllers - //--------------------------------------------------- - - if (track->type() == Track::MIDI) { - MidiTrack* mc = (MidiTrack*)track; - portName->setText(track->name()); - instrumentName->setText(mc->instrument()->iname()); - // - // populate popup with all controllers available for - // current instrument - // - MidiControllerList* mcl = mc->instrument()->controller(); - for (iMidiController ci = mcl->begin(); ci != mcl->end(); ++ci) { - iControllerName i; - for (i = cn->begin(); i != cn->end(); ++i) { - if (i->name == (*ci)->name()) - break; - } - if (i == cn->end()) - availableController->addItem((*ci)->name()); - } - } - - delete cn; - buttonAdd->setEnabled(false); - buttonRemove->setEnabled(false); - - connect(buttonAdd, SIGNAL(clicked()), SLOT(addClicked())); - connect(buttonRemove, SIGNAL(clicked()), SLOT(removeClicked())); - connect(availableController, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), SLOT(availableSelected(QListWidgetItem*))); - connect(managedController, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), SLOT(managedSelected(QListWidgetItem*))); - connect(defineButton, SIGNAL(clicked()), SLOT(defineClicked())); - } - -//--------------------------------------------------------- -// addClicked -//--------------------------------------------------------- - -void ConfigMidiCtrl::addClicked() - { - QListWidgetItem* n = availableController->currentItem(); - if (n == 0) - return; - QString s(n->text()); - for (int i = 0; i < managedController->count(); ++i) { - if (s == managedController->item(i)->text()) - return; - } - managedController->addItem(s); - managedController->setCurrentItem(managedController->item(managedController->count()-1)); - delete n; - buttonAdd->setEnabled(false); - } - -//--------------------------------------------------------- -// removeClicked -//--------------------------------------------------------- - -void ConfigMidiCtrl::removeClicked() - { - QListWidgetItem* n = managedController->currentItem(); - if (n == 0) - return; - availableController->addItem(n->text()); - delete n; - buttonRemove->setEnabled(false); - } - -//--------------------------------------------------------- -// availableSelected -//--------------------------------------------------------- - -void ConfigMidiCtrl::availableSelected(QListWidgetItem* item) - { - buttonAdd->setEnabled(item != 0); - } - -//--------------------------------------------------------- -// managedSelected -//--------------------------------------------------------- - -void ConfigMidiCtrl::managedSelected(QListWidgetItem* item) - { - buttonRemove->setEnabled(item != 0); - } - -//--------------------------------------------------------- -// done -//--------------------------------------------------------- - -void ConfigMidiCtrl::done(int code) - { - if (!code) { - QDialog::done(code); - return; - } - if (track->type() == Track::MIDI) { - ControllerNameList* cn = track->controllerNames(); - MidiInstrument* instr = track->instrument(); - MidiControllerList* mcl = instr->controller(); - - // - // search for new, added controller - // - int n = managedController->count(); - for (int i = 0; i < n; ++i) { - QString name(managedController->item(i)->text()); - iControllerName ii = cn->begin(); - for (; ii != cn->end(); ++ii) { - if (ii->name == name) - break; - } - if (ii == cn->end()) { - // add controller "name" to list of managed controller - // - for (iMidiController ci = mcl->begin(); ci != mcl->end(); ++ci) { - if ((*ci)->name() == name) { - Ctrl* ctrl = new Ctrl(*ci); - track->addController(ctrl); - break; - } - } - } - } - - // - // search for removed controller - // - for (iControllerName ii = cn->begin(); ii != cn->end(); ++ii) { - int i; - for (i = 0; i < n; ++i) { - if (managedController->item(i)->text() == ii->name) - break; - } - if (i == n) - track->removeController(ii->id); - } - delete cn; - } - QDialog::done(code); - } - -//--------------------------------------------------------- -// defineClicked -//--------------------------------------------------------- - -void ConfigMidiCtrl::defineClicked() - { - DefineMidiCtrl dc(track, this); - if (dc.exec()) { - Ctrl* ctrl = new Ctrl(dc.midiController()); - track->addController(ctrl); - QDialog::done(0); - } - } - diff --git a/muse/muse/ctrl/configmidictrl.h b/muse/muse/ctrl/configmidictrl.h deleted file mode 100644 index 0af11e36..00000000 --- a/muse/muse/ctrl/configmidictrl.h +++ /dev/null @@ -1,51 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __CONFIGMIDICTRL_H__ -#define __CONFIGMIDICTRL_H__ - -#include "ui_configmidictrl.h" - -class MidiTrack; - -//--------------------------------------------------------- -// ConfigMidiCtrl -//--------------------------------------------------------- - -class ConfigMidiCtrl : public QDialog, public Ui::ConfigMidiCtrlBase { - Q_OBJECT - - MidiTrack* track; - - private slots: - void addClicked(); - void removeClicked(); - void availableSelected(QListWidgetItem*); - void managedSelected(QListWidgetItem*); - virtual void done(int); - void defineClicked(); - - public: - ConfigMidiCtrl(MidiTrack*); - }; - -#endif - - diff --git a/muse/muse/ctrl/configmidictrl.ui b/muse/muse/ctrl/configmidictrl.ui deleted file mode 100644 index 1960c490..00000000 --- a/muse/muse/ctrl/configmidictrl.ui +++ /dev/null @@ -1,204 +0,0 @@ - - ConfigMidiCtrlBase - - - - 0 - 0 - 506 - 355 - - - - MusE: Config Midi Controller - - - - 9 - - - 6 - - - - - 0 - - - 6 - - - - - Midi Instrument: - - - - - - - true - - - - - - - true - - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Midi Port:</p></body></html> - - - - - - - - - - 5 - 0 - 0 - 0 - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Automated Controller:</p></body></html> - - - - - - - - - - Qt::Vertical - - - - 75 - 81 - - - - - - - - - 5 - 0 - 0 - 0 - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Available Controller:</p></body></html> - - - - - - - - - - Remove - - - - - - - Add - - - - - - - 0 - - - 6 - - - - - Define new Controller - - - - - - - Qt::Horizontal - - - - 131 - 31 - - - - - - - - OK - - - - - - - Cancel - - - - - - - - - - - buttonOk - clicked() - ConfigMidiCtrlBase - accept() - - - 278 - 253 - - - 96 - 254 - - - - - buttonCancel - clicked() - ConfigMidiCtrlBase - reject() - - - 369 - 253 - - - 179 - 282 - - - - - diff --git a/muse/muse/ctrl/ctrldialog.cpp b/muse/muse/ctrl/ctrldialog.cpp deleted file mode 100644 index fd8a073c..00000000 --- a/muse/muse/ctrl/ctrldialog.cpp +++ /dev/null @@ -1,191 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "ctrldialog.h" -#include "midictrl.h" -#include "track.h" -#include "miditrack.h" -#include "audiotrack.h" -#include "plugin.h" -#include "pipeline.h" -#include "ctrl/configmidictrl.h" - -//--------------------------------------------------------- -// CtrlDialog -//--------------------------------------------------------- - -CtrlDialog::CtrlDialog(Track* track, int ci, QWidget* parent) - : QDialog(parent) - { - t = track; - currentId = ci; - setupUi(this); - QTreeWidgetItem* header = tw->headerItem(); - header->setTextAlignment(0, Qt::AlignLeft); - header->setTextAlignment(1, Qt::AlignHCenter); - - tw->header()->setResizeMode(0, QHeaderView::Stretch); - header->setToolTip(0, tr("controller name")); - header->setToolTip(1, tr("flag if controller contains data")); - - updateController(); - otherButton->setEnabled(track->type() == Track::MIDI); - connect(tw, - SIGNAL(itemDoubleClicked(QTreeWidgetItem*, int)), - SLOT(itemDoubleClicked(QTreeWidgetItem*, int))); - connect(otherButton, SIGNAL(clicked()), SLOT(otherClicked())); - } - -//--------------------------------------------------------- -// updateController -//--------------------------------------------------------- - -void CtrlDialog::updateController() - { - tw->clear(); - QTreeWidgetItem* ci; - if (t->type() == Track::MIDI) { - // - // add special controll for midi tracks - // - ci = new QTreeWidgetItem(tw, CTRL_VELOCITY); - ci->setText(0, "Velocity"); - if (CTRL_VELOCITY == currentId) { - tw->setCurrentItem(ci); - tw->setItemSelected(ci, true); - } - if (((MidiTrack*)(t))->drumMap()) { - ci = new QTreeWidgetItem(tw, CTRL_SVELOCITY); - ci->setText(0, "Single Velocity"); - - if (CTRL_SVELOCITY == currentId) { - tw->setCurrentItem(ci); - tw->setItemSelected(ci, true); - } - } - } - else if (!t->isMidiTrack()) { - - // - // present plugin parameter - // - Pipeline* pl = ((AudioTrack*)t)->prePipe(); - int idx = 0; - foreach (PluginI* plugin, *pl) { - ci = new QTreeWidgetItem(tw, CTRL_NO_CTRL); - ci->setText(0, plugin->name()); - int ncontroller = plugin->plugin()->parameter(); - for (int i = 0; i < ncontroller; ++i) { - QString name(plugin->getParameterName(i)); - int id = genACnum(idx, i, true); - QTreeWidgetItem* cci = new QTreeWidgetItem(ci, id); - cci->setText(0, name); - Ctrl* ctrl = t->getController(id); - if (ctrl) { - if (!ctrl->empty()) - cci->setText(1, "*"); - if (id == currentId) { - tw->setCurrentItem(cci); - tw->setItemSelected(cci, true); - } - } - else - printf("updateController: controller %x not found\n", id); - } - } - pl = ((AudioTrack*)t)->postPipe(); - idx = 0; - foreach (PluginI* plugin, *pl) { - ci = new QTreeWidgetItem(tw, CTRL_NO_CTRL); - ci->setText(0, plugin->name()); - int ncontroller = plugin->plugin()->parameter(); - for (int i = 0; i < ncontroller; ++i) { - QString name(plugin->getParameterName(i)); - int id = genACnum(idx, i, false); - QTreeWidgetItem* cci = new QTreeWidgetItem(ci, id); - cci->setText(0, name); - Ctrl* ctrl = t->getController(id); - if (!ctrl->empty()) - cci->setText(1, "*"); - if (id == currentId) { - tw->setCurrentItem(cci); - tw->setItemSelected(cci, true); - } - } - } - } - - ControllerNameList* cn = t->controllerNames(); - for (iControllerName i = cn->begin(); i != cn->end(); ++i) { - ci = new QTreeWidgetItem(tw, i->id); - ci->setText(0, i->name); - Ctrl* ctrl = t->getController(i->id); - if (!ctrl->empty()) - ci->setText(1, "*"); - - if (i->id == currentId) { - tw->setCurrentItem(ci); - tw->setItemSelected(ci, true); - } - } - } - -//--------------------------------------------------------- -// itemDoubleClicked -//--------------------------------------------------------- - -void CtrlDialog::itemDoubleClicked(QTreeWidgetItem* item, int) - { - if (item->type() != CTRL_NO_CTRL) - accept(); - } - -//--------------------------------------------------------- -// CtrlDialog -//--------------------------------------------------------- - -int CtrlDialog::curId() const - { - QTreeWidgetItem* item = tw->currentItem(); - if (item == 0) - return CTRL_NO_CTRL; - return item->type(); - } - -//--------------------------------------------------------- -// otherClicked -// Add another controller to the list of "managed" -// controllers. -//--------------------------------------------------------- - -void CtrlDialog::otherClicked() - { - QTreeWidgetItem* item = tw->currentItem(); - if (item) - currentId = item->type(); - // - // present the list of available controller for - // the selected midi instrument - // - ConfigMidiCtrl mce((MidiTrack*)t); - mce.exec(); - updateController(); - } - diff --git a/muse/muse/ctrl/ctrldialog.h b/muse/muse/ctrl/ctrldialog.h deleted file mode 100644 index 3cb51ef2..00000000 --- a/muse/muse/ctrl/ctrldialog.h +++ /dev/null @@ -1,49 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __CTRL_DIALOG_H__ -#define __CTRL_DIALOG_H__ - -#include "ui_ctrldialog.h" - -class Track; - -//--------------------------------------------------------- -// CtrlDialog -//--------------------------------------------------------- - -class CtrlDialog : public QDialog, public Ui_CtrlDialogBase { - Q_OBJECT - - Track* t; - int currentId; - void updateController(); - - private slots: - void itemDoubleClicked(QTreeWidgetItem*, int); - void otherClicked(); - - public: - CtrlDialog(Track*, int, QWidget* parent = 0); - int curId() const; - }; - -#endif - diff --git a/muse/muse/ctrl/ctrldialog.ui b/muse/muse/ctrl/ctrldialog.ui deleted file mode 100644 index 178cf1d3..00000000 --- a/muse/muse/ctrl/ctrldialog.ui +++ /dev/null @@ -1,126 +0,0 @@ - - CtrlDialogBase - - - - 0 - 0 - 390 - 300 - - - - MusE: Select Controller - - - - 9 - - - 6 - - - - - true - - - true - - - 3 - - - - Controller - - - - - A - - - - - - - - 0 - - - 6 - - - - - Other - - - - - - - Qt::Horizontal - - - - 131 - 31 - - - - - - - - OK - - - - - - - Cancel - - - - - - - - - - - okButton - clicked() - CtrlDialogBase - accept() - - - 278 - 253 - - - 96 - 254 - - - - - cancelButton - clicked() - CtrlDialogBase - reject() - - - 369 - 253 - - - 179 - 282 - - - - - diff --git a/muse/muse/ctrl/ctrledit.cpp b/muse/muse/ctrl/ctrledit.cpp deleted file mode 100644 index 20022f47..00000000 --- a/muse/muse/ctrl/ctrledit.cpp +++ /dev/null @@ -1,184 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "ctrledit.h" -#include "midictrl.h" -#include "widgets/simplebutton.h" -#include "widgets/utils.h" -#include "ctrl/configmidictrl.h" -#include "ctrl/ctrldialog.h" -#include "widgets/tools.h" -#include "miditrack.h" -#include "midioutport.h" - -//--------------------------------------------------------- -// CtrlEdit -//--------------------------------------------------------- - -CtrlEdit::CtrlEdit(QWidget* parent, TimeCanvas* timeCanvas, Track* t) - : QObject(parent), _track(t) - { - y = 0; - _height = 0; - setDrawCtrlName(true); - - _tc = timeCanvas; - _ctrl = &veloList; - if (t->type() == Track::MIDI) { - ctrlId = CTRL_VELOCITY; - _ctrl = &veloList; - } - else { - ctrlId = AC_VOLUME; - _ctrl = t->getController(ctrlId); - } - - sel = new SimpleButton(tr("Sel"), parent); - sel->setToolTip(tr("select controller")); - sel->setAutoRaise(false); - - minus = newMinusButton(); - minus->setParent(parent); - minus->setToolTip(tr("remove controller view")); - minus->setAutoRaise(false); - - connect(_track, SIGNAL(controllerChanged(int)), SLOT(controllerListChanged(int))); - connect(sel, SIGNAL(clicked()), SLOT(showControllerList())); - } - -//--------------------------------------------------------- -// CtrlEdit -//--------------------------------------------------------- - -CtrlEdit::~CtrlEdit() - { - delete sel; - delete minus; - } - -//--------------------------------------------------------- -// setCtrl -//--------------------------------------------------------- - -void CtrlEdit::setCtrl(int id) - { - _ctrl = 0; - - if (_track->type() == Track::MIDI) { - if (id == CTRL_VELOCITY) - _ctrl = &veloList; - else if (id == CTRL_SVELOCITY) - _ctrl = &sveloList; - else - _ctrl = _track->getController(id); - } - else - _ctrl = _track->getController(id); - - if (!_ctrl) - printf("CtrlEdit::setCtrl(%d): not found for track <%s>\n", id, - _track->name().toLocal8Bit().data()); - } - -//--------------------------------------------------------- -// showControllerList -//--------------------------------------------------------- - -void CtrlEdit::showControllerList() - { - Ctrl* c = ctrl(); - int id; - if (c) - id = c->id(); - else - id = CTRL_NO_CTRL; - CtrlDialog cd(_track, id); - int rv = cd.exec(); - if (rv != 1) - return; - id = cd.curId(); - if (id == CTRL_NO_CTRL) - return; - changeController(id); - } - -//--------------------------------------------------------- -// changeController -//--------------------------------------------------------- - -void CtrlEdit::changeController(int id) - { - if (id == CTRL_VELOCITY) { - ctrlId = id; - _ctrl = &veloList; - } - else if (id == CTRL_SVELOCITY) { - ctrlId = id; - _ctrl = &sveloList; - } - else if (id == CTRL_OTHER) { // "other" - if (track()->type() == Track::MIDI) { - ConfigMidiCtrl* mce = new ConfigMidiCtrl((MidiTrack*)track()); - mce->exec(); - sel->showMenu(); - } - else - printf("CtrlEdit::changeController: not impl.\n"); - } - else { - ctrlId = id; - _ctrl = track()->getController(ctrlId); - } - _tc->updateCanvasB(); - } - -//--------------------------------------------------------- -// controllerListChanged -//--------------------------------------------------------- - -void CtrlEdit::controllerListChanged(int id) - { - if (id != ctrlId) - return; - tc()->widget()->update(tc()->rCanvasB); - } - -//--------------------------------------------------------- -// pixel2val -//--------------------------------------------------------- - -int CtrlEdit::pixel2val(int y) const - { - if (ctrl() == 0) - return 0; - CVal val = ctrl()->pixel2val(y, _height - splitWidth); - return val.i; - } - - -//--------------------------------------------------------- -// setSinglePitch -//--------------------------------------------------------- - -void CtrlEdit::setSinglePitch(int val) - { - singlePitch = val; - } - diff --git a/muse/muse/ctrl/ctrledit.h b/muse/muse/ctrl/ctrledit.h deleted file mode 100644 index d942c84f..00000000 --- a/muse/muse/ctrl/ctrledit.h +++ /dev/null @@ -1,76 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __CTRL_EDIT_H__ -#define __CTRL_EDIT_H__ - -#include "ctrleditor.h" -#include "gui.h" - -class SimpleButton; -class TimeCanvas; - -//--------------------------------------------------------- -// CtrlEdit -//--------------------------------------------------------- - -class CtrlEdit : public QObject, public CtrlEditor { - Q_OBJECT - - Track* const _track; - Ctrl* _ctrl; - TimeCanvas* _tc; - int _height; - - virtual Ctrl* ctrl() const { return _ctrl; } - virtual TimeCanvas* tc() const { return _tc; } - virtual Track* track() const { return _track; } - - public: - int ctrlId; - int y; - SimpleButton* minus; - SimpleButton* sel; - QMenu* ctrlList; - - private slots: - void showControllerList(); - void changeController(int); - void controllerListChanged(int); - - public: - CtrlEdit(QWidget*, TimeCanvas*, Track*); - ~CtrlEdit(); - int pixel2val(int) const; - void setHeight(int val) { _height = val; } - int height() const { return _height; } - virtual int cheight() const { return _height - splitWidth; } - void setCtrl(Ctrl* c) { _ctrl = c; } - void setCtrl(int id); - Ctrl* ctrl() { return _ctrl; } - void setSinglePitch(int); - }; - - -typedef std::vector CtrlEditList; -typedef CtrlEditList::iterator iCtrlEdit; -typedef CtrlEditList::const_iterator ciCtrlEdit; -#endif - diff --git a/muse/muse/ctrl/ctrleditor.cpp b/muse/muse/ctrl/ctrleditor.cpp deleted file mode 100644 index cc89c4c6..00000000 --- a/muse/muse/ctrl/ctrleditor.cpp +++ /dev/null @@ -1,492 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "ctrleditor.h" -#include "track.h" -#include "awl/tcanvas.h" -#include "ctrl.h" -#include "midictrl.h" -#include "gconfig.h" -#include "song.h" -#include "part.h" -#include "tools.h" -#include "muse.h" -#include "gui.h" - -static const int HANDLE1 = 6; -static const int HANDLE2 = 3; -static const int veloWidth = 3; - -Ctrl veloList(CTRL_VELOCITY, "velocity", Ctrl::DISCRETE |Ctrl::INT, 0.0, 127.0); // dummy -Ctrl sveloList(CTRL_SVELOCITY, "single velocity", Ctrl::DISCRETE |Ctrl::INT, 0.0, 127.0); // dummy - -//--------------------------------------------------------- -// CtrlEditor -//--------------------------------------------------------- - -CtrlEditor::CtrlEditor() - { - _drawCtrlName = false; - dragy = -1; - lselected = 0; - singlePitch = -1; - drawRuler = false; - } - -//--------------------------------------------------------- -// drawHandle -//--------------------------------------------------------- - -inline static void drawHandle(QPainter& p, int x, int y, int lselected) - { - p.fillRect(x-HANDLE2, y-HANDLE2, HANDLE1, HANDLE1, - x == lselected ? Qt::red : Qt::yellow); - } - -//--------------------------------------------------------- -// ctrlY -//--------------------------------------------------------- - -int CtrlEditor::ctrlY(int x, const CVal& val) const - { - if (dragy != -1 && lselected == x) - return dragy; - return ctrl()->val2pixelR(val, th) + HANDLE2; - } - -//--------------------------------------------------------- -// paint -//--------------------------------------------------------- - -void CtrlEditor::paint(QPainter& p, const QRect& r) - { - if (!ctrl()) - return; - int from = r.x() - HANDLE1; - if (from < 0) - from = 0; - int to = r.x() + r.width() + HANDLE1; - th = cheight() - HANDLE1 + splitWidth; - - p.save(); - bool aR = track()->autoRead(); - p.setPen(QPen(aR ? Qt::white : Qt::gray, 2)); - - TType tt = track()->timeType(); - - if (ctrl()->id() == CTRL_VELOCITY) { - p.setRenderHint(QPainter::Antialiasing, false); - p.setPen(QPen(Qt::blue, veloWidth)); - PartList* pl = track()->parts(); - for (iPart ip = pl->begin(); ip != pl->end(); ++ip) { - Part* part = ip->second; - int pos1 = tc()->pos2pix(*part); - int pos2 = tc()->pos2pix(part->end()); - - if (pos2 <= from) - continue; - if (pos1 > to) - break; - - EventList* events = part->events(); - for (iEvent e = events->begin(); e != events->end(); ++e) { - const Event& ev = e->second; - if (ev.type() != Note) - continue; - int pos = tc()->pos2pix(ev.pos() + *part); - if (pos <= from) - continue; - if (pos > to) - break; - int id = ctrl()->id(); - if (id == CTRL_VELOCITY || - (id == CTRL_SVELOCITY && ev.pitch() == singlePitch)) { - int y1 = ctrl()->val2pixelR(ev.velo(), th+3) + 1; - p.drawLine(pos, th+3, pos, y1); - } - } - } - } - else { - p.setRenderHint(QPainter::Antialiasing, true); - if (ctrl()->empty()) { - if (aR) { - int y = ctrl()->cur2pixel(th) + HANDLE2; - p.drawLine(r.x(), y, r.x() + r.width(), y); - } - } - else { - int x1, y1, x2, y2; - int hx = -1; - int hy = 0; - - Pos pos1 = tc()->pix2pos(from); - ciCtrlVal i = ctrl()->lowerBound(pos1.time(tt)); - - if (i == ctrl()->end()) { - --i; - int x = tc()->pos2pix(Pos(i.key(), tt)); - int y = ctrlY(x, i.value()); - p.drawLine(r.x(), y, r.x() + r.width(), y); - } - else { - if (i == ctrl()->begin()) { - x1 = tc()->pos2pix(Pos(i.key(), tt)); - y1 = ctrlY(x1, i.value()); - x1 = r.x(); - } - else { - --i; - x1 = tc()->pos2pix(Pos(i.key(), tt)); - y1 = ctrlY(x1, i.value()); - hx = x1; - hy = y1; - ++i; - } - do { - x2 = tc()->pos2pix(Pos(i.key(), tt)); - y2 = ctrlY(x2, i.value()); - if (ctrl()->type() & Ctrl::DISCRETE) { - p.drawLine(x1, y1, x2, y1); - p.drawLine(x2, y1, x2, y2); - } - else - p.drawLine(x1, y1, x2, y2); - if (x2 >= to) - break; - if (hx != -1) - drawHandle(p, hx, hy, lselected); - hx = x2; - hy = y2; - x1 = x2; - y1 = y2; - ++i; - } while (i != ctrl()->end()); - if (x2 < to) - p.drawLine(x2, y1, to, y1); - if (hx != -1) - drawHandle(p, hx, hy, lselected); - } - } - if (!aR) { - int y = ctrl()->cur2pixel(th) + HANDLE2; - p.drawLine(r.x(), y, r.x() + r.width(), y); - } - } - - if (drawRuler) { - p.setPen(QPen(Qt::white, 2)); - p.setRenderHint(QPainter::Antialiasing, true); - p.drawLine(ruler1, ruler2); - } - // - // this does not work well a.t.m: - // - if (_drawCtrlName) { - QString s(ctrl()->name()); - QFont f(tc()->font()); -// p.setFont(config.fonts[3]); - p.setPen(Qt::black); - QFontMetrics fm(f); - int ly = fm.lineSpacing() + 2; - p.drawText(2, ly, s); - } - p.restore(); - } - -//--------------------------------------------------------- -// mousePress -//--------------------------------------------------------- - -void CtrlEditor::mousePress(const QPoint& pos, QMouseEvent* me) - { - int button = me->button(); - Qt::KeyboardModifiers modifiers = me->modifiers(); - Tool tool = tc()->tool(); - if (button & Qt::RightButton) { - QMenu pop(tc()); - QAction* a; - for (int i = 0; i < TOOLS; ++i) { - int id = 1 << i; - if ((arrangerTools & id) == 0) - continue; - a = getAction(toolList[i], &pop); - pop.addAction(a); - a->setCheckable(true); - if (id == (int)tool) - a->setChecked(true); - } - a = pop.addSeparator(); - a = pop.addAction("List Editor"); - a->setData(1 << (TOOLS+1)); - - a = pop.exec(me->globalPos()); - if (a) { - int n = a->data().toInt(); - if (n == (1 << (TOOLS+1))) { - Pos t(tc()->pix2pos(pos.x())); - muse->showListEditor(t, track(), 0, ctrl()); - } - else - muse->setTool(n); - } - return; - } - - int wh = cheight(); - int y = pos.y(); - int x = pos.x(); - - int cid = ctrl()->id(); - - if (tool == PencilTool || (modifiers & Qt::ShiftModifier)) { - selected = tc()->pix2pos(x); - lselected = x; - dragy = y; - dragx = x; - dragYoffset = 0; - if (cid == CTRL_VELOCITY || cid == CTRL_SVELOCITY) - song->startUndo(); - else { - // add controller: - CVal val = ctrl()->pixel2val(dragy-HANDLE2, wh - HANDLE1 + splitWidth); - song->cmdAddControllerVal(track(), ctrl(), selected, val); - tc()->widget()->update(); - } - } - else if (tool == PointerTool || tool == RubberTool) { - if (cid == CTRL_VELOCITY || cid == CTRL_SVELOCITY) { - dragx = x; - song->startUndo(); - return; - } - - Pos pos1(tc()->pix2pos(x - HANDLE2)); - Pos pos2(tc()->pix2pos(x + HANDLE2)); - - TType tt = track()->timeType(); - ciCtrlVal s = ctrl()->upperBound(pos1.time(tt)); - ciCtrlVal e = ctrl()->upperBound(pos2.time(tt)); - for (ciCtrlVal i = s; i != e; ++i) { - int yy = ctrl()->val2pixelR(i.value(), wh - HANDLE1 + splitWidth) + HANDLE2; - startY = yy; - if ((yy >= (y-HANDLE2)) && (yy < (y + HANDLE2))) { - if (tt == AL::TICKS) - selected.setTick(i.key()); - else - selected.setFrame(i.key()); - lselected = tc()->pos2pix(selected); - if (tool == RubberTool || button == Qt::RightButton - || modifiers & Qt::ControlModifier) { - song->cmdRemoveControllerVal(track(), ctrl()->id(), i.key()); - dragy = -1; - } - else { - dragy = yy; - dragYoffset = dragy - y; - } - tc()->widget()->update(); - break; - } - } - } - else if (tool == DrawTool) { - ruler1 = ruler2 = pos; - drawRuler = true; - } - } - -//--------------------------------------------------------- -// mouseRelease -//--------------------------------------------------------- - -void CtrlEditor::mouseRelease() - { - if (tc()->tool() == DrawTool) { - song->startUndo(); - drawRuler = false; - int from, to, y1, y2; - if (ruler1.x() > ruler2.x()) { - from = ruler2.x(); - to = ruler1.x(); - y1 = ruler2.y(); - y2 = ruler1.y(); - } - else { - from = ruler1.x(); - to = ruler2.x(); - y1 = ruler1.y(); - y2 = ruler2.y(); - } - MidiController::ControllerType type = midiControllerType(ctrl()->id()); - if (type == MidiController::Velo) { - PartList* pl = track()->parts(); - for (iPart ip = pl->begin(); ip != pl->end(); ++ip) { - Part* part = ip->second; - int pos1 = tc()->pos2pix(*part); - int pos2 = tc()->pos2pix(part->end()); - - if (pos2 <= from) - continue; - if (pos1 > to) - break; - - EventList* events = part->events(); - for (iEvent e = events->begin(); e != events->end(); ++e) { - if (e->second.type() != Note) - continue; - int pos = tc()->pos2pix(e->second.pos() + *part); - if (pos <= from) - continue; - if (pos > to) - break; - int id = ctrl()->id(); - if (id == CTRL_VELOCITY || - (CTRL_SVELOCITY && e->second.pitch() == singlePitch)) { - int y = y1 + (y2 - y1) * (pos - from) / (to - from); - int val = (ctrl()->pixel2val(y+HANDLE2, cheight()-HANDLE1+splitWidth)).i; - Event clone = e->second.clone(); - clone.setB(val); - song->changeEvent(e->second, clone, part); - song->undoOp(UndoOp::ModifyEvent, clone, e->second, part); - } - } - } - } - else { - printf("ctrleditor:: not implemented\n"); - } - song->endUndo(SC_EVENT_MODIFIED); - tc()->widget()->update(); - return; - } - if (ctrl()->id() == CTRL_VELOCITY || ctrl()->id() == CTRL_SVELOCITY) - song->endUndo(SC_EVENT_MODIFIED); - else { - if (dragy != -1 && dragy != startY) { - int wh = cheight() + splitWidth - HANDLE1; - CVal val = ctrl()->pixel2val(dragy - HANDLE2, wh); - // modify controller: - song->cmdAddControllerVal(track(), ctrl(), selected, val); - } - dragy = -1; - } - } - -//--------------------------------------------------------- -// mouseMove -// called only with mouse button pressed -//--------------------------------------------------------- - -void CtrlEditor::mouseMove(const QPoint& pos) - { - Tool tool = tc()->tool(); - int cid = ctrl()->id(); - - if (tool == DrawTool) { - ruler2 = pos; - tc()->widget()->update(); - return; - } - if (cid == CTRL_VELOCITY || cid == CTRL_SVELOCITY) { - AL::Pos p1(tc()->pix2pos(dragx)); - AL::Pos p2(tc()->pix2pos(pos.x())); - dragx = pos.x(); - - int wh = cheight() - HANDLE1 + splitWidth; - int val = (ctrl()->pixel2val(pos.y() - HANDLE2, wh)).i; - unsigned tick1 = p1.tick(); - Part* part = track()->parts()->findPart(tick1); - if (part == 0) - return; - unsigned tick2 = p2.tick(); - if (tick1 > tick2) { - int tmp = tick2; - tick2 = tick1; - tick1 = tmp; - } - if (part->tick() > tick1) - tick1 = 0; - else - tick1 -= part->tick(); // event time is relative to part - if (part->tick() > tick2) - tick2 = 0; - else - tick2 -= part->tick(); - - // - // change velocity for all notes at tick time - // - EventList* el = part->events(); - EventList tel; - for (iEvent ie = el->lower_bound(tick1); ie != el->lower_bound(tick2); ie++) { - Event e = ie->second; - if (!e.isNote() || e.dataB() == val) - continue; - tel.add(e); - } - for (iEvent ie = tel.begin(); ie != tel.end(); ++ie) { - Event e = ie->second; - Event clone = e.clone(); - clone.setB(val); - song->changeEvent(e, clone, part); - song->undoOp(UndoOp::ModifyEvent, clone, e, part); - } - } - else { - if (tool == RubberTool) { - int wh = cheight(); - int y = pos.y(); - int x = pos.x(); - - Pos pos1(tc()->pix2pos(x - HANDLE2)); - Pos pos2(tc()->pix2pos(x + HANDLE2)); - - TType tt = track()->timeType(); - ciCtrlVal s = ctrl()->upperBound(pos1.time(tt)); - ciCtrlVal e = ctrl()->upperBound(pos2.time(tt)); - for (ciCtrlVal i = s; i != e; ++i) { - int yy = ctrl()->val2pixelR(i.value(), wh); - startY = yy; - if ((yy >= (y-HANDLE2)) && (yy < (y + HANDLE2))) { - if (tt == AL::TICKS) - selected.setTick(i.key()); - else - selected.setFrame(i.key()); - lselected = tc()->pos2pix(selected); - song->cmdRemoveControllerVal(track(), ctrl()->id(), i.key()); - dragy = -1; - break; - } - } - } - if (dragy != -1) { - int th = cheight() + splitWidth - HANDLE2 - 1; - dragy = pos.y() + dragYoffset; - if (dragy < HANDLE2) - dragy = HANDLE2; - else if (dragy > th) { - dragy = th; - } - } - } - tc()->widget()->update(); - } - diff --git a/muse/muse/ctrl/ctrleditor.h b/muse/muse/ctrl/ctrleditor.h deleted file mode 100644 index e33a8b29..00000000 --- a/muse/muse/ctrl/ctrleditor.h +++ /dev/null @@ -1,76 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __CTRL_EDITOR_H__ -#define __CTRL_EDITOR_H__ - -#include "al/pos.h" - -class Ctrl; -class TimeCanvas; -class Track; -struct CVal; - -//--------------------------------------------------------- -// CtrlEditor -//--------------------------------------------------------- - -class CtrlEditor { - bool _drawCtrlName; - int dragx, dragy; - int dragYoffset; - int startY; - - int th; // effective track height, temp value - - int lselected; // cached pixel position of current value - AL::Pos selected; // current selected controller value - - bool drawRuler; - QPoint ruler1; - QPoint ruler2; - - virtual Ctrl* ctrl() const = 0; - virtual TimeCanvas* tc() const = 0; - virtual int cheight() const = 0; - virtual Track* track() const = 0; - - bool searchHandle(unsigned* time) const; - - int ctrlY(int x, const CVal&) const; - - protected: - int singlePitch; - - public: - CtrlEditor(); - virtual ~CtrlEditor() {} - void paint(QPainter& p, const QRect& r); - void setDrawCtrlName(bool val) { _drawCtrlName = val; } - void mousePress(const QPoint&, QMouseEvent*); - void mouseRelease(); - void mouseMove(const QPoint& pos); - }; - - -extern Ctrl veloList; -extern Ctrl sveloList; -#endif - diff --git a/muse/muse/ctrl/definemidictrl.cpp b/muse/muse/ctrl/definemidictrl.cpp deleted file mode 100644 index 197d7572..00000000 --- a/muse/muse/ctrl/definemidictrl.cpp +++ /dev/null @@ -1,110 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "definemidictrl.h" -#include "miditrack.h" -#include "instruments/minstrument.h" - -//--------------------------------------------------------- -// DefineMidiCtrlDialog -// controllerName QLineEdit -// controllerType QComboBox -// msbId lsbId minVal maxVal initVal QSpinBox -// moveWithPart QCheckBox -//--------------------------------------------------------- - -DefineMidiCtrl::DefineMidiCtrl(MidiTrack* t, QWidget* parent) - : QDialog(parent) - { - setupUi(this); - track = t; - connect(controllerType, SIGNAL(currentIndexChanged(int)), SLOT(typeChanged(int))); - } - -//--------------------------------------------------------- -// done -// val == 1 -> OK -//--------------------------------------------------------- - -void DefineMidiCtrl::done(int val) - { - if (val) { - ctrl.setName(controllerName->text()); - ctrl.setComment(controllerComment->toPlainText()); - int num = MidiController::genNum( - MidiController::ControllerType(controllerType->currentIndex()), - msbId->value(), lsbId->value()); - ctrl.setNum(num); - ctrl.setMinVal(minVal->value()); - ctrl.setMaxVal(maxVal->value()); - ctrl.setInitVal(initVal->value()); - ctrl.setMoveWithPart(moveWithPart->isChecked()); - - // - // add controller to instrument - // - MidiInstrument* instrument = track->instrument(); - MidiControllerList* mcl = instrument->controller(); - MidiController* c = new MidiController(ctrl); - mcl->append(c); - } - - QDialog::done(val); - } - -//--------------------------------------------------------- -// typeChanged -//--------------------------------------------------------- - -void DefineMidiCtrl::typeChanged(int val) - { - MidiController::ControllerType t = (MidiController::ControllerType)val; - switch (t) { - case MidiController::RPN: - case MidiController::NRPN: - case MidiController::Controller7: - msbId->setEnabled(false); - lsbId->setEnabled(true); - maxVal->setRange(0, 127); - maxVal->setValue(127); - initVal->setRange(0, 127); - break; - case MidiController::Controller14: - case MidiController::RPN14: - case MidiController::NRPN14: - msbId->setEnabled(true); - lsbId->setEnabled(true); - maxVal->setRange(0, 128*128-1); - maxVal->setValue(128*128-1); - initVal->setRange(0, 128*128-1); - break; - case MidiController::Pitch: - case MidiController::Program: - msbId->setEnabled(false); - lsbId->setEnabled(false); - maxVal->setRange(0, 128*128-1); - initVal->setRange(0, 128*128-1); - maxVal->setValue(128*128-1); - break; - default: - break; - } - } - diff --git a/muse/muse/ctrl/definemidictrl.h b/muse/muse/ctrl/definemidictrl.h deleted file mode 100644 index bc0df6a9..00000000 --- a/muse/muse/ctrl/definemidictrl.h +++ /dev/null @@ -1,51 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __DEFINEMIDICTRL_H__ -#define __DEFINEMIDICTRL_H__ - -#include "ui_definemidictrl.h" -#include "midictrl.h" - -class MidiTrack; - -//--------------------------------------------------------- -// DefineMidiCtrl -//--------------------------------------------------------- - -class DefineMidiCtrl : public QDialog, public Ui::DefineMidiCtrlBase { - Q_OBJECT - - MidiTrack* track; - MidiController ctrl; - - private slots: - virtual void done(int); - void typeChanged(int); - - public: - DefineMidiCtrl(MidiTrack* t, QWidget* parent = 0); - const MidiController* midiController() const { return &ctrl; } - }; - -#endif - - - diff --git a/muse/muse/ctrl/definemidictrl.ui b/muse/muse/ctrl/definemidictrl.ui deleted file mode 100644 index a66e55cb..00000000 --- a/muse/muse/ctrl/definemidictrl.ui +++ /dev/null @@ -1,285 +0,0 @@ - - DefineMidiCtrlBase - - - - 0 - 0 - 558 - 344 - - - - Dialog - - - - 9 - - - 6 - - - - - 0 - - - 6 - - - - - - 24 - 75 - true - - - - QFrame::Raised - - - 5 - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:24pt; font-weight:600; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:400;"> </span><span style=" font-weight:400;">CTRL </span></p></body></html> - - - - - - - Controller Name: - - - - - - - - - - Controller Type: - - - - - - - - 7-Bit - - - - - 14-Bit - - - - - 7-Bit RPN - - - - - 14-Bit RPN - - - - - 7-Bit NRPN - - - - - 14-Bit NRPN - - - - - - - - - - Comment: - - - - - - - - - - 0 - - - 6 - - - - - 0 - - - 6 - - - - - 0x00 - - - - - - - - - - Id LSB - - - - - - - 0x00 - - - - - - - - - - Id MSB - - - - - - - Move with Part - - - - - - - - - 0 - - - 6 - - - - - - - - 0x00 - - - - - - - 0x00 - - - - - - - Init Value - - - - - - - - - - Min.Value - - - - - - - - - - Max.Value - - - - - - - 0x00 - - - - - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok - - - - - - - - - okButton - accepted() - DefineMidiCtrlBase - accept() - - - 248 - 254 - - - 157 - 274 - - - - - okButton - rejected() - DefineMidiCtrlBase - reject() - - - 316 - 260 - - - 286 - 274 - - - - - diff --git a/muse/muse/debug.h b/muse/muse/debug.h deleted file mode 100644 index 0820fef3..00000000 --- a/muse/muse/debug.h +++ /dev/null @@ -1,44 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __MUSE_DEBUG_H__ -#define __MUSE_DEBUG_H__ - -#include "globals.h" - -#ifdef DEBUG_1 -#define M_REPORT(string) printf("%s:%d:%s: " string "\n", __FILE__, __LINE__, __PRETTY_FUNCTION__); -#define M_REPORTARG(format, args...) printf("%s:%d:%s: " format "\n", __FILE__, __LINE__, __PRETTY_FUNCTION__, ##args); -#define M_DEBUG(string) if (debugMsg) fprintf(stderr, "%s:%d:%s: " string "\n", __FILE__, __LINE__, __PRETTY_FUNCTION__); -#define M_DEBUGARG(format, args...) if (debugMsg) fprintf(stderr, "%s:%d:%s: " format "\n", __FILE__, __LINE__, __PRETTY_FUNCTION__, ##args); -#define M_ERROR(string) fprintf(stderr, "%s:%d:%s: " string "\n", __FILE__, __LINE__, __PRETTY_FUNCTION__); -#define M_ERRORARG(format, args...) fprintf(stderr, "%s:%d:%s: " format "\n", __FILE__, __LINE__, __PRETTY_FUNCTION__, ##args); -#else -#define M_REPORT(string) -#define M_REPORTARG(format, args...) -#define M_DEBUG(string) -#define M_DEBUGARG(format, args...) -#define M_ERROR(string) -#define M_ERRORARG(format, args...) -#endif - -#define DEBUG_ARGS __FILE__ << ":" << __LINE__ << ":" << __PRETTY_FUNCTION__ << ": " - -#endif /* __MUSE_DEBUG_H__ */ diff --git a/muse/muse/default_click.h b/muse/muse/default_click.h deleted file mode 100644 index d6907c80..00000000 --- a/muse/muse/default_click.h +++ /dev/null @@ -1,1213 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 20002 Paul Davis -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -static const float defaultClick[] = { - -0.0019836426, 0.0097045898, 0.019165039, 0.028594971, 0.036102295, - 0.040679932, 0.040649414, 0.036560059, 0.029693604, 0.016967773, - 0.0057067871, -0.008026123, -0.021453857, -0.026153564, - -0.031921387, -0.036834717, -0.04397583, -0.046844482, - -0.045349121, -0.041748047, -0.032623291, -0.026611328, - -0.026702881, -0.025482178, -0.013092041, 0.0055847168, - 0.023040771, 0.027435303, 0.043426514, 0.07925415, 0.1086731, - 0.09463501, 0.039154053, -0.027832031, -0.081542969, -0.099090576, - -0.089385986, -0.051055908, -0.0023803711, 0.031951904, - 0.044128418, 0.029998779, 0.0086669922, 0.0022888184, 0.0082092285, - 0.0085144043, -0.0057983398, -0.027496338, -0.036834717, - -0.021759033, -0.020721436, -0.024078369, -0.025360107, - -0.090698242, -0.16491699, -0.16052246, -0.090454102, 0.0031433105, - 0.013031006, 0.034790039, 0.30599976, 0.58151245, 0.5078125, - 0.32858276, 0.21975708, -0.050018311, -0.34790039, -0.46588135, - -0.26513672, 0.12893677, 0.19259644, 0.11685181, 0.095825195, - -0.039154053, -0.041473389, 0.0069274902, -0.14685059, -0.32232666, - -0.21795654, 0.051086426, 0.18112183, 0.30905151, 0.47305298, - 0.60980225, 0.59518433, 0.46920776, 0.51705933, 0.47116089, - 0.31832886, 0.20901489, 0.059539795, -0.10055542, -0.23834229, - -0.26708984, -0.27468872, -0.29516602, -0.22879028, -0.12854004, - -0.064300537, -0.0068664551, 0.060211182, 0.10339355, 0.12594604, - 0.12954712, 0.063568115, -0.041046143, -0.1184082, -0.19332886, - -0.27337646, -0.34906006, -0.40966797, -0.46533203, -0.45361328, - -0.39672852, -0.32958984, -0.15246582, 0.086853027, 0.23678589, - 0.24838257, 0.13034058, -0.15222168, -0.5199585, -0.80224609, - -0.9397583, -0.89654541, -0.71923828, -0.47998047, -0.14666748, - 0.26187134, 0.54995728, 0.69186401, 0.84616089, 0.79928589, - 0.53170776, 0.39968872, 0.32455444, 0.2137146, 0.19454956, - 0.24069214, 0.22750854, 0.14596558, 0.047058105, -0.04876709, - -0.13095093, -0.19775391, -0.16293335, -0.059265137, 0.027526855, - 0.13961792, 0.26803589, 0.35470581, 0.37600708, 0.34085083, - 0.2572937, 0.13265991, -0.008026123, -0.12841797, -0.22216797, - -0.30899048, -0.37841797, -0.4251709, -0.45947266, -0.48376465, - -0.50341797, -0.52294922, -0.54516602, -0.58447266, -0.62121582, - -0.63989258, -0.64990234, -0.63037109, -0.568573, -0.46630859, - -0.36468506, -0.27618408, -0.18487549, -0.11065674, -0.070404053, - -0.066101074, -0.049835205, -0.026611328, -0.013061523, - 0.011444092, 0.034576416, 0.046112061, 0.052215576, 0.045501709, - 0.030059814, 0.011657715, 0.026489258, 0.056121826, 0.10122681, - 0.20016479, 0.33053589, 0.45944214, 0.54830933, 0.57751465, 0.5625, - 0.55612183, 0.55319214, 0.5697937, 0.64987183, 0.73553467, - 0.78170776, 0.84420776, 0.89987183, 0.90475464, 0.85861206, - 0.75338745, 0.57077026, 0.3354187, 0.067779541, -0.1741333, - -0.36557007, -0.47802734, -0.51281738, -0.47766113, -0.36865234, - -0.22381592, -0.065765381, 0.066680908, 0.12365723, 0.098114014, - 0.020965576, -0.10775757, -0.27294922, -0.41845703, -0.50146484, - -0.52563477, -0.48291016, -0.38186646, -0.27264404, -0.16925049, - -0.07043457, 0.003326416, 0.025085449, -0.028320312, -0.11358643, - -0.18164062, -0.21984863, -0.21286011, -0.16635132, -0.12728882, - -0.088104248, 0.016693115, 0.18893433, 0.40280151, 0.59127808, - 0.67233276, 0.64682007, 0.54733276, 0.4213562, 0.30703735, - 0.19845581, 0.12661743, 0.095611572, 0.10531616, 0.17950439, - 0.29904175, 0.41726685, 0.47506714, 0.48678589, 0.48873901, - 0.46694946, 0.42233276, 0.38088989, 0.34689331, 0.30709839, - 0.26022339, 0.18258667, 0.064544678, -0.09085083, -0.25634766, - -0.41540527, -0.54693604, -0.62731934, -0.6809082, -0.70849609, - -0.71044922, -0.68469238, -0.64886475, -0.62115479, -0.6104126, - -0.62451172, -0.65185547, -0.67504883, -0.68969727, -0.70257568, - -0.71337891, -0.68994141, -0.61865234, -0.49755859, -0.32177734, - -0.10437012, 0.11209106, 0.30691528, 0.46789551, 0.51602173, - 0.44674683, 0.32055664, 0.1769104, 0.06072998, 0.0075378418, - -0.013641357, -0.0038146973, 0.082244873, 0.22116089, 0.35787964, - 0.47689819, 0.60266113, 0.71801758, 0.81747437, 0.91799927, - 0.97079468, 0.97677612, 0.93850708, 0.83322144, 0.65866089, - 0.42324829, 0.14834595, -0.10574341, -0.31484985, -0.46813965, - -0.54833984, -0.55517578, -0.51220703, -0.43115234, -0.34613037, - -0.29052734, -0.2699585, -0.29443359, -0.33349609, -0.38720703, - -0.45751953, -0.51318359, -0.54800415, -0.55706787, -0.5402832, - -0.48666382, -0.41162109, -0.32958984, -0.24560547, -0.19873047, - -0.18457031, -0.19171143, -0.21240234, -0.23876953, -0.25823975, - -0.26184082, -0.24902344, -0.21612549, -0.16552734, -0.11083984, - -0.058349609, -0.0034179688, 0.053283691, 0.12722778, 0.23052979, - 0.35769653, 0.51147461, 0.68243408, 0.85015869, 0.96902466, - 0.99908447, 0.99899292, 0.99453735, 0.87936401, 0.72964478, - 0.59124756, 0.45162964, 0.29949951, 0.18435669, 0.087219238, - 0.0085754395, -0.031677246, -0.057434082, -0.06338501, - -0.050262451, -0.021179199, 0.010986328, 0.035095215, 0.041900635, - 0.026275635, -0.008972168, -0.067260742, -0.14938354, -0.24298096, - -0.33901978, -0.44342041, -0.53179932, -0.59924316, -0.64294434, - -0.66220093, -0.65362549, -0.61437988, -0.56277466, -0.48764038, - -0.41287231, -0.3420105, -0.25909424, -0.17782593, -0.10604858, - -0.033355713, 0.037872314, 0.097198486, 0.15203857, 0.19644165, - 0.23324585, 0.2668457, 0.29403687, 0.31442261, 0.33148193, - 0.33639526, 0.32794189, 0.31109619, 0.30651855, 0.30456543, - 0.31005859, 0.32266235, 0.34017944, 0.36062622, 0.37988281, - 0.39459229, 0.40344238, 0.41464233, 0.41500854, 0.41091919, - 0.40512085, 0.39819336, 0.3843689, 0.36633301, 0.33621216, - 0.28076172, 0.19436646, 0.083892822, -0.056732178, -0.21832275, - -0.38809204, -0.55502319, -0.70330811, -0.82672119, -0.909729, - -0.93505859, -0.9085083, -0.84347534, -0.74786377, -0.63342285, - -0.52468872, -0.42883301, -0.35321045, -0.29504395, -0.26339722, - -0.23782349, -0.21252441, -0.19006348, -0.16159058, -0.12472534, - -0.075958252, -0.012115479, 0.056091309, 0.11953735, 0.17373657, - 0.22116089, 0.25097656, 0.25982666, 0.2539978, 0.24578857, - 0.24325562, 0.25292969, 0.28744507, 0.34677124, 0.42510986, - 0.51596069, 0.60205078, 0.67550659, 0.71774292, 0.728302, - 0.70874023, 0.6612854, 0.59188843, 0.49536133, 0.37322998, - 0.23904419, 0.10256958, -0.030303955, -0.15093994, -0.24526978, - -0.31253052, -0.3414917, -0.33178711, -0.29302979, -0.23806763, - -0.17816162, -0.13470459, -0.12387085, -0.15142822, -0.20706177, - -0.28427124, -0.37112427, -0.44927979, -0.50619507, -0.53219604, - -0.53118896, -0.49990845, -0.45379639, -0.39599609, -0.31643677, - -0.22329712, -0.15414429, -0.1050415, -0.075592041, -0.0753479, - -0.088775635, -0.099090576, -0.086639404, -0.035797119, - 0.052154541, 0.1661377, 0.28082275, 0.39169312, 0.50491333, - 0.59762573, 0.67288208, 0.71621704, 0.73251343, 0.71405029, - 0.66171265, 0.60040283, 0.53762817, 0.46520996, 0.3727417, - 0.26971436, 0.17245483, 0.092346191, 0.034851074, 0.0072937012, - 0.007232666, 0.017547607, 0.01852417, 0.020172119, 0.023345947, - 0.014434814, -0.013946533, -0.054168701, -0.094726562, -0.14425659, - -0.20623779, -0.27316284, -0.34069824, -0.40481567, -0.4647522, - -0.51278687, -0.55215454, -0.57962036, -0.58953857, -0.59140015, - -0.57885742, -0.55456543, -0.51055908, -0.45095825, -0.37948608, - -0.29974365, -0.22027588, -0.13543701, -0.047271729, 0.033721924, - 0.1005249, 0.14877319, 0.18429565, 0.20465088, 0.21621704, - 0.2272644, 0.23416138, 0.24511719, 0.26138306, 0.2805481, - 0.3006897, 0.32943726, 0.36660767, 0.40802002, 0.44424438, - 0.47698975, 0.50256348, 0.52005005, 0.5267334, 0.52258301, - 0.50723267, 0.47485352, 0.42205811, 0.34805298, 0.26202393, - 0.16522217, 0.067749023, -0.024169922, -0.1060791, -0.18280029, - -0.25424194, -0.31921387, -0.37774658, -0.43612671, -0.50094604, - -0.56121826, -0.61495972, -0.66091919, -0.69436646, -0.70004272, - -0.67868042, -0.63104248, -0.56182861, -0.48074341, -0.39840698, - -0.31900024, -0.24609375, -0.18695068, -0.1461792, -0.11993408, - -0.11032104, -0.10159302, -0.091918945, -0.076904297, -0.069580078, - -0.058898926, -0.038146973, -0.012542725, 0.014831543, 0.043304443, - 0.082824707, 0.13180542, 0.1895752, 0.25256348, 0.32229614, - 0.38531494, 0.43493652, 0.4697876, 0.48736572, 0.48733521, - 0.46533203, 0.42901611, 0.38223267, 0.33636475, 0.2819519, - 0.22467041, 0.16455078, 0.10604858, 0.047485352, -0.010040283, - -0.057098389, -0.093933105, -0.12252808, -0.14291382, -0.15545654, - -0.16064453, -0.16348267, -0.16918945, -0.17095947, -0.17773438, - -0.19436646, -0.21868896, -0.25158691, -0.2890625, -0.33297729, - -0.37677002, -0.41171265, -0.43563843, -0.44619751, -0.44320679, - -0.42520142, -0.39151001, -0.34609985, -0.29324341, -0.23846436, - -0.18026733, -0.12319946, -0.068023682, -0.017944336, 0.033691406, - 0.08416748, 0.13388062, 0.18310547, 0.23513794, 0.28579712, - 0.3314209, 0.37133789, 0.40841675, 0.44143677, 0.46252441, - 0.47073364, 0.46435547, 0.44342041, 0.40725708, 0.35971069, - 0.30911255, 0.26272583, 0.22372437, 0.19876099, 0.18948364, - 0.18948364, 0.19799805, 0.21658325, 0.23733521, 0.25439453, - 0.26513672, 0.26702881, 0.25582886, 0.2338562, 0.19677734, - 0.15100098, 0.097106934, 0.036804199, -0.02456665, -0.087005615, - -0.14819336, -0.20632935, -0.26040649, -0.30117798, -0.33422852, - -0.35610962, -0.36178589, -0.3522644, -0.3237915, -0.28857422, - -0.24789429, -0.20108032, -0.14822388, -0.097442627, -0.055877686, - -0.019500732, 0.0064086914, 0.024627686, 0.033721924, 0.042114258, - 0.052032471, 0.069763184, 0.094207764, 0.12030029, 0.14993286, - 0.18215942, 0.22003174, 0.26171875, 0.30029297, 0.33355713, - 0.35992432, 0.3833313, 0.40148926, 0.41094971, 0.40899658, - 0.39849854, 0.37387085, 0.34091187, 0.30215454, 0.26016235, - 0.2170105, 0.17681885, 0.13604736, 0.093658447, 0.049316406, - 0.0074462891, -0.037322998, -0.086120605, -0.13262939, -0.18286133, - -0.22872925, -0.26879883, -0.3026123, -0.33206177, -0.35943604, - -0.37924194, -0.39431763, -0.40466309, -0.40936279, -0.40270996, - -0.38815308, -0.36676025, -0.3421936, -0.31149292, -0.27597046, - -0.24679565, -0.22177124, -0.20294189, -0.19259644, -0.18527222, - -0.18157959, -0.17645264, -0.16998291, -0.1524353, -0.12554932, - -0.086669922, -0.03894043, 0.016204834, 0.075744629, 0.13665771, - 0.18896484, 0.23040771, 0.26107788, 0.28408813, 0.29443359, - 0.29440308, 0.28460693, 0.27456665, 0.26107788, 0.24020386, - 0.21322632, 0.18551636, 0.15698242, 0.12554932, 0.095855713, - 0.069152832, 0.045501709, 0.020141602, -0.0030517578, -0.026702881, - -0.0496521, -0.071960449, -0.098327637, -0.12268066, -0.14907837, - -0.17523193, -0.20068359, -0.22494507, -0.2482605, -0.27352905, - -0.29666138, -0.31420898, -0.32751465, -0.33670044, -0.33874512, - -0.32943726, -0.31417847, -0.29504395, -0.26898193, -0.23904419, - -0.20245361, -0.16390991, -0.1210022, -0.078308105, -0.039337158, - -0.0037231445, 0.029174805, 0.05847168, 0.084106445, 0.1078186, - 0.13174438, 0.15719604, 0.17941284, 0.20126343, 0.22348022, - 0.2432251, 0.2578125, 0.2640686, 0.26593018, 0.25933838, - 0.24685669, 0.2288208, 0.21047974, 0.19494629, 0.18075562, - 0.17199707, 0.17199707, 0.17175293, 0.1729126, 0.17126465, - 0.16873169, 0.16256714, 0.15036011, 0.1355896, 0.11254883, - 0.083465576, 0.050079346, 0.01159668, -0.030029297, -0.074707031, - -0.11532593, -0.15432739, -0.18942261, -0.21673584, -0.23681641, - -0.24554443, -0.24703979, -0.24472046, -0.23815918, -0.22784424, - -0.21243286, -0.19384766, -0.17596436, -0.15844727, -0.14089966, - -0.12030029, -0.099395752, -0.076538086, -0.058746338, - -0.034484863, -0.0097351074, 0.015625, 0.037445068, 0.063079834, - 0.087738037, 0.11401367, 0.13973999, 0.16848755, 0.19680786, - 0.2244873, 0.25567627, 0.28305054, 0.30465698, 0.31854248, - 0.32287598, 0.31808472, 0.30102539, 0.27633667, 0.24591064, - 0.20962524, 0.17144775, 0.13021851, 0.09487915, 0.057861328, - 0.023651123, -0.014129639, -0.051239014, -0.086639404, -0.12316895, - -0.15304565, -0.18545532, -0.21154785, -0.23434448, -0.25100708, - -0.26113892, -0.26712036, -0.26678467, -0.26687622, -0.262146, - -0.25656128, -0.24734497, -0.23501587, -0.22433472, -0.20773315, - -0.19207764, -0.17459106, -0.15997314, -0.14196777, -0.12670898, - -0.1166687, -0.10726929, -0.099243164, -0.090179443, -0.078521729, - -0.062225342, -0.038360596, -0.0068054199, 0.031402588, - 0.072143555, 0.11181641, 0.15362549, 0.19085693, 0.22195435, - 0.24661255, 0.26379395, 0.27166748, 0.27072144, 0.26507568, - 0.25247192, 0.2348938, 0.21447754, 0.18756104, 0.15771484, - 0.13241577, 0.10873413, 0.087036133, 0.065460205, 0.046875, - 0.029754639, 0.013153076, -0.0065917969, -0.024993896, - -0.046051025, -0.067810059, -0.092285156, -0.11779785, -0.14529419, - -0.17376709, -0.19503784, -0.21487427, -0.23205566, -0.24533081, - -0.25128174, -0.2522583, -0.24685669, -0.23486328, -0.21954346, - -0.19946289, -0.1786499, -0.15280151, -0.12744141, -0.098022461, - -0.069091797, -0.038146973, -0.0079040527, 0.024719238, - 0.054351807, 0.082275391, 0.11019897, 0.13510132, 0.15545654, - 0.17276001, 0.1854248, 0.19042969, 0.19281006, 0.1930542, - 0.19232178, 0.18795776, 0.17938232, 0.17156982, 0.16223145, - 0.15603638, 0.15182495, 0.15118408, 0.14651489, 0.14263916, - 0.13916016, 0.1343689, 0.12649536, 0.11480713, 0.10400391, - 0.091766357, 0.079589844, 0.063781738, 0.04776001, 0.029510498, - 0.013061523, -0.0087890625, -0.034454346, -0.06362915, - -0.097381592, -0.12896729, -0.15893555, -0.18429565, -0.20910645, - -0.22930908, -0.2411499, -0.25009155, -0.2505188, -0.24719238, - -0.23956299, -0.22445679, -0.20892334, -0.18774414, -0.16699219, - -0.14205933, -0.12145996, -0.10317993, -0.085449219, -0.066101074, - -0.050048828, -0.03326416, -0.014404297, 0.0099182129, 0.041809082, - 0.077087402, 0.11599731, 0.14718628, 0.18060303, 0.20654297, - 0.23117065, 0.25247192, 0.27026367, 0.28042603, 0.27871704, - 0.27175903, 0.25527954, 0.2315979, 0.20584106, 0.17654419, - 0.1446228, 0.1086731, 0.073699951, 0.040588379, 0.011627197, - -0.016143799, -0.044189453, -0.071838379, -0.098449707, - -0.12316895, -0.14602661, -0.16595459, -0.17871094, -0.18606567, - -0.19488525, -0.20278931, -0.209198, -0.21121216, -0.21276855, - -0.21395874, -0.21328735, -0.21072388, -0.20718384, -0.20404053, - -0.19812012, -0.19073486, -0.17901611, -0.16781616, -0.15267944, - -0.13824463, -0.12042236, -0.098999023, -0.077453613, -0.053497314, - -0.029022217, -0.001373291, 0.022583008, 0.050720215, 0.077026367, - 0.10748291, 0.13626099, 0.16424561, 0.18908691, 0.21191406, - 0.2300415, 0.2428894, 0.25292969, 0.25643921, 0.25924683, - 0.25518799, 0.24127197, 0.22161865, 0.19989014, 0.17800903, - 0.14935303, 0.12268066, 0.094787598, 0.068878174, 0.041046143, - 0.018585205, 0.0020141602, -0.0094604492, -0.01651001, -0.02243042, - -0.031860352, -0.049102783, -0.072113037, -0.098083496, - -0.12472534, -0.14935303, -0.17062378, -0.18566895, -0.19500732, - -0.19784546, -0.19299316, -0.18365479, -0.17153931, -0.1555481, - -0.13491821, -0.11233521, -0.090209961, -0.063781738, -0.038879395, - -0.017089844, 0.0027770996, 0.021697998, 0.041046143, 0.059844971, - 0.078674316, 0.093536377, 0.10656738, 0.11816406, 0.12698364, - 0.13323975, 0.13742065, 0.14559937, 0.1522522, 0.15563965, - 0.15548706, 0.1583252, 0.15756226, 0.15576172, 0.15216064, - 0.1479187, 0.14260864, 0.13577271, 0.1272583, 0.11904907, - 0.10968018, 0.10412598, 0.096618652, 0.087615967, 0.07522583, - 0.059265137, 0.039978027, 0.017852783, -0.0061950684, -0.029510498, - -0.05065918, -0.075500488, -0.099395752, -0.12225342, -0.1418457, - -0.16101074, -0.17797852, -0.1932373, -0.20556641, -0.20901489, - -0.21026611, -0.20684814, -0.20016479, -0.18768311, -0.17312622, - -0.15994263, -0.14834595, -0.13482666, -0.11865234, -0.10229492, - -0.083404541, -0.063079834, -0.039276123, -0.014129639, - 0.011199951, 0.035583496, 0.059417725, 0.079925537, 0.098571777, - 0.11416626, 0.1270752, 0.14013672, 0.15286255, 0.16619873, - 0.17810059, 0.18783569, 0.19454956, 0.19598389, 0.19143677, - 0.18264771, 0.16867065, 0.15258789, 0.13143921, 0.10482788, - 0.075073242, 0.045928955, 0.018371582, -0.0075683594, -0.032928467, - -0.054992676, -0.072662354, -0.089813232, -0.10479736, -0.12127686, - -0.13748169, -0.15161133, -0.16473389, -0.17370605, -0.18240356, - -0.18569946, -0.18682861, -0.18756104, -0.18310547, -0.18099976, - -0.17584229, -0.17102051, -0.16162109, -0.15145874, -0.1421814, - -0.12973022, -0.11398315, -0.096557617, -0.078460693, -0.061035156, - -0.042541504, -0.023590088, -0.0029296875, 0.020996094, - 0.044403076, 0.068237305, 0.092926025, 0.11682129, 0.13772583, - 0.15460205, 0.17050171, 0.18438721, 0.19360352, 0.19952393, - 0.20303345, 0.2048645, 0.20132446, 0.1930542, 0.18280029, - 0.16989136, 0.1546936, 0.13711548, 0.12115479, 0.10336304, - 0.087890625, 0.068023682, 0.049804688, 0.028320312, 0.0081787109, - -0.012664795, -0.030334473, -0.046783447, -0.061584473, - -0.073883057, -0.084655762, -0.093719482, -0.10314941, -0.11251831, - -0.12094116, -0.1300354, -0.13421631, -0.13647461, -0.13491821, - -0.13186646, -0.12530518, -0.11520386, -0.10275269, -0.088775635, - -0.074310303, -0.061462402, -0.046875, -0.032409668, -0.014892578, - 0.00057983398, 0.016967773, 0.031738281, 0.0440979, 0.054656982, - 0.063659668, 0.073791504, 0.081176758, 0.088562012, 0.095916748, - 0.10043335, 0.10443115, 0.10519409, 0.1076355, 0.1071167, - 0.10748291, 0.10601807, 0.1026001, 0.10031128, 0.095123291, - 0.08972168, 0.082763672, 0.075164795, 0.06729126, 0.057922363, - 0.049865723, 0.042144775, 0.035125732, 0.026367188, 0.016571045, - 0.0040893555, -0.0084228516, -0.025054932, -0.042053223, - -0.060974121, -0.077178955, -0.093902588, -0.10845947, -0.1229248, - -0.13531494, -0.14489746, -0.15274048, -0.15701294, -0.15966797, - -0.15670776, -0.15130615, -0.140625, -0.12561035, -0.10900879, - -0.091644287, -0.077362061, -0.063690186, -0.051879883, - -0.04083252, -0.028869629, -0.017059326, -0.0053710938, - 0.0051574707, 0.020172119, 0.034484863, 0.051361084, 0.067810059, - 0.085540771, 0.10223389, 0.11761475, 0.13146973, 0.14044189, - 0.1468811, 0.14923096, 0.14846802, 0.14407349, 0.13641357, - 0.12796021, 0.11773682, 0.1076355, 0.09463501, 0.081207275, - 0.065124512, 0.050323486, 0.035552979, 0.020965576, 0.0063476562, - -0.0094299316, -0.024810791, -0.040008545, -0.054534912, - -0.0703125, -0.084228516, -0.096862793, -0.10809326, -0.1171875, - -0.12515259, -0.13067627, -0.13568115, -0.13632202, -0.13449097, - -0.131073, -0.12503052, -0.11868286, -0.11099243, -0.10317993, - -0.095306396, -0.087158203, -0.077667236, -0.068115234, - -0.059082031, -0.047241211, -0.033966064, -0.019805908, - -0.0041503906, 0.012573242, 0.030029297, 0.047637939, 0.063751221, - 0.079162598, 0.092987061, 0.1055603, 0.11737061, 0.12628174, - 0.13504028, 0.14266968, 0.14840698, 0.1519165, 0.15158081, - 0.14685059, 0.14041138, 0.13082886, 0.11962891, 0.10525513, - 0.089599609, 0.072784424, 0.057556152, 0.044464111, 0.032470703, - 0.02053833, 0.0086364746, -0.0019226074, -0.013336182, - -0.026184082, -0.039398193, -0.052368164, -0.064605713, - -0.076293945, -0.086303711, -0.09475708, -0.10128784, -0.10568237, - -0.10748291, -0.10894775, -0.10787964, -0.10577393, -0.10229492, - -0.097198486, -0.090087891, -0.081695557, -0.07244873, - -0.062927246, -0.051940918, -0.041748047, -0.028839111, - -0.015960693, -0.0022277832, 0.011779785, 0.024932861, 0.038482666, - 0.048614502, 0.059326172, 0.066925049, 0.072021484, 0.077026367, - 0.079681396, 0.082733154, 0.082855225, 0.081481934, 0.08001709, - 0.079833984, 0.079345703, 0.079162598, 0.078582764, 0.078521729, - 0.078582764, 0.077575684, 0.073059082, 0.065612793, 0.055480957, - 0.044189453, 0.031768799, 0.019744873, 0.008972168, -0.00094604492, - -0.0081176758, -0.013885498, -0.018463135, -0.025634766, - -0.032623291, -0.041442871, -0.05279541, -0.0652771, -0.078399658, - -0.088256836, -0.098297119, -0.10681152, -0.112854, -0.11355591, - -0.11132812, -0.10617065, -0.098449707, -0.087738037, -0.077606201, - -0.068054199, -0.059051514, -0.051330566, -0.041503906, - -0.031066895, -0.019470215, -0.0077514648, 0.0030517578, - 0.014892578, 0.026062012, 0.038879395, 0.050079346, 0.060028076, - 0.069793701, 0.076568604, 0.082611084, 0.088989258, 0.094360352, - 0.098754883, 0.10293579, 0.10635376, 0.10720825, 0.10586548, - 0.10314941, 0.0987854, 0.093475342, 0.087432861, 0.079406738, - 0.070159912, 0.059204102, 0.048095703, 0.036529541, 0.023071289, - 0.010406494, -0.0024719238, -0.01361084, -0.026184082, - -0.036682129, -0.047180176, -0.056213379, -0.065765381, - -0.07510376, -0.082702637, -0.091064453, -0.09677124, -0.10232544, - -0.10546875, -0.1072998, -0.10693359, -0.10385132, -0.10055542, - -0.093078613, -0.085235596, -0.075439453, -0.065643311, - -0.054138184, -0.042449951, -0.029785156, -0.017822266, - -0.0068359375, 0.0038452148, 0.01373291, 0.023773193, 0.033081055, - 0.042053223, 0.049560547, 0.057952881, 0.066223145, 0.075775146, - 0.083190918, 0.08984375, 0.096191406, 0.10202026, 0.10595703, - 0.10742188, 0.10778809, 0.10528564, 0.1020813, 0.096069336, - 0.08883667, 0.07925415, 0.069458008, 0.057952881, 0.047454834, - 0.036804199, 0.026397705, 0.015777588, 0.004119873, -0.0077819824, - -0.019927979, -0.030822754, -0.040405273, -0.048980713, - -0.056610107, -0.062805176, -0.069366455, -0.074035645, - -0.077026367, -0.079406738, -0.079986572, -0.080322266, - -0.078338623, -0.07598877, -0.072479248, -0.067230225, - -0.061218262, -0.055847168, -0.050048828, -0.043823242, - -0.037536621, -0.030792236, -0.02230835, -0.012634277, - -0.0030822754, 0.0069580078, 0.016204834, 0.023040771, 0.03024292, - 0.036865234, 0.043518066, 0.051025391, 0.056396484, 0.061645508, - 0.063720703, 0.065185547, 0.065032959, 0.0652771, 0.06439209, - 0.06451416, 0.063598633, 0.062011719, 0.058654785, 0.055297852, - 0.053131104, 0.051208496, 0.048950195, 0.046905518, 0.042175293, - 0.035675049, 0.028411865, 0.019622803, 0.0091247559, -0.0016174316, - -0.012207031, -0.022521973, -0.031616211, -0.040618896, - -0.047302246, -0.052734375, -0.057098389, -0.060455322, - -0.064849854, -0.068664551, -0.07321167, -0.074829102, -0.07623291, - -0.075378418, -0.072814941, -0.069152832, -0.064819336, - -0.059417725, -0.052368164, -0.044769287, -0.036712646, - -0.027679443, -0.018005371, -0.0093383789, 0.0010375977, - 0.011474609, 0.022399902, 0.03125, 0.03793335, 0.042449951, - 0.045379639, 0.048065186, 0.050567627, 0.054260254, 0.058166504, - 0.062316895, 0.066436768, 0.068786621, 0.072113037, 0.074707031, - 0.077453613, 0.076507568, 0.074523926, 0.071838379, 0.06729126, - 0.061126709, 0.053771973, 0.045410156, 0.037078857, 0.027862549, - 0.019134521, 0.0096435547, 0.00079345703, -0.0076293945, - -0.016296387, -0.024810791, -0.034454346, -0.043334961, - -0.052703857, -0.06048584, -0.066101074, -0.070739746, -0.07220459, - -0.073394775, -0.072967529, -0.072509766, -0.072296143, - -0.070404053, -0.06842041, -0.064819336, -0.062072754, - -0.058624268, -0.05380249, -0.048400879, -0.039764404, - -0.031280518, -0.021881104, -0.012786865, -0.0053100586, - 0.0022888184, 0.0081176758, 0.014038086, 0.020568848, 0.026885986, - 0.032867432, 0.037628174, 0.042999268, 0.046722412, 0.052276611, - 0.056884766, 0.061584473, 0.065124512, 0.066955566, 0.068054199, - 0.067565918, 0.066589355, 0.06362915, 0.058410645, 0.052764893, - 0.045349121, 0.036987305, 0.029144287, 0.021606445, 0.015197754, - 0.0087280273, 0.0020446777, -0.004699707, -0.012115479, - -0.018920898, -0.02633667, -0.032897949, -0.037841797, - -0.042205811, -0.046783447, -0.050567627, -0.055114746, - -0.05847168, -0.061004639, -0.061401367, -0.059173584, - -0.056915283, -0.053955078, -0.049255371, -0.043121338, - -0.037384033, -0.032501221, -0.027709961, -0.023468018, - -0.018951416, -0.01385498, -0.0096740723, -0.005279541, - -0.0010986328, 0.0033874512, 0.0088806152, 0.01348877, 0.01953125, - 0.025024414, 0.031097412, 0.036895752, 0.0418396, 0.045837402, - 0.048492432, 0.050231934, 0.051208496, 0.052490234, 0.052856445, - 0.053344727, 0.052581787, 0.051452637, 0.049224854, 0.046356201, - 0.042938232, 0.038543701, 0.034362793, 0.029602051, 0.025726318, - 0.021606445, 0.017272949, 0.013641357, 0.009185791, 0.0037841797, - -0.0022888184, -0.0105896, -0.019439697, -0.027709961, - -0.034454346, -0.039642334, -0.044464111, -0.046569824, - -0.048400879, -0.047546387, -0.046142578, -0.043395996, - -0.040405273, -0.037994385, -0.035217285, -0.03414917, - -0.031890869, -0.029205322, -0.026306152, -0.021820068, - -0.018035889, -0.01361084, -0.0084228516, -0.001373291, - 0.0057067871, 0.011962891, 0.018157959, 0.022766113, 0.02722168, - 0.030090332, 0.032928467, 0.03503418, 0.036895752, 0.039001465, - 0.04107666, 0.042816162, 0.04397583, 0.045074463, 0.045562744, - 0.045654297, 0.045532227, 0.045135498, 0.043518066, 0.040618896, - 0.036437988, 0.032012939, 0.027099609, 0.021911621, 0.016296387, - 0.010955811, 0.006072998, 0.00048828125, -0.0053100586, - -0.011535645, -0.017303467, -0.023529053, -0.028717041, - -0.03427124, -0.038604736, -0.042572021, -0.045074463, - -0.046661377, -0.047851562, -0.04776001, -0.047668457, - -0.046691895, -0.045379639, -0.04385376, -0.042297363, - -0.040435791, -0.037322998, -0.033691406, -0.029205322, - -0.024749756, -0.019775391, -0.014556885, -0.0090942383, - -0.0034790039, 0.0011901855, 0.0063171387, 0.0095214844, - 0.013519287, 0.016174316, 0.019622803, 0.022094727, 0.024627686, - 0.027435303, 0.029876709, 0.032958984, 0.035858154, 0.038208008, - 0.039398193, 0.040374756, 0.040222168, 0.039978027, 0.039154053, - 0.037811279, 0.034820557, 0.030822754, 0.025695801, 0.020721436, - 0.015991211, 0.010864258, 0.006439209, 0.0018005371, -0.002166748, - -0.0062561035, -0.0096740723, -0.013244629, -0.01663208, - -0.019927979, -0.023742676, -0.026611328, -0.029907227, - -0.032684326, -0.035064697, -0.037261963, -0.037811279, - -0.037902832, -0.036437988, -0.033233643, -0.029876709, - -0.026031494, -0.021759033, -0.017456055, -0.014251709, - -0.011566162, -0.0094909668, -0.0071105957, -0.0048217773, - -0.0027770996, 0.00036621094, 0.0036010742, 0.0076904297, - 0.01159668, 0.015350342, 0.019226074, 0.021697998, 0.024749756, - 0.026947021, 0.029266357, 0.030853271, 0.032104492, 0.032470703, - 0.032165527, 0.03225708, 0.031860352, 0.03213501, 0.032104492, - 0.03213501, 0.031860352, 0.031005859, 0.029205322, 0.026550293, - 0.023406982, 0.01940918, 0.015258789, 0.010437012, 0.005859375, - 0.0013122559, -0.003112793, -0.0067443848, -0.010040283, - -0.01361084, -0.016662598, -0.020324707, -0.023193359, - -0.026062012, -0.028503418, -0.029663086, -0.030487061, - -0.030059814, -0.029418945, -0.027374268, -0.025024414, - -0.022857666, -0.0206604, -0.018585205, -0.016113281, -0.013397217, - -0.010192871, -0.0072021484, -0.0043029785, -0.002166748, 0, - 0.0024414062, 0.005065918, 0.0079345703, 0.01071167, 0.012878418, - 0.015380859, 0.017669678, 0.019958496, 0.021575928, 0.023284912, - 0.024078369, 0.024719238, 0.025024414, 0.02557373, 0.02633667, - 0.026275635, 0.02520752, 0.024017334, 0.022369385, 0.021057129, - 0.019622803, 0.017578125, 0.015258789, 0.012054443, 0.0086975098, - 0.0051269531, 0.0020141602, -0.00082397461, -0.00390625, - -0.0068054199, -0.010406494, -0.014129639, -0.017425537, - -0.020385742, -0.02230835, -0.025054932, -0.026916504, - -0.028961182, -0.029724121, -0.029937744, -0.029907227, - -0.02911377, -0.027770996, -0.025238037, -0.023010254, - -0.019714355, -0.016540527, -0.013641357, -0.011077881, - -0.008605957, -0.0062866211, -0.0043945312, -0.0021972656, - -0.00067138672, 0.0012512207, 0.0020751953, 0.0036315918, - 0.0053405762, 0.0081481934, 0.011352539, 0.014709473, 0.017944336, - 0.020202637, 0.022003174, 0.023742676, 0.02520752, 0.026031494, - 0.026062012, 0.025421143, 0.024261475, 0.022766113, 0.020904541, - 0.019287109, 0.017852783, 0.017333984, 0.017181396, 0.016357422, - 0.014770508, 0.012298584, 0.0095825195, 0.0057373047, 0.0017089844, - -0.0032043457, -0.0075073242, -0.011260986, -0.014068604, - -0.016021729, -0.017608643, -0.0184021, -0.019104004, -0.019775391, - -0.020507812, -0.020721436, -0.020355225, -0.019348145, - -0.017974854, -0.016235352, -0.014648438, -0.013183594, - -0.011657715, -0.010498047, -0.0097961426, -0.0091552734, - -0.0082702637, -0.0070800781, -0.0055236816, -0.003112793, - -0.00054931641, 0.0024719238, 0.0049743652, 0.0075073242, - 0.0095825195, 0.011352539, 0.012512207, 0.013580322, 0.014251709, - 0.015045166, 0.016113281, 0.017089844, 0.018096924, 0.018890381, - 0.019897461, 0.020629883, 0.020965576, 0.020782471, 0.019744873, - 0.018371582, 0.016113281, 0.014068604, 0.011260986, 0.0094604492, - 0.0072631836, 0.0054016113, 0.0033874512, 0.0014343262, - -0.0007019043, -0.0032958984, -0.0055847168, -0.0082397461, - -0.010650635, -0.013275146, -0.015167236, -0.016662598, - -0.017852783, -0.018218994, -0.018157959, -0.017486572, - -0.017181396, -0.01675415, -0.01651001, -0.015808105, -0.015014648, - -0.01385498, -0.012390137, -0.01083374, -0.0090332031, - -0.0072937012, -0.0054626465, -0.0038757324, -0.0022888184, - -0.00051879883, 0.0011901855, 0.0027770996, 0.0043334961, - 0.0057067871, 0.0071716309, 0.0084533691, 0.010101318, 0.011047363, - 0.011993408, 0.012969971, 0.013092041, 0.013427734, 0.013641357, - 0.013946533, 0.014221191, 0.014099121, 0.01385498, 0.012756348, - 0.012054443, 0.011322021, 0.010162354, 0.0087280273, 0.0073547363, - 0.0061950684, 0.0046386719, 0.0029602051, 0.0014953613, - -0.00033569336, -0.0021362305, -0.0043640137, -0.0064086914, - -0.0086975098, -0.010498047, -0.012023926, -0.013092041, - -0.013366699, -0.01348877, -0.013793945, -0.013763428, - -0.013977051, -0.013824463, -0.013519287, -0.013305664, - -0.012878418, -0.012390137, -0.011352539, -0.010131836, - -0.0085144043, -0.0065307617, -0.0048217773, -0.0028076172, - -0.00094604492, 0.00082397461, 0.0019836426, 0.0028991699, - 0.0037841797, 0.0042114258, 0.0050048828, 0.0057067871, - 0.0067443848, 0.0078735352, 0.0088195801, 0.0099182129, - 0.010986328, 0.011657715, 0.012145996, 0.012573242, 0.012969971, - 0.013000488, 0.0128479, 0.012481689, 0.011993408, 0.011352539, - 0.010498047, 0.0093688965, 0.0081176758, 0.0067749023, - 0.0054931641, 0.0044250488, 0.0032958984, 0.001953125, - 0.00054931641, -0.00085449219, -0.0026855469, -0.0042114258, - -0.0060119629, -0.0071716309, -0.0086364746, -0.0095825195, - -0.010284424, -0.010528564, -0.010498047, -0.010284424, - -0.0096740723, -0.0094299316, -0.0088195801, -0.0082092285, - -0.0076599121, -0.007232666, -0.0068359375, -0.0063171387, - -0.0056152344, -0.0047607422, -0.0038146973, -0.0027770996, - -0.0015563965, -0.00061035156, 0.00057983398, 0.0016174316, - 0.002532959, 0.0032348633, 0.0037536621, 0.0041503906, - 0.0043945312, 0.0048217773, 0.0053405762, 0.0060119629, - 0.0067443848, 0.0075073242, 0.0080566406, 0.0084228516, - 0.008392334, 0.0083618164, 0.0080566406, 0.0076293945, - 0.0071411133, 0.0067749023, 0.0062255859, 0.0054626465, - 0.0046081543, 0.0036315918, 0.0026550293, 0.0014648438, - 0.0002746582, -0.00076293945, -0.0018615723, -0.0027160645, - -0.0035400391, -0.0041809082, -0.0048522949, -0.0054626465, - -0.0061035156, -0.0067138672, -0.0072021484, -0.0072937012, - -0.0072937012, -0.0069885254, -0.0065002441, -0.0059204102, - -0.0051269531, -0.0045471191, -0.0039672852, -0.0036010742, - -0.0031738281, -0.0027770996, -0.0023803711, -0.0018310547, - -0.0012817383, -0.00064086914, -3.0517578e-05, 0.00064086914, - 0.0011901855, 0.0017700195, 0.0021972656, 0.002532959, - 0.0028381348, 0.003112793, 0.0034484863, 0.0038146973, - 0.0040893555, 0.0043334961, 0.0044250488, 0.0044555664, - 0.0045776367, 0.0046691895, 0.0047302246, 0.0046691895, - 0.0045471191, 0.0042724609, 0.00390625, 0.0035095215, 0.0029296875, - 0.0024414062, 0.001953125, 0.0014343262, 0.00085449219, - 0.00021362305, -0.00018310547, -0.00073242188, -0.0012207031, - -0.001739502, -0.002166748, 0 - }; - -static const unsigned defaultClickLength = sizeof(defaultClick) / sizeof(*defaultClick); - -static const float defaultClickEmphasis[] = { - 0.002166748, 0.0023193359, 0.001739502, 0.002166748, 0.0021362305, - 0.0018615723, 0.0020446777, 0.002166748, 0.0019836426, 0.0022277832, - 0.0018310547, 0.0023803711, 0.0022277832, 0.001953125, 0.0022888184, - 0.0018005371, 0.0025024414, 0.0018310547, 0.0019836426, 0.001953125, - 0.0020446777, 0.0017700195, 0.0021057129, 0.0020751953, - 0.0019836426, 0.0014343262, 0.0024414062, 0.0015869141, - 0.0022888184, 0.0016784668, 0.0025024414, 0.0017089844, - 0.0024719238, 0.0020141602, 0.0026855469, 0.0013427734, - 0.0028381348, 0.0015563965, 0.0020446777, 0.0018615723, 0.002532959, - 0.0015258789, 0.0021972656, 0.0016784668, 0.002166748, 0.0016479492, - 0.0021362305, 0.0018920898, 0.0021362305, 0.0017700195, - 0.0020141602, 0.0022277832, 0.001739502, 0.0022583008, 0.001953125, - 0.0021362305, 0.0018920898, 0.0020446777, 0.001953125, 0.0026550293, - 0.0014953613, 0.0023803711, 0.001953125, 0.0021972656, 0.0015869141, - 0.0017700195, 0.0020141602, 0.0022277832, 0.0015258789, - 0.0015869141, -0.0045471191, -0.011230469, -0.009185791, - -0.0038757324, -0.020690918, -0.030731201, -0.0088806152, - 0.0032958984, -0.0068664551, -0.0024719238, 0.024688721, - 0.035400391, 0.014892578, 0.0047607422, 0.011779785, 0.0035095215, - -0.012573242, -0.0059814453, 0.0065612793, 0.0039672852, - 0.0014343262, 0.010406494, 0.027374268, 0.021942139, 0.0065612793, - 0.010681152, 0.024688721, 0.024291992, 0.012451172, 0.023590088, - 0.033203125, 0.024139404, 0.010375977, 0.016662598, 0.026885986, - 0.039215088, 0.038330078, 0.039703369, 0.048309326, 0.046447754, - 0.029937744, 0.031311035, 0.066497803, 0.052856445, -0.0074768066, - -0.016998291, 0.016784668, 0.039428711, 0.021759033, 0.0040893555, - -0.0016174316, 0.012451172, 0.052215576, 0.047485352, 0.017150879, - 0.015075684, 0.013397217, 0.024475098, 0.035247803, 0.039978027, - 0.06137085, 0.080108643, 0.078521729, 0.054779053, 0.0625, - 0.1076355, 0.10934448, 0.079803467, 0.056945801, 0.056182861, - 0.047851562, 0.028503418, 0.022979736, 0.010803223, -0.015686035, - -0.050811768, -0.072509766, -0.057891846, -0.032073975, - -0.051300049, -0.078887939, -0.069366455, -0.038146973, - -0.0099182129, 0.010528564, 0.048492432, 0.082305908, 0.084838867, - 0.059753418, 0.0043029785, -0.087158203, -0.18395996, -0.2911377, - -0.37133789, -0.33422852, -0.28649902, -0.31976318, -0.33630371, - -0.22824097, 0.020385742, 0.24456787, 0.31582642, 0.37380981, - 0.40820312, 0.40539551, 0.41415405, 0.34210205, 0.20877075, - 0.010498047, -0.17623901, -0.22705078, -0.15548706, -0.039855957, - 0.0067443848, -0.0022277832, -0.050048828, -0.10186768, -0.11407471, - -0.1050415, -0.067352295, 0.0018615723, 0.079742432, 0.11517334, - 0.12005615, 0.14709473, 0.19543457, 0.2015686, 0.150177, - 0.052703857, -0.029602051, -0.084838867, -0.14590454, -0.18951416, - -0.18814087, -0.15014648, -0.11505127, -0.094360352, -0.076721191, - -0.037872314, 0.011749268, 0.034851074, 0.060791016, 0.11419678, - 0.14096069, 0.13140869, 0.1277771, 0.12313843, 0.10934448, - 0.055541992, -0.026397705, -0.07144165, -0.050262451, -0.0097961426, - -0.02822876, -0.15008545, -0.28927612, -0.32809448, -0.2772522, - -0.15994263, 0.016448975, 0.13085938, 0.12866211, 0.1072998, - 0.094177246, 0.036346436, -0.026245117, -0.040496826, -0.01348877, - 0.0085144043, 0.0070800781, -0.0086669922, -0.0038452148, - 0.040252686, 0.077026367, 0.071960449, 0.032470703, 0.002166748, - 0.0065612793, 0.0053100586, -0.025115967, -0.058532715, - -0.060699463, -0.015563965, 0.048278809, 0.086273193, 0.078582764, - 0.031524658, -0.026580811, -0.077911377, -0.11288452, -0.13244629, - -0.15325928, -0.14471436, -0.095672607, -0.048858643, -0.012115479, - 0.023132324, 0.051544189, 0.046691895, 0.01373291, -0.0097961426, - -0.016143799, -0.022460938, -0.025726318, 0.0075378418, 0.091522217, - 0.19741821, 0.23269653, 0.16726685, 0.12173462, 0.12973022, - 0.064300537, -0.12158203, -0.29794312, -0.33813477, -0.27990723, - -0.19500732, -0.063903809, 0.10449219, 0.23712158, 0.34381104, - 0.41766357, 0.37658691, 0.22747803, 0.056365967, -0.088317871, - -0.19509888, -0.21295166, -0.15499878, -0.1114502, -0.093597412, - -0.071289062, -0.034606934, 0.009552002, 0.068084717, 0.12075806, - 0.13098145, 0.11383057, 0.08291626, 0.037322998, -0.017211914, - -0.05456543, -0.074829102, -0.087768555, -0.076202393, -0.022735596, - 0.032653809, 0.045623779, 0.045806885, 0.040496826, 0.016845703, - -0.023712158, -0.057769775, -0.07232666, -0.055145264, - -0.00091552734, 0.063201904, 0.11480713, 0.13497925, 0.11572266, - 0.030731201, -0.11346436, -0.23406982, -0.27478027, -0.23690796, - -0.13735962, -0.016479492, 0.076904297, 0.09487915, 0.070220947, - 0.058074951, 0.05355835, 0.017181396, -0.096893311, -0.21951294, - -0.26168823, -0.20983887, -0.093109131, 0.051879883, 0.15631104, - 0.18319702, 0.15551758, 0.078826904, -0.012084961, -0.083007812, - -0.10766602, -0.085479736, -0.059906006, -0.040039062, -0.031646729, - -0.046142578, -0.065551758, -0.03414917, 0.025482178, 0.046325684, - 0.054473877, 0.073303223, 0.073791504, 0.068786621, 0.082366943, - 0.080596924, 0.052215576, 0.015594482, -0.0053405762, 0.0040588379, - 0.032501221, 0.065551758, 0.093322754, 0.1199646, 0.13677979, - 0.14523315, 0.1401062, 0.12902832, 0.11553955, 0.09664917, - 0.091278076, 0.13305664, 0.24594116, 0.38180542, 0.45907593, - 0.45343018, 0.4213562, 0.36801147, 0.31027222, 0.30541992, - 0.33691406, 0.35479736, 0.3321228, 0.27334595, 0.25701904, - 0.23641968, 0.18139648, 0.16793823, 0.17538452, 0.17803955, - 0.19009399, 0.25280762, 0.38833618, 0.54940796, 0.70336914, - 0.74789429, 0.64334106, 0.49359131, 0.30703735, 0.071624756, - -0.075897217, -0.096191406, -0.076568604, 0.023406982, 0.15078735, - 0.21612549, 0.30493164, 0.39697266, 0.41009521, 0.32348633, - 0.24707031, 0.20645142, 0.11102295, 0.0075073242, -0.046325684, - -0.038085938, 0.014251709, 0.096618652, 0.1842041, 0.21417236, - 0.15905762, 0.0016174316, -0.25387573, -0.57302856, -0.85641479, - -0.99038696, -0.99038696, -0.99038696, -0.99038696, -0.99038696, - -0.90664673, -0.64364624, -0.42892456, -0.32131958, -0.23550415, - -0.25338745, -0.32595825, -0.44995117, -0.57858276, -0.68716431, - -0.80804443, -0.90670776, -0.9654541, -0.97409058, -0.95211792, - -0.90264893, -0.85357666, -0.80429077, -0.7482605, -0.69125366, - -0.60876465, -0.46228027, -0.23776245, -0.049041748, 0.019989014, - 0.048950195, 0.033172607, -0.02142334, -0.084259033, -0.15020752, - -0.16220093, -0.14608765, -0.14526367, -0.16497803, -0.1781311, - -0.19717407, -0.24871826, -0.26089478, -0.21688843, -0.19818115, - -0.23718262, -0.2824707, -0.32797241, -0.36758423, -0.3258667, - -0.18960571, -0.082885742, -0.056365967, -0.054534912, -0.10766602, - -0.26501465, -0.44006348, -0.58209229, -0.71032715, -0.77719116, - -0.76467896, -0.68914795, -0.51403809, -0.27841187, -0.092163086, - 0.056030273, 0.16799927, 0.19827271, 0.18478394, 0.17562866, - 0.15100098, 0.066619873, -0.040313721, -0.15875244, -0.27044678, - -0.35754395, -0.39682007, -0.34078979, -0.22293091, -0.13269043, - -0.048034668, 0.0730896, 0.19732666, 0.30789185, 0.39804077, - 0.44244385, 0.41928101, 0.35534668, 0.29177856, 0.22891235, - 0.18084717, 0.15231323, 0.13360596, 0.13049316, 0.13156128, - 0.1293335, 0.11477661, 0.12258911, 0.1824646, 0.26675415, - 0.35171509, 0.43341064, 0.49163818, 0.51086426, 0.50985718, - 0.49337769, 0.45962524, 0.43182373, 0.42025757, 0.4161377, - 0.40631104, 0.40435791, 0.42172241, 0.44003296, 0.45986938, - 0.47451782, 0.47540283, 0.48825073, 0.51907349, 0.5612793, - 0.62319946, 0.7109375, 0.79650879, 0.86904907, 0.92111206, - 0.96124268, 0.96994019, 0.92593384, 0.83483887, 0.70803833, - 0.57583618, 0.45834351, 0.3828125, 0.35479736, 0.35110474, - 0.38894653, 0.45022583, 0.49264526, 0.48919678, 0.45336914, - 0.40823364, 0.35009766, 0.28097534, 0.22503662, 0.18313599, - 0.14697266, 0.11010742, 0.07019043, 0.023956299, -0.024658203, - -0.087219238, -0.14846802, -0.19796753, -0.23556519, -0.25576782, - -0.25366211, -0.2333374, -0.19955444, -0.13546753, -0.052581787, - 0.018371582, 0.079620361, 0.14343262, 0.20013428, 0.2388916, - 0.25930786, 0.26889038, 0.26208496, 0.24691772, 0.22842407, - 0.19110107, 0.14624023, 0.093017578, 0.034301758, -0.044189453, - -0.1378479, -0.22967529, -0.29983521, -0.32650757, -0.31271362, - -0.26196289, -0.19345093, -0.11380005, -0.032806396, 0.038330078, - 0.087677002, 0.10690308, 0.092254639, 0.035766602, -0.057952881, - -0.17190552, -0.28945923, -0.40023804, -0.49761963, -0.5635376, - -0.59222412, -0.60348511, -0.61352539, -0.60958862, -0.57702637, - -0.53674316, -0.49453735, -0.45465088, -0.42507935, -0.40863037, - -0.4095459, -0.42730713, -0.45852661, -0.49362183, -0.53048706, - -0.55499268, -0.5526123, -0.52798462, -0.49053955, -0.44320679, - -0.38500977, -0.30548096, -0.2182312, -0.14306641, -0.073547363, - -0.0094299316, 0.045196533, 0.083312988, 0.11129761, 0.14489746, - 0.19921875, 0.24578857, 0.25418091, 0.23397827, 0.20111084, - 0.14822388, 0.078582764, 0.020812988, -0.012390137, -0.02520752, - -0.010559082, 0.026947021, 0.081542969, 0.13687134, 0.18441772, - 0.21426392, 0.22711182, 0.21377563, 0.17559814, 0.12246704, - 0.060882568, -0.0017089844, -0.067504883, -0.12475586, -0.16159058, - -0.16809082, -0.15145874, -0.12081909, -0.077362061, -0.03012085, - 0.011444092, 0.044189453, 0.075256348, 0.1050415, 0.13238525, - 0.15667725, 0.17337036, 0.17050171, 0.14389038, 0.10055542, - 0.057220459, 0.016204834, -0.012664795, -0.025024414, -0.014221191, - 0.012939453, 0.063781738, 0.12664795, 0.19824219, 0.26501465, - 0.32858276, 0.3782959, 0.40698242, 0.42160034, 0.42788696, - 0.43948364, 0.46075439, 0.48413086, 0.49819946, 0.50167847, - 0.49963379, 0.48529053, 0.45324707, 0.40890503, 0.36273193, - 0.31619263, 0.27200317, 0.23919678, 0.21868896, 0.2046814, - 0.18276978, 0.15286255, 0.11727905, 0.071807861, 0.015777588, - -0.054199219, -0.12478638, -0.19580078, -0.25622559, -0.30892944, - -0.34820557, -0.37606812, -0.39535522, -0.40704346, -0.42147827, - -0.43313599, -0.4447937, -0.44998169, -0.44503784, -0.431427, - -0.40750122, -0.37838745, -0.34109497, -0.29644775, -0.24822998, - -0.1991272, -0.15881348, -0.12728882, -0.10827637, -0.09979248, - -0.094055176, -0.091125488, -0.089508057, -0.087646484, -0.0809021, - -0.072387695, -0.055328369, -0.035583496, -0.0079956055, - 0.018188477, 0.04309082, 0.060577393, 0.073272705, 0.080413818, - 0.084503174, 0.083343506, 0.07522583, 0.071136475, 0.076141357, - 0.088348389, 0.10449219, 0.12374878, 0.14376831, 0.1534729, - 0.14807129, 0.1255188, 0.092559814, 0.047485352, -0.0028076172, - -0.062286377, -0.12301636, -0.17855835, -0.22631836, -0.26260376, - -0.28588867, -0.29559326, -0.29629517, -0.287323, -0.27877808, - -0.26751709, -0.25668335, -0.24749756, -0.24139404, -0.24041748, - -0.23944092, -0.23544312, -0.22592163, -0.20898438, -0.184021, - -0.15014648, -0.11633301, -0.082702637, -0.0496521, -0.017944336, - 0.017486572, 0.052581787, 0.092041016, 0.13427734, 0.18481445, - 0.24057007, 0.29467773, 0.33944702, 0.37042236, 0.38433838, - 0.38241577, 0.36376953, 0.33966064, 0.31497192, 0.29443359, - 0.27792358, 0.2600708, 0.24700928, 0.23727417, 0.23452759, - 0.23358154, 0.23257446, 0.23406982, 0.23239136, 0.23312378, - 0.22958374, 0.22579956, 0.21710205, 0.20043945, 0.17419434, - 0.13870239, 0.096466064, 0.051971436, 0.010437012, -0.024963379, - -0.052490234, -0.066467285, -0.068969727, -0.058563232, - -0.044616699, -0.030029297, -0.017486572, -0.0077209473, - -0.0032043457, -0.0048217773, -0.012481689, -0.027801514, - -0.042724609, -0.060211182, -0.072937012, -0.081756592, - -0.082977295, -0.07800293, -0.064605713, -0.043792725, -0.013031006, - 0.028625488, 0.077667236, 0.13046265, 0.18130493, 0.22851562, - 0.26617432, 0.29119873, 0.3039856, 0.30383301, 0.2925415, - 0.27261353, 0.24078369, 0.20632935, 0.16989136, 0.13552856, - 0.1038208, 0.074462891, 0.045898438, 0.013061523, -0.021087646, - -0.06072998, -0.099700928, -0.14016724, -0.17874146, -0.21130371, - -0.23596191, -0.25204468, -0.26132202, -0.26803589, -0.27981567, - -0.29934692, -0.32730103, -0.36425781, -0.40698242, -0.45092773, - -0.48971558, -0.51776123, -0.53198242, -0.5333252, -0.52218628, - -0.50076294, -0.47000122, -0.43017578, -0.38583374, -0.33612061, - -0.28347778, -0.23306274, -0.18682861, -0.14859009, -0.11853027, - -0.099853516, -0.09072876, -0.088562012, -0.091369629, -0.098022461, - -0.10787964, -0.11395264, -0.11013794, -0.093841553, -0.069274902, - -0.035369873, 0.0026245117, 0.046783447, 0.090698242, 0.1315918, - 0.16296387, 0.18664551, 0.2038269, 0.2154541, 0.22036743, - 0.21444702, 0.20489502, 0.18753052, 0.16650391, 0.13882446, - 0.10861206, 0.078735352, 0.049346924, 0.024078369, 0.0013427734, - -0.017974854, -0.032165527, -0.043243408, -0.050262451, -0.05670166, - -0.061157227, -0.068695068, -0.078918457, -0.085601807, - -0.090698242, -0.093658447, -0.095581055, -0.092529297, -0.08404541, - -0.068939209, -0.053649902, -0.037017822, -0.016448975, - 0.0096740723, 0.041687012, 0.074798584, 0.10549927, 0.13494873, - 0.16445923, 0.1937561, 0.2208252, 0.24539185, 0.26721191, - 0.28359985, 0.29733276, 0.30651855, 0.31622314, 0.32266235, - 0.31842041, 0.31008911, 0.29681396, 0.2819519, 0.26678467, - 0.25457764, 0.24642944, 0.24273682, 0.23709106, 0.22891235, - 0.2197876, 0.21051025, 0.20257568, 0.19024658, 0.17764282, - 0.1607666, 0.14309692, 0.12210083, 0.096893311, 0.073150635, - 0.049530029, 0.028045654, 0.0048522949, -0.017669678, -0.036224365, - -0.050506592, -0.059112549, -0.066345215, -0.068939209, - -0.070495605, -0.073059082, -0.073028564, -0.076812744, - -0.080963135, -0.092010498, -0.10275269, -0.11016846, -0.11907959, - -0.12677002, -0.13555908, -0.13842773, -0.13674927, -0.13088989, - -0.11846924, -0.099334717, -0.072784424, -0.042541504, - -0.0082702637, 0.031524658, 0.072387695, 0.10968018, 0.13861084, - 0.15847778, 0.16812134, 0.16650391, 0.15774536, 0.14169312, - 0.12005615, 0.092895508, 0.061737061, 0.02923584, -0.0022277832, - -0.032836914, -0.05670166, -0.075439453, -0.093322754, -0.1121521, - -0.13204956, -0.15255737, -0.17541504, -0.19900513, -0.21817017, - -0.23519897, -0.25091553, -0.27148438, -0.29296875, -0.31069946, - -0.3243103, -0.33599854, -0.34689331, -0.35461426, -0.3598938, - -0.36212158, -0.36105347, -0.35699463, -0.34725952, -0.33319092, - -0.31484985, -0.29327393, -0.26959229, -0.24423218, -0.21859741, - -0.18777466, -0.15194702, -0.11468506, -0.079498291, -0.0496521, - -0.023529053, 0.001159668, 0.025848389, 0.044494629, 0.054168701, - 0.058135986, 0.059844971, 0.066894531, 0.075195312, 0.087585449, - 0.10009766, 0.11755371, 0.13864136, 0.16278076, 0.18545532, - 0.20370483, 0.22076416, 0.23773193, 0.25531006, 0.26928711, - 0.27508545, 0.27371216, 0.26660156, 0.25100708, 0.2260437, - 0.1942749, 0.16079712, 0.12878418, 0.10110474, 0.07244873, - 0.046051025, 0.024993896, 0.010284424, -0.0010070801, -0.0082397461, - -0.011383057, -0.0072937012, -0.0034179688, 0.0040893555, - 0.013519287, 0.022583008, 0.031219482, 0.032714844, 0.034851074, - 0.033508301, 0.033935547, 0.030975342, 0.031982422, 0.039794922, - 0.05569458, 0.077392578, 0.10113525, 0.1277771, 0.15429688, - 0.18026733, 0.20275879, 0.21591187, 0.22341919, 0.224823, - 0.22775269, 0.22766113, 0.22491455, 0.2170105, 0.20431519, - 0.19171143, 0.17459106, 0.15859985, 0.14315796, 0.12554932, - 0.10998535, 0.09463501, 0.083435059, 0.070465088, 0.057983398, - 0.048278809, 0.041351318, 0.036224365, 0.030639648, 0.021850586, - 0.012176514, -0.0034484863, -0.022735596, -0.045166016, - -0.068908691, -0.094421387, -0.11810303, -0.13882446, -0.15774536, - -0.17269897, -0.18533325, -0.19125366, -0.19116211, -0.18655396, - -0.18423462, -0.18267822, -0.17877197, -0.17248535, -0.16625977, - -0.16271973, -0.16104126, -0.16125488, -0.16192627, -0.16333008, - -0.16461182, -0.16616821, -0.16235352, -0.15325928, -0.13644409, - -0.11523438, -0.090240479, -0.058013916, -0.024383545, 0.0089111328, - 0.039093018, 0.067749023, 0.096221924, 0.11837769, 0.13458252, - 0.13946533, 0.13269043, 0.12045288, 0.099212646, 0.073608398, - 0.042266846, 0.011627197, -0.019042969, -0.04876709, -0.07409668, - -0.096038818, -0.11062622, -0.1239624, -0.1340332, -0.14199829, - -0.14428711, -0.14074707, -0.13641357, -0.13253784, -0.13400269, - -0.13830566, -0.1505127, -0.16162109, -0.17391968, -0.1847229, - -0.19418335, -0.2019043, -0.20770264, -0.21234131, -0.21121216, - -0.20510864, -0.19058228, -0.16986084, -0.14498901, -0.11407471, - -0.082061768, -0.048492432, -0.015533447, 0.018341064, 0.052185059, - 0.078826904, 0.10336304, 0.12106323, 0.1315918, 0.13513184, - 0.13653564, 0.13986206, 0.14501953, 0.14926147, 0.15634155, - 0.16189575, 0.16915894, 0.17584229, 0.18264771, 0.19329834, - 0.20681763, 0.22433472, 0.24029541, 0.25708008, 0.27435303, - 0.28552246, 0.28768921, 0.2796936, 0.26013184, 0.23287964, - 0.20193481, 0.17483521, 0.14996338, 0.12689209, 0.10336304, - 0.081939697, 0.063842773, 0.047302246, 0.031677246, 0.01953125, - 0.010559082, 0.0013427734, -0.0082397461, -0.016357422, - -0.019348145, -0.023223877, -0.023406982, -0.023895264, - -0.022155762, -0.020477295, -0.017089844, -0.013031006, - -0.0098571777, -0.0046691895, 6.1035156e-05, 0.0072937012, - 0.0128479, 0.025878906, 0.040618896, 0.055908203, 0.066558838, - 0.072021484, 0.076965332, 0.080383301, 0.081237793, 0.077575684, - 0.072113037, 0.067443848, 0.064880371, 0.063720703, 0.058959961, - 0.054534912, 0.047576904, 0.039276123, 0.025390625, 0.010986328, - -0.0061645508, -0.018859863, -0.028900146, -0.036376953, - -0.041473389, -0.047241211, -0.054260254, -0.063049316, -0.0730896, - -0.081085205, -0.090118408, -0.10089111, -0.11264038, -0.12442017, - -0.1350708, -0.14535522, -0.15383911, -0.16052246, -0.16329956, - -0.1668396, -0.17166138, -0.17819214, -0.18157959, -0.18133545, - -0.17935181, -0.1758728, -0.17181396, -0.16687012, -0.16067505, - -0.15344238, -0.14562988, -0.13626099, -0.12780762, -0.11743164, - -0.10961914, -0.098510742, -0.085601807, -0.071716309, -0.05758667, - -0.041412354, -0.024078369, -0.0043640137, 0.015960693, 0.037567139, - 0.060455322, 0.082855225, 0.10211182, 0.11419678, 0.12088013, - 0.12197876, 0.12145996, 0.11743164, 0.11026001, 0.096984863, - 0.077789307, 0.054504395, 0.031890869, 0.010986328, -0.0061340332, - -0.020507812, -0.032836914, -0.042541504, -0.050476074, - -0.056762695, -0.06137085, -0.065032959, -0.064727783, -0.064147949, - -0.060119629, -0.05770874, -0.056549072, -0.057098389, -0.059692383, - -0.063140869, -0.067321777, -0.072021484, -0.075439453, - -0.078033447, -0.077575684, -0.073059082, -0.063995361, - -0.049560547, -0.030212402, -0.008605957, 0.015930176, 0.039794922, - 0.065917969, 0.090820312, 0.11099243, 0.12619019, 0.13739014, - 0.1472168, 0.15374756, 0.15893555, 0.16152954, 0.16671753, - 0.17425537, 0.17889404, 0.18060303, 0.17886353, 0.17861938, - 0.17984009, 0.18179321, 0.18499756, 0.18548584, 0.18609619, - 0.18521118, 0.18234253, 0.17956543, 0.17547607, 0.1690979, - 0.16101074, 0.15505981, 0.14837646, 0.13739014, 0.12255859, - 0.10522461, 0.082397461, 0.05770874, 0.030609131, 0.0046691895, - -0.018676758, -0.037872314, -0.054779053, -0.069458008, - -0.078826904, -0.084136963, -0.085479736, -0.083404541, - -0.076324463, -0.066314697, -0.056060791, -0.049926758, - -0.043182373, -0.040252686, -0.037811279, -0.038543701, - -0.039276123, -0.040771484, -0.041687012, -0.042053223, - -0.043548584, -0.040161133, -0.034637451, -0.024841309, - -0.015197754, -0.0059509277, 0.001159668, 0.0042114258, - 0.0062866211, 0.0049438477, 0.0047302246, 0.0028686523, - -0.00082397461, -0.0034790039, -0.0077514648, -0.01260376, - -0.019500732, -0.02645874, -0.032409668, -0.041351318, -0.049163818, - -0.058532715, -0.068603516, -0.078948975, -0.088897705, - -0.094543457, -0.097167969, -0.095581055, -0.094726562, - -0.095001221, -0.095336914, -0.094726562, -0.096160889, -0.09866333, - -0.10427856, -0.1104126, -0.11727905, -0.12301636, -0.13006592, - -0.13479614, -0.13574219, -0.13119507, -0.12451172, -0.11630249, - -0.10476685, -0.094543457, -0.08416748, -0.074066162, -0.061767578, - -0.050415039, -0.040557861, -0.031402588, -0.023834229, -0.01361084, - -0.0036010742, 0.0055236816, 0.013122559, 0.02142334, 0.029418945, - 0.041717529, 0.056518555, 0.075714111, 0.095062256, 0.11523438, - 0.13363647, 0.146698, 0.15646362, 0.16061401, 0.16043091, - 0.15634155, 0.14889526, 0.13769531, 0.12127686, 0.10272217, - 0.085418701, 0.070739746, 0.055541992, 0.040405273, 0.024200439, - 0.010803223, -0.00048828125, -0.0087890625, -0.012481689, - -0.014404297, -0.014068604, -0.011230469, -0.0081787109, - -0.0049438477, -0.0041809082, -0.0060119629, -0.012237549, - -0.020355225, -0.027832031, -0.034759521, -0.042053223, -0.04675293, - -0.045349121, -0.042297363, -0.03604126, -0.027862549, -0.015777588, - -0.0011291504, 0.013397217, 0.030212402, 0.04598999, 0.061401367, - 0.074615479, 0.086242676, 0.094238281, 0.09979248, 0.10458374, - 0.10662842, 0.10894775, 0.11077881, 0.11056519, 0.11022949, - 0.10903931, 0.1072998, 0.10266113, 0.098999023, 0.095977783, - 0.095916748, 0.095611572, 0.094909668, 0.093963623, 0.092895508, - 0.092559814, 0.090423584, 0.084014893, 0.073852539, 0.059020996, - 0.044830322, 0.02822876, 0.012023926, -0.0049743652, -0.020050049, - -0.036193848, -0.052398682, -0.066253662, -0.078796387, - -0.089019775, -0.098083496, -0.10592651, -0.11224365, -0.11618042, - -0.11715698, -0.11807251, -0.11676025, -0.11459351, -0.11108398, - -0.10748291, -0.10400391, -0.10064697, -0.096923828, -0.092163086, - -0.086639404, -0.08114624, -0.075531006, -0.071838379, -0.06854248, - -0.064971924, -0.061035156, -0.054382324, -0.047393799, - -0.043518066, -0.04095459, -0.041351318, -0.041259766, -0.041931152, - -0.04095459, -0.037841797, -0.034210205, -0.029541016, -0.026550293, - -0.02444458, -0.024139404, -0.026397705, -0.03036499, -0.035675049, - -0.041046143, -0.04675293, -0.054168701, -0.061218262, -0.065704346, - -0.066650391, -0.066650391, -0.063537598, -0.06048584, -0.055664062, - -0.053375244, -0.052642822, -0.052764893, -0.054718018, - -0.053955078, -0.05355835, -0.052764893, -0.053405762, -0.056213379, - -0.06036377, -0.062744141, -0.063110352, -0.06072998, -0.054504395, - -0.044647217, -0.034057617, -0.022949219, -0.011810303, 0.002532959, - 0.015594482, 0.024383545, 0.032165527, 0.03894043, 0.047302246, - 0.055236816, 0.064605713, 0.072387695, 0.081115723, 0.088348389, - 0.094940186, 0.10223389, 0.11135864, 0.12249756, 0.13082886, - 0.13803101, 0.14520264, 0.14993286, 0.15118408, 0.14987183, - 0.14846802, 0.14581299, 0.13851929, 0.12878418, 0.11639404, - 0.10375977, 0.09173584, 0.078796387, 0.063842773, 0.048980713, - 0.034576416, 0.022338867, 0.011932373, 0.0039672852, 0.0011291504, - -0.00094604492, -0.0015563965, -0.0034484863, -0.0050354004, - -0.0083312988, -0.012390137, -0.01651001, -0.019683838, - -0.022003174, -0.024414062, -0.027557373, -0.03137207, -0.03314209, - -0.030700684, -0.028045654, -0.025482178, -0.022247314, - -0.018737793, -0.013275146, -0.0074157715, 0.0010070801, - 0.0093078613, 0.01763916, 0.027404785, 0.035583496, 0.043151855, - 0.047485352, 0.051239014, 0.053649902, 0.054626465, 0.054382324, - 0.053039551, 0.050323486, 0.046691895, 0.044158936, 0.041534424, - 0.039794922, 0.035797119, 0.031494141, 0.026580811, 0.021575928, - 0.017944336, 0.014038086, 0.0093688965, 0.0051574707, - -0.00067138672, -0.0070495605, -0.014984131, -0.021728516, - -0.030151367, -0.037719727, -0.049804688, -0.062255859, - -0.073791504, -0.08416748, -0.089599609, -0.096496582, -0.10055542, - -0.10531616, -0.10870361, -0.11083984, -0.11102295, -0.10925293, - -0.10610962, -0.10125732, -0.094848633, -0.086700439, -0.07925415, - -0.074005127, -0.070770264, -0.068511963, -0.065643311, - -0.060577393, -0.054595947, -0.049407959, -0.043914795, - -0.039794922, -0.033813477, -0.027923584, -0.022674561, - -0.017791748, -0.01260376, -0.008972168, -0.0076293945, - -0.0053100586, -0.0030517578, -0.0024719238, -0.0032043457, - -0.0035705566, -0.002746582, -0.0013427734, -0.0011901855, - -0.0012817383, -0.0016479492, -0.0030212402, -0.0040588379, - -0.0071411133, -0.0085449219, -0.010375977, -0.01171875, - -0.011230469, -0.012512207, -0.013305664, -0.014190674, - -0.014099121, -0.015625, -0.01763916, -0.020202637, -0.020172119, - -0.017730713, -0.014068604, -0.0097351074, -0.0065917969, - -0.0020751953, 0.0018310547, 0.0045471191, 0.0046691895, - 0.003326416, 0.0018615723, -0.00021362305, 0.0010986328, - 0.0056152344, 0.011962891, 0.019866943, 0.029846191, 0.040130615, - 0.050811768, 0.058746338, 0.068267822, 0.076721191, 0.083862305, - 0.091491699, 0.096008301, 0.10150146, 0.1036377, 0.10562134, - 0.10449219, 0.1026001, 0.10076904, 0.099822998, 0.098297119, - 0.095245361, 0.094207764, 0.091949463, 0.092773438, 0.093048096, - 0.093658447, 0.090881348, 0.084747314, 0.078186035, 0.068328857, - 0.058197021, 0.044403076, 0.031768799, 0.019866943, 0.010345459, - 0.0029602051, -0.0044555664, -0.011932373, -0.018920898, - -0.024993896, -0.029205322, -0.031768799, -0.034790039, - -0.036773682, -0.037841797, -0.04019165, -0.042785645, -0.045928955, - -0.045776367, -0.044006348, -0.040649414, -0.037902832, - -0.036834717, -0.035308838, -0.033569336, -0.030090332, - -0.025543213, -0.020263672, -0.014678955, -0.0094604492, - -0.0042114258, -0.00067138672, 0.0016784668, 0.0021362305, - 0.0038452148, 0.007598877, 0.0099487305, 0.013793945, 0.015838623, - 0.01852417, 0.019958496, 0.021087646, 0.021270752, 0.021911621, - 0.021789551, 0.020965576, 0.01776123, 0.013275146, 0.0070495605, - 0.00076293945, -0.004119873, -0.007232666, -0.009552002, - -0.012695312, -0.016052246, -0.019226074, -0.02331543, -0.028625488, - -0.032348633, -0.035736084, -0.038909912, -0.044372559, - -0.050354004, -0.056610107, -0.061309814, -0.065704346, - -0.065948486, -0.067230225, -0.06652832, -0.0652771, -0.061981201, - -0.057128906, -0.052185059, -0.046112061, -0.041595459, - -0.035461426, -0.031097412, -0.025970459, -0.022979736, - -0.019836426, -0.015899658, -0.01260376, -0.0087585449, - -0.0061950684, -0.0028991699, -0.0014953613, 0.0018615723, - 0.0055847168, 0.008605957, 0.011871338, 0.015594482, 0.020629883, - 0.025970459, 0.030212402, 0.034973145, 0.037322998, 0.037597656, - 0.036254883, 0.034698486, 0.032440186, 0.029937744, 0.026062012, - 0.021972656, 0.018432617, 0.013397217, 0.010528564, 0.0077514648, - 0.0076904297, 0.0078430176, 0.0095825195, 0.012512207, 0.01550293, - 0.017486572, 0.017150879, 0.015563965, 0.013031006, 0.010070801, - 0.0068969727, 0.0039367676, 0.0021057129, 0.0018920898, - 0.0032653809, 0.0064697266, 0.0092163086, 0.010437012, 0.0097961426, - 0.0078125, 0.0053405762, 0.0048828125, 0.0055236816, 0.0086669922, - 0.013061523, 0.019897461, 0.027252197, 0.035675049, 0.043518066, - 0.050018311, 0.056427002, 0.06072998, 0.062011719, 0.061859131, - 0.060546875, 0.060577393, 0.059173584, 0.056945801, 0.054138184, - 0.053283691, 0.053131104, 0.052764893, 0.050811768, 0.04864502, - 0.046295166, 0.044921875, 0.043182373, 0.040161133, 0.036529541, - 0.032287598, 0.028411865, 0.022247314, 0.015960693, 0.0095825195, - 0.0032958984, -0.0028991699, -0.01159668, -0.018249512, -0.02532959, - -0.03137207, -0.035919189, -0.040710449, -0.044006348, -0.049163818, - -0.052246094, -0.055969238, -0.056396484, -0.055511475, - -0.052825928, -0.049194336, -0.046844482, -0.04598999, -0.045227051, - -0.044586182, -0.042388916, -0.039611816, -0.037719727, - -0.035766602, -0.032806396, -0.030700684, -0.027313232, -0.02444458, - -0.020019531, -0.015533447, -0.012145996, -0.0091552734, - -0.0064697266, -0.0040893555, -0.00048828125, 0.001953125, - 0.0048522949, 0.0061950684, 0.007019043, 0.0083007812, 0.0091247559, - 0.0094909668, 0.0098876953, 0.010894775, 0.011566162, 0.0105896, - 0.0083007812, 0.0047607422, 0.0010986328, -0.0036621094, - -0.0073242188, -0.010223389, -0.011505127, -0.011993408, - -0.012786865, -0.015350342, -0.017669678, -0.019500732, - -0.022613525, -0.025115967, -0.027862549, -0.027832031, - -0.028320312, -0.029602051, -0.030761719, -0.033111572, - -0.033630371, -0.032592773, -0.030914307, -0.027008057, -0.02355957, - -0.020507812, -0.017211914, -0.014709473, -0.0097351074, - -0.0033874512, 0.0032958984, 0.010284424, 0.014007568, 0.017272949, - 0.017791748, 0.018371582, 0.018096924, 0.017272949, 0.016326904, - 0.016021729, 0.017028809, 0.020507812, 0.025238037, 0.031280518, - 0.036834717, 0.040283203, 0.04284668, 0.045410156, 0.048339844, - 0.050109863, 0.04800415, 0.044311523, 0.040557861, 0.036010742, - 0.031982422, 0.026977539, 0.022766113, 0.018829346, 0.015411377, - 0.012359619, 0.010925293, 0.0095214844, 0.010498047, 0.012054443, - 0.014221191, 0.016326904, 0.017150879, 0.016784668, 0.01473999, - 0.012481689, 0.0090026855, 0.0057678223, 0.002746582, - -0.00024414062, -6.1035156e-05, -0.00042724609, -0.00039672852, - -0.0024414062, -0.0037841797, -0.0043334961, -0.0034790039, - -0.0015563965, 0.0011901855, 0.0047302246, 0.0079345703, - 0.011108398, 0.013885498, 0.017150879, 0.020874023, 0.024139404, - 0.028411865, 0.031860352, 0.036010742, 0.038330078, 0.038574219, - 0.03805542, 0.035980225, 0.033905029, 0.03112793, 0.027496338, - 0.024414062, 0.020690918, 0.017791748, 0.013549805, 0.0098876953, - 0.0071105957, 0.0046081543, 0.0029296875, 0.0013122559, - 0.0002746582, -0.0014343262, -0.0029907227, -0.0065307617, - -0.009979248, -0.014831543, -0.02041626, -0.027008057, -0.036132812, - -0.043670654, -0.049591064, -0.053894043, -0.057312012, - -0.059570312, -0.059051514, -0.057617188, -0.05581665, -0.054962158, - -0.053283691, -0.051300049, -0.049591064, -0.049407959, - -0.049560547, -0.0496521, -0.04788208, -0.044830322, -0.040771484, - -0.03616333, -0.031066895, -0.024902344, -0.019226074, -0.014312744, - -0.010925293, -0.0085754395, -0.0065612793, -0.0048217773, - -0.0020141602, -0.00039672852, 0.0014648438, 0.003326416, - 0.0067749023, 0.009979248, 0.014068604, 0.016052246, 0.017486572, - 0.017700195, 0.018127441, 0.018066406, 0.017608643, 0.016845703, - 0.015838623, 0.014404297, 0.013214111, 0.011901855, 0.010650635, - 0.0085754395, 0.0069885254, 0.0051269531, 0.0030212402, - 0.00015258789, -0.0031738281, -0.0065307617, -0.0090637207, - -0.010498047, -0.011505127, -0.012023926, -0.01260376, -0.012115479, - -0.010406494, -0.0086975098, -0.0063781738, -0.005859375, - -0.0042114258, -0.0034179688, -0.0012207031, 0.00057983398, - 0.0030822754, 0.0048828125, 0.0070800781, 0.010040283, 0.013793945, - 0.01763916, 0.020935059, 0.024047852, 0.026245117, 0.02822876, - 0.028381348, 0.028015137, 0.027618408, 0.027496338, 0.0284729, - 0.029174805, 0.029815674, 0.030670166, 0.033081055, 0.035797119, - 0.037445068, 0.039154053, 0.039825439, 0.040283203, 0.03918457, - 0.036987305, 0.033874512, 0.02935791, 0.025177002, 0.020507812, - 0.016479492, 0.013031006, 0.010070801, 0.0077209473, 0.0056152344, - 0.003326416, 0.00048828125, -0.0017089844, -0.0030517578, - -0.0029602051, -0.003112793, -0.0025024414, -0.0024414062, - -0.0021362305, -0.0023498535, -0.0029907227, -0.0043029785, - -0.0059814453, -0.0078735352, -0.01083374, -0.013397217, - -0.016448975, -0.018890381, -0.020568848, -0.020080566, -0.01852417, - -0.016845703, -0.014007568, -0.0105896, -0.0066833496, - -0.0030517578, 0.0014953613, 0.0065002441, 0.0098571777, - 0.013122559, 0.014404297, 0.015472412, 0.016571045, 0.018035889, - 0.018585205, 0.018371582, 0.016540527, 0.014099121, 0.011413574, - 0.009185791, 0.0065917969, 0.0032653809, 0.00054931641, - -0.0018005371, -0.0024719238, -0.0046081543, -0.0062255859, - -0.0078430176, -0.009979248, -0.011627197, -0.015289307, - -0.017456055, -0.019897461, -0.022918701, -0.025543213, - -0.028747559, -0.031524658, -0.036865234, -0.041534424, - -0.045410156, -0.046875, -0.048126221, -0.049499512, -0.049163818, - -0.048828125, -0.047790527, -0.04574585, -0.043579102, -0.040924072, - -0.040222168, -0.038360596, -0.036895752, -0.034210205, - -0.031616211, -0.028289795, -0.024200439, -0.020294189, - -0.015838623, -0.011993408, -0.007598877, -0.0036010742, - 0.00054931641, 0.004486084, 0.0074157715, 0.0098571777, 0.012054443, - 0.01473999, 0.017700195, 0.019744873, 0.022399902, 0.02432251, - 0.025817871, 0.027130127, 0.027709961, 0.0284729, 0.027893066, - 0.027496338, 0.026580811, 0.025634766, 0.023681641, 0.021972656, - 0.019775391, 0.017730713, 0.016052246, 0.014556885, 0.014434814, - 0.013763428, 0.012268066, 0.0105896, 0.0091247559, 0.0077819824, - 0.0054626465, 0.0030822754, 0.00067138672, -0.0012207031, - -0.0028686523, -0.0048217773, -0.0047912598, -0.004486084, - -0.002746582, -0.00067138672, 0.0012512207, 0.0037231445, - 0.0054321289, 0.0074157715, 0.010192871, 0.013214111, 0.016448975, - 0.018005371, 0.019134521, 0.018463135, 0.017944336, 0.016723633, - 0.016448975, 0.01651001, 0.01651001, 0.017669678, 0.019622803, - 0.022064209, 0.024017334, 0.025909424, 0.026977539, 0.027008057, - 0.026733398, 0.025634766, 0.024261475, 0.022247314, 0.020202637, - 0.017730713, 0.01663208, 0.015319824, 0.014404297, 0.013092041, - 0.0098266602, 0.0065307617, 0.0032653809, 0.00061035156, - -0.0028076172, -0.0061340332, -0.0094909668, -0.012115479, - -0.013244629, -0.014251709, -0.015075684, -0.015808105, - -0.015991211, -0.016418457, -0.016601562, -0.01663208, -0.01675415, - -0.017333984, -0.018615723, -0.019775391, -0.02053833, -0.020721436, - -0.021820068, -0.022918701, -0.023651123, -0.023895264, - -0.023590088, -0.02331543, -0.022338867, -0.020141602, -0.017669678, - -0.014068604, -0.010528564, -0.0055236816, 0, 0.0051574707, - 0.008972168, 0.011291504, 0.012207031, 0.012420654, 0.01159668, - 0.0105896, 0.009185791, 0.0078735352, 0.0067749023, 0.0052490234, - 0.0040588379, 0.0025024414, 0.0013427734, 0.0014038086, - 0.0009765625, 0.00076293945, -0.00079345703, -0.0029907227, - -0.0054626465, -0.0073547363, -0.0095825195, -0.011383057, - -0.012237549, -0.013000488, -0.014373779, -0.016448975, - -0.018341064, -0.020446777, -0.02331543, -0.025909424, -0.02835083, - -0.028869629, -0.028839111, -0.028686523, -0.028106689, - -0.027740479, -0.027435303, -0.027313232, -0.026672363, - -0.025604248, -0.02355957, -0.020263672, -0.016204834, -0.011383057, - -0.0068359375, -0.0024719238, 0.00021362305, 0.0022583008, - 0.0036621094, 0.0053710938, 0.0079040527, 0.010162354, 0.013214111, - 0.016052246, 0.019042969, 0.022064209, 0.024871826, 0.027618408, - 0.029205322, 0.030761719, 0.031921387, 0.032012939, 0.032562256, - 0.032714844, 0.032958984, 0.032318115, 0.031860352, 0.030822754, - 0.03024292, 0.029510498, 0.028167725, 0.027099609, 0.024810791, - 0.022674561, 0.019958496, 0.018218994, 0.016143799, 0.014373779, - 0.012145996, 0.010101318, 0.0079345703, 0.0063476562, 0.0045471191, - 0.003112793, 0.00085449219, -0.00088500977, -0.002532959, - -0.0035095215, -0.0039672852, -0.0041503906, -0.0031433105, - -0.0017700195, -3.0517578e-05, 0.0010681152, 0.0033874512, - 0.0053405762, 0.0074768066, 0.0082397461, 0.0075683594, 0.007019043, - 0.005279541, 0.004486084, 0.0035400391, 0.0035400391, 0.0047607422, - 0.0061645508, 0.0079345703, 0.0090332031, 0.010314941, 0.010681152, - 0.010467529, 0.010467529, 0.009979248, 0.009765625, 0.0090637207, - 0.0083007812, 0.0075683594, 0.0065917969, 0.0066223145, - 0.0054626465, 0.0040893555, 0.0021362305, -3.0517578e-05, - -0.0024719238, -0.0052490234, -0.008026123, -0.010375977, - -0.012573242, -0.01461792, -0.01651001, -0.017822266, -0.018981934, - -0.019622803, -0.019592285, -0.020172119, -0.020751953, - -0.021728516, -0.022186279, -0.02230835, -0.02230835, -0.022155762, - -0.022583008, -0.022338867, -0.023193359, -0.023284912, - -0.023406982, -0.022766113, -0.022216797, -0.022094727, - -0.021484375, -0.021026611, -0.019836426, -0.018005371, - -0.015533447, -0.012512207, -0.0092773438, -0.0061340332, - -0.0029907227, 0.00076293945, 0.00390625, 0.0065002441, - 0.0084228516, 0.010070801, 0.011566162, 0.012054443, 0.012573242, - 0.011779785, 0.011077881, 0.010131836, 0.0088500977, 0.0075073242, - 0.0054321289, 0.0044555664, 0.003692627, 0.0032348633, 0.0028991699, - 0.0022583008, 0.0026245117, 0.0021972656, 0.001953125, - 0.00079345703, -0.001159668, -0.0028381348, -0.0046386719, - -0.0059814453, -0.0075378418, -0.0087890625, -0.010192871, - -0.01083374, -0.011993408, -0.012695312, -0.012756348, -0.012908936, - -0.012695312, -0.013061523, -0.012756348, -0.012145996, - -0.011352539, -0.010253906, -0.0094909668, -0.0081787109, - -0.0067138672, -0.0047912598, -0.0016784668, 0.00085449219, - 0.0041809082, 0.0070495605, 0.0098571777, 0.013061523, 0.016052246, - 0.019012451, 0.020965576, 0.022613525, 0.023590088, 0.024169922, - 0.02432251, 0.024078369, 0.024261475, 0.023681641, 0.024291992, - 0.024475098, 0.025390625, 0.026306152, 0.026641846, 0.027008057, - 0.026672363, 0.026641846, 0.026153564, 0.025482178, 0.024108887, - 0.022155762, 0.020050049, 0.017578125, 0.01461792, 0.011932373, - 0.0090332031, 0.0069580078, 0.0048828125, 0.0032653809, 0.001953125, - 0.0007019043, -0.00036621094, -0.0019226074, -0.0037536621, - -0.0056152344, -0.0076904297, -0.0087280273, -0.0090942383, - -0.0088195801, -0.0081481934, -0.0072937012, -0.006439209, - -0.005279541, -0.0043640137, -0.0034179688, -0.003112793, - -0.0025024414, -0.0022888184, -0.0019226074, -0.0015869141, - -0.0015869141, -0.0015258789, -0.0016784668, -0.0017700195, - -0.0016784668, -0.0013427734, -0.0011291504, -0.00061035156, 0, - 0.00079345703, 0.0012207031, 0.0015869141, 0.0016479492, - 0.0015258789, 0.0012817383, 0.00094604492, 0.00045776367, - -0.0002746582, -0.00088500977, -0.0016479492, -0.0024108887, - -0.0036621094, -0.0050354004, -0.0063476562, -0.0079956055, - -0.0096435547, -0.011535645, -0.013458252, -0.014953613, - -0.016296387, -0.017364502, -0.01776123, -0.018280029, -0.018371582, - -0.018035889, -0.017456055, -0.016479492, -0.015838623, - -0.015167236, -0.015228271, -0.015380859, -0.015625, -0.015716553, - -0.015411377, -0.015197754, -0.015106201, -0.01473999, -0.014221191, - -0.013092041, -0.012054443, -0.010742188, -0.008605957, - -0.006439209, -0.0038757324, -0.0016479492, 0.00079345703, - 0.0026550293, 0.0045471191, 0.0065612793, 0.009185791, 0.011566162, - 0.013427734, 0.014404297, 0.015075684, 0.015411377, 0.015319824, - 0.014801025, 0.013977051, 0.013305664, 0.012634277, 0.011932373, - 0.010864258, 0.0099182129, 0.0098571777, 0.0093994141, 0.0091247559, - 0.0080566406, 0.0068359375, 0.0056762695, 0.0043640137, - 0.0037841797, 0.0027770996, 0.0023803711, 0.0017700195, - 0.0010375977, 0, -0.0011901855, -0.0020446777, -0.0028991699, - -0.0037841797, -0.0050964355, -0.0057983398, -0.0063476562, - -0.0065917969, -0.0063781738, -0.0061950684, -0.0056152344, - -0.0050354004, -0.0045471191, -0.0035705566, -0.0025939941, - -0.00091552734, 0.00082397461, 0.0028076172, 0.0045471191, - 0.0061950684, 0.0078430176, 0.0096435547, 0.010742188, 0.011474609, - 0.012176514, 0.01260376, 0.013153076, 0.013458252, 0.014129639, - 0.014801025, 0.015228271, 0.015991211, 0.016204834, 0.01663208, - 0.016601562, 0.016357422, 0.015808105, 0.014770508, 0.014007568, - 0.012939453, 0.012268066, 0.011444092, 0.01071167, 0.010070801, - 0.0086975098, 0.0075683594, 0.0058288574, 0.0040588379, - 0.0018615723, 6.1035156e-05, -0.0015258789, -0.0029602051, - -0.0040283203, -0.0055236816, -0.0065307617, -0.0078735352, - -0.0090942383, -0.010131836, -0.010925293, -0.011260986, - -0.011322021, -0.011199951, -0.010955811, -0.010925293, -0.0105896, - -0.010375977, -0.0097351074, -0.0092163086, -0.0085754395, - -0.0077819824, -0.007232666, -0.0067443848, -0.0063171387, - -0.0060119629, -0.0053405762, -0.0050048828, -0.0045166016, - -0.0040588379, -0.0035400391, -0.0030517578, -0.0029907227, - -0.0027160645, -0.0028076172, -0.0025024414, -0.0021972656, - -0.001953125, -0.0013122559, -0.00091552734, -0.00033569336, - -0.00012207031, -0.00024414062, -0.00054931641, -0.0010375977, - -0.0018615723, -0.0028686523, -0.0036010742, -0.0042724609, - -0.0046691895, -0.0052490234, -0.0056152344, -0.0061035156, - -0.0066833496, -0.0074768066, -0.0083007812, -0.0089111328, - -0.0093688965, -0.0096435547, -0.0096740723, -0.0093994141, - -0.0086669922, -0.0079040527, -0.0073242188, -0.007019043, - -0.0067749023, -0.0067138672, -0.0064697266, -0.0060424805, - -0.0054931641, -0.0048828125, -0.0044250488, -0.0039367676, - -0.0031738281, -0.0024414062, -0.0014953613, -0.00039672852, - 0.0007019043, 0.001739502, 0.0028991699, 0.0042724609, 0.005645752, - 0.0072021484, 0.0087585449, 0.010192871, 0.011627197, 0.012542725, - 0.013244629, 0.01361084, 0.013671875, 0.013580322, 0.013122559, - 0.012512207, 0.012145996, 0.011993408, 0.011932373, 0.011779785, - 0.011352539, 0.010742188, 0.0099487305, 0.0090942383, 0.0079956055, - 0.0068054199, 0.0057373047, 0.0047912598, 0.004119873, 0.003326416, - 0.0027770996, 0.0021057129, 0.0015869141, 0.0010375977, - 0.00024414062, -0.00030517578, -0.00085449219, -0.0012512207, - -0.0015869141, -0.002166748, -0.0025939941, -0.0032043457, - -0.0038757324, -0.0043640137, -0.0044250488, -0.004486084, - -0.004119873, -0.0036621094, -0.0028381348, -0.0020751953, - -0.0012817383, -0.00064086914, -0.00012207031, 0.00051879883, - 0.0012512207, 0.002166748, 0.0032653809, 0.0042419434, 0.0049743652, - 0.0056152344, 0.0059509277, 0.0061645508, 0.0062866211, - 0.0061035156, 0.0059204102, 0.005645752, 0.005645752, 0.0054016113, - 0.0051879883, 0.0050354004, 0.0049133301, 0.0049133301, 0.004699707, - 0.0045776367, 0.0043640137, 0.0040283203, 0.0033569336, - 0.0025024414, 0.0013122559, 6.1035156e-05, -0.0009765625, - -0.0021972656, -0.0028076172, -0.0036010742, -0.0038452148, - -0.0042419434, -0.004699707, -0.0052185059, -0.0058898926, - -0.0064697266, -0.0073242188, -0.0082397461, -0.0091552734, - -0.0096740723, -0.0099182129, -0.0096435547, -0.0091552734, - -0.0085449219, -0.0079040527, -0.0074768066, -0.0068969727, - -0.0066223145, -0.0062561035, -0.005859375, -0.0055236816, - -0.0049438477, -0.0045471191, -0.0039672852, -0.0035095215, - -0.0030822754, -0.002746582, -0.0026245117, -0.0025939941, - -0.002532959, -0.0024414062, -0.0020141602, -0.0015869141, - -0.001159668, -0.00067138672, -0.0002746582, 0.00021362305, - 0.00033569336, 0.00045776367, 0.00051879883, 0.00064086914, - 0.00079345703, 0.00088500977, 0.00094604492, 0.00082397461, - 0.00064086914, 0.00030517578, 0.00015258789, -0.00024414062, - -0.00061035156, -0.0011901855, -0.0016174316, -0.0020446777, - -0.0022888184, -0.0023803711, -0.0023803711, -0.0023803711, - -0.0023498535, -0.0022888184, -0.0020446777, -0.0018005371, - -0.0014343262, -0.0011901855, -0.00088500977, -0.00064086914, - -0.00045776367, -0.00039672852, -0.00033569336, -0.00015258789, 0, - 0.00030517578, 0.00054931641, 0.0010375977, 0.001373291, - 0.0016784668, 0.001953125, 0.0023193359, 0.0028381348, 0.0035095215, - 0.0043334961, 0.0049133301, 0.0056152344, 0.006072998, 0.0065917969, - 0.0068664551, 0.0072021484, 0.0073547363, 0.0074768066, - 0.0075378418, 0.0073547363, 0.0070800781, 0.0066223145, - 0.0062866211, 0.005859375, 0.0054321289, 0.0050048828, 0.0045776367, - 0.0043334961, 0.0039978027, 0.003692627, 0.0032958984, 0.0029602051, - 0.0024108887, 0.0019226074, 0.0014343262, 0.00088500977, - 0.00054931641, 0.00012207031, -0.00015258789, -0.00045776367, - -0.00067138672, -0.0009765625, -0.0012512207, -0.0015869141, - -0.001953125, -0.0022888184, -3.0517578e-05, -3.0517578e-05, - -3.0517578e-05, -3.0517578e-05, -3.0517578e-05, -3.0517578e-05, - -3.0517578e-05, -3.0517578e-05, -3.0517578e-05, -6.1035156e-05, - -3.0517578e-05, -6.1035156e-05, -3.0517578e-05, -6.1035156e-05, - -6.1035156e-05, -3.0517578e-05, -3.0517578e-05, -3.0517578e-05, - -3.0517578e-05, -3.0517578e-05, -3.0517578e-05, -3.0517578e-05, - -3.0517578e-05, -3.0517578e-05, -3.0517578e-05, -3.0517578e-05, - -3.0517578e-05, -3.0517578e-05, 0, - }; - -static const unsigned defaultClickEmphasisLength = sizeof(defaultClickEmphasis) / sizeof(*defaultClickEmphasis); - diff --git a/muse/muse/device.h b/muse/muse/device.h deleted file mode 100644 index 6ccf13cf..00000000 --- a/muse/muse/device.h +++ /dev/null @@ -1,56 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __DEVICE_H__ -#define __DEVICE_H__ - -//--------------------------------------------------------- -// Device -//--------------------------------------------------------- - -class Device { - - public: - enum DeviceType { MidiDevice, WaveDevice }; - - protected: - QString _name; - DeviceType _type; - int _port; - - public: - Device() {} - virtual ~Device() {} - Device(const QString& name, DeviceType t = MidiDevice) - : _name(name), _type(t) {} - - virtual QString open(int) = 0; - virtual void close() = 0; - - const QString& name() const { return _name; } - void setName(const QString& s) { _name = s; } - const DeviceType type() const { return _type; } - void setDeviceType(DeviceType t) { _type = t; } - int port() const { return _port; } - void setPort(int p) { _port = p; } - }; - -#endif - diff --git a/muse/muse/driver.h b/muse/muse/driver.h deleted file mode 100644 index c8bbfc7f..00000000 --- a/muse/muse/driver.h +++ /dev/null @@ -1,64 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __DRIVER_H__ -#define __DRIVER_H__ - -#include -#include "port.h" - -struct PortName { - Port port; - QString name; - }; - -class MidiEvent; - -//--------------------------------------------------------- -// Driver -// abstract driver base class; used for midi and -// audio -//--------------------------------------------------------- - -class Driver { - - public: - Driver() {} - virtual ~Driver() {} - virtual bool init() = 0; - - virtual QList outputPorts(bool midi) = 0; - virtual QList inputPorts(bool midi) = 0; - - virtual Port registerOutPort(const QString&, bool midi) = 0; - virtual Port registerInPort(const QString&, bool midi) = 0; - virtual void unregisterPort(Port) = 0; - virtual void setPortName(Port p, const QString&) = 0; - virtual QString portName(Port) = 0; - virtual Port findPort(const QString&) = 0; - - virtual bool connect(Port, Port) = 0; - virtual bool disconnect(Port, Port) = 0; - virtual void putEvent(Port, const MidiEvent&) = 0; - virtual void updateConnections() {} - }; - -#endif - diff --git a/muse/muse/dssihost.cpp b/muse/muse/dssihost.cpp deleted file mode 100644 index f72d4740..00000000 --- a/muse/muse/dssihost.cpp +++ /dev/null @@ -1,891 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "config.h" - -#ifdef DSSI_SUPPORT - -#include -#include -#include -#include - -#include "dssihost.h" -#include "synth.h" -#include "jackaudio.h" -#include "midi.h" -#include "al/al.h" -#include "al/xml.h" -#include "song.h" -#include "midictrl.h" -#include "ladspaplugin.h" - -static lo_server_thread serverThread; -static char osc_path_tmp[1024]; -static char* url; - -//--------------------------------------------------------- -// oscError -//--------------------------------------------------------- - -static void oscError(int num, const char *msg, const char *path) - { - fprintf(stderr, "MusE: liblo server error %d in path %s: %s\n", - num, path, msg); - } - -//--------------------------------------------------------- -// oscDebugHandler -//--------------------------------------------------------- - -static int oscDebugHandler(const char* path, const char* types, lo_arg** argv, - int argc, void*, void*) - { - printf("MusE: got unhandled OSC message:\n path: <%s>\n", path); - for (int i = 0; i < argc; i++) { - printf(" arg %d '%c' ", i, types[i]); - lo_arg_pp(lo_type(types[i]), argv[i]); - printf("\n"); - } - return 1; - } - -//--------------------------------------------------------- -// oscUpdate -//--------------------------------------------------------- - -int DssiSynthIF::oscUpdate(lo_arg **argv) - { - const char *url = (char *)&argv[0]->s; - - if (uiTarget) - lo_address_free(uiTarget); - char* host = lo_url_get_hostname(url); - char* port = lo_url_get_port(url); - uiTarget = lo_address_new(host, port); - free(host); - free(port); - - if (uiOscPath) - free(uiOscPath); - uiOscPath = lo_url_get_path(url); - int pl = strlen(uiOscPath); - - if (uiOscControlPath) - free(uiOscControlPath); - uiOscControlPath = (char *)malloc(pl + 10); - sprintf(uiOscControlPath, "%s/control", uiOscPath); - - if (uiOscConfigurePath) - free(uiOscConfigurePath); - uiOscConfigurePath = (char *)malloc(pl + 12); - sprintf(uiOscConfigurePath, "%s/configure", uiOscPath); - - if (uiOscProgramPath) - free(uiOscProgramPath); - uiOscProgramPath = (char *)malloc(pl + 10); - sprintf(uiOscProgramPath, "%s/program", uiOscPath); - - if (uiOscShowPath) - free(uiOscShowPath); - uiOscShowPath = (char *)malloc(pl + 10); - sprintf(uiOscShowPath, "%s/show", uiOscPath); - - /* At this point a more substantial host might also call - * configure() on the UI to set any state that it had remembered - * for the plugin instance. But we don't remember state for - * plugin instances (see our own configure() implementation in - * osc_configure_handler), and so we have nothing to send except - * the optional project directory. - */ - - lo_send(uiTarget, uiOscConfigurePath, "ss", - DSSI_PROJECT_DIRECTORY_KEY, song->projectPath().toAscii().data()); - -#if 0 - /* Send current bank/program (-FIX- another race...) */ - if (instance->pendingProgramChange < 0) { - unsigned long bank = instance->currentBank; - unsigned long program = instance->currentProgram; - instance->uiNeedsProgramUpdate = 0; - if (instance->uiTarget) { - lo_send(instance->uiTarget, instance->ui_osc_program_path, "ii", bank, program); - } - } - - /* Send control ports */ - for (i = 0; i < instance->plugin->controlIns; i++) { - int in = i + instance->firstControlIn; - int port = pluginControlInPortNumbers[in]; - lo_send(instance->uiTarget, instance->ui_osc_control_path, "if", port, - pluginControlIns[in]); - /* Avoid overloading the GUI if there are lots and lots of ports */ - if ((i+1) % 50 == 0) - usleep(300000); - } -#endif - return 0; - } - -//--------------------------------------------------------- -// oscMessageHandler -//--------------------------------------------------------- - -int oscMessageHandler(const char* path, const char* types, lo_arg** argv, - int argc, void* data, void* user_data) - { - const char* p = path; - if (strncmp(p, "/dssi/", 6)) - return oscDebugHandler(path, types, argv, argc, data, user_data); - - p += 6; - - SynthIList* sl = song->syntis(); - DssiSynthIF* instance = 0; - SynthI* synti = 0; - - for (iSynthI si = sl->begin(); si != sl->end(); ++si) { - int l = strlen((*si)->name().toAscii().data()); - if (!strncmp(p, (*si)->name().toAscii().data(), l)) { - synti = *si; - instance = (DssiSynthIF*)(synti->sif()); - p += l; - break; - } - } - if (!instance) - return oscDebugHandler(path, types, argv, argc, data, user_data); - - if (*p != '/' || *(p + 1) == 0) - return oscDebugHandler(path, types, argv, argc, data, user_data); - ++p; - - if (!strcmp(p, "configure") && argc == 2 && !strcmp(types, "ss")) - return instance->oscConfigure(argv); - else if (!strcmp(p, "control") && argc == 2 && !strcmp(types, "if")) - return instance->oscControl(argv); - else if (!strcmp(p, "midi") && argc == 1 && !strcmp(types, "m")) - return instance->oscMidi(argv); - else if (!strcmp(p, "program") && argc == 2 && !strcmp(types, "ii")) - return instance->oscProgram(argv); - else if (!strcmp(p, "update") && argc == 1 && !strcmp(types, "s")) - return instance->oscUpdate(argv); - else if (!strcmp(p, "exiting") && argc == 0) - return instance->oscExiting(argv); - return oscDebugHandler(path, types, argv, argc, data, user_data); - } - -//--------------------------------------------------------- -// scanDSSILib -//--------------------------------------------------------- - -static void scanDSSILib(const QFileInfo& fi) - { - void* handle = dlopen(fi.filePath().toAscii().data(), RTLD_NOW); - if (handle == 0) { - fprintf(stderr, "dlopen(%s) failed: %s\n", - fi.filePath().toAscii().data(), dlerror()); - return; - } - DSSI_Descriptor_Function dssi = (DSSI_Descriptor_Function)dlsym(handle, "dssi_descriptor"); - - if (!dssi) { - const char *txt = dlerror(); - if (txt) { - fprintf(stderr, - "Unable to find dssi_descriptor() function in plugin " - "library file \"%s\": %s.\n" - "Are you sure this is a DSSI plugin file?\n", - fi.filePath().toAscii().data(), - txt); - exit(1); - } - } - const DSSI_Descriptor* descr; - for (int i = 0;; ++i) { - descr = dssi(i); - if (descr == 0) - break; - QString label(descr->LADSPA_Plugin->Label); - DssiSynth* s = new DssiSynth(&fi, label); - synthis.push_back(s); - } - dlclose(handle); - } - -//--------------------------------------------------------- -// scanVstDir -//--------------------------------------------------------- - -static void scanDSSIDir(const QString& s) - { - if (debugMsg) - printf("scan DSSI plugin dir <%s>\n", s.toAscii().data()); - -#ifdef __APPLE__ - QDir pluginDir(s, QString("*.dylib"), QDir::Unsorted, QDir::Files); -#else - QDir pluginDir(s, QString("*.so"), QDir::Unsorted, QDir::Files); -#endif - if (!pluginDir.exists()) - return; - - const QFileInfoList list = pluginDir.entryInfoList(); - for (int i = 0; i < list.size(); ++i) { - QFileInfo fi = list.at(i); - scanDSSILib(fi); - } - } - -//--------------------------------------------------------- -// initDSSI -//--------------------------------------------------------- - -void initDSSI() - { - const char* dssiPath = getenv("DSSI_PATH"); - if (dssiPath == 0) - dssiPath = "/usr/lib/dssi:/usr/local/lib/dssi"; - - const char* p = dssiPath; - while (*p != '\0') { - const char* pe = p; - while (*pe != ':' && *pe != '\0') - pe++; - - int n = pe - p; - if (n) { - char* buffer = new char[n + 1]; - strncpy(buffer, p, n); - buffer[n] = '\0'; - scanDSSIDir(QString(buffer)); - delete[] buffer; - } - p = pe; - if (*p == ':') - p++; - } - // Create OSC thread - - serverThread = lo_server_thread_new(0, oscError); - snprintf(osc_path_tmp, 31, "/dssi"); - char* tmp = lo_server_thread_get_url(serverThread); - url = (char *)malloc(strlen(tmp) + strlen(osc_path_tmp)); - sprintf(url, "%s%s", tmp, osc_path_tmp + 1); - free(tmp); - - lo_server_thread_add_method(serverThread, 0, 0, oscMessageHandler, 0); - lo_server_thread_start(serverThread); - } - -//--------------------------------------------------------- -// guiVisible -//--------------------------------------------------------- - -bool DssiSynthIF::guiVisible() const - { - return _guiVisible; - } - -//--------------------------------------------------------- -// showGui -//--------------------------------------------------------- - -void DssiSynthIF::showGui(bool v) - { - if (v == guiVisible()) - return; - for (int i = 0; i < 5; ++i) { - if (uiOscPath) - break; - sleep(1); - } - if (uiOscPath == 0) { - printf("DssiSynthIF::showGui(): no uiOscPath\n"); - return; - } - char uiOscGuiPath[strlen(uiOscPath)+6]; - sprintf(uiOscGuiPath, "%s/%s", uiOscPath, v ? "show" : "hide"); - lo_send(uiTarget, uiOscGuiPath, ""); - _guiVisible = v; - } - -//--------------------------------------------------------- -// receiveEvent -//--------------------------------------------------------- - -MidiEvent DssiSynthIF::receiveEvent() - { - return MidiEvent(); - } - -//--------------------------------------------------------- -// init -//--------------------------------------------------------- - -bool DssiSynthIF::init(DssiSynth* s) - { - synth = s; - const DSSI_Descriptor* dssi = synth->dssi; - const LADSPA_Descriptor* ld = dssi->LADSPA_Plugin; - handle = ld->instantiate(ld, AL::sampleRate); - - queryPrograms(); - - int controlPorts = synth->_controller; - controls = new LadspaPort[controlPorts]; - - for (int k = 0; k < controlPorts; ++k) { - int i = synth->pIdx[k]; - controls[k].val = ladspaDefaultValue(ld, i); - ld->connect_port(handle, i, &controls[k].val); - } - - if (ld->activate) - ld->activate(handle); - - if (dssi->configure) { - char *rv = dssi->configure(handle, DSSI_PROJECT_DIRECTORY_KEY, - song->projectPath().toAscii().data()); - if (rv) - fprintf(stderr, "MusE: Warning: plugin doesn't like project directory: \"%s\"\n", rv); - } - return true; - } - -//--------------------------------------------------------- -// DssiSynthIF -//--------------------------------------------------------- - -DssiSynthIF::DssiSynthIF(SynthI* s) - : SynthIF(s) - { - _guiVisible = false; - uiTarget = 0; - uiOscShowPath = 0; - uiOscControlPath = 0; - uiOscConfigurePath = 0; - uiOscProgramPath = 0; - uiOscPath = 0; - guiPid = -1; - } - -//--------------------------------------------------------- -// ~DssiSynthIF -//--------------------------------------------------------- - -DssiSynthIF::~DssiSynthIF() - { - const DSSI_Descriptor* dssi = synth->dssi; - const LADSPA_Descriptor* descr = dssi->LADSPA_Plugin; - - if (descr->cleanup) - descr->cleanup(handle); - if (guiPid != -1) - kill(guiPid, SIGHUP); - } - -//--------------------------------------------------------- -// setParameter -//--------------------------------------------------------- - -void DssiSynthIF::setParameter(int, float) - { - } - -//--------------------------------------------------------- -// write -//--------------------------------------------------------- - -void DssiSynthIF::write(Xml&) const - { - } - -//--------------------------------------------------------- -// getData -//--------------------------------------------------------- - -void DssiSynthIF::getData(MidiEventList* el, unsigned pos, int ch, unsigned samples, float** data) - { - const DSSI_Descriptor* dssi = synth->dssi; - const LADSPA_Descriptor* descr = dssi->LADSPA_Plugin; - - unsigned long nevents = el->size(); - - while (!synti->putFifo.isEmpty()) { - MidiEvent event = synti->putFifo.get(); - printf("Dssi: FIFO\n"); - } - - snd_seq_event_t events[nevents]; - memset(events, 0, sizeof(events)); - - nevents = 0; - unsigned endPos = pos + samples; - iMidiEvent i = el->begin(); - for (; i != el->end(); ++i, ++nevents) { - if (i->time() >= endPos) - break; - MidiEvent e = *i; - - int chn = e.channel(); - int a = e.dataA(); - int b = e.dataB(); - //for sysex - QByteArray ba = QByteArray((const char*)e.data(), e.len()); - //we must had 0xF0 at the beginning and 0xF7 at the end of e.data() - ba.push_front(0xF0); - ba.push_back(0xF7); - int len = e.len() + 2; - - - snd_seq_event_t* event = &events[nevents]; - event->queue = SND_SEQ_QUEUE_DIRECT; - - switch(e.type()) { - case ME_NOTEON: - if (b) - snd_seq_ev_set_noteon(event, chn, a, b); - else - snd_seq_ev_set_noteoff(event, chn, a, 0); - break; - case ME_NOTEOFF: - snd_seq_ev_set_noteoff(event, chn, a, 0); - break; - case ME_CONTROLLER: - if (a == CTRL_PROGRAM) { - int bank = b >> 8; - int prog = b & 0xff; - if (dssi->select_program) - dssi->select_program(handle, bank, prog); - break; - } - snd_seq_ev_set_controller(event, chn, a, b); - break; - case ME_PITCHBEND: - snd_seq_ev_set_pitchbend(event, chn, a); - break; - case ME_AFTERTOUCH: - snd_seq_ev_set_chanpress(event, chn, a); - break; - case ME_SYSEX: - snd_seq_ev_set_sysex(event, len, - (unsigned char*)ba.data()); - break; - default: - --nevents; - break; - } - } - el->erase(el->begin(), i); - for (int k = 0; k < ch; ++k) - descr->connect_port(handle, synth->oIdx[k], data[k]); - - if (synth->dssi->run_synth) - synth->dssi->run_synth(handle, samples, events, nevents); - else if (synth->dssi->run_multiple_synths) { - snd_seq_event_t* ev = events; - synth->dssi->run_multiple_synths(1, &handle, samples, &ev, &nevents); - } - } - -//--------------------------------------------------------- -// putEvent -//--------------------------------------------------------- - -bool DssiSynthIF::putEvent(const MidiEvent& ev) - { - if (midiOutputTrace) - ev.dump(); - return false; - } - -//--------------------------------------------------------- -// incInstances -//--------------------------------------------------------- - -void DssiSynth::incInstances(int val) - { - _instances += val; - if (_instances == 0) { - if (handle) - dlclose(handle); - dssi = 0; - df = 0; - } - } - -//--------------------------------------------------------- -// createSIF -//--------------------------------------------------------- - -SynthIF* DssiSynth::createSIF(SynthI* synti) - { - if (_instances == 0) { - handle = dlopen(info.filePath().toAscii().data(), RTLD_NOW); - if (handle == 0) { - fprintf(stderr, "dlopen(%s) failed: %s\n", - info.filePath().toAscii().data(), dlerror()); - return 0; - } - df = (DSSI_Descriptor_Function)dlsym(handle, "dssi_descriptor"); - - if (!df) { - const char *txt = dlerror(); - fprintf(stderr, - "Unable to find dssi_descriptor() function in plugin " - "library file \"%s\": %s.\n" - "Are you sure this is a DSSI plugin file?\n", - info.filePath().toAscii().data(), - txt ? txt : "?"); - dlclose(handle); - handle = 0; - return 0; - } - for (int i = 0;; ++i) { - dssi = df(i); - if (dssi == 0) - break; - QString label(dssi->LADSPA_Plugin->Label); - if (label == _name) - break; - } - - _inports = 0; - _outports = 0; - _controller = 0; - const LADSPA_Descriptor* d = dssi->LADSPA_Plugin; - for (unsigned k = 0; k < d->PortCount; ++k) { - LADSPA_PortDescriptor pd = d->PortDescriptors[k]; - if (LADSPA_IS_PORT_AUDIO(pd)) { - if (LADSPA_IS_PORT_INPUT(pd)) { - ++_inports; - iIdx.push_back(k); - } - else if (LADSPA_IS_PORT_OUTPUT(pd)) { - ++_outports; - oIdx.push_back(k); - } - } - else if (LADSPA_IS_PORT_CONTROL(pd)) { - if (LADSPA_IS_PORT_INPUT(pd)) { - ++_controller; - pIdx.push_back(k); - } - else { - // ?? - } - } - } - } - if (dssi == 0) { - fprintf(stderr, "cannot found DSSI synti %s\n", _name.toAscii().data()); - dlclose(handle); - handle = 0; - df = 0; - return 0; - } - DssiSynthIF* sif = new DssiSynthIF(synti); - ++_instances; - sif->init(this); - - // - // start gui - // - static char oscUrl[1024]; - snprintf(oscUrl, 1024, "%s/%s", url, synti->name().toAscii().data()); - - QString guiPath(info.path() + "/" + info.baseName()); - QDir guiDir(guiPath, "*", QDir::Unsorted, QDir::Files); - if (guiDir.exists()) { - const QFileInfoList list = guiDir.entryInfoList(); - for (int i = 0; i < list.size(); ++i) { - QFileInfo fi = list.at(i); - QString gui(fi.filePath()); - if (gui.contains('_') == 0) - continue; - struct stat buf; - if (stat(gui.toAscii().data(), &buf)) { - perror("stat failed"); - continue; - } - - if ((S_ISREG(buf.st_mode) || S_ISLNK(buf.st_mode)) && - (buf.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) { - if ((sif->guiPid = fork()) == 0) { - execlp( - fi.filePath().toAscii().data(), - fi.fileName().toAscii().data(), - oscUrl, - info.filePath().toAscii().data(), - name().toAscii().data(), - "channel 1", (void*)0); - fprintf(stderr, "exec %s %s %s %s failed: %s\n", - fi.filePath().toAscii().data(), - fi.fileName().toAscii().data(), - oscUrl, - name().toAscii().data(), - strerror(errno)); - exit(1); - } - } - } - _hasGui = true; - } - else { - printf("%s: no dir for dssi gui found: %s\n", - name().toAscii().data(), guiPath.toAscii().data()); - _hasGui = false; - } - return sif; - } - -//--------------------------------------------------------- -// oscProgram -//--------------------------------------------------------- - -int DssiSynthIF::oscProgram(lo_arg** argv) - { - int bank = argv[0]->i; - int program = argv[1]->i; - int ch = 0; // TODO: ?? - MidiEvent event(0, ch, ME_CONTROLLER, CTRL_PROGRAM, (bank << 8) + program); - synti->playMidiEvent(&event); - return 0; - } - -//--------------------------------------------------------- -// oscControl -//--------------------------------------------------------- - -int DssiSynthIF::oscControl(lo_arg**) - { -printf("received oscControl\n"); -#if 0 - int port = argv[0]->i; - LADSPA_Data value = argv[1]->f; - - if (port < 0 || port > instance->plugin->descriptor->LADSPA_Plugin->PortCount) { - fprintf(stderr, "MusE: OSC: %s port number (%d) is out of range\n", - instance->friendly_name, port); - return 0; - } - if (instance->pluginPortControlInNumbers[port] == -1) { - fprintf(stderr, "MusE: OSC: %s port %d is not a control in\n", - instance->friendly_name, port); - return 0; - } - pluginControlIns[instance->pluginPortControlInNumbers[port]] = value; - if (verbose) { - printf("MusE: OSC: %s port %d = %f\n", - instance->friendly_name, port, value); - } -#endif - return 0; - } - -//--------------------------------------------------------- -// oscExiting -//--------------------------------------------------------- - -int DssiSynthIF::oscExiting(lo_arg**) - { - printf("not impl.: oscExiting\n"); -#if 0 - int i; - - if (verbose) { - printf("MusE: OSC: got exiting notification for instance %d\n", - instance->number); - } - - if (instance->plugin) { - - /*!!! No, this isn't safe -- plugins deactivated in this way - would still be included in a run_multiple_synths call unless - we re-jigged the instance array at the same time -- leave it - for now - if (instance->plugin->descriptor->LADSPA_Plugin->deactivate) { - instance->plugin->descriptor->LADSPA_Plugin->deactivate - (instanceHandles[instance->number]); - } - */ - /* Leave this flag though, as we need it to determine when to exit */ - instance->inactive = 1; - } - - /* Do we have any plugins left running? */ - - for (i = 0; i < instance_count; ++i) { - if (!instances[i].inactive) - return 0; - } - - if (verbose) { - printf("MusE: That was the last remaining plugin, exiting...\n"); - } - exiting = 1; -#endif - return 0; - } - -//--------------------------------------------------------- -// oscMidi -//--------------------------------------------------------- - -int DssiSynthIF::oscMidi(lo_arg** argv) - { - int a = argv[0]->m[1]; - int b = argv[0]->m[2]; - int c = argv[0]->m[3]; - if (a == ME_NOTEOFF) { - a = ME_NOTEON; - c = 0; - } - int channel = 0; - MidiEvent event(0, channel, a, b, c); - synti->playMidiEvent(&event); - return 0; - } - -//--------------------------------------------------------- -// oscConfigure -//--------------------------------------------------------- - -int DssiSynthIF::oscConfigure(lo_arg** argv) - { - if (!synth->dssi->configure) - return 0; - - const char *key = (const char *)&argv[0]->s; - const char *value = (const char *)&argv[1]->s; - - /* This is pretty much the simplest legal implementation of - * configure in a DSSI host. */ - - /* The host has the option to remember the set of (key,value) - * pairs associated with a particular instance, so that if it - * wants to restore the "same" instance on another occasion it can - * just call configure() on it for each of those pairs and so - * restore state without any input from a GUI. Any real-world GUI - * host will probably want to do that. This host doesn't have any - * concept of restoring an instance from one run to the next, so - * we don't bother remembering these at all. */ - - if (!strncmp(key, DSSI_RESERVED_CONFIGURE_PREFIX, - strlen(DSSI_RESERVED_CONFIGURE_PREFIX))) { - fprintf(stderr, "MusE: OSC: UI for plugin '%s' attempted to use reserved configure key \"%s\", ignoring\n", - synti->name().toAscii().data(), key); - return 0; - } - - char* message = synth->dssi->configure(handle, key, value); - if (message) { - printf("MusE: on configure '%s' '%s', plugin '%s' returned error '%s'\n", - key, value, synti->name().toAscii().data(), message); - free(message); - } - - // also call back on UIs for plugins other than the one - // that requested this: - // if (n != instance->number && instances[n].uiTarget) { - // lo_send(instances[n].uiTarget, - // instances[n].ui_osc_configure_path, "ss", key, value); - // } - - /* configure invalidates bank and program information, so - we should do this again now: */ - queryPrograms(); - return 0; - } - -//--------------------------------------------------------- -// queryPrograms -//--------------------------------------------------------- - -void DssiSynthIF::queryPrograms() - { - for (std::vector::const_iterator i = programs.begin(); - i != programs.end(); ++i) { - free((void*)(i->Name)); - } - programs.clear(); - - if (!(synth->dssi->get_program && synth->dssi->select_program)) - return; - - for (int i = 0;; ++i) { - const DSSI_Program_Descriptor* pd = synth->dssi->get_program(handle, i); - if (pd == 0) - break; - DSSI_Program_Descriptor d; - d.Name = strdup(pd->Name); - d.Program = pd->Program; - d.Bank = pd->Bank; - programs.push_back(d); - } - } - -//--------------------------------------------------------- -// getPatchName -//--------------------------------------------------------- - -QString DssiSynthIF::getPatchName(int, int prog) - { - unsigned program = prog & 0x7f; - int lbank = (prog >> 8) & 0xff; - int hbank = (prog >> 16) & 0xff; - - if (lbank == 0xff) - lbank = 0; - if (hbank == 0xff) - hbank = 0; - unsigned bank = (hbank << 8) + lbank; - - for (std::vector::const_iterator i = programs.begin(); - i != programs.end(); ++i) { - if (i->Bank == bank && i->Program ==program) - return i->Name; - } - return "?"; - } - -//--------------------------------------------------------- -// populatePatchPopup -//--------------------------------------------------------- - -void DssiSynthIF::populatePatchPopup(QMenu* menu, int) - { - menu->clear(); - - for (std::vector::const_iterator i = programs.begin(); - i != programs.end(); ++i) { - int bank = i->Bank; - int prog = i->Program; - int id = (bank << 16) + prog; - QAction* a = menu->addAction(QString(i->Name)); - a->setData(id); - } - } - -#else -void initDSSI() {} -#endif - diff --git a/muse/muse/dssihost.h b/muse/muse/dssihost.h deleted file mode 100644 index 0ec251ac..00000000 --- a/muse/muse/dssihost.h +++ /dev/null @@ -1,121 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __DSSIHOST_H__ -#define __DSSIHOST_H__ - -#include -#include "synth.h" -#include "plugin.h" - -struct _DSSI; -class DssiPluginIF; -class LadspaPort; - -//--------------------------------------------------------- -// DssiSynth -//--------------------------------------------------------- - -class DssiSynth : public Synth { - protected: - char* label; - void* handle; - const DSSI_Descriptor* dssi; - DSSI_Descriptor_Function df; - std::vector pIdx; - std::vector iIdx; - std::vector oIdx; - int _inports, _outports, _controller; - bool _hasGui; - - public: - DssiSynth(const QFileInfo* fi, QString l) : Synth(fi, l) { - df = 0; - handle = 0; - dssi = 0; - _hasGui = false; - } - virtual ~DssiSynth() { - delete label; - } - virtual void incInstances(int val); - virtual SynthIF* createSIF(SynthI*); - friend class DssiSynthIF; - float defaultValue(int); - }; - -//--------------------------------------------------------- -// DssiSynthIF -// VSTi synthesizer instance -//--------------------------------------------------------- - -class DssiSynthIF : public SynthIF - { - bool _guiVisible; - DssiSynth* synth; - LADSPA_Handle handle; - LadspaPort* controls; - void* uiTarget; - char* uiOscShowPath; - char* uiOscControlPath; - char* uiOscConfigurePath; - char* uiOscProgramPath; - char* uiOscPath; - - std::vector programs; - void queryPrograms(); - - protected: - int guiPid; - - public: - DssiSynthIF(SynthI* s); - virtual ~DssiSynthIF(); - - virtual bool guiVisible() const; - virtual void showGui(bool v); - virtual bool hasGui() const { return synth->_hasGui; } - virtual void getGeometry(int*, int*, int*, int*) const {} - virtual void setGeometry(int, int, int, int) {} - virtual void getData(MidiEventList*, unsigned pos, int ports, unsigned n, float** buffer) ; - virtual bool putEvent(const MidiEvent& ev); - virtual MidiEvent receiveEvent(); - virtual int eventsPending() const { return 0; } - virtual int channels() const { return synth->_outports; } - virtual void deactivate3() {} - virtual QString getPatchName(int, int); - virtual void populatePatchPopup(QMenu*, int); - virtual void write(Xml& xml) const; - virtual void setParameter(int idx, float value); - virtual int getControllerInfo(int, const char**, int*, int*, int*) { return 0; } - bool init(DssiSynth* s); - - int oscUpdate(lo_arg**); - int oscProgram(lo_arg**); - int oscControl(lo_arg**); - int oscExiting(lo_arg**); - int oscMidi(lo_arg**); - int oscConfigure(lo_arg**); - - friend class DssiSynth; - }; - -#endif - diff --git a/muse/muse/dummyaudio.cpp b/muse/muse/dummyaudio.cpp deleted file mode 100644 index b4bc73ff..00000000 --- a/muse/muse/dummyaudio.cpp +++ /dev/null @@ -1,294 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "al/al.h" -#include "widgets/utils.h" -#include "audio.h" -#include "audiodev.h" -#include "globals.h" -#include "song.h" - -static const unsigned dummyFrames = 1024; -static double startTime; - -//--------------------------------------------------------- -// DummyAudio -//--------------------------------------------------------- - -class DummyAudio : public AudioDriver { - float* buffer; - pthread_t dummyThread; - std::vector oPorts; - std::vector iPorts; - int realTimePriority; - - public: - int state; - bool seekflag; - unsigned pos; - - DummyAudio() { - state = Audio::STOP; - seekflag = false; - startTime = curTime(); - posix_memalign((void**)&buffer, 16, sizeof(float) * dummyFrames); - } - virtual ~DummyAudio() { - free(buffer); - } - - virtual bool init() { return true; } - virtual void start(int); - virtual void stop (); - virtual unsigned frameTime() const { - return lrint(curTime() * AL::sampleRate); - } - virtual unsigned lastFrameTime() const { - return lrint(startTime * AL::sampleRate); - } - virtual unsigned curFrame() const { return pos; } - - virtual float* getBuffer(Port /*port*/, unsigned long nframes) - { - if (nframes > dummyFrames) { - fprintf(stderr, "error: segment size > %d\n", dummyFrames); - exit(-1); - } - memset(buffer, 0, nframes * sizeof(float)); - return buffer; - } - - virtual QList outputPorts(bool midi = false); - virtual QList inputPorts(bool midi = false); - - virtual void registerClient() {} - - virtual Port registerOutPort(const QString& s, bool) { - iPorts.push_back(QString(s)); - Port port(0, iPorts.size() + 3000); - return port; - } - virtual Port registerInPort(const QString& s, bool) { - oPorts.push_back(QString(s)); - Port port(0, oPorts.size() + 40); - return port; - } - virtual void unregisterPort(Port) { -/* if (long(p) >= 100) - oPorts.erase(oPorts.begin() + (long(p)-40)); - else - iPorts.erase(iPorts.begin() + long(p)-30); -*/ - } - virtual bool connect(Port, Port) { return true; } - virtual bool disconnect(Port, Port) { return true; } - virtual void setPortName(Port, const QString&) {} - virtual Port findPort(const QString& s) { - if (s == "input1") - return Port(0, 10); - if (s == "input2") - return Port(0, 11); - if (s == "output1") - return Port(0, 20); - if (s == "output2") - return Port(0, 21); - int k = 0; - for (std::vector::const_iterator i = iPorts.begin(); i != iPorts.end(); ++i, ++k) { - if (s == *i) - return Port(0, 30+k); - } - k = 0; - for (std::vector::const_iterator i = oPorts.begin(); i != oPorts.end(); ++i, ++k) { - if (s == *i) - return Port(0, 40); - } - return Port(); - } - virtual QString portName(Port port) { - if (port.alsaPort() == 10) - return QString("input1"); - if (port.alsaPort() == 11) - return QString("input2"); - if (port.alsaPort() == 20) - return QString("output1"); - if (port.alsaPort() == 21) - return QString("output2"); - if (port.alsaPort() >= 40) - return QString(oPorts[port.alsaPort() - 40]); - else - return QString(iPorts[port.alsaPort() - 30]); - } - virtual int realtimePriority() const { return 40; } - virtual void startTransport() { - state = Audio::PLAY; - } - virtual void stopTransport() { - state = Audio::STOP; - } - virtual void seekTransport(unsigned n) { - seekflag = true; - pos = n; - } - virtual void setFreewheel(bool) {} - virtual void putEvent(Port, const MidiEvent&) {} - }; - -DummyAudio* dummyAudio; - -//--------------------------------------------------------- -// initDummyAudio -//--------------------------------------------------------- - -bool initDummyAudio() - { - dummyAudio = new DummyAudio(); - audioDriver = dummyAudio; - return false; - } - -//--------------------------------------------------------- -// outputPorts -//--------------------------------------------------------- - -QList DummyAudio::outputPorts(bool midi) - { - QList clientList; - if (!midi) { - PortName p1; - p1.name = QString("output1"); - p1.port = Port(0, 100); - PortName p2; - p2.name = QString("output2"); - p2.port = Port(0, 101); - clientList.append(p1); - clientList.append(p2); - } - return clientList; - } - -//--------------------------------------------------------- -// inputPorts -//--------------------------------------------------------- - -QList DummyAudio::inputPorts(bool midi) - { - QList clientList; - if (!midi) { - PortName p1; - p1.name = QString("input1"); - p1.port = Port(0, 0); - PortName p2; - p2.name = QString("input2"); - p2.port = Port(0, 1); - clientList.append(p1); - clientList.append(p2); - } - return clientList; - } - -//--------------------------------------------------------- -// dummyLoop -//--------------------------------------------------------- - -static void* dummyLoop(void*) - { -#ifndef __APPLE__ - if (realTimePriority) { - // - // check if we really got realtime priviledges - // - int policy; - if ((policy = sched_getscheduler (0)) < 0) { - printf("cannot get current client scheduler for audio dummy thread: %s!\n", strerror(errno)); - } - else - { - if (policy != SCHED_FIFO) - printf("audio dummy thread _NOT_ running SCHED_FIFO\n"); - else if (debugMsg) { - struct sched_param rt_param; - memset(&rt_param, 0, sizeof(sched_param)); - int type; - int rv = pthread_getschedparam(pthread_self(), &type, &rt_param); - if (rv == -1) - perror("get scheduler parameter"); - printf("audio dummy thread running SCHED_FIFO priority %d\n", - rt_param.sched_priority); - } - } - } -#endif - - for (;;) { - if (audioState == AUDIO_RUNNING) - audio->process(segmentSize, dummyAudio->state); - else if (audioState == AUDIO_START1) - audioState = AUDIO_START2; - usleep(dummyFrames*1000000/AL::sampleRate); - if (dummyAudio->seekflag) { - audio->sync(Audio::STOP, dummyAudio->pos); - dummyAudio->seekflag = false; - } - if (dummyAudio->state == Audio::PLAY) { - dummyAudio->pos += dummyFrames; - } - } - pthread_exit(0); - } - -//--------------------------------------------------------- -// start -//--------------------------------------------------------- - -void DummyAudio::start(int priority) - { - realTimePriority = priority; - pthread_attr_t* attributes = 0; - - if (priority) { - attributes = (pthread_attr_t*) malloc(sizeof(pthread_attr_t)); - pthread_attr_init(attributes); - - if (pthread_attr_setschedpolicy(attributes, SCHED_FIFO)) { - printf("cannot set FIFO scheduling class for RT thread\n"); - } - if (pthread_attr_setscope (attributes, PTHREAD_SCOPE_SYSTEM)) { - printf("Cannot set scheduling scope for RT thread\n"); - } - struct sched_param rt_param; - memset(&rt_param, 0, sizeof(rt_param)); - rt_param.sched_priority = priority; - if (pthread_attr_setschedparam (attributes, &rt_param)) { - printf("Cannot set scheduling priority %d for RT thread (%s)\n", - priority, strerror(errno)); - } - } - if (pthread_create(&dummyThread, attributes, ::dummyLoop, this)) - perror("creating thread failed:"); - if (priority) - pthread_attr_destroy(attributes); - } - -void DummyAudio::stop () - { - pthread_cancel(dummyThread); - pthread_join(dummyThread, 0); - } - diff --git a/muse/muse/editor.cpp b/muse/muse/editor.cpp deleted file mode 100644 index a37e1baa..00000000 --- a/muse/muse/editor.cpp +++ /dev/null @@ -1,38 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "editor.h" - -//--------------------------------------------------------- -// Editor -//--------------------------------------------------------- - -Editor::Editor() - { - tcanvas = 0; - } - -//--------------------------------------------------------- -// MidiEditor -//--------------------------------------------------------- - -Editor::~Editor() - { - } diff --git a/muse/muse/editor.h b/muse/muse/editor.h deleted file mode 100644 index 7de2d9e4..00000000 --- a/muse/muse/editor.h +++ /dev/null @@ -1,44 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __EDITOR_H__ -#define __EDITOR_H__ - -#include "cobject.h" - -class TimeCanvas; - -//--------------------------------------------------------- -// Editor -//--------------------------------------------------------- - -class Editor : public TopWin { - Q_OBJECT - - protected: - TimeCanvas* tcanvas; - - public: - Editor(); - virtual ~Editor(); - }; - -#endif - diff --git a/muse/muse/esettings.cpp b/muse/muse/esettings.cpp deleted file mode 100644 index 7d3886f0..00000000 --- a/muse/muse/esettings.cpp +++ /dev/null @@ -1,773 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2004 Mathias Lundgren -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "esettings.h" -#include "al/xml.h" -#include "midieditor.h" //only for debug prints - -//--------------------------------------------------------- -// readStatus -//--------------------------------------------------------- - -void CtrlEditSettings::readStatus(QDomNode node) - { - while (!node.isNull()) { - QDomElement e = node.toElement(); - QString tag = e.tagName(); - QString s = e.text(); - int i = s.toInt(); - if (tag == "controller") - controller = i; - else if (tag == "height") - height = i; - else - printf("MusE:CtrlEditSettings: unknown tag: %s\n", e.tagName().toAscii().data()); - node = node.nextSibling(); - } - } - -//--------------------------------------------------------- -// writeStatus -//--------------------------------------------------------- - -void CtrlEditSettings::writeStatus(Xml& xml) - { - xml.tag("ctrleditsettings"); - xml.intTag("height", height); - xml.intTag("controller", controller); - xml.etag("ctrleditsettings"); - } - -//--------------------------------------------------------- -// readStatus -//--------------------------------------------------------- - -void EditorSettings::readStatus(QDomNode node) - { - while (!node.isNull()) { - QDomElement e = node.toElement(); - QString tag = e.tagName(); - QString s = e.text(); - int i = s.toInt(); - if (tag == "width") - _width = i; - else if (tag == "height") - _height = i; - else if (tag == "x") - _x = i; - else if (tag == "y") - _y = i; - else if (tag == "raster") - _raster = i; - else - printf("MusE:EditorSettings: unknown tag %s\n", e.tagName().toAscii().data()); - node = node.nextSibling(); - } - } - -//--------------------------------------------------------- -// writeStatus -//--------------------------------------------------------- - -void EditorSettings::writeStatus(Xml& xml) const - { - xml.tag("editorsettings"); - xml.intTag("width", _width); - xml.intTag("height", _height); - xml.intTag("x", _x); - xml.intTag("y", _y); - xml.intTag("raster", _raster); - xml.etag("editorsettings"); - } - -//--------------------------------------------------------- -// readStatus -//--------------------------------------------------------- - -void GraphEditorSettings::readStatus(QDomNode node) - { - while (!node.isNull()) { - QDomElement e = node.toElement(); - QString tag = e.tagName(); - QString s = e.text(); - int i = s.toInt(); - if (tag == "editorsettings") { - EditorSettings::readStatus(node.firstChild()); - } - else if (tag == "xmag") - _xmag = s.toDouble(); - else if (tag == "ymag") - _ymag = s.toDouble(); - else if (tag == "xpos") - _pos.setX(i); - else if (tag == "ypos") - _pos.setY(i); - else - printf("MusE:GraphEditorSettings: unknown tag %s\n", e.tagName().toAscii().data()); - node = node.nextSibling(); - } - } - -//--------------------------------------------------------- -// writeStatus -//--------------------------------------------------------- - -void GraphEditorSettings::writeStatus(Xml& xml) const - { - xml.tag("grapheditorsettings"); - EditorSettings::writeStatus(xml); - xml.doubleTag("xmag", _xmag); - xml.doubleTag("ymag", _ymag); - xml.intTag("xpos", _pos.x()); - xml.intTag("ypos", _pos.y()); - xml.etag("grapheditorsettings"); - } - -bool ExtEditorSettings::_steprec = false; -bool ExtEditorSettings::_midiin = false; - - -//--------------------------------------------------------- -// ExtEditorSettings constructor -//--------------------------------------------------------- - -ExtEditorSettings::ExtEditorSettings(int r, int w, int h, int x, int y, double xm, double ym, QPoint pos, int q, int apply) - : GraphEditorSettings(r, w, h, x, y, xm, ym, pos), _quant(q), _applyTo(apply) - { - for (int i=0; ictrlEdits[i]) - delete ctrlEdits[i]; - } - } - -//--------------------------------------------------------- -// setControlEditSettings -//--------------------------------------------------------- - -void ExtEditorSettings::setControlEditSettings(int pos, CtrlEditSettings* c) - { - if (ctrlEdits[pos]) - delete ctrlEdits[pos]; - - ctrlEdits[pos] = c; - } -//--------------------------------------------------------- -// clone -//--------------------------------------------------------- - -EditorSettings* ExtEditorSettings::clone() - { - ExtEditorSettings* newSettings = new ExtEditorSettings(_raster, _width, _height, _x, _y, _xmag, _ymag, _pos, _quant, _applyTo); - CtrlEditSettings* c; - for (int i=0; i<_numOfCtrlEdits; i++) { - c = new CtrlEditSettings(); - *c = *(ctrlEdits[i]); //copy - newSettings->setControlEditSettings(i, c); - } - newSettings->setControlEditSize(_numOfCtrlEdits); - return (EditorSettings*) newSettings; - } - -//--------------------------------------------------------- -// readStatic -//--------------------------------------------------------- - -void ExtEditorSettings::readStatic(QDomNode node) - { - while (!node.isNull()) { - QDomElement e = node.toElement(); - QString tag = e.tagName(); - QString s = e.text(); - int i = s.toInt(); - if (tag == "steprec") - _steprec = i; - else if (tag == "midiin") - _midiin = i; - else - printf("MusE:ExtEditorSettings Static: unknown tag %s\n", e.tagName().toAscii().data()); - node = node.nextSibling(); - } - } - -//--------------------------------------------------------- -// writeStatic -//--------------------------------------------------------- - -void ExtEditorSettings::writeStatic(Xml& xml) - { - xml.tag("exteditorstatic"); - xml.intTag("steprec", _steprec); - xml.intTag("midiin", _midiin); - xml.etag("exteditorstatic"); - } - -//--------------------------------------------------------- -// readStatus -//--------------------------------------------------------- - -void ExtEditorSettings::readStatus(QDomNode node) - { - while (!node.isNull()) { - QDomElement e = node.toElement(); - QString tag = e.tagName(); - QString s = e.text(); - int i = s.toInt(); - if (tag == "grapheditorsettings") - GraphEditorSettings::readStatus(node.firstChild()); - else if (tag == "quant") - _quant = i; - else if (tag == "applyTo") - _applyTo = i; - else if (tag == "steprec") - _steprec = i; - else if (tag == "midiin") - _midiin = i; - else if (tag == "ctrleditsettings") { - ctrlEdits[_numOfCtrlEdits] = new CtrlEditSettings(); - ctrlEdits[_numOfCtrlEdits]->readStatus(node.firstChild()); - _numOfCtrlEdits++; - } - else - printf("MusE:ExtEditorSettings: unknown tag %s\n", e.tagName().toAscii().data()); - node = node.nextSibling(); - } - } - -//--------------------------------------------------------- -// writeStatus -//--------------------------------------------------------- - -void ExtEditorSettings::writeStatus(Xml& xml) const - { - //TODO: The ctrlEdits need to be updated (created) before trying to write status of ctrlEdits... - xml.tag("exteditorsettings"); - GraphEditorSettings::writeStatus(xml); - xml.intTag("quant", _quant); - xml.intTag("applyTo", _applyTo); - xml.intTag("steprec", _steprec); - xml.intTag("midiin", _midiin); - for (int i=0; i<_numOfCtrlEdits; i++) { - ctrlEdits[i]->writeStatus(xml); - } - xml.etag("exteditorsettings"); - } - -// -// DrumEditorSettings static init default values: -// -int DrumEditorSettings::_quantInit = 96; -int DrumEditorSettings::_rasterInit = 96; -int DrumEditorSettings::_widthInit = 600; -int DrumEditorSettings::_heightInit = 400; - -//--------------------------------------------------------- -// DrumEditorSettings -//--------------------------------------------------------- - -DrumEditorSettings::DrumEditorSettings(int r, int w, int h, int x, int y, - double xm, double ym, QPoint pos, int q, int apply, int dl, int dw) - : ExtEditorSettings(r, w, h, x, y, xm, ym, pos, q, apply), - _dlistWidth(dl), _dcanvasWidth(dw) - { - // For uninitialized values, go with static default values instead - if (w == ES_UNINIT) - _width = _widthInit; - if (h == ES_UNINIT) - _height = _heightInit; - if (r == ES_UNINIT) - _raster = _rasterInit; - if (q == ES_UNINIT) - _quant = _quantInit; - } - -//--------------------------------------------------------- -// clone -//--------------------------------------------------------- - -EditorSettings* DrumEditorSettings::clone() - { - DrumEditorSettings* newSettings = new DrumEditorSettings(_raster, _width, _height, _x, _y, _xmag, _ymag, _pos, _quant, _applyTo, _dlistWidth, _dcanvasWidth); - for (int i=0; i<_numOfCtrlEdits; i++) { - CtrlEditSettings* c = new CtrlEditSettings(); - *c = *(ctrlEdits[i]); //copy - newSettings->setControlEditSettings(i, c); - } - newSettings->setControlEditSize(_numOfCtrlEdits); - return (EditorSettings*) newSettings; - } - -//--------------------------------------------------------- -// readStatus -//--------------------------------------------------------- - -void DrumEditorSettings::readStatus(QDomNode node) - { - while (!node.isNull()) { - QDomElement e = node.toElement(); - QString tag = e.tagName(); - QString s = e.text(); - int i = s.toInt(); - if (tag == "exteditorsettings") - ExtEditorSettings::readStatus(node.firstChild()); - else if (tag == "dlistwidth") - _dlistWidth = i; - else if (tag == "dcanvaswidth") - _dcanvasWidth = i; - else - printf("MusE:DrumEditorSettings: unknown tag %s\n", e.tagName().toAscii().data()); - node = node.nextSibling(); - } - } - -//--------------------------------------------------------- -// writeStatus -//--------------------------------------------------------- - -void DrumEditorSettings::writeStatus(Xml& xml) const - { - xml.tag("drumeditorsettings"); - ExtEditorSettings::writeStatus(xml); - xml.intTag("dlistwidth", _dlistWidth); - xml.intTag("dcanvaswidth", _dcanvasWidth); - xml.etag("drumeditorsettings"); - } - -//--------------------------------------------------------- -// setStaticInitValues -//--------------------------------------------------------- -void DrumEditorSettings::setStaticInitValues(int widthinit, int heightinit, int rasterinit, int quantinit) - { - _widthInit = widthinit; - _heightInit = heightinit; - _rasterInit = rasterinit; - _quantInit = quantinit; - } - -//--------------------------------------------------------- -// writeStatic -//! write static configuration values for pianoroll -//--------------------------------------------------------- - -void DrumEditorSettings::writeStatic(Xml& xml) - { - xml.tag("drumeditorstatic"); - xml.intTag("quantDefault", _quantInit); - xml.intTag("rasterDefault", _rasterInit); - xml.intTag("widthDefault", _widthInit); - xml.intTag("heightDefault", _heightInit); - xml.etag("drumeditorstatic"); - } - -//--------------------------------------------------------- -// readStatic -//--------------------------------------------------------- - -void DrumEditorSettings::readStatic(QDomNode node) - { - while (!node.isNull()) { - QDomElement e = node.toElement(); - QString tag = e.tagName(); - QString s = e.text(); - int i = s.toInt(); - if (tag == "quantDefault") - _quantInit = i; - else if (tag == "rasterDefault") - _rasterInit = i; - else if (tag == "widthDefault") - _widthInit = i; - else if (tag == "heightDefault") - _heightInit = i; - else - printf("MusE:DrumEditorSettings Static: unknown tag %s\n", e.tagName().toAscii().data()); - node = node.nextSibling(); - } - } - -//--------------------------------------------------------- -// dump -//--------------------------------------------------------- - -void DrumEditorSettings::dump() - { -// printf("%x: DrumEditorSettings: q=%d r=%d w=%d h=%d dlw=%d dcw=%d xmag: %d pos: %d ypos: %d\n", this, _quant, _raster, _width, _height, _dlistWidth, _dcanvasWidth, _xmag, _pos, _ypos); - } - -// -// PianorollSettings static init default values: -// -int PianorollSettings::_quantInit = 96; -int PianorollSettings::_rasterInit = 96; -int PianorollSettings::_widthInit = 600; -int PianorollSettings::_heightInit = 400; - -PianorollSettings::PianorollSettings(int r, int w, int h, int x, int y, - double xm, double ym, QPoint pos, int q, int apply, - int qs, int qlim, int cmode, bool qlen, int pw) - : ExtEditorSettings(r, w, h, x, y, xm, ym, pos, q, apply), - _quantStrength(qs), _quantLimit(qlim), _colorMode(cmode), - _quantLen(qlen), _pianoWidth(pw) - { - // For uninitialized values, go with static default values instead - if (w == ES_UNINIT) - _width = _widthInit; - if (h == ES_UNINIT) - _height = _heightInit; - if (r == ES_UNINIT) - _raster = _rasterInit; - if (q == ES_UNINIT) - _quant = _quantInit; - } - -//--------------------------------------------------------- -// clone -//--------------------------------------------------------- - -EditorSettings* PianorollSettings::clone() - { - PianorollSettings* newSettings = new PianorollSettings(_raster, _width, - _height, _x, _y, _xmag, _ymag, _pos, _quant, _applyTo, _quantStrength, _quantLimit, _colorMode, _quantLen, _pianoWidth); - CtrlEditSettings* c; - for (int i=0; i<_numOfCtrlEdits; i++) { - c = new CtrlEditSettings(); - *c = *(ctrlEdits[i]); //copy - newSettings->setControlEditSettings(i, c); - } - newSettings->setControlEditSize(_numOfCtrlEdits); - return (EditorSettings*) newSettings; - } - -//--------------------------------------------------------- -// readStatus -//--------------------------------------------------------- - -void PianorollSettings::readStatus(QDomNode node) - { - while (!node.isNull()) { - QDomElement e = node.toElement(); - QString tag = e.tagName(); - QString s = e.text(); - int i = s.toInt(); - if (tag == "exteditorsettings") - ExtEditorSettings::readStatus(node.firstChild()); - else if (tag == "quantstrength") - _quantStrength = i; - else if (tag == "quantlimit") - _quantLimit = i; - else if (tag == "colormode") - _colorMode = i; - else if (tag == "quantLen") - _quantLen = i; - else if (tag == "pianowidth") - _pianoWidth = i; - else - printf("MusE:PianorollSettings: unknown tag %s\n", e.tagName().toAscii().data()); - node = node.nextSibling(); - } - } - -//--------------------------------------------------------- -// writeStatus -//--------------------------------------------------------- - -void PianorollSettings::writeStatus(Xml& xml) const - { - xml.tag("prollsettings"); - ExtEditorSettings::writeStatus(xml); - xml.intTag("quantstrength", _quantStrength); - xml.intTag("quantlimit", _quantLimit); - xml.intTag("colormode", _colorMode); - xml.intTag("quantLen", _quantLen); - xml.intTag("pianowidth", _pianoWidth); - xml.etag("prollsettings"); - } - -//--------------------------------------------------------- -// dump -//--------------------------------------------------------- - -void PianorollSettings::dump() - { -// printf("%x: PianorollSettings: q=%d r=%d w=%d h=%d x:%d y:%d xmag: %d pos:%d ypos:%d qs:%d ql:%d cm:%d at:%d ql:%d pw:%d\n", this, _quant, _raster, _width, _height, _x, _y, _xmag, _pos, _ypos, _quantStrength, _quantLimit, _colorMode, _applyTo, _quantLen, _pianoWidth); - } - - -//--------------------------------------------------------- -// setStaticInitValues -//! set static initialization values -//--------------------------------------------------------- -void PianorollSettings::setStaticInitValues(int widthinit, int heightinit, int rasterinit, int quantinit) - { - _widthInit = widthinit; - _heightInit = heightinit; - _rasterInit = rasterinit; - _quantInit = quantinit; - } - -//--------------------------------------------------------- -// writeStatic -//! write static configuration values for pianoroll -//--------------------------------------------------------- - -void PianorollSettings::writeStatic(Xml& xml) - { - xml.tag("pianorollstatic"); - xml.intTag("quantDefault", _quantInit); - xml.intTag("rasterDefault", _rasterInit); - xml.intTag("widthDefault", _widthInit); - xml.intTag("heightDefault", _heightInit); - xml.etag("pianorollstatic"); - } - -//--------------------------------------------------------- -// readStatic -//--------------------------------------------------------- - -void PianorollSettings::readStatic(QDomNode node) - { - while (!node.isNull()) { - QDomElement e = node.toElement(); - QString tag = e.tagName(); - QString s = e.text(); - int i = s.toInt(); - if (tag == "quantDefault") - _quantInit = i; - else if (tag == "rasterDefault") - _rasterInit = i; - else if (tag == "widthDefault") - _widthInit = i; - else if (tag == "heightDefault") - _heightInit = i; - else - printf("MusE:PianorollSettings Static: unknown tag %s\n", e.tagName().toAscii().data()); - node = node.nextSibling(); - } - } - -//--------------------------------------------------------- -// SettingsList -//--------------------------------------------------------- - -SettingsList::SettingsList() - { - //_default = d; - //dump(); - } - -//--------------------------------------------------------- -// ~SettingsList -//--------------------------------------------------------- - -SettingsList::~SettingsList() - { - for(iSettingsList i = begin(); i!=end(); i++) - delete(i->second); - } - -//--------------------------------------------------------- -// set -//--------------------------------------------------------- - -void SettingsList::set(unsigned id, EditorSettings* e) - { - iSettingsList i = find(id); - if (i == end()) { - //Create a new item - EditorSettings* newItem = e->clone(); - if (DBG_ESETTINGS) - printf("SettingsList::set - storing item with id=%d, " - "object at %p, cloned object at: %p.\n", id, e, newItem); - insert(std::pair(id, newItem)); - } - else { - EditorSettings* newItem = e->clone(); - if (DBG_ESETTINGS) - printf("SettingsList::set - Cloning item with id=%d, object at %p to obj at %p\n", id, e, newItem); - printf("SettingsList::set - deleting settings at: %p\n", i->second); - delete(i->second); //Hmmm, hehhh... Perhaps better to use copy-constructor instead of deletion in different places, but then it's difficult to create object of correct subclass (in a neat way)... (ml) - i->second = newItem; - } - } - -//--------------------------------------------------------- -// get -//--------------------------------------------------------- - -EditorSettings* SettingsList::get(unsigned id) - { - iSettingsList i = find(id); - - if (i == end()) { - if (DBG_ESETTINGS) - printf("SettingsList::get - no match for id=%d\n", id); - return 0; - } - else - return i->second; - } - -//--------------------------------------------------------- -// removeSettings -// remove settings for parts that don't exist anymore -//--------------------------------------------------------- - -void SettingsList::removeSettings(unsigned id) - { - for(iSettingsList i = begin(); i!=end(); i++) { - int bc = i->first; - bc&= ~(0xf0000000); - if (unsigned(bc) == id) { - if (DBG_ESETTINGS) - printf("SettingsList::removeSettings, deleting obj at %p\n", i->second); - delete i->second; - erase(i); - } - } - } - -//--------------------------------------------------------- -// dump -//--------------------------------------------------------- - -void SettingsList::dump() - { -#if 0 - printf("-------SettingsList-DUMP------\n"); - for(iSettingsList i = begin(); i!=end(); i++) { - //printf("i=%x ",i); - printf("PART NO: %x ", i->first); - printf("- i->second at %x\n", i->second); - - i->second->dump(); - } - printf("---END-SettingsList-DUMP------\n"); -#endif - } - -//--------------------------------------------------------- -// writeStatus -//! writes out the settings for all editors and parts -//--------------------------------------------------------- - -void SettingsList::writeStatus(Xml& xml) const - { - xml.tag("settingslist"); - // Write static - ExtEditorSettings::writeStatic(xml); - PianorollSettings::writeStatic(xml); - DrumEditorSettings::writeStatic(xml); - - //Write all nodes - for (ciSettingsList i = begin(); i != end(); i++) { - xml.tag("elem"); - xml.intTag("id", i->first); - i->second->writeStatus(xml); - xml.etag("elem"); - } - xml.etag("settingslist"); - } - -//--------------------------------------------------------- -// readStatus -//! reads the settings for all editors and parts -//--------------------------------------------------------- - -void SettingsList::readStatus(QDomNode node) - { - while (!node.isNull()) { - QDomElement e = node.toElement(); - QString tag = e.tagName(); - if (tag == "elem") - readElem(node.firstChild()); - else if (tag == "exteditorstatic") - ExtEditorSettings::readStatic(node.firstChild()); - else if (tag == "pianorollstatic") - PianorollSettings::readStatic(node.firstChild()); - else if (tag == "drumeditorstatic") - DrumEditorSettings::readStatic(node.firstChild()); - else - printf("MusE:SettingsList: unknown tag %s\n", e.tagName().toAscii().data()); - node = node.nextSibling(); - } - } - -//--------------------------------------------------------- -// readElem -//--------------------------------------------------------- - -void SettingsList::readElem(QDomNode node) - { - int id = 0; - while (!node.isNull()) { - QDomElement e = node.toElement(); - QString tag = e.tagName(); - QString s = e.text(); - int i = s.toInt(); - if (tag == "grapheditorsettings") { - GraphEditorSettings* temp = new GraphEditorSettings(); - temp->readStatus(node.firstChild()); - insert(std::pair(id, temp)); - } - else if (tag == "editorsettings") { - EditorSettings* temp = new EditorSettings(); - temp->readStatus(node.firstChild()); - insert(std::pair(id, temp)); - } - else if (tag == "drumeditorsettings") { - DrumEditorSettings* temp = new DrumEditorSettings(); - temp->readStatus(node.firstChild()); - insert(std::pair(id, temp)); - } - else if (tag == "prollsettings") { - PianorollSettings* temp = new PianorollSettings(); - temp->readStatus(node.firstChild()); - insert(std::pair(id, temp)); - } - else if (tag == "id") - id = i; - else - printf("MusE:SettingsList element: unknown tag %s\n", e.tagName().toAscii().data()); - node = node.nextSibling(); - } - } - - -//--------------------------------------------------------- -/*! - \fn SettingsList::reset() - \brief Remove all previous settings and clean up - */ -//--------------------------------------------------------- -void SettingsList::reset() - { - for (iSettingsList i = begin(); i != end(); i++) { - delete i->second; - } - clear(); - } diff --git a/muse/muse/esettings.h b/muse/muse/esettings.h deleted file mode 100644 index 292c02c7..00000000 --- a/muse/muse/esettings.h +++ /dev/null @@ -1,361 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Description: -// Configuration settings for the midi-editors. -// -// Copyright (C) 2004 Mathias Lundgren -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __ESETTINGS_H__ -#define __ESETTINGS_H__ - -#include -#include - -#define ET_LISTEDIT 0x1000000 -#define ET_MASTEREDIT 0x4000000 -#define ET_PIANO_ROLL 0x10000000 -#define ET_DRUMEDIT 0x20000000 -#define ET_WAVEEDIT 0x40000000 - -#define MAXNOOFCTRLEDITSETTINGS 16 - -#define ES_UNINIT -1 /* Uninitialized parameter */ - -#define ESETTINGS_DEBUG 0 - -#include "debug.h" -#define DBG_ESETTINGS_ON 0 -#define DBG_ESETTINGS debugMsg && DBG_ESETTINGS_ON - -namespace AL { - class Xml; - }; -using AL::Xml; - -class CtrlEdit; - -//----------------------------------------------- -// CtrlEditSettings class -// stores ctrleditsettings -//----------------------------------------------- -class CtrlEditSettings - { - private: - int height; - int controller; - - public: - //const MidiController* controller; - CtrlEditSettings() {} - CtrlEditSettings(int h, int c) { height = h; controller = c; } - CtrlEditSettings(const CtrlEditSettings& c) { height = c.height; controller = c.controller; } - int getHeight() { return height; } - int getController() { return controller; } - void readStatus(QDomNode); - void writeStatus(Xml& xml); - - bool operator==(const CtrlEditSettings& c) const { return (c.height == height && c.controller == controller); } - bool operator!=(const CtrlEditSettings& c) const { return !(c == *this); } - }; - -//----------------------------------------------- -// EditorSettings -// base class for midieditorsettings -//----------------------------------------------- -class EditorSettings - { - protected: - int _raster; - int _width, _height, _x, _y; - - public: - EditorSettings(int r=96, int w=600, int h=400, int x=-1, int y=-1) : _raster(r), _width(w), _height(h), _x(x), _y(y) { } - virtual ~EditorSettings() {} - int raster() const { return _raster; } - void setRaster(int r) { _raster = r; } - int* rasterPtr() { return &_raster; } - int width() const { return _width; } - int height() const { return _height; } - void setWidth(int w) { _width = w; } - void setHeight(int h) { _height = h; } - int x() const { return _x; } - void setX(int x) { _x = x; } - int y() const { return _y; } - void setY(int y) { _y = y; } - - virtual void readStatus(QDomNode); - virtual void writeStatus(Xml&) const; - virtual bool operator==(const EditorSettings& e) const { - return ((e._raster == _raster) && (e._width == _width) && (e._height == _height)/* && (e._x == _x) && (e._y == _y)*/); - } - virtual bool operator!=(const EditorSettings& e) const { return !(e == *this); } - virtual EditorSettings* clone() { return new EditorSettings(_raster, _width, _height, _x, _y); } - virtual void dump() { printf("%p: EditorSettings: r:%d w:%d h:%d x:%d y:%d\n", this, _raster, _width, _height, _x, _y); } - }; - -//--------------------------------------------------------- -// GraphEditorSettings -//--------------------------------------------------------- -class GraphEditorSettings : public EditorSettings - { - protected: - //Values considering scroll + zoom - double _xmag, _ymag; - QPoint _pos; - - public: - GraphEditorSettings(int r=96, int w=600, int h=400, int x=-1, int y=-1, - double xmag=0.05, double ymag=1.0, QPoint pos = QPoint(0, 0)) - : EditorSettings(r, w, h, x, y), _xmag(xmag), _ymag(ymag), _pos(pos) - { - } - virtual ~GraphEditorSettings() {} - - double xmag() const { return _xmag; } - double ymag() const { return _ymag; } - void setXmag(double x) { _xmag = x; } - void setYmag(double y) { _xmag = y; } - QPoint pos() const { return _pos; } - void setPos(const QPoint& p) { _pos = p; } - int ypos() const { return _pos.y(); } - void setYpos(int y) { _pos.setY(y); } - - virtual bool operator==(const EditorSettings& e) const { - const GraphEditorSettings& f = (GraphEditorSettings&) e; - return ((f._raster == _raster) && (f._width == _width) && (f._height == _height)// && (f._x == _x) && (f._y == _y) - && (f._xmag == _xmag) - && (f._ymag == _ymag) - && (f._pos == _pos)); - } - virtual bool operator!=(const EditorSettings& e) const { return !(e == *this); } - virtual EditorSettings* clone() { return new GraphEditorSettings(_raster, _width, _height, _x, _y, _xmag, _ymag, _pos); } - virtual void readStatus(QDomNode); - virtual void writeStatus(Xml&) const; - virtual void dump() { - printf("%p: GraphEditorSettings: r:%d w:%d h:%d x:%d y:%d mag:%f:%f pos:%d ypos:%d\n", - this, _raster, _width, _height, _x, _y, _xmag, _ymag, _pos.x(), _pos.y()); - } - }; - -//--------------------------------------------------------- -// ExtEditorSettings -// Common settings for drumeditor and pianoroll -//--------------------------------------------------------- - -class ExtEditorSettings : public GraphEditorSettings - { - private: - - protected: - int _quant; - int _applyTo; - static bool _steprec; - static bool _midiin; - int _numOfCtrlEdits; - - public: - ExtEditorSettings(int r=96, int w=600, int h=400, int x=-1, int y=-1, double xm=0.05, double ym=1.0, QPoint pos = QPoint(0,0), int q=96, int apply=0); - virtual ~ExtEditorSettings(); - //ExtEditorSettings(const ExtEditorSettings& e) : EditorSettings(e._raster) , _quant(e._quant) { } - static void readStatic(QDomNode); - static void writeStatic(Xml& xml); - CtrlEditSettings* ctrlEdits[MAXNOOFCTRLEDITSETTINGS]; - - virtual bool operator==(const EditorSettings& e) const { //örk... - const ExtEditorSettings& f = (ExtEditorSettings&) e; - bool ctrlEditsEqual = true; - for (int i=0; i::iterator iSettingsList; -typedef std::multimap::const_iterator ciSettingsList; - -class SettingsList : public std::multimap - { - public: - SettingsList(); - ~SettingsList(); - void set(unsigned id, EditorSettings* e); - EditorSettings* get(unsigned); - void removeSettings(unsigned id); - void readElem(QDomNode); - void readStatus(QDomNode); - void writeStatus(Xml&) const; - void dump(); - void reset(); - }; - -#endif diff --git a/muse/muse/evdata.h b/muse/muse/evdata.h deleted file mode 100644 index 629b9e9a..00000000 --- a/muse/muse/evdata.h +++ /dev/null @@ -1,85 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __EVDATA_H__ -#define __EVDATA_H__ - -#include - -//--------------------------------------------------------- -// EvData -// variable len event data (sysex, meta etc.) -//--------------------------------------------------------- - -class EvData { - int* refCount; - - public: - unsigned char* data; - int dataLen; - - EvData() { - data = 0; - dataLen = 0; - refCount = new int(1); - } - EvData(const EvData& ed) { - data = ed.data; - dataLen = ed.dataLen; - refCount = ed.refCount; - (*refCount)++; - } - - EvData& operator=(const EvData& ed) { - if (data == ed.data) - return *this; - if (--(*refCount) == 0) { - delete refCount; - delete[] data; - } - data = ed.data; - dataLen = ed.dataLen; - refCount = ed.refCount; - (*refCount)++; - return *this; - } - - bool operator==(const EvData& ed) const { - if(dataLen==ed.dataLen) { - return memcmp(data, ed.data, sizeof(unsigned char) * dataLen)==0; - } - else return false; - } - - ~EvData() { - if (--(*refCount) == 0) { - delete[] data; - delete refCount; - } - } - void setData(const unsigned char* p, int l) { - data = new unsigned char[l]; - memcpy(data, p, l); - dataLen = l; - } - }; - -#endif - diff --git a/muse/muse/event.cpp b/muse/muse/event.cpp deleted file mode 100644 index 53d68c08..00000000 --- a/muse/muse/event.cpp +++ /dev/null @@ -1,222 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "event.h" -#include "eventbase.h" -#include "waveevent.h" -#include "midieventbase.h" - -using AL::Pos; - -//--------------------------------------------------------- -// Event -//--------------------------------------------------------- - -EventBase::EventBase(EventType t) - { - _type = t; - Pos::setType(_type == Wave ? AL::FRAMES : AL::TICKS); - refCount = 0; - _selected = false; - _recorded = false; - } - -EventBase::EventBase(const EventBase& ev) - : PosLen(ev) - { - refCount = 0; - _selected = ev._selected; - _type = ev._type; - _recorded = ev._recorded; - } - -//--------------------------------------------------------- -// move -//--------------------------------------------------------- - -void EventBase::move(int tickOffset) - { - setTick(tick() + tickOffset); - } - -//--------------------------------------------------------- -// dump -//--------------------------------------------------------- - -void EventBase::dump(int n) const - { - for (int i = 0; i < n; ++i) - putchar(' '); - printf("Event %p refs:%d ", this, refCount); - PosLen::dump(n+2); - } - -//--------------------------------------------------------- -// clone -//--------------------------------------------------------- - -Event Event::clone() const - { - return Event(ev->clone()); - } - -Event::Event(EventType t) - { - if (t == Wave) - ev = new WaveEventBase(t); - else - ev = new MidiEventBase(t); - ++(ev->refCount); - } - -Event::Event(const Event& e) - { - ev = e.ev; - if (ev) - ++(ev->refCount); - } - -Event::Event(EventBase* eb) - { - ev = eb; - ++(ev->refCount); - } - -Event::~Event() - { - if (ev && --(ev->refCount) == 0) - delete ev; - } - -bool Event::empty() const - { - return ev == 0; - } - -EventType Event::type() const - { - return ev ? ev->type() : Note; - } - -void Event::setType(EventType t) - { - if (ev && --(ev->refCount) == 0) - delete ev; - if (t == Wave) - ev = new WaveEventBase(t); - else - ev = new MidiEventBase(t); - ++(ev->refCount); - } - -Event& Event::operator=(const Event& e) - { - if (ev == e.ev) - return *this; - if (ev && --(ev->refCount) == 0) - delete ev; - ev = e.ev; - if (ev) - ++(ev->refCount); - return *this; - } - -bool Event::operator==(const Event& e) const { - return *ev == *e.ev; - } - - -int Event::getRefCount() const { return ev->getRefCount(); } -bool Event::selected() const { return ev->_selected; } -void Event::setSelected(bool val) { ev->_selected = val; } -bool Event::recorded() const { return ev->_recorded; } -void Event::setRecorded(bool val) { ev->_recorded = val; } -void Event::move(int offset) { ev->move(offset); } - -void Event::read(QDomNode node) { ev->read(node); } -void Event::write(Xml& xml, const Pos& o) const { ev->write(xml, o); } -void Event::dump(int n) const { ev->dump(n); } -Event Event::mid(unsigned a, unsigned b) { return Event(ev->mid(a, b)); } - -bool Event::isNote() const { return ev->isNote(); } -bool Event::isNoteOff() const { return ev->isNoteOff(); } -bool Event::isNoteOff(const Event& e) const { return ev->isNoteOff(e); } -int Event::dataA() const { return ev->dataA(); } -int Event::pitch() const { return ev->dataA(); } -void Event::setA(int val) { ev->setA(val); } -void Event::setPitch(int val) { ev->setA(val); } -int Event::dataB() const { return ev->dataB(); } -int Event::velo() const { return ev->dataB(); } -void Event::setB(int val) { ev->setB(val); } -void Event::setVelo(int val) { ev->setB(val); } -int Event::dataC() const { return ev->dataC(); } -int Event::veloOff() const { return ev->dataC(); } -void Event::setC(int val) { ev->setC(val); } -void Event::setVeloOff(int val) { ev->setC(val); } - -const unsigned char* Event::data() const { return ev->data(); } -int Event::dataLen() const { return ev->dataLen(); } -void Event::setData(const unsigned char* data, int len) { ev->setData(data, len); } -const EvData Event::eventData() const { return ev->eventData(); } - -const QString Event::name() const { return ev->name(); } -void Event::setName(const QString& s) { ev->setName(s); } -int Event::spos() const { return ev->spos(); } -void Event::setSpos(int s) { ev->setSpos(s); } -SndFileR Event::sndFile() const { return ev->sndFile(); } -void Event::setSndFile(SndFileR& sf) { ev->setSndFile(sf); } -void Event::read(unsigned offset, float** bpp, int channels, int nn) - { - ev->read(offset, bpp, channels, nn); - } - -void Event::setTick(unsigned val) { ev->setTick(val); } -unsigned Event::tick() const { return ev->tick(); } -Pos Event::pos() const { return *ev; } -unsigned Event::frame() const { return ev->frame(); } -void Event::setFrame(unsigned val) { ev->setFrame(val); } -void Event::setLenTick(unsigned val) { ev->setLenTick(val); } -void Event::setLenFrame(unsigned val) { ev->setLenFrame(val); } -unsigned Event::lenTick() const { return ev->lenTick(); } -unsigned Event::lenFrame() const { return ev->lenFrame(); } -Pos Event::end() const { return ev->end(); } -unsigned Event::endTick() const { return ev->end().tick(); } -unsigned Event::endFrame() const { return ev->end().frame(); } -void Event::setPos(const Pos& p) { ev->setPos(p); } -QString Event::eventTypeName() const { return ev->eventTypeName(); } - - -//--------------------------------------------------------- -// eventTypeName -//--------------------------------------------------------- - -QString EventBase::eventTypeName() const - { - switch(type()) { - case Note: return QString("Note"); - case Controller: return QString("Ctrl"); - case Sysex: return QString("Sysex"); - case PAfter: return QString("PAfter"); - case CAfter: return QString("CAfter"); - case Meta: return QString("Meta"); - default: return QString("??"); - } - } - diff --git a/muse/muse/event.h b/muse/muse/event.h deleted file mode 100644 index 62b79756..00000000 --- a/muse/muse/event.h +++ /dev/null @@ -1,139 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __EVENT_H__ -#define __EVENT_H__ - -#include "wave.h" // wg. SndFile -#include "al/xml.h" -#include "al/pos.h" -#include "evdata.h" - -using AL::Xml; -using AL::Pos; - -enum EventType { Note, Controller, Sysex, PAfter, CAfter, Meta, Wave }; -class EventBase; - -//--------------------------------------------------------- -// Event -//--------------------------------------------------------- - -class Event { - EventBase* ev; - - public: - Event() { ev = 0; } - Event(EventType t); - Event(const Event& e); - Event(EventBase* eb); - virtual ~Event(); - - bool empty() const; - EventType type() const; - QString eventTypeName() const; - - void setType(EventType t); - Event& operator=(const Event& e); - bool operator==(const Event& e) const; - - int getRefCount() const; - bool selected() const; - void setSelected(bool val); - bool recorded() const; - void setRecorded(bool val); - void move(int offset); - - void read(QDomNode); - void write(AL::Xml& xml, const Pos& offset) const; - void dump(int n = 0) const; - Event clone() const; - Event mid(unsigned a, unsigned b); - - bool isNote() const; - bool isNoteOff() const; - bool isNoteOff(const Event& e) const; - int dataA() const; - int pitch() const; - void setA(int val); - void setPitch(int val); - int dataB() const; - int velo() const; - void setB(int val); - void setVelo(int val); - int dataC() const; - int veloOff() const; - void setC(int val); - void setVeloOff(int val); - - const unsigned char* data() const; - int dataLen() const; - void setData(const unsigned char* data, int len); - const EvData eventData() const; - - const QString name() const; - void setName(const QString& s); - int spos() const; - void setSpos(int s); - SndFileR sndFile() const; - virtual void setSndFile(SndFileR& sf); - virtual void read(unsigned offset, float** bpp, int channels, int nn); - - Pos pos() const; - Pos end() const; - - void setTick(unsigned val); - unsigned tick() const; - unsigned frame() const; - void setFrame(unsigned val); - void setLenTick(unsigned val); - void setLenFrame(unsigned val); - unsigned lenTick() const; - unsigned lenFrame() const; - unsigned endTick() const; - unsigned endFrame() const; - void setPos(const Pos& p); - }; - -typedef std::multimap > EL; -typedef EL::iterator iEvent; -typedef EL::reverse_iterator riEvent; -typedef EL::const_iterator ciEvent; -typedef std::pair EventRange; - -//--------------------------------------------------------- -// EventList -// tick sorted list of events -//--------------------------------------------------------- - -class EventList : public EL { - public: - int cloneCount; - EventList() { cloneCount = 0; } - iEvent find(const Event&); - iEvent add(const Event& event); - iEvent add(const Event& event, unsigned tick); - void move(const Event& event, unsigned tick); - void dump() const; - void read(QDomNode, bool midi); - }; - -#endif - diff --git a/muse/muse/eventbase.h b/muse/muse/eventbase.h deleted file mode 100644 index 27d9e323..00000000 --- a/muse/muse/eventbase.h +++ /dev/null @@ -1,100 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __EVENTBASE_H__ -#define __EVENTBASE_H__ - -#include "al/pos.h" - -//--------------------------------------------------------- -// EventBase -//--------------------------------------------------------- - -class EventBase : public AL::PosLen { - EventType _type; - - protected: - int refCount; - bool _selected; - bool _recorded; - - public: - EventBase(EventType t); - EventBase(const EventBase& ev); - QString eventTypeName() const; - - virtual ~EventBase() {} - - int getRefCount() const { return refCount; } - EventType type() const { return _type; } - void setType(EventType t) { _type = t; } - bool selected() const { return _selected; } - void setSelected(bool val) { _selected = val; } - bool recorded() const { return _recorded; } - void setRecorded(bool val) { _recorded = val; } - - void move(int offset); - - virtual void read(QDomNode) = 0; - virtual void write(Xml&, const Pos& offset) const = 0; - virtual void dump(int n = 0) const; - virtual EventBase* mid(unsigned, unsigned) = 0; - friend class Event; - - virtual bool isNote() const { return false; } - virtual bool isNoteOff() const { return false; } - virtual bool isNoteOff(const Event&) const { return false; } - virtual int pitch() const { return 0; } - virtual int program() const { return 0; } - virtual int cntrl() const { return 0; } - virtual int dataA() const { return 0; } - virtual void setA(int) { } - virtual void setPitch(int) { } - - virtual int cntrlVal() const { return 0; } - virtual int dataB() const { return 0; } - virtual int velo() const { return 0; } - virtual void setB(int) { } - virtual void setVelo(int) { } - - virtual int veloOff() const { return 0; } - virtual int dataC() const { return 0; } - virtual void setC(int) { } - virtual void setVeloOff(int) { } - - virtual const unsigned char* data() const { return 0; } - virtual int dataLen() const { return 0; } - virtual void setData(const unsigned char*, int) { } - virtual const EvData eventData() const { return EvData(); } - - virtual const QString name() const { return QString("?"); } - virtual void setName(const QString&) { } - virtual int spos() const { return 0; } - virtual void setSpos(int) { } - virtual SndFileR sndFile() const { return 0; } - virtual void setSndFile(SndFileR&) { } - virtual EventBase* clone() const = 0; - virtual void read(unsigned /*offset*/, float** /*bpp*/, int /*channels*/, int /*nn*/) {} - - virtual bool operator==(const EventBase&) const { return false; } - }; - -#endif - diff --git a/muse/muse/eventlist.cpp b/muse/muse/eventlist.cpp deleted file mode 100644 index 82d3b389..00000000 --- a/muse/muse/eventlist.cpp +++ /dev/null @@ -1,93 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "event.h" -#include "al/xml.h" - -//--------------------------------------------------------- -// readEventList -//--------------------------------------------------------- - -void EventList::read(QDomNode node, bool midi) - { - for (; !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - QString tag(e.tagName()); - if (tag.isEmpty()) - continue; - if (tag == "event") { - Event e(midi ? Note : Wave); - e.read(node); - add(e); - } - else - printf("EventListData:read(): unknown tag %s\n", tag.toAscii().data()); - } - } - -//--------------------------------------------------------- -// add -//--------------------------------------------------------- - -iEvent EventList::add(const Event& event, unsigned tick) - { - return std::multimap >::insert(std::pair (tick, event)); - } - -iEvent EventList::add(const Event& event) - { - return add(event, event.tick()); - } - -//--------------------------------------------------------- -// move -//--------------------------------------------------------- - -void EventList::move(const Event& event, unsigned tick) - { - iEvent i = find(event); - erase(i); - std::multimap >::insert(std::pair (tick, event)); - } - -//--------------------------------------------------------- -// find -//--------------------------------------------------------- - -iEvent EventList::find(const Event& event) - { - EventRange range = equal_range(event.tick()); - for (iEvent i = range.first; i != range.second; ++i) { - if (i->second == event) - return i; - } - return end(); - } - -//--------------------------------------------------------- -// dump -//--------------------------------------------------------- - -void EventList::dump() const - { - for (ciEvent i = begin(); i != end(); ++i) - i->second.dump(); - } - diff --git a/muse/muse/exportmidi.cpp b/muse/muse/exportmidi.cpp deleted file mode 100644 index f18794ab..00000000 --- a/muse/muse/exportmidi.cpp +++ /dev/null @@ -1,376 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "muse.h" -#include "midifile.h" -#include "midi.h" -#include "midictrl.h" -#include "globals.h" -#include "widgets/filedialog.h" -#include "song.h" -#include "midievent.h" -#include "event.h" -#include "midiedit/drummap.h" -#include "gconfig.h" -#include "al/sig.h" -#include "al/tempo.h" -#include "al/marker.h" -#include "part.h" -#include "exportmidi.h" - -//--------------------------------------------------------- -// addController -//--------------------------------------------------------- - -static void addController(MidiEventList* l, int tick, int channel, int a, int b) - { - if (a < 0x1000) { // 7 Bit Controller - l->insert(MidiEvent(tick, channel, ME_CONTROLLER, a, b)); - } - else if (a < 0x20000) { // 14 Bit Controller - int ctrlH = (a >> 8) & 0x7f; - int ctrlL = a & 0x7f; - int dataH = (b >> 7) & 0x7f; - int dataL = b & 0x7f; - l->insert(MidiEvent(tick, channel, ME_CONTROLLER, ctrlH, dataH)); - l->insert(MidiEvent(tick+1, channel, ME_CONTROLLER, ctrlL, dataL)); - } - else if (a < 0x30000) { // RPN 7-Bit Controller - int ctrlH = (a >> 8) & 0x7f; - int ctrlL = a & 0x7f; - l->insert(MidiEvent(tick, channel, ME_CONTROLLER, CTRL_HRPN, ctrlH)); - l->insert(MidiEvent(tick+1, channel, ME_CONTROLLER, CTRL_LRPN, ctrlL)); - l->insert(MidiEvent(tick+2, channel, ME_CONTROLLER, CTRL_HDATA, b)); - } - else if (a < 0x40000) { // NRPN 7-Bit Controller - int ctrlH = (a >> 8) & 0x7f; - int ctrlL = a & 0x7f; - l->insert(MidiEvent(tick, channel, ME_CONTROLLER, CTRL_HNRPN, ctrlH)); - l->insert(MidiEvent(tick+1, channel, ME_CONTROLLER, CTRL_LNRPN, ctrlL)); - l->insert(MidiEvent(tick+2, channel, ME_CONTROLLER, CTRL_HDATA, b)); - } - else if (a == CTRL_PITCH) { - int a = b + 8192; - int b = a >> 7; - l->insert(MidiEvent(tick, channel, ME_PITCHBEND, a & 0x7f, b & 0x7f)); - } - else if (a == CTRL_PROGRAM) { - int hb = (b >> 16) & 0xff; - int lb = (b >> 8) & 0xff; - int pr = b & 0x7f; - int tickoffset = 0; - if (hb != 0xff) { - l->insert(MidiEvent(tick, channel, ME_CONTROLLER, CTRL_HBANK, hb)); - ++tickoffset; - } - if (lb != 0xff) { - l->insert(MidiEvent(tick+tickoffset, channel, ME_CONTROLLER, CTRL_LBANK, lb)); - ++tickoffset; - } - l->insert(MidiEvent(tick+tickoffset, channel, ME_PROGRAM, pr, 0)); - } - else if (a < 0x60000) { // RPN14 Controller - int ctrlH = (a >> 8) & 0x7f; - int ctrlL = a & 0x7f; - int dataH = (b >> 7) & 0x7f; - int dataL = b & 0x7f; - l->insert(MidiEvent(tick, channel, ME_CONTROLLER, CTRL_HRPN, ctrlH)); - l->insert(MidiEvent(tick+1, channel, ME_CONTROLLER, CTRL_LRPN, ctrlL)); - l->insert(MidiEvent(tick+2, channel, ME_CONTROLLER, CTRL_HDATA, dataH)); - l->insert(MidiEvent(tick+3, channel, ME_CONTROLLER, CTRL_LDATA, dataL)); - } - else if (a < 0x70000) { // NRPN14 Controller - int ctrlH = (a >> 8) & 0x7f; - int ctrlL = a & 0x7f; - int dataH = (b >> 7) & 0x7f; - int dataL = b & 0x7f; - l->insert(MidiEvent(tick, channel, ME_CONTROLLER, CTRL_HNRPN, ctrlH)); - l->insert(MidiEvent(tick+1, channel, ME_CONTROLLER, CTRL_LNRPN, ctrlL)); - l->insert(MidiEvent(tick+2, channel, ME_CONTROLLER, CTRL_HDATA, dataH)); - l->insert(MidiEvent(tick+3, channel, ME_CONTROLLER, CTRL_LDATA, dataL)); - } - } - -//--------------------------------------------------------- -// exportMidi -//--------------------------------------------------------- - -void MusE::exportMidi() - { - if (exportMidiDialog == 0) - exportMidiDialog = new ExportMidiDialog(song->projectPath()); - int rv = exportMidiDialog->exec(); - if (rv == 0) - return; - QString name = exportMidiDialog->filename->text(); - QFile fp(name); - if (fp.exists()) { - QString s(QWidget::tr("File\n") + name + QWidget::tr("\nexists")); - int rv = QMessageBox::warning(this, - QWidget::tr("MusE: export midi file:"), - s, - QWidget::tr("Overwrite"), - QWidget::tr("Quit"), QString::null, 0, 1); - if (rv == 1) - return; - } - - MidiFile mf; - int format = exportMidiDialog->smf0->isChecked() ? 0 : 1; - mf.setFormat(format); - - MidiFileTrackList* mtl = new MidiFileTrackList; - - MidiTrackList* mt = song->midis(); - for (iMidiTrack im = mt->begin(); im != mt->end(); ++im) { - MidiTrack* track = *im; - - MidiFileTrack* mft = new MidiFileTrack; - mtl->push_back(mft); - - MidiEventList* l = &(mft->events); - int channel = 0; - channel = track->channelNo(); - - //----------------------------------- - // track name - //----------------------------------- - - if (!track->name().isEmpty()) { - const char* name = track->name().toAscii().data(); - int len = strlen(name); - MidiEvent ev(0, ME_META, (unsigned char*)name, len+1); - ev.setA(0x3); // Meta Sequence/Track Name - l->insert(ev); - } - - //----------------------------------- - // managed controller - //----------------------------------- - - CtrlList* cll = track->controller(); - for (iCtrl ivl = cll->begin(); ivl != cll->end(); ++ivl) { - Ctrl* c = ivl->second; - int id = c->id(); - for (iCtrlVal iv = c->begin(); iv != c->end(); ++iv) { - int tick = iv.key(); - int val = iv.value().i; - addController(l, tick, channel, id, val); - } - } - - //----------------------------------- - // track comment - //----------------------------------- - - if (!track->comment().isEmpty()) { - const char* comment = track->comment().toAscii().data(); - int len = strlen(comment); - MidiEvent ev(0, ME_META, (unsigned char*)comment, len+1); - ev.setA(0xf); // Meta Text - l->insert(ev); - } - PartList* parts = track->parts(); - for (iPart p = parts->begin(); p != parts->end(); ++p) { - Part* part = p->second; - EventList* evlist = part->events(); - for (iEvent i = evlist->begin(); i != evlist->end(); ++i) { - Event ev = i->second; - int tick = ev.tick() + part->tick(); - - switch (ev.type()) { - case Note: - { - if (ev.velo() == 0) { - printf("Warning: midi note has velocity 0, (ignored)\n"); - continue; - } - int pitch = ev.pitch(); - int velo = ev.velo(); - int len = ev.lenTick(); - - //--------------------------------------- - // apply trackinfo values - //--------------------------------------- - - if (track->transposition() - || track->velocity() - || track->compression() != 100 - || track->len() != 100) { - pitch += track->transposition(); - if (pitch > 127) - pitch = 127; - if (pitch < 0) - pitch = 0; - - velo += track->velocity(); - velo = (velo * track->compression()) / 100; - if (velo > 127) - velo = 127; - if (velo < 1) // no off event - velo = 1; - len = (len * track->len()) / 100; - } - if (len <= 0) - len = 1; - l->insert(MidiEvent(tick, channel, ME_NOTEON, pitch, velo)); - l->insert(MidiEvent(tick+len, channel, ME_NOTEON, pitch, 0)); - } - break; - - case Controller: - addController(l, tick, channel, ev.dataA(), ev.dataB()); - break; - - case Sysex: - l->insert(MidiEvent(tick, ME_SYSEX, ev.eventData())); - break; - - case PAfter: - l->insert(MidiEvent(tick, channel, ME_AFTERTOUCH, ev.dataA(), ev.dataB())); - break; - - case CAfter: - l->insert(MidiEvent(tick, channel, ME_POLYAFTER, ev.dataA(), ev.dataB())); - break; - - case Meta: - { - MidiEvent mpev(tick, ME_META, ev.eventData()); - mpev.setA(ev.dataA()); - l->insert(mpev); - } - break; - case Wave: - break; - } - } - } - } - - MidiFileTrack* mft = mtl->front(); - MidiEventList* l = &(mft->events); - - //--------------------------------------------------- - // Write Track Marker - // - AL::MarkerList* ml = song->marker(); - for (AL::ciMarker m = ml->begin(); m != ml->end(); ++m) { - const char* name = m->second.name().toAscii().data(); - int len = strlen(name); - MidiEvent ev(m->first, ME_META, (unsigned char*)name, len); - ev.setA(0x6); - l->insert(ev); - } - - //--------------------------------------------------- - // Write Copyright - // - const char* copyright = config.copyright.toAscii().data(); - if (copyright && *copyright) { - int len = strlen(copyright); - MidiEvent ev(0, ME_META, (unsigned char*)copyright, len); - ev.setA(0x2); - l->insert(ev); - } - - //--------------------------------------------------- - // Write Tempomap - // - AL::TempoList* tl = &AL::tempomap; - for (AL::ciTEvent e = tl->begin(); e != tl->end(); ++e) { - AL::TEvent* event = e->second; - unsigned char data[3]; - int tempo = event->tempo; - data[2] = tempo & 0xff; - data[1] = (tempo >> 8) & 0xff; - data[0] = (tempo >> 16) & 0xff; - MidiEvent ev(event->tick, ME_META, data, 3); - ev.setA(0x51); - l->insert(ev); - } - - //--------------------------------------------------- - // Write Signatures - // - const AL::SigList* sl = &AL::sigmap; - for (AL::ciSigEvent e = sl->begin(); e != sl->end(); ++e) { - AL::SigEvent* event = e->second; - unsigned char data[2]; - data[0] = event->sig.z; - switch(event->sig.n) { - case 1: data[1] = 0; break; - case 2: data[1] = 1; break; - case 4: data[1] = 2; break; - case 8: data[1] = 3; break; - case 16: data[1] = 4; break; - case 32: data[1] = 5; break; - case 64: data[1] = 6; break; - default: - fprintf(stderr, "falsche Signatur; nenner %d\n", event->sig.n); - break; - } - MidiEvent ev(event->tick, ME_META, data, 2); - ev.setA(0x58); - l->insert(ev); - } - - mf.setDivision(config.midiDivision); - mf.setTrackList(mtl); - fp.open(QIODevice::WriteOnly); - mf.write(&fp); - fp.close(); - } - -//--------------------------------------------------------- -// ExportMidiDialog -//--------------------------------------------------------- - -ExportMidiDialog::ExportMidiDialog(const QString& name, QWidget* parent) - : QDialog(parent) - { - setupUi(this); - - smf0->setChecked(config.smfFormat == 0); - smf1->setChecked(config.smfFormat == 1); - QFileInfo fi(name); - QString s(fi.path() + "/" + fi.baseName() + ".mid"); - label->setText(tr("Save ") + fi.baseName() + tr(" as smf midi file")); - filename->setText(s); - connect(fileButton, SIGNAL(clicked()), SLOT(startFileBrowser())); - } - -//--------------------------------------------------------- -// startFileBrowser -//--------------------------------------------------------- - -void ExportMidiDialog::startFileBrowser() - { - QString s = QFileDialog::getSaveFileName( - (QWidget*)this, - tr("MusE: export midi smf file"), - QFileInfo(filename->text()).path(), - QString("Midi Files (*.mid *.kar *.MID)"), - 0, - QFileDialog::DontConfirmOverwrite); - if (!s.isEmpty()) - filename->setText(s); - } - diff --git a/muse/muse/exportmidi.h b/muse/muse/exportmidi.h deleted file mode 100644 index 0a4fa071..00000000 --- a/muse/muse/exportmidi.h +++ /dev/null @@ -1,41 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __EXPORTMIDI_H__ -#define __EXPORTMIDI_H__ - -#include "ui_exportmididialog.h" - -//--------------------------------------------------------- -// ExportMidiDialog -//--------------------------------------------------------- - -class ExportMidiDialog : public QDialog, public Ui::ExportMidiDialogBase { - Q_OBJECT - - private slots: - void startFileBrowser(); - - public: - ExportMidiDialog(const QString&, QWidget* parent = 0); - }; - -#endif - diff --git a/muse/muse/exportmididialog.ui b/muse/muse/exportmididialog.ui deleted file mode 100644 index 69d35da1..00000000 --- a/muse/muse/exportmididialog.ui +++ /dev/null @@ -1,176 +0,0 @@ - - - - - ExportMidiDialogBase - - - - 0 - 0 - 425 - 316 - - - - MusE: Export Midi - - - - 9 - - - 6 - - - - - - - - - - - - Qt::Horizontal - - - - - - - SMF Typ 0 (single track) - - - - - - - SMF Typ 1 (multiple tracks) - - - true - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - 0 - - - 6 - - - - - Save As: - - - - - - - - - - ... - - - :/xpm/filenew.png - - - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - - 131 - 31 - - - - - - - - OK - - - - - - - Cancel - - - - - - - - - - - - - - okButton - clicked() - ExportMidiDialogBase - accept() - - - 321 - 274 - - - 96 - 254 - - - - - cancelButton - clicked() - ExportMidiDialogBase - reject() - - - 414 - 274 - - - 179 - 282 - - - - - diff --git a/muse/muse/extmidieditor.cpp b/muse/muse/extmidieditor.cpp deleted file mode 100644 index 38377b94..00000000 --- a/muse/muse/extmidieditor.cpp +++ /dev/null @@ -1,422 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2004 Mathias Lundgren -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __EXTMIDIEDITOR_CPP__ -#define __EXTMIDIEDITOR_CPP__ - -#include "extmidieditor.h" -#include "part.h" -#include "al/xml.h" -#include "al/pos.h" -#include "song.h" -#include "midiedit/ecanvas.h" -#include "waveedit/waveview.h" -#include "esettings.h" -// #include "../ctrl/ctrledit.h" - -//--------------------------------------------------------- -// GraphMidiEditor -//--------------------------------------------------------- - -GraphMidiEditor::GraphMidiEditor(PartList* pl) - : MidiEditor(pl) - { - setIconSize(QSize(ICON_SIZE)); - _followSong = true; - } - -//--------------------------------------------------------- -// ~GraphMidiEditor -//--------------------------------------------------------- - -GraphMidiEditor::~GraphMidiEditor() - { - refreshSettings(); - } - -//--------------------------------------------------------- -// newDefaultSettings -//--------------------------------------------------------- - -EditorSettings* GraphMidiEditor::newDefaultSettings() - { - return new GraphEditorSettings(); - } - -//--------------------------------------------------------- -// initSettings -//--------------------------------------------------------- - -void GraphMidiEditor::initSettings() - { - MidiEditor::initSettings(); -#if 0 //TD - GraphEditorSettings* s = ((GraphEditorSettings*)(settings)); - hscroll->setXmag(s->xmag()); //horizontal zoom - hscroll->setPos(s->pos()); - - if (editorType != ET_WAVEEDIT) - vscroll->setPos(((GraphEditorSettings*)settings)->ypos()); -#endif - } - - -//--------------------------------------------------------- -// refreshSettings -//--------------------------------------------------------- -void GraphMidiEditor::refreshSettings() const - { - MidiEditor::refreshSettings(); -// if (editorType != ET_WAVEEDIT) //hACK! TODO: Separate waveedit class -// ((GraphEditorSettings*)settings)->setYpos(vscroll->pos()); - } - -//--------------------------------------------------------- -// raster -//--------------------------------------------------------- -int GraphMidiEditor::raster() const - { - return settings->raster(); - } - -//--------------------------------------------------------- -// setRaster -//--------------------------------------------------------- -void GraphMidiEditor::setRaster(int val) - { - settings->setRaster(val); -// canvas->setFocus(); // give back focus after kb input - //_raster = val; - } - -//--------------------------------------------------------- -// rasterStep -//--------------------------------------------------------- -int GraphMidiEditor::rasterStep(unsigned tick) const - { - return AL::sigmap.rasterStep(tick, settings->raster()); - } - -//--------------------------------------------------------- -// rasterVal -//--------------------------------------------------------- -unsigned GraphMidiEditor::rasterVal(unsigned v) const - { - return AL::sigmap.raster(v, settings->raster()); - } - -//--------------------------------------------------------- -// rasterVal1 -//--------------------------------------------------------- -unsigned GraphMidiEditor::rasterVal1(unsigned v) const - { - return AL::sigmap.raster1(v, settings->raster()); - } - -//--------------------------------------------------------- -// rasterVal2 -//--------------------------------------------------------- -unsigned GraphMidiEditor::rasterVal2(unsigned v) const - { - return AL::sigmap.raster2(v, settings->raster()); - } - - -//--------------------------------------------------------- -// ExtMidiEditor -//--------------------------------------------------------- - -ExtMidiEditor::ExtMidiEditor(PartList* pl) - : GraphMidiEditor(pl) - { - _curDrumInstrument = -1; - //printf("ExtMidiEditor, defaultSettings: %x\n",&defaultSettings); - } - -//--------------------------------------------------------- -// ~ExtMidiEditor -//--------------------------------------------------------- - -ExtMidiEditor::~ExtMidiEditor() - { - refreshSettings(); - } - -//--------------------------------------------------------- -// updateCtrlEdits -//--------------------------------------------------------- - -void ExtMidiEditor::updateCtrlEdits() const - { -#if 0 //TD - ExtEditorSettings* s = (ExtEditorSettings*) settings; - int j=0; - for (std::list::const_iterator i = ctrlEditList.begin(); i != ctrlEditList.end(); ++i, j++) { - CtrlEdit* ctrlEdit = (*i); - int ctrlid = ctrlEdit->controllerId(); - CtrlEditSettings* ctrl = new CtrlEditSettings(ctrlEdit->getPanelHeight(), ctrlid); - s->setControlEditSettings(j, ctrl); - } -#endif - } - -//--------------------------------------------------------- -// newDefaultSettings -//--------------------------------------------------------- -EditorSettings* ExtMidiEditor::newDefaultSettings() - { - return (EditorSettings*) new ExtEditorSettings(); - } - -//--------------------------------------------------------- -// initSettings -//--------------------------------------------------------- - -void ExtMidiEditor::initSettings() - { - GraphMidiEditor::initSettings(); - - ExtEditorSettings* s = (ExtEditorSettings*) settings; - srec->setChecked(s->steprec()); //set steprec - midiin->setChecked(s->midiin()); //set midiin - int ctrlsize = s->getControlEditSize(); - //Set to 0 again to not get the double amount of ctrledits: - s->setControlEditSize(0); - for (int i=0; i< ctrlsize; i++) { - CtrlEditSettings* settings = s->getControlEditSettings(i); - CtrlEdit* ctrlEdit = addCtrl(); -//TD ctrlEdit->setController(settings->getController()); - } - QList vl; - vl.push_back(400); // dummy: canvas height - for (int i = 0; i < ctrlsize; i++) { - CtrlEditSettings* settings = s->getControlEditSettings(i); - vl.push_back(settings->getHeight()); - } -//TD splitter->setSizes(vl); - } - -//--------------------------------------------------------- -// quantVal -//--------------------------------------------------------- - -int ExtMidiEditor::quantVal(int v) const - { - ExtEditorSettings* s = (ExtEditorSettings*) settings; - //int val = ((v+_quant/2)/_quant)*_quant; - int q = s->quant(); - int val = ((v+q/2)/q)*q; - if (val == 0) - val = q; - return val; - } - -//--------------------------------------------------------- -// readStatus -//--------------------------------------------------------- - -/* -void ExtMidiEditor::readStatus(Xml& xml) - { - if (_pl == 0) - _pl = new PartList; - - for (;;) { - Xml::Token token = xml.parse(); - QString tag = xml.s1(); - switch (token) { - case Xml::Error: - case Xml::End: - return; - case Xml::TagStart: - if (tag == "quant") - _quant = xml.parseInt(); - else if (tag == "raster") - _raster = xml.parseInt(); - else if (tag == "topwin") - TopWin::readStatus(xml); - else - xml.unknown("MidiEditor"); - break; - case Xml::TagEnd: - if (tag == "midieditor") - return; - default: - break; - } - } - } -*/ - -//--------------------------------------------------------- -// setCurDrumInstrument -//--------------------------------------------------------- - -void ExtMidiEditor::setCurDrumInstrument(int instr) - { - _curDrumInstrument = instr; - emit curDrumInstrumentChanged(_curDrumInstrument); - } - -//--------------------------------------------------------- -// writeStatus -//--------------------------------------------------------- -/* -void ExtMidiEditor::writeStatus(int level, Xml& xml) const - { - xml.tag(level++, "midieditor"); - TopWin::writeStatus(level, xml); - xml.intTag(level, "quant", _quant); - xml.intTag(level, "raster", _raster); - xml.tag(level, "/midieditor"); - } -*/ - -//--------------------------------------------------------- -// quant -//--------------------------------------------------------- -int ExtMidiEditor::quant() const - { - ExtEditorSettings* s = (ExtEditorSettings*) settings; - return s->quant(); - } - -//--------------------------------------------------------- -// setQuant -//--------------------------------------------------------- - -void ExtMidiEditor::setQuant(int val) - { - ExtEditorSettings* s = (ExtEditorSettings*) settings; - s->setQuant(val); - canvas->setQuant(val); - canvas->setFocus(); - } - - -//--------------------------------------------------------- -// follow -//--------------------------------------------------------- - -void ExtMidiEditor::follow(int pos) - { - int s, e; - canvas->range(&s, &e); - -// if (pos < e && pos >= s) -// hscroll->setOffset(pos); -// if (pos < s) -// hscroll->setOffset(s); - } - -//--------------------------------------------------------- -// removeCtrl -//--------------------------------------------------------- - -void ExtMidiEditor::removeCtrl(CtrlEdit* ctrl) - { - for (std::list::iterator i = ctrlEditList.begin(); - i != ctrlEditList.end(); ++i) { - if (*i == ctrl) { - ctrlEditList.erase(i); - break; - } - } - ExtEditorSettings* s = (ExtEditorSettings*)settings; - int n = s->getControlEditSize(); - n--; - s->setControlEditSize(n); - } - -//--------------------------------------------------------- -// addCtrl -//--------------------------------------------------------- - -CtrlEdit* ExtMidiEditor::addCtrl() - { -#if 0 //TD - bool expanding = editorType == ET_DRUMEDIT ? true : false; - - CtrlEdit* ctrlEdit = new CtrlEdit(splitter, this, EXTMIDIEDITOR_XSCALE, expanding, "extMidiEditorCtrlEdit"); - splitter->setResizeMode(ctrlEdit, QSplitter::KeepSize); - - // Calculate sizes: - QList sizes = splitter->sizes(); - QList newSizes; - QListIterator i = sizes.begin(); - - int editorHeight = *i - EXTMIDIEDITOR_DEFAULT_CTRLHEIGHT; - int ctrlHeight = EXTMIDIEDITOR_DEFAULT_CTRLHEIGHT; - if (editorHeight < 0) { - ctrlHeight = EXTMIDIEDITOR_DEFAULT_CTRLHEIGHT + editorHeight; - editorHeight = *i - ctrlHeight; - } - if (editorHeight < 0) { - editorHeight = 5; - } - - newSizes.append(editorHeight); - for (i++; i != sizes.end(); i++) { - newSizes.append(*i); - } - newSizes.pop_back(); - newSizes.append(ctrlHeight); - splitter->setSizes(newSizes); - - ctrlEdit->blockSignals(true); - connect(tools2, SIGNAL(toolChanged(int)), ctrlEdit, SLOT(setTool(int))); -// connect(hscroll, SIGNAL(scrollChanged(int)), ctrlEdit, SLOT(setXPos(int))); -// connect(hscroll, SIGNAL(scaleChanged(int)), ctrlEdit, SLOT(setXMag(int))); - connect(ctrlEdit, SIGNAL(timeChanged(unsigned)), SLOT(setTime(unsigned))); - connect(ctrlEdit, SIGNAL(destroyedCtrl(CtrlEdit*)), SLOT(removeCtrl(CtrlEdit*))); -// connect(ctrlEdit, SIGNAL(yposChanged(int)), toolbar, SLOT(setInt(int))); - - ctrlEdit->setTool(tools2->curTool()); -// ctrlEdit->setXPos(hscroll->pos()); -// ctrlEdit->setXMag(hscroll->getScaleValue()); - ctrlEdit->setController(CTRL_VELOCITY); - - ctrlEdit->show(); - ctrlEditList.push_back(ctrlEdit); - ctrlEdit->blockSignals(false); - ExtEditorSettings* s = (ExtEditorSettings*)settings; - int n = s->getControlEditSize(); - n++; - s->setControlEditSize(n); - return ctrlEdit; -#endif - return 0; - } - -//--------------------------------------------------------- -// refreshSettings -//--------------------------------------------------------- -void ExtMidiEditor::refreshSettings() const - { - GraphMidiEditor::refreshSettings(); - ExtEditorSettings* s = (ExtEditorSettings*) settings; - s->setSteprec(canvas->steprec()); - s->setMidiin(canvas->midiin()); -// s->setXmag(hscroll->xmag()); -// s->setPos(hscroll->pos()); - updateCtrlEdits(); - } - -#endif diff --git a/muse/muse/extmidieditor.h b/muse/muse/extmidieditor.h deleted file mode 100644 index b02ac730..00000000 --- a/muse/muse/extmidieditor.h +++ /dev/null @@ -1,120 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2004 Mathias Lundgren -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __EXTMIDIEDITOR_H__ -#define __EXTMIDIEDITOR_H__ - -#include "midiedit/midieditor.h" -#include "esettings.h" - -namespace AL { - class Pos; - }; - -class EditToolBar; -class NoteInfo; -class PartList; -class CtrlEdit; -class Toolbar1; -class Part; - -//--------------------------------------------------------- -// GraphMidiEditor -// -// Base class for graphical editors -// Currently used by WaveEdit and MasterEdit -//--------------------------------------------------------- - -class GraphMidiEditor : public MidiEditor { - Q_OBJECT - - protected: - virtual EditorSettings* newDefaultSettings(); //TODO: = 0 - virtual void initSettings(); - virtual void refreshSettings() const; - QAction* srec; - QAction* midiin; - bool _followSong; - EditToolBar* tools2; - - protected slots: - void setRaster(int val); - - public: - GraphMidiEditor(PartList*); - virtual ~GraphMidiEditor(); - int rasterStep(unsigned tick) const; - unsigned rasterVal(unsigned v) const; - unsigned rasterVal1(unsigned v) const; - unsigned rasterVal2(unsigned v) const; - int raster() const; - bool followSong() const { return _followSong; } - }; - - -//--------------------------------------------------------- -// ExtMidiEditor -// -// Inherited by Drumeditor and Pianoroll -// Not instantiated directly - virtual -//--------------------------------------------------------- - -class ExtMidiEditor : public GraphMidiEditor { - Q_OBJECT - int _curDrumInstrument; // currently selected instrument if drum - // editor - - protected: - std::list ctrlEditList; - virtual EditorSettings* newDefaultSettings(); - virtual void initSettings(); - virtual void refreshSettings() const; - Toolbar1* toolbar; - Part* selPart; - NoteInfo* info; - QToolBar* tools; - EventCanvas* canvas; - WaveView* wview; - - void updateCtrlEdits() const; - - signals: - void curDrumInstrumentChanged(int); //hACK! - - protected slots: - void setQuant(int val); - void follow(int pos); - void removeCtrl(CtrlEdit* ctrl); - virtual CtrlEdit* addCtrl(); - - public slots: - void setCurDrumInstrument(int instr); //hACK! - - public: - ExtMidiEditor(PartList*); - virtual ~ExtMidiEditor(); - int quantVal(int v) const; - int quant() const; - - int curDrumInstrument() const { return _curDrumInstrument; } - }; - -#endif - diff --git a/muse/muse/fastlog.h b/muse/muse/fastlog.h deleted file mode 100644 index 23710a8b..00000000 --- a/muse/muse/fastlog.h +++ /dev/null @@ -1,38 +0,0 @@ -/* Copyright unknown. Code by Laurent de Soras . - */ - -#ifndef __pbd_fastlog_h__ -#define __pbd_fastlog_h__ - -#include /* for HUGE_VAL */ - -static inline float fast_log2 (float val) - { - /* don't use reinterpret_cast<> because that prevents this - from being used by pure C code (for example, GnomeCanvasItems) - */ - union {float f; int i;} t; - t.f = val; - int* const exp_ptr = &t.i; - int x = *exp_ptr; - const int log_2 = ((x >> 23) & 255) - 128; - x &= ~(255 << 23); - x += 127 << 23; - *exp_ptr = x; - val = ((-1.0f/3) * t.f + 2) * t.f - 2.0f/3; - return (val + log_2); - } - -static inline float fast_log (const float val) - { - return (fast_log2 (val) * 0.69314718f); - } - -static inline float fast_log10 (const float val) - { - return fast_log2(val) / 3.312500f; - } - -static inline float minus_infinity() { return -HUGE_VAL; } - -#endif /* __pbd_fastlog_h__ */ diff --git a/muse/muse/fifo.cpp b/muse/muse/fifo.cpp deleted file mode 100644 index 12c2febf..00000000 --- a/muse/muse/fifo.cpp +++ /dev/null @@ -1,183 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "fifo.h" -#include "globals.h" -#include "al/dsp.h" - -//--------------------------------------------------------- -// clear -//--------------------------------------------------------- - -void FifoBase::clear() - { - ridx = 0; - widx = 0; - counter = 0; - } - -//--------------------------------------------------------- -// push -//--------------------------------------------------------- - -void FifoBase::push() - { - widx = (widx + 1) % FIFO_BUFFER; -// q_atomic_increment(&counter); - ++counter; - } - -//--------------------------------------------------------- -// pop -//--------------------------------------------------------- - -void FifoBase::pop() - { - ridx = (ridx + 1) % FIFO_BUFFER; - // q_atomic_decrement(&counter); - --counter; - } - -//--------------------------------------------------------- -// Fifo -//--------------------------------------------------------- - -Fifo::Fifo() - { - nbuffer = FIFO_BUFFER; - buffer = new FifoBuffer*[nbuffer]; - for (int i = 0; i < nbuffer; ++i) - buffer[i] = new FifoBuffer; - clear(); - } - -Fifo::~Fifo() - { - for (int i = 0; i < nbuffer; ++i) - delete buffer[i]; - delete[] buffer; - } - -//--------------------------------------------------------- -// put -// return true if fifo full -//--------------------------------------------------------- - -bool Fifo::put(int segs, unsigned long samples, float** src, unsigned pos) - { - if (counter == nbuffer) { - printf("FIFO %p overrun at 0x%x\n", this, pos); - return true; - } - FifoBuffer* b = buffer[widx]; - int n = segs * samples; - if (b->maxSize < n) { - if (b->buffer) - free(b->buffer); - posix_memalign((void**)&(b->buffer), 16, sizeof(float) * n); - b->maxSize = n; - } - b->size = samples; - b->segs = segs; - b->pos = pos; - for (int i = 0; i < segs; ++i) - AL::dsp->cpy(b->buffer + i * samples, src[i], samples); - push(); - return false; - } - -//--------------------------------------------------------- -// get -// return true if fifo empty -//--------------------------------------------------------- - -bool Fifo::get(int segs, unsigned long samples, float** dst, unsigned pos) - { - FifoBuffer* b; - bool errMsg = true; - for (;;) { - if (counter == 0) { - printf("FIFO %p underrun at 0x%x\n", this, pos); - return true; - } - b = buffer[ridx]; - if (pos == b->pos) - break; - // - // skip all buffer until we get the rigth one or the - // fifo is empty - // -// if (errMsg) - printf("Fifo %p::get(0x%x) n=%d, discard wrong prefetch block(s) 0x%x\n", - this, pos, counter, b->pos); - pop(); - errMsg = false; - } - for (int i = 0; i < segs; ++i) - dst[i] = b->buffer + samples * (i % b->segs); - pop(); - return false; - } - -//--------------------------------------------------------- -// get -// return true if fifo empty -//--------------------------------------------------------- - -bool Fifo::get(int segs, unsigned long samples, float** dst) - { - FifoBuffer* b; - if (counter == 0) { - printf("FIFO %p underrun --cannot happen!\n", this); - return true; - } - b = buffer[ridx]; - for (int i = 0; i < segs; ++i) - dst[i] = b->buffer + samples * (i % b->segs); - pop(); - return false; - } - -//--------------------------------------------------------- -// getWriteBuffer -// return true, if no more buffer available -// (overflow) -//--------------------------------------------------------- - -bool Fifo::getWriteBuffer(int segs, unsigned long samples, float** buf, unsigned pos) - { - if (counter == nbuffer) - return true; - FifoBuffer* b = buffer[widx]; - int n = segs * samples; - if (b->maxSize < n) { - if (b->buffer) - free(b->buffer); - posix_memalign((void**)&(b->buffer), 16, sizeof(float) * n); - b->maxSize = n; - } - for (int i = 0; i < segs; ++i) - buf[i] = b->buffer + i * samples; - b->size = samples; - b->segs = segs; - b->pos = pos; - return false; - } - diff --git a/muse/muse/fifo.h b/muse/muse/fifo.h deleted file mode 100644 index b4c49288..00000000 --- a/muse/muse/fifo.h +++ /dev/null @@ -1,105 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __FIFO_H__ -#define __FIFO_H__ - -const int FIFO_BUFFER = 256; - -//--------------------------------------------------------- -// Fifo -//--------------------------------------------------------- - -struct FifoBuffer { - float* buffer; - int size; - int maxSize; - unsigned pos; - int segs; - - FifoBuffer() { - buffer = 0; - size = 0; - maxSize = 0; - } - }; - -//--------------------------------------------------------- -// FifoBase -// - works only for one reader/writer -// - reader writes ridx -// - writer writes widx -// - reader decrements counter -// - writer increments counter -// - counter increment/decrement must be atomic -//--------------------------------------------------------- - -class FifoBase { - - protected: - int ridx; // read index - int widx; // write index - volatile int counter; // objects in fifo - - public: - FifoBase() { clear(); } - virtual ~FifoBase() {} - void clear(); - virtual void push(); // put object on fifo - virtual void pop(); // remove object from fifo - int count() const { return counter; } - int readIndex() const { return ridx; } - }; - -//--------------------------------------------------------- -// Fifo -//--------------------------------------------------------- - -class Fifo : public FifoBase { - int nbuffer; // max buffer size (fifo-size) - FifoBuffer** buffer; - - public: - Fifo(); - ~Fifo(); - bool put(int, unsigned long, float** buffer, unsigned pos); - bool getWriteBuffer(int, unsigned long, float** buffer, unsigned pos); - bool get(int, unsigned long, float** buffer, unsigned pos); - bool get(int, unsigned long, float** buffer); - }; - -//--------------------------------------------------------- -// Fifo1 -//--------------------------------------------------------- - -class Fifo1 : public FifoBase { - public: - unsigned positions[FIFO_BUFFER]; - - Fifo1() : FifoBase() {} - int setWritePos(unsigned pos) { - positions[widx] = pos; - return widx; - } - unsigned readPos() const { return positions[ridx]; } - }; - -#endif - diff --git a/muse/muse/gconfig.cpp b/muse/muse/gconfig.cpp deleted file mode 100644 index f80542cb..00000000 --- a/muse/muse/gconfig.cpp +++ /dev/null @@ -1,121 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "gconfig.h" - -GlobalConfigValues config = { - ":/style.qss", // default style sheet - { - QColor(255, 232, 140), // part colors - QColor(0xff, 0x00, 0x00), - QColor(0x00, 0xff, 0x00), - QColor(0x00, 0x00, 0xff), - QColor(0xff, 0xff, 0x00), - QColor(0x00, 0xff, 0xff), - QColor(0xff, 0x00, 0xff), - QColor(0x9f, 0xc7, 0xef), - QColor(0x00, 0xff, 0x7f), - QColor(0x7f, 0x00, 0x00), - QColor(0x00, 0x7f, 0x00), - QColor(0x00, 0x00, 0x7f), - QColor(0x7f, 0x7f, 0x3f), - QColor(0x00, 0x7f, 0x7f), - QColor(0x7f, 0x00, 0x7f), - QColor(0x00, 0x7f, 0xff), - QColor(0x00, 0x3f, 0x3f) - }, - QColor(100, 100, 100), // selected Part Bg - QColor(0, 0, 255), // transportHandleColor; - QColor(255, 0, 0), // bigTimeForegroundColor; - QColor(0, 0, 0), // bigTimeBackgroundColor; - QColor(200, 200, 200), // waveEditBackgroundColor; - { - QColor(Qt::white), // outputTrackBg; - QColor(Qt::yellow), // groupTrackBg; - QColor(Qt::green), // waveTrackBg; - QColor(Qt::red), // inputTrackBg; - QColor(Qt::blue), // synthTrackBg; - QColor(Qt::gray), // midi; - QColor(Qt::gray), // midiOut; - QColor(Qt::gray), // midiIn; - QColor(Qt::gray), // midiSynti; - }, - - QColor(0, 0, 0), // mixerBg; - - 384, // division; - 1024, // rtcTicks - -60.0, // minMeter (dB) - 10.0, // maxMeter (dB) - -60.0, // double minSlider (dB) - 10.0, // double maxSlider (dB) - 20, // int guiRefresh; - 2000, // peak hold time (ms) - QString(""), // helpBrowser - true, // extendedMidi - 384, // division for smf export - QString(""), // copyright string for smf export - 1, // smf export file format - START_ASK_FOR_PROJECT, // startMode - QString(""), // start song path - 384, // gui division - QRect(0, 0, 200, 100), // GeometryTransport; - QRect(0, 0, 600, 200), // GeometryBigTime; - QRect(100, 100, 600, 400), // GeometryPianoroll; - QRect(0, 0, 600, 400), // GeometryDrumedit; - { - QRect(0, 0, 300, 500), // Mixer1 - false, true, true, true, - true, true, true, true, true, true - }, - { - QRect(200, 200, 300, 500), // Mixer2 - false, true, true, true, - true, true, true, true, true, true - }, - false, // TransportVisible - false, // BigTimeVisible; - false, // mixerVisible1; - false, // mixerVisible2; - - true, // showSplashScreen - - QColor(0x71, 0x8d, 0xbe), // canvasBgColor - QString(""), // canvasBgPixmap; - false, // canvasUseBgPixmap; - 1, // canvasShowPartType 1 - names, 2 events - 5, // canvasShowPartEvent - false, // canvasShowGrid; - - false, // use JACK freewheel mode - QString("sweep"), // externalWavEditor shell command - - QString(""), // defaultMidiInputDevice - QString(""), // defaultMidiOutputDevice - QString(""), // defaultMidiInstrument - true, // connectToAllMidiDevices - true, // connectToAllMidiTracks - true, // createDefaultMidiInput - QString("MusE/projects"), // projectPath - QString("MusE/templates"), // templatePath - QString("MusE/instruments"), // instrumentPath - QString("MusE/"), // midi import path - QString("MusE/"), // wave import path - }; diff --git a/muse/muse/gconfig.h b/muse/muse/gconfig.h deleted file mode 100644 index b30fdebb..00000000 --- a/muse/muse/gconfig.h +++ /dev/null @@ -1,133 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __CONFIG_H__ -#define __CONFIG_H__ - -#define NUM_PARTCOLORS 17 - -#include "track.h" -#include "al/xml.h" -using AL::Xml; - -enum StartMode { - START_ASK_FOR_PROJECT, - START_LAST_PROJECT, - START_START_PROJECT - }; - -//--------------------------------------------------------- -// MixerConfig -//--------------------------------------------------------- - -struct MixerConfig { - QRect geometry; - bool showMidiTracks; - bool showMidiInPorts; - bool showMidiSyntiPorts; - bool showMidiOutPorts; - bool showOutputTracks; - bool showWaveTracks; - bool showGroupTracks; - bool showInputTracks; - bool showAuxTracks; - bool showSyntiTracks; - - void write(Xml&, const char* name); - void read(QDomNode); - }; - -//--------------------------------------------------------- -// GlobalConfigValues -//--------------------------------------------------------- - -struct GlobalConfigValues { - QString styleSheetFile; - QColor partColors[NUM_PARTCOLORS]; - QColor selectPartBg; - QColor transportHandleColor; - QColor bigTimeForegroundColor; - QColor bigTimeBackgroundColor; - QColor waveEditBackgroundColor; - - QColor trackBg[Track::TRACK_TYPES]; - - QColor mixerBg; - - int division; - int rtcTicks; - double minMeter; - double maxMeter; - double minSlider; - double maxSlider; - int guiRefresh; - int peakHoldTime; // peak meter hold time (ms) - QString helpBrowser; - - bool extendedMidi; // extended smf format - int midiDivision; // division for smf export - QString copyright; // copyright string for smf export - int smfFormat; // smf export file type - - enum StartMode startMode; - QString startProject; // path for start project - int guiDivision; // division for tick display - - QRect geometryTransport; - QRect geometryBigTime; - QRect geometryPianoroll; - QRect geometryDrumedit; - MixerConfig mixer1; - MixerConfig mixer2; - bool transportVisible; - bool bigTimeVisible; - bool mixer1Visible; - bool mixer2Visible; - - bool showSplashScreen; - - QColor canvasBgColor; - QString canvasBgPixmap; - bool canvasUseBgPixmap; - - int canvasShowPartType; // 1 - names, 2 events - int canvasShowPartEvent; // - bool canvasShowGrid; - - bool useJackFreewheelMode; - QString externalWavEditor; - - QString defaultMidiInputDevice; - QString defaultMidiOutputDevice; - QString defaultMidiInstrument; - bool connectToAllMidiDevices; - bool connectToAllMidiTracks; - bool createDefaultMidiInput; - QString projectPath; - QString templatePath; - QString instrumentPath; - QString importMidiPath; - QString importWavePath; - }; - -extern GlobalConfigValues config; - -#endif - diff --git a/muse/muse/globaldefs.h b/muse/muse/globaldefs.h deleted file mode 100644 index 4f72bcc3..00000000 --- a/muse/muse/globaldefs.h +++ /dev/null @@ -1,37 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __GLOBALDEFS_H__ -#define __GLOBALDEFS_H__ - -static const int MAX_CHANNELS = 2; // max audio channels -// const int MIDI_PORTS = 16; // max Number of Midi Ports - -#ifndef MIDI_CHANNELS -#define MIDI_CHANNELS 16 // Channels per Port - -enum MidiInstrumentType { - MT_GENERIC, MT_GM, MT_GS, MT_XG - }; - -#endif - -#endif - diff --git a/muse/muse/globals.cpp b/muse/muse/globals.cpp deleted file mode 100644 index 86871a0c..00000000 --- a/muse/muse/globals.cpp +++ /dev/null @@ -1,133 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "globals.h" -enum AudioState audioState; - -unsigned segmentSize = 1024U; // segmentSize in frames (set by JACK) -int segmentCount = 2; - -bool overrideAudioOutput = false; -bool overrideAudioInput = false; - -QTimer* heartBeatTimer; - -const signed char sharpTab[14][7] = { - { 0, 3, -1, 2, 5, 1, 4 }, - { 0, 3, -1, 2, 5, 1, 4 }, - { 0, 3, -1, 2, 5, 1, 4 }, - { 0, 3, -1, 2, 5, 1, 4 }, - { 2, 5, 1, 4, 7, 3, 6 }, - { 2, 5, 1, 4, 7, 3, 6 }, - { 2, 5, 1, 4, 7, 3, 6 }, - { 4, 0, 3, -1, 2, 5, 1 }, - { 7, 3, 6, 2, 5, 1, 4 }, - { 5, 8, 4, 7, 3, 6, 2 }, - { 3, 6, 2, 5, 1, 4, 7 }, - { 1, 4, 0, 3, 6, 2, 5 }, - { 6, 2, 5, 1, 4, 0, 3 }, - { 0, 3, -1, 2, 5, 1, 4 }, - }; -const signed char flatTab[14][7] = { - { 4, 1, 5, 2, 6, 3, 7 }, - { 4, 1, 5, 2, 6, 3, 7 }, - { 4, 1, 5, 2, 6, 3, 7 }, - { 4, 1, 5, 2, 6, 3, 7 }, - { 6, 3, 7, 4, 8, 5, 9 }, - { 6, 3, 7, 4, 8, 5, 9 }, - { 6, 3, 7, 4, 8, 5, 9 }, - - { 1, 5, 2, 6, 3, 7, 4 }, - { 4, 1, 5, 2, 6, 3, 7 }, - { 2, 6, 3, 7, 4, 8, 5 }, - { 7, 4, 1, 5, 2, 6, 3 }, - { 5, 2, 6, 3, 7, 4, 8 }, - { 3, 0, 4, 1, 5, 2, 6 }, - { 4, 1, 5, 2, 6, 3, 7 }, - }; - -QString museGlobalLib; -QString museGlobalShare; -QString museUser; -QString configName; - -QString lastWavePath("."); -QString lastMidiPath("."); - -bool debugMode = false; -bool debugMsg = false; -bool midiInputTrace = false; -bool midiOutputTrace = false; -int realTimePriority = 50; -bool loadPlugins = true; -bool loadVST = true; -bool loadDSSI = true; -bool midiOnly = false; - -const char* midi_file_pattern[] = { - "Midi/Kar (*.mid *.MID *.kar *.KAR *.mid.gz *.mid.bz2)", - "Midi (*.mid *.MID *.mid.gz *.mid.bz2)", - "Karaoke (*.kar *.KAR *.kar.gz *.kar.bz2)", - "All Files (*)", - 0 - }; -QString medFilePattern = - "med Files (*.med *.med.gz *.med.bz2);;" - "All Files (*)"; - -const char* med_midi_file_pattern[] = { - "med Files (*.med *.med.gz *.med.bz2)", - "Midi/Kar (*.mid *.kar *.mid.gz *.mid.bz2)", - "Midi (*.mid *.mid.gz *.mid.bz2)", - "Karaoke (*.kar *.kar.gz *.kar.bz2)", - "All Files (*)", - 0 - }; -const char* med_file_pattern[] = { - "med Files (*.med *.med.gz *.med.bz2)", - "All Files (*)", - 0 - }; -const char* image_file_pattern[] = { - "(*.jpg *.gif *.png)", - "(*.jpg)", - "(*.gif)", - "(*.png)", - "All Files (*)", - 0 - }; - -const char* ctrl_file_pattern[] = { - "ctrl Files (*.ctrl *.ctrl.gz *.ctrl.bz2)", - "All Files (*)", - 0 - }; - -QAction* undoAction; -QAction* redoAction; - -QAction* loopAction; -QAction* punchinAction; -QAction* punchoutAction; -QAction* recordAction; -QAction* panicAction; - -bool rcEnable = false; - diff --git a/muse/muse/globals.h b/muse/muse/globals.h deleted file mode 100644 index eaf121d8..00000000 --- a/muse/muse/globals.h +++ /dev/null @@ -1,86 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef GLOBALS_H -#define GLOBALS_H - -#include -#include "mtc.h" - -enum AudioState { - AUDIO_STOP, - AUDIO_START1, - AUDIO_START2, - AUDIO_RUNNING - }; -extern enum AudioState audioState; - -extern unsigned segmentSize; -extern int segmentCount; - -extern bool overrideAudioOutput; -extern bool overrideAudioInput; - -class QTimer; -extern QTimer* heartBeatTimer; - -extern const signed char sharpTab[14][7]; -extern const signed char flatTab[14][7]; - -extern QString museGlobalLib; -extern QString museGlobalShare; -extern QString museUser; -extern QString configName; - -extern QString lastWavePath; -extern QString lastMidiPath; - -extern bool debugMode; -extern bool midiInputTrace; -extern bool midiOutputTrace; -extern bool debugMsg; -extern bool debugSync; -extern bool loadPlugins; -extern bool loadVST; -extern bool loadDSSI; -extern bool midiOnly; - -extern int realTimePriority; -extern const char* midi_file_pattern[]; -extern QString medFilePattern; -extern const char* med_file_pattern[]; -extern const char* med_midi_file_pattern[]; -extern const char* image_file_pattern[]; -extern const char* ctrl_file_pattern[]; - -enum { CMD_RANGE_ALL, CMD_RANGE_SELECTED, CMD_RANGE_LOOP }; - -extern QAction* undoAction; -extern QAction* redoAction; - -extern QAction* loopAction; -extern QAction* punchinAction; -extern QAction* punchoutAction; -extern QAction* recordAction; -extern QAction* panicAction; - -extern bool rcEnable; -#endif - diff --git a/muse/muse/gui.h b/muse/muse/gui.h deleted file mode 100644 index 784e58e2..00000000 --- a/muse/muse/gui.h +++ /dev/null @@ -1,54 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __GUI_H__ -#define __GUI_H__ - -// -// GUI constants -// central point of tweaking the gui -// - -// size of horizontal and vertical splitter -// -static const int splitWidth = 6; - -// arranger: -static const int trackRowHeight = 24; -static const int minTrackHeight = trackRowHeight + splitWidth + 1; -static const int defaultTrackHeight = minTrackHeight; -static const int infoHeight = 20; -static const int infoWidth = 140; -static const int trackSeparator = 1; -static const int yTrackOffset = -2; // -4; - -// mixer: -static const int STRIP_WIDTH = 60; -static const int LABEL_HEIGHT = 20; -static const int BUTTON_HEIGHT = STRIP_WIDTH / 3; -static const int ENTRY_HEIGHT = 17; - -static const int ICON_WIDTH = 18; -static const QSize ICON_SIZE(ICON_WIDTH, ICON_WIDTH); - -#endif - - - diff --git a/muse/muse/help.cpp b/muse/muse/help.cpp deleted file mode 100644 index c17581ae..00000000 --- a/muse/muse/help.cpp +++ /dev/null @@ -1,101 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "config.h" -#include "muse.h" -#include "globals.h" -#include "gconfig.h" -#include "icons.h" -#include "help.h" - -//--------------------------------------------------------- -// AboutBoxDialog -//--------------------------------------------------------- - -AboutBoxDialog::AboutBoxDialog() - { - extern int revision; - setupUi(this); - versionLabel->setText("Version: " VERSION); - revisionLabel->setText(QString("Revision: %1").arg(revision)); - } - -//--------------------------------------------------------- -// startHelpBrowser -//--------------------------------------------------------- - -void MusE::startHelpBrowser() - { - QString lang(getenv("LANG")); - QFileInfo museHelp(museGlobalShare + QString("/doc/man-") + lang + QString(".pdf")); - if (!museHelp.isReadable()) { - museHelp.setFile(museGlobalShare + QString("/doc/man-en.pdf")); - if (!museHelp.isReadable()) { - QString info(tr("MusE manual not found at: ")); - info += museHelp.filePath(); - QMessageBox::critical(this, tr("MusE: Open Help"), info); - return; - } - } - QString url("file://" + museHelp.filePath()); - QDesktopServices::openUrl(url); - } - -//--------------------------------------------------------- -// startHelpBrowser -//--------------------------------------------------------- - -void MusE::startHomepageBrowser() - { - QString museHome = QString("http://lmuse.sourceforge.net"); - - QDesktopServices::openUrl(museHome); - } - -//--------------------------------------------------------- -// startBugBrowser -//--------------------------------------------------------- - -void MusE::startBugBrowser() - { - QString museBugPage("http://lmuse.sourceforge.net/bugs.html"); - QDesktopServices::openUrl(museBugPage); - } - -//--------------------------------------------------------- -// about -//--------------------------------------------------------- - -void MusE::about() - { - AboutBoxDialog ab; - ab.show(); - ab.exec(); - } - -//--------------------------------------------------------- -// aboutQt -//--------------------------------------------------------- - -void MusE::aboutQt() - { - QMessageBox::aboutQt(this, QString("MusE")); - } - diff --git a/muse/muse/help.h b/muse/muse/help.h deleted file mode 100644 index c2a54d90..00000000 --- a/muse/muse/help.h +++ /dev/null @@ -1,36 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __HELP_H__ -#define __HELP_H__ - -#include "ui_aboutbox.h" - -//--------------------------------------------------------- -// AboutBoxDialog -//--------------------------------------------------------- - -class AboutBoxDialog : public QDialog, Ui::AboutBox { - public: - AboutBoxDialog(); - }; - -#endif - diff --git a/muse/muse/helper.cpp b/muse/muse/helper.cpp deleted file mode 100644 index 6b534a6d..00000000 --- a/muse/muse/helper.cpp +++ /dev/null @@ -1,47 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "helper.h" - -extern bool hIsB; -static const char* vall[] = { - "c","c#","d","d#","e","f","f#","g","g#","a","a#","h" - }; -static const char* valu[] = { - "C","C#","D","D#","E","F","F#","G","G#","A","A#","H" - }; - -//--------------------------------------------------------- -// pitch2string -//--------------------------------------------------------- - -QString pitch2string(int v) - { - if (v < 0 || v > 127) - return QString("----"); - int octave = (v / 12) - 2; - QString o; - o.sprintf("%d", octave); - int i = v % 12; - QString s(octave < 0 ? valu[i] : vall[i]); - return s + o; - } - - diff --git a/muse/muse/helper.h b/muse/muse/helper.h deleted file mode 100644 index 3f255393..00000000 --- a/muse/muse/helper.h +++ /dev/null @@ -1,27 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __HELPER_H__ -#define __HELPER_H__ - -extern QString pitch2string(int v); - -#endif - diff --git a/muse/muse/icons.cpp b/muse/muse/icons.cpp deleted file mode 100644 index 2fa62f9a..00000000 --- a/muse/muse/icons.cpp +++ /dev/null @@ -1,341 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "globals.h" -#include "gui.h" - -#include "xpm/audio_bounce_to_file.xpm" -#include "xpm/audio_bounce_to_track.xpm" -#include "xpm/audio_restartaudio.xpm" -#include "xpm/edit_midi.xpm" -#include "xpm/midi_edit_instrument.xpm" -#include "xpm/midi_init_instr.xpm" -#include "xpm/midi_local_off.xpm" -#include "xpm/midi_reset_instr.xpm" -#include "xpm/settings_appearance_settings.xpm" -#include "xpm/settings_configureshortcuts.xpm" -#include "xpm/settings_follow_song.xpm" -#include "xpm/settings_globalsettings.xpm" -#include "xpm/settings_metronome.xpm" -#include "xpm/settings_midifileexport.xpm" -#include "xpm/settings_midisync.xpm" - -#include "xpm/play.xpm" - -#include "xpm/stick.xpm" -#include "xpm/wave.xpm" -#include "xpm/cmark.xpm" -#include "xpm/lmark.xpm" -#include "xpm/rmark.xpm" -#include "xpm/steprec.xpm" -#include "xpm/master.xpm" -#include "xpm/filenewS.xpm" -#include "xpm/home.xpm" -#include "xpm/back.xpm" -#include "xpm/forward.xpm" - -#include "xpm/up.xpm" -#include "xpm/down.xpm" -#include "xpm/bold.xpm" -#include "xpm/italic.xpm" -#include "xpm/underlined.xpm" -#include "xpm/midiin.xpm" -#include "xpm/sysex.xpm" -#include "xpm/ctrl.xpm" -#include "xpm/meta.xpm" -#include "xpm/pitch.xpm" -#include "xpm/cafter.xpm" -#include "xpm/pafter.xpm" -#include "xpm/flag.xpm" -#include "xpm/flagS.xpm" -#include "xpm/lock.xpm" -#include "xpm/toc.xpm" -#include "xpm/editcut.xpm" -#include "xpm/editcopy.xpm" -#include "xpm/editpaste.xpm" - -#include "xpm/speaker.xpm" -#include "xpm/buttondown.xpm" -#include "xpm/configure.xpm" - -#include "xpm/mastertrackS.xpm" -#include "xpm/localoffS.xpm" -#include "xpm/miditransformS.xpm" -#include "xpm/midi_plugS.xpm" -#include "xpm/miditransposeS.xpm" -#include "xpm/mixerS.xpm" -#include "xpm/resetS.xpm" -#include "xpm/track_add.xpm" -#include "xpm/track_delete.xpm" -#include "xpm/listS.xpm" -#include "xpm/inputpluginS.xpm" -#include "xpm/cliplistS.xpm" -#include "xpm/mixeraudioS.xpm" -#include "xpm/initS.xpm" - -#include "xpm/addtrack_addmiditrack.xpm" -#include "xpm/addtrack_audiogroup.xpm" -#include "xpm/addtrack_audioinput.xpm" -#include "xpm/addtrack_audiooutput.xpm" -#include "xpm/addtrack_drumtrack.xpm" -#include "xpm/addtrack_wavetrack.xpm" -#include "xpm/edit_drumms.xpm" -#include "xpm/edit_list.xpm" -#include "xpm/edit_mastertrack.xpm" -#include "xpm/edit_track_add.xpm" -#include "xpm/edit_track_del.xpm" -#include "xpm/mastertrack_graphic.xpm" -#include "xpm/mastertrack_list.xpm" -#include "xpm/midi_transform.xpm" -#include "xpm/midi_transpose.xpm" -#include "xpm/select.xpm" -// #include "xpm/select_all.xpm" -#include "xpm/select_all_parts_on_track.xpm" -// #include "xpm/select_deselect_all.xpm" -// #include "xpm/select_inside_loop.xpm" -// #include "xpm/select_invert_selection.xpm" -// #include "xpm/select_outside_loop.xpm" - -#include "xpm/muse_icon.xpm" -#include "xpm/config.xpm" -#include "xpm/minus.xpm" -#include "xpm/plus.xpm" - -QPixmap* mastertrackSIcon; -QPixmap* localoffSIcon; -QPixmap* miditransformSIcon; -QPixmap* midi_plugSIcon; -QPixmap* miditransposeSIcon; -QPixmap* mixerSIcon; -QPixmap* resetSIcon; -QPixmap* track_addIcon; -QPixmap* track_deleteIcon; -QPixmap* listSIcon; -QPixmap* inputpluginSIcon; -QPixmap* cliplistSIcon; -QPixmap* mixerAudioSIcon; -QPixmap* initSIcon; - -QPixmap* playIcon; - -QPixmap* stopIcon; -QPixmap* fforwardIcon; -QPixmap* frewindIcon; -QPixmap* stickIcon; -QPixmap* waveIcon; -QPixmap* markIcon[3]; -QPixmap* steprecIcon; -QPixmap* openIcon; -QPixmap* saveIcon; -QPixmap* masterIcon; -QPixmap* filenewIcon; -QPixmap* filenewIconS; -QPixmap* homeIcon; -QPixmap* backIcon; -QPixmap* forwardIcon; -QPixmap* muteIcon; -QPixmap* upIcon; -QPixmap* downIcon; -QPixmap* boldIcon; -QPixmap* italicIcon; -QPixmap* underlinedIcon; -QPixmap* midiinIcon; -QPixmap* sysexIcon; -QPixmap* ctrlIcon; -QPixmap* metaIcon; -QPixmap* pitchIcon; -QPixmap* cafterIcon; -QPixmap* pafterIcon; -QPixmap* flagIcon; -QPixmap* flagIconS; -QPixmap* lockIcon; -QPixmap* tocIcon; - -QPixmap* speakerIcon; -QPixmap* buttondownIcon; -QPixmap* configureIcon; - -QIcon* editcutIconSet; -QIcon* editcopyIconSet; -QIcon* editpasteIconSet; -QIcon* recordIcon; -QIcon* onOffIcon; -QPixmap* offIcon; - -QPixmap* addtrack_addmiditrackIcon; -QPixmap* addtrack_audiogroupIcon; -QPixmap* addtrack_audioinputIcon; -QPixmap* addtrack_audiooutputIcon; -QPixmap* addtrack_drumtrackIcon; -QPixmap* addtrack_wavetrackIcon; -QPixmap* edit_drummsIcon; -QPixmap* edit_listIcon; -QPixmap* edit_mastertrackIcon; -QPixmap* edit_track_addIcon; -QPixmap* edit_track_delIcon; -QPixmap* mastertrack_graphicIcon; -QPixmap* mastertrack_listIcon; -QPixmap* midi_transformIcon; -QPixmap* midi_transposeIcon; -QPixmap* selectIcon; -// QPixmap* select_allIcon; -QPixmap* select_all_parts_on_trackIcon; -// QPixmap* select_deselect_allIcon; -// QPixmap* select_inside_loopIcon; -// QPixmap* select_invert_selectionIcon; -// QPixmap* select_outside_loopIcon; - -QPixmap* audio_bounce_to_fileIcon; -QPixmap* audio_bounce_to_trackIcon; -QPixmap* audio_restartaudioIcon; -QPixmap* edit_midiIcon; -QPixmap* midi_edit_instrumentIcon; -QPixmap* midi_init_instrIcon; -QPixmap* midi_local_offIcon; -QPixmap* midi_reset_instrIcon; -QPixmap* settings_appearance_settingsIcon; -QPixmap* settings_configureshortcutsIcon; -QPixmap* settings_follow_songIcon; -QPixmap* settings_globalsettingsIcon; -QPixmap* settings_metronomeIcon; -QPixmap* settings_midifileexportIcon; -QPixmap* settings_midisyncIcon; - -QPixmap* museIcon; -QPixmap* museIcon64; -QPixmap* configIcon; -QPixmap* minusIcon; -QPixmap* plusIcon; - -//--------------------------------------------------------- -// initIcons -//--------------------------------------------------------- - -void initIcons() - { - playIcon = new QPixmap(play_xpm); - - stickIcon = new QPixmap(stick_xpm); - waveIcon = new QPixmap(wave_xpm); - markIcon[0] = new QPixmap(cmark_xpm); - markIcon[1] = new QPixmap(lmark_xpm); - markIcon[2] = new QPixmap(rmark_xpm); - steprecIcon = new QPixmap(steprec_xpm); - saveIcon = new QPixmap(":/xpm/filesave.png"); - openIcon = new QPixmap(":/xpm/fileopen.png"); - masterIcon = new QPixmap(master_xpm); - filenewIcon = new QPixmap(":/xpm/filenew.png"); - filenewIconS = new QPixmap(filenewS_xpm); - homeIcon = new QPixmap(home_xpm); - backIcon = new QPixmap(back_xpm); - forwardIcon = new QPixmap(forward_xpm); - upIcon = new QPixmap(up_xpm); - downIcon = new QPixmap(down_xpm); - boldIcon = new QPixmap(bold_xpm); - italicIcon = new QPixmap(italic_xpm); - underlinedIcon = new QPixmap(underlined_xpm); - midiinIcon = new QPixmap(midiin_xpm); - sysexIcon = new QPixmap(sysex_xpm); - ctrlIcon = new QPixmap(ctrl_xpm); - metaIcon = new QPixmap(meta_xpm); - pitchIcon = new QPixmap(pitch_xpm); - cafterIcon = new QPixmap(cafter_xpm); - pafterIcon = new QPixmap(pafter_xpm); - flagIcon = new QPixmap(flag_xpm); - flagIconS = new QPixmap(flagS_xpm); - lockIcon = new QPixmap(lock_xpm); - tocIcon = new QPixmap(toc_xpm); - - speakerIcon = new QPixmap(speaker_xpm); - buttondownIcon = new QPixmap(buttondown_xpm); - configureIcon = new QPixmap(configure_xpm); - - editcutIconSet = new QIcon(QPixmap(editcut_xpm)); - editcopyIconSet = new QIcon(QPixmap(editcopy_xpm)); - editpasteIconSet = new QIcon(QPixmap(editpaste_xpm)); - - mastertrackSIcon = new QPixmap(mastertrackS_xpm); - localoffSIcon = new QPixmap(localoffS_xpm); - miditransformSIcon = new QPixmap(miditransformS_xpm); - midi_plugSIcon = new QPixmap(midi_plugS_xpm); - miditransposeSIcon = new QPixmap(miditransposeS_xpm); - mixerSIcon = new QPixmap(mixerS_xpm); - resetSIcon = new QPixmap(resetS_xpm); - track_addIcon = new QPixmap(track_add_xpm); - track_deleteIcon = new QPixmap(track_delete_xpm); - listSIcon = new QPixmap(listS_xpm); - inputpluginSIcon = new QPixmap(inputpluginS_xpm); - cliplistSIcon = new QPixmap(cliplistS_xpm); - mixerAudioSIcon = new QPixmap(mixerAudioS_xpm); - initSIcon = new QPixmap(initS_xpm); - - addtrack_addmiditrackIcon = new QPixmap(addtrack_addmiditrack_xpm); - addtrack_audiogroupIcon = new QPixmap(addtrack_audiogroup_xpm); - addtrack_audioinputIcon = new QPixmap(addtrack_audioinput_xpm); - addtrack_audiooutputIcon = new QPixmap(addtrack_audiooutput_xpm); - addtrack_drumtrackIcon = new QPixmap(addtrack_drumtrack_xpm); - addtrack_wavetrackIcon = new QPixmap(addtrack_wavetrack_xpm); - edit_drummsIcon = new QPixmap(edit_drumms_xpm); - edit_listIcon = new QPixmap(edit_list_xpm); - edit_mastertrackIcon = new QPixmap(edit_mastertrack_xpm); - edit_track_addIcon = new QPixmap(edit_track_add_xpm); - edit_track_delIcon = new QPixmap(edit_track_del_xpm); - mastertrack_graphicIcon = new QPixmap(mastertrack_graphic_xpm); - mastertrack_listIcon = new QPixmap(mastertrack_list_xpm); - midi_transformIcon = new QPixmap(midi_transform_xpm); - midi_transposeIcon = new QPixmap(midi_transpose_xpm); - selectIcon = new QPixmap(select_xpm); -// select_allIcon = new QPixmap(select_all_xpm); - select_all_parts_on_trackIcon = new QPixmap(select_all_parts_on_track_xpm); -// select_deselect_allIcon = new QPixmap(select_deselect_all); -// select_inside_loopIcon = new QPixmap(select_inside_loop_xpm); -// select_invert_selectionIcon = new QPixmap(select_invert_selection); -// select_outside_loopIcon = new QPixmap(select_outside_loop_xpm); - - audio_bounce_to_fileIcon = new QPixmap(audio_bounce_to_file_xpm); - audio_bounce_to_trackIcon = new QPixmap(audio_bounce_to_track_xpm); - audio_restartaudioIcon = new QPixmap(audio_restartaudio_xpm); - edit_midiIcon = new QPixmap(edit_midi_xpm); - midi_edit_instrumentIcon = new QPixmap(midi_edit_instrument_xpm); - midi_init_instrIcon = new QPixmap(midi_init_instr_xpm); - midi_local_offIcon = new QPixmap(midi_local_off_xpm); - midi_reset_instrIcon = new QPixmap(midi_reset_instr_xpm); - settings_appearance_settingsIcon = new QPixmap(settings_appearance_settings_xpm); - settings_configureshortcutsIcon = new QPixmap(settings_configureshortcuts_xpm); - settings_follow_songIcon = new QPixmap(settings_follow_song_xpm); - settings_globalsettingsIcon = new QPixmap(settings_globalsettings_xpm); - settings_metronomeIcon = new QPixmap(settings_metronome_xpm); - settings_midifileexportIcon = new QPixmap(settings_midifileexport_xpm); - settings_midisyncIcon = new QPixmap(settings_midisync_xpm); - - museIcon = new QPixmap(muse_icon_xpm); - configIcon = new QPixmap(config_xpm); - minusIcon = new QPixmap(minus_xpm); - plusIcon = new QPixmap(plus_xpm); - - recordIcon = new QIcon; - recordIcon->addFile(":/xpm/recordOn.svg", ICON_SIZE, QIcon::Normal, QIcon::On); - recordIcon->addFile(":/xpm/recordOff.svg", ICON_SIZE, QIcon::Normal, QIcon::Off); - - onOffIcon = new QIcon; - onOffIcon->addFile(":/xpm/on.svg", ICON_SIZE, QIcon::Normal, QIcon::On); - onOffIcon->addFile(":/xpm/off.svg", ICON_SIZE, QIcon::Normal, QIcon::Off); - } - diff --git a/muse/muse/icons.h b/muse/muse/icons.h deleted file mode 100644 index 788f0ad0..00000000 --- a/muse/muse/icons.h +++ /dev/null @@ -1,134 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef ICONS_H -#define ICONS_H - -extern QPixmap* playIcon; -extern QPixmap* stickIcon; -extern QPixmap* waveIcon; -extern QPixmap* markIcon[3]; - -extern QPixmap* cutIcon; -extern QPixmap* steprecIcon; -extern QPixmap* glueIcon; -extern QPixmap* drawIcon; - -extern QPixmap* quantIcon; -extern QPixmap* openIcon; -extern QPixmap* saveIcon; -extern QPixmap* archiveIcon; -extern QPixmap* findIcon; -extern QPixmap* masterIcon; -extern QPixmap* filenewIcon; -extern QPixmap* filenewIconS; -extern QPixmap* homeIcon; -extern QPixmap* backIcon; -extern QPixmap* forwardIcon; -extern QPixmap* upIcon; -extern QPixmap* downIcon; -extern QPixmap* boldIcon; -extern QPixmap* italicIcon; -extern QPixmap* underlinedIcon; -extern QPixmap* midiinIcon; -extern QPixmap* sysexIcon; -extern QPixmap* ctrlIcon; -extern QPixmap* metaIcon; -extern QPixmap* pitchIcon; -extern QPixmap* cafterIcon; -extern QPixmap* pafterIcon; -extern QPixmap* flagIcon; -extern QPixmap* flagIconS; -extern QPixmap* lockIcon; -extern QPixmap* tocIcon; - -extern QPixmap* speakerIcon; -extern QPixmap* buttondownIcon; -extern QPixmap* configureIcon; - -extern QIcon* editcutIconSet; -extern QIcon* editcopyIconSet; -extern QIcon* editpasteIconSet; - -extern QPixmap* offIcon; - -extern QPixmap* mastertrackSIcon; -extern QPixmap* localoffSIcon; -extern QPixmap* miditransformSIcon; -extern QPixmap* midi_plugSIcon; -extern QPixmap* miditransposeSIcon; -extern QPixmap* mixerSIcon; -extern QPixmap* resetSIcon; -extern QPixmap* track_addIcon; -extern QPixmap* track_deleteIcon; -extern QPixmap* listSIcon; -extern QPixmap* inputpluginSIcon; -extern QPixmap* cliplistSIcon; -extern QPixmap* mixerAudioSIcon; -extern QPixmap* initSIcon; - -extern QPixmap* addtrack_addmiditrackIcon; -extern QPixmap* addtrack_audiogroupIcon; -extern QPixmap* addtrack_audioinputIcon; -extern QPixmap* addtrack_audiooutputIcon; -extern QPixmap* addtrack_drumtrackIcon; -extern QPixmap* addtrack_wavetrackIcon; -extern QPixmap* edit_drummsIcon; -extern QPixmap* edit_listIcon; -extern QPixmap* edit_mastertrackIcon; -extern QPixmap* edit_track_addIcon; -extern QPixmap* edit_track_delIcon; -extern QPixmap* mastertrack_graphicIcon; -extern QPixmap* mastertrack_listIcon; -extern QPixmap* midi_transformIcon; -extern QPixmap* midi_transposeIcon; -extern QPixmap* selectIcon; -// extern QPixmap* select_allIcon; -extern QPixmap* select_all_parts_on_trackIcon; -// extern QPixmap* select_deselect_allIcon; -// extern QPixmap* select_inside_loopIcon; -// extern QPixmap* select_invert_selectionIcon; -// extern QPixmap* select_outside_loopIcon; - -extern QPixmap* audio_bounce_to_fileIcon; -extern QPixmap* audio_bounce_to_trackIcon; -extern QPixmap* audio_restartaudioIcon; -extern QPixmap* edit_midiIcon; -extern QPixmap* midi_edit_instrumentIcon; -extern QPixmap* midi_init_instrIcon; -extern QPixmap* midi_local_offIcon; -extern QPixmap* midi_reset_instrIcon; -extern QPixmap* settings_appearance_settingsIcon; -extern QPixmap* settings_configureshortcutsIcon; -extern QPixmap* settings_follow_songIcon; -extern QPixmap* settings_globalsettingsIcon; -extern QPixmap* settings_metronomeIcon; -extern QPixmap* settings_midifileexportIcon; -extern QPixmap* settings_midisyncIcon; - -extern QPixmap* museIcon; -extern QPixmap* configIcon; -extern QPixmap* minusIcon; -extern QPixmap* plusIcon; - -extern QIcon* recordIcon; -extern QIcon* onOffIcon; -#endif - diff --git a/muse/muse/importmidi.cpp b/muse/muse/importmidi.cpp deleted file mode 100644 index 0bd33df8..00000000 --- a/muse/muse/importmidi.cpp +++ /dev/null @@ -1,589 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "globals.h" -#include "muse.h" -#include "song.h" -#include "widgets/filedialog.h" -#include "midi.h" -#include "midifile.h" -#include "transport.h" -#include "midiedit/drummap.h" -#include "al/sig.h" -#include "al/tempo.h" -#include "instruments/minstrument.h" -#include "gconfig.h" -#include "part.h" -#include "importmidi.h" -#include "projectdialog.h" -#include "templatedialog.h" -#include "audio.h" -#include "mixer.h" -#include "arranger.h" -#include "midictrl.h" -#include "midiinport.h" -#include "midioutport.h" - -//--------------------------------------------------------- -// ImportMidiDialog -//--------------------------------------------------------- - -ImportMidiDialog::ImportMidiDialog(QWidget* parent) - : QDialog(parent) - { - setupUi(this); - bg = new QButtonGroup(this); - bg->setExclusive(true); - bg->addButton(addToProject, 0); - bg->addButton(createNewProject, 1); - createNewProject->setChecked(true); - connect(selectTemplate,SIGNAL(clicked()), SLOT(selectTemplateClicked())); - connect(selectProject, SIGNAL(clicked()), SLOT(selectProjectClicked())); - } - -//--------------------------------------------------------- -// selectTemplateClicked -//--------------------------------------------------------- - -void ImportMidiDialog::selectTemplateClicked() - { - TemplateDialog templateDialog; - templateDialog.setTemplatePath(templateName->text()); - int rv = templateDialog.exec(); - if (rv == 0) - return; - templateName->setText(templateDialog.templatePath()); - } - -//--------------------------------------------------------- -// selectProjectClicked -//--------------------------------------------------------- - -void ImportMidiDialog::selectProjectClicked() - { - ProjectDialog projectDialog; - projectDialog.setProjectName(projectName->text()); - int rv = projectDialog.exec(); - if (rv == 0) - return; - projectName->setText(projectDialog.projectName()); - } - -//--------------------------------------------------------- -// setProjectName -//--------------------------------------------------------- - -void ImportMidiDialog::setProjectName(const QString& name) - { - projectName->setText(name); - } - -//--------------------------------------------------------- -// setTemplateName -//--------------------------------------------------------- - -void ImportMidiDialog::setTemplateName(const QString& name) - { - templateName->setText(name); - } - -//--------------------------------------------------------- -// importMidi -//--------------------------------------------------------- - -void MusE::importMidi() - { - importMidi(QString()); - } - -void MusE::importMidi(const QString &file) - { - QString fn; - QStringList pattern; - - const char** s = midi_file_pattern; - while (*s) - pattern << *s++; - - if (file.isEmpty()) { - fn = getOpenFileName(lastMidiPath, pattern, this, - tr("MusE: Import Midi")); - lastMidiPath = fn; - if (fn.isEmpty()) - return; - } - else - fn = file; - - QFileInfo fi(fn); - - ImportMidiDialog mid(this); - mid.setProjectName(fi.baseName()); - mid.setTemplateName(""); - - if (mid.exec() == 0) - return; - - if (mid.doCreateNewProject()) { - QString header = tr("MusE: import midi file"); - QString path(mid.projectName->text()); - QDir pd(QDir::homePath() + "/" + config.projectPath + "/" + path); - - if (leaveProject()) - return; - if (!pd.mkdir(pd.path())) { - QString s(tr("Cannot create project folder <%1>")); - QMessageBox::critical(this, header, s.arg(pd.path())); - return; - } - if (audio->isPlaying()) { - audio->msgPlay(false); - while (audio->isPlaying()) - qApp->processEvents(); - } - addProject(path); // add to history - seqStop(); - if (mixer1) - mixer1->clear(); - if (mixer2) - mixer2->clear(); - //=========================================================== - // - // close all toplevel windows - // - foreach(QWidget* w, QApplication::topLevelWidgets()) { - if (!w->isVisible()) - continue; - if (strcmp("DrumEdit", w->metaObject()->className()) == 0) - w->close(); - else if (strcmp("PianoRoll", w->metaObject()->className()) == 0) - w->close(); - else if (strcmp("MasterEdit", w->metaObject()->className()) == 0) - w->close(); - else if (strcmp("WaveEdit", w->metaObject()->className()) == 0) - w->close(); - else if (strcmp("ListEdit", w->metaObject()->className()) == 0) - w->close(); - } - emit startLoadSong(); - song->setProjectPath(path); - song->clear(false); - song->setCreated(true); - - QString s = mid.templateName->text(); - bool rv = true; - if (!s.isEmpty()) { - QFile f(s); - if (f.open(QIODevice::ReadOnly)) { - rv = song->read(&f); - f.close(); - } - else { - QString msg(tr("Cannot open template file\n%1")); - QMessageBox::critical(this, header, msg.arg(s)); - } - } - if (!rv) { - QString msg(tr("File <%1> read error")); - QMessageBox::critical(this, header, msg.arg(s)); - } - addMidiFile(fn); - - tr_id->setChecked(config.transportVisible); - bt_id->setChecked(config.bigTimeVisible); - - // - // dont emit song->update(): - song->blockSignals(true); - - showBigtime(config.bigTimeVisible); - showMixer1(config.mixer1Visible); - showMixer2(config.mixer2Visible); - if (mixer1 && config.mixer1Visible) - mixer1->setUpdateMixer(); - if (mixer2 && config.mixer2Visible) - mixer2->setUpdateMixer(); - - if (config.transportVisible) - transport->show(); - transport->move(config.geometryTransport.topLeft()); - showTransport(config.transportVisible); - - song->blockSignals(false); - - transport->setMasterFlag(song->masterFlag()); - punchinAction->setChecked(song->punchin()); - punchoutAction->setChecked(song->punchout()); - loopAction->setChecked(song->loop()); - clipboardChanged(); // enable/disable "Paste" - song->setLen(song->len()); // emit song->lenChanged() signal - - // - // add connected channels - // - TrackList* tl = song->tracks(); -#if 0 - MidiChannelList* mcl = song->midiChannel(); - for (iMidiChannel i = mcl->begin(); i != mcl->end(); ++i) { - MidiChannel* mc = (MidiChannel*)*i; - if (mc->noInRoute() || song->trackExists(mc)) - continue; - tl->push_back(mc); - } -#endif - - selectionChanged(); // enable/disable "Copy" & "Paste" - arranger->endLoadSong(); - song->updatePos(); - // - // send "cur" controller values to devices - // - - for (iTrack i = tl->begin(); i != tl->end(); ++i) { - Track* track = *i; - track->blockSignals(true); - CtrlList* cl = track->controller(); - for (iCtrl ic = cl->begin(); ic != cl->end(); ++ic) { - Ctrl* ctrl = ic->second; - if (ctrl->type() & Ctrl::INT) { - CVal val; - val = ctrl->curVal(); - ctrl->setCurVal(CTRL_VAL_UNKNOWN); - song->setControllerVal(track, ctrl, val); - } - } - track->blockSignals(false); - } - setWindowTitle(QString("MusE: Song: ") + path); - seqStart(); - audio->msgSeek(song->cPos()); - } - else { - // add to project - addMidiFile(fn); - song->update(-1); - } - } - -//--------------------------------------------------------- -// addMidiFile -//--------------------------------------------------------- - -void MusE::addMidiFile(const QString name) - { - QFile* fp = fileOpen(this, name, QString(".mid"), QIODevice::ReadOnly); - if (fp == 0) - return; - MidiFile mf; - bool rv = mf.read(fp); - fp->close(); - delete fp; - - if (rv) { - QString s(tr("reading midifile\n ")); - s += name; - s += tr("\nfailed: "); - s += mf.error(); - QMessageBox::critical(this, QString("MusE"), s); - return; - } - MidiFileTrackList* etl = mf.trackList(); - int division = mf.division(); - - MidiOutPort* outPort = 0; - - if (song->midiOutPorts()->empty()) { - outPort = new MidiOutPort(); - outPort->setDefaultName(); - song->insertTrack0(outPort, -1); - - // - // set preferred instrument - // - MidiInstrument* instr = 0; // genericMidiInstrument; - for (iMidiInstrument mi = midiInstruments.begin(); mi != midiInstruments.end(); ++mi) { - if ((*mi)->iname() == config.defaultMidiInstrument) { - instr = *mi; - break; - } - } - - // - // if midi file is GM/GS/XG this overrides the preferred - // instrument setting - - if (mf.midiType() != MT_GENERIC) { - MidiInstrument* instr2 = 0; - for (iMidiInstrument i = midiInstruments.begin(); i != midiInstruments.end(); ++i) { - MidiInstrument* mi = *i; - switch(mf.midiType()) { - case MT_GM: - if (mi->iname() == "GM") - instr2 = mi; - break; - case MT_GS: - if (mi->iname() == "GS") - instr2 = mi; - break; - case MT_XG: - if (mi->iname() == "XG") - instr2 = mi; - break; - case MT_GENERIC: // cannot happen - break; - } - if (instr2) - break; - } - if (instr2) - instr = instr2; - } - if (instr == 0) - instr = genericMidiInstrument; - outPort->setInstrument(instr); - } - else - outPort = song->midiOutPorts()->front(); - - // - // create MidiTrack and copy events to ->events() - // - combine note on/off events - // - calculate tick value for internal resolution - // - - foreach(const MidiFileTrack* t, *etl) { - const MidiEventList& el = t->events; - if (el.empty()) - continue; - // - // if we split the track, SYSEX and META events go into - // the first target track - - bool first = true; - for (int channel = 0; channel < MIDI_CHANNELS; ++channel) { - // - // check if there are any events for channel in track: - // - iMidiEvent i; - for (i = el.begin(); i != el.end(); ++i) { - MidiEvent ev = *i; - if (ev.type() != ME_SYSEX && ev.type() != ME_META && ev.channel() == channel) - break; - } - if (i == el.end()) - continue; - - MidiTrack* track = new MidiTrack(); - if (t->isDrumTrack) - track->setUseDrumMap(true); -//TODOB track->outRoutes()->push_back(Route(outPort->channel(channel), -1, Route::TRACK)); -// if (inPort && config.connectToAllMidiTracks) { -// for (int ch = 0; ch < MIDI_CHANNELS; ++ch) { -// Route src(inPort, ch, Route::TRACK); -// track->inRoutes()->push_back(src); -// } -// } - - EventList* mel = track->events(); - buildMidiEventList(mel, &el, track, channel, division, first); - first = false; - - for (iEvent i = mel->begin(); i != mel->end(); ++i) { - Event event = i->second; - if (event.type() == Controller) { - int ctrl = event.dataA(); - MidiInstrument* instr = outPort->instrument(); - track->addMidiController(instr, ctrl); - CVal val; - val.i = event.dataB(); - track->addControllerVal(ctrl, event.tick(), val); - } - } - processTrack(track); - if (track->name().isEmpty()) - track->setDefaultName(); - song->insertTrack0(track, -1); - } - if (first) { - // - // track does only contain non-channel messages - // (SYSEX or META) - // - MidiTrack* track = new MidiTrack(); - EventList* mel = track->events(); - buildMidiEventList(mel, &el, track, 0, division, true); - processTrack(track); - if (track->name().isEmpty()) - track->setDefaultName(); - song->insertTrack0(track, -1); - } - } - - TrackList* tl = song->tracks(); - if (!tl->empty()) { - Track* track = tl->front(); - track->setSelected(true); - } - unsigned int l = 1; - MidiTrackList* mtl = song->midis(); - for (iMidiTrack t = mtl->begin(); t != mtl->end(); ++t) { - MidiTrack* track = *t; - PartList* parts = track->parts(); - for (iPart p = parts->begin(); p != parts->end(); ++p) { - unsigned last = p->second->tick() + p->second->lenTick(); - if (last > l) - l = last; - } - } - song->setLen(l); - AL::TimeSignature sig = AL::sigmap.timesig(0); - int z = sig.z; - int n = sig.n; - - transport->setTimesig(z, n); -// int tempo = AL::tempomap.tempo(0); -// transport->setTempo(tempo); - - bool masterF = !AL::tempomap.empty(); - song->setMasterFlag(masterF); - transport->setMasterFlag(masterF); - - song->updatePos(); - } - -//--------------------------------------------------------- -// processTrack -// divide events into parts -//--------------------------------------------------------- - -void MusE::processTrack(MidiTrack* track) - { - EventList* tevents = track->events(); - if (tevents->empty()) - return; - - //--------------------------------------------------- - // create parts - // Break midi tracks into parts. - // A new part is created when a gap of at least - // one measure is detected. Part len is aligned - // to one measure. - //--------------------------------------------------- - - PartList* pl = track->parts(); - - int lastTick = 0; - for (iEvent i = tevents->begin(); i != tevents->end(); ++i) { - Event event = i->second; - int epos = event.tick() + event.lenTick(); - if (epos > lastTick) - lastTick = epos; - } - - int len = song->roundUpBar(lastTick+1); - int bar2, beat; - unsigned tick; - AL::sigmap.tickValues(len, &bar2, &beat, &tick); - - QString partname = track->name(); - - int lastOff = 0; - int st = -1; // start tick current part - int x1 = 0; // start tick current measure - int x2 = 0; // end tick current measure - - for (int bar = 0; bar < bar2; ++bar, x1 = x2) { - x2 = AL::sigmap.bar2tick(bar+1, 0, 0); - if (lastOff > x2) { - // this measure is busy! - continue; - } - iEvent i1 = tevents->lower_bound(x1); - iEvent i2 = tevents->lower_bound(x2); - - if (i1 == i2) { // empty? - if (st != -1) { - Part* part = new Part(track); - part->ref(); - part->setType(AL::TICKS); - part->setTick(st); - part->setLenTick(x1-st); - part->setName(partname); - pl->add(part); - st = -1; - } - } - else { - if (st == -1) - st = x1; // begin new part - //HACK: - //lastOff: - for (iEvent i = i1; i != i2; ++i) { - Event event = i->second; - if (event.type() == Note) { - int off = event.tick() + event.lenTick(); - if (off > lastOff) - lastOff = off; - } - } - } - } - if (st != -1) { - Part* part = new Part(track); - part->ref(); - part->setType(AL::TICKS); - part->setTick(st); - part->setLenTick(x2-st); - part->setName(partname); - pl->add(part); - } - - //------------------------------------------------------------- - // assign events to parts - //------------------------------------------------------------- - - for (iPart p = pl->begin(); p != pl->end(); ++p) { - Part* part = p->second; - int stick = part->tick(); - int etick = part->tick() + part->lenTick(); - iEvent r1 = tevents->lower_bound(stick); - iEvent r2 = tevents->lower_bound(etick); - int startTick = part->tick(); - - EventList* el = part->events(); - for (iEvent i = r1; i != r2; ++i) { - Event ev = i->second; - int ntick = ev.tick() - startTick; - ev.setTick(ntick); - el->add(ev, ntick); - } - tevents->erase(r1, r2); - } - - if (tevents->size()) - printf("-----------events left: %zd\n", tevents->size()); - for (iEvent i = tevents->begin(); i != tevents->end(); ++i) { - printf("%d===\n", i->first); - i->second.dump(); - } - // all events should be processed: - assert(tevents->empty()); - } - diff --git a/muse/muse/importmidi.h b/muse/muse/importmidi.h deleted file mode 100644 index b7aa1571..00000000 --- a/muse/muse/importmidi.h +++ /dev/null @@ -1,46 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __IMPORTMIDI_H__ -#define __IMPORTMIDI_H__ - -#include "ui_importmidi.h" - -//--------------------------------------------------------- -// ImportMidiDialog -//--------------------------------------------------------- - -class ImportMidiDialog : public QDialog, public Ui::ImportMidiDialogBase { - Q_OBJECT - QButtonGroup* bg; - - private slots: - void selectProjectClicked(); - void selectTemplateClicked(); - - public: - ImportMidiDialog(QWidget*); - void setProjectName(const QString&); - void setTemplateName(const QString&); - bool doCreateNewProject() const { return bg->checkedId() == 1; } - }; - - -#endif diff --git a/muse/muse/importmidi.ui b/muse/muse/importmidi.ui deleted file mode 100644 index ccf22220..00000000 --- a/muse/muse/importmidi.ui +++ /dev/null @@ -1,200 +0,0 @@ - - ImportMidiDialogBase - - - - 0 - 0 - 312 - 185 - - - - Import Midi File - - - - 9 - - - 6 - - - - - add to current project - - - - - - - create new project: - - - true - - - - - - - 0 - - - 6 - - - - - select project name - - - ... - - - :/xpm/filenew.png - - - - - - - Project Name: - - - - - - - select template - - - ... - - - :/xpm/filenew.png - - - - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 30 - 20 - - - - - - - - Template: - - - - - - - - - - - - Qt::Vertical - - - - 20 - 31 - - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - - 131 - 31 - - - - - - - - OK - - - - - - - Cancel - - - - - - - - - - - - - okButton - clicked() - ImportMidiDialogBase - accept() - - - 278 - 253 - - - 96 - 254 - - - - - cancelButton - clicked() - ImportMidiDialogBase - reject() - - - 369 - 253 - - - 179 - 282 - - - - - diff --git a/muse/muse/instruments/CMakeLists.txt b/muse/muse/instruments/CMakeLists.txt deleted file mode 100644 index b86764d4..00000000 --- a/muse/muse/instruments/CMakeLists.txt +++ /dev/null @@ -1,41 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -QT4_WRAP_CPP ( instruments_mocs - minstrument.h editinstrument.h - ) - -QT4_WRAP_UI ( instruments_ui_headers - editinstrument.ui - ) - -add_library ( instruments STATIC - minstrument.cpp - editinstrument.cpp - minstrument.h - editinstrument.h - ${instruments_mocs} - ${instruments_ui_headers} - ) - -set_target_properties( instruments - PROPERTIES COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all.h" - ) - diff --git a/muse/muse/instruments/editinstrument.cpp b/muse/muse/instruments/editinstrument.cpp deleted file mode 100644 index 823a20e3..00000000 --- a/muse/muse/instruments/editinstrument.cpp +++ /dev/null @@ -1,844 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "editinstrument.h" -#include "minstrument.h" -#include "ctrl.h" -#include "midictrl.h" -#include "al/xml.h" -#include "gconfig.h" - -extern int string2sysex(const QString& s, unsigned char** data); -extern QString sysex2string(int len, unsigned char* data); - -//--------------------------------------------------------- -// EditInstrument -//--------------------------------------------------------- - -EditInstrument::EditInstrument(QWidget* parent) - : QMainWindow(parent) - { - setupUi(this); - // populate instrument list - for (iMidiInstrument i = midiInstruments.begin(); i != midiInstruments.end(); ++i) { - QListWidgetItem* item = new QListWidgetItem((*i)->iname()); - QVariant v = qVariantFromValue((void*)(*i)); - item->setData(Qt::UserRole, v); - instrumentList->addItem(item); - } - instrumentList->setItemSelected(instrumentList->item(0), true); - connect(instrumentList, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), - SLOT(instrumentChanged(QListWidgetItem*,QListWidgetItem*))); - connect(patchView, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), - SLOT(patchChanged(QTreeWidgetItem*, QTreeWidgetItem*))); - instrumentChanged(instrumentList->item(0), instrumentList->item(0)); - connect(listController, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), - SLOT(controllerChanged(QListWidgetItem*, QListWidgetItem*))); - connect(sysexList, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), - SLOT(sysexChanged(QListWidgetItem*, QListWidgetItem*))); - connect(instrumentName, SIGNAL(textChanged(const QString&)), SLOT(instrumentNameChanged(const QString&))); - connect(fileSaveAsAction, SIGNAL(triggered()), SLOT(fileSaveAs())); - connect(fileSaveAction, SIGNAL(triggered()), SLOT(fileSave())); - connect(fileNewAction, SIGNAL(triggered()), SLOT(fileNew())); - connect(fileExitAction, SIGNAL(triggered()), SLOT(close())); - - connect(deletePatch, SIGNAL(clicked()), SLOT(deletePatchClicked())); - connect(newPatch, SIGNAL(clicked()), SLOT(newPatchClicked())); - connect(newGroup, SIGNAL(clicked()), SLOT(newGroupClicked())); - connect(newCategory, SIGNAL(clicked()), SLOT(newCategoryClicked())); - connect(deleteController, SIGNAL(clicked()), SLOT(deleteControllerClicked())); - connect(newController, SIGNAL(clicked()), SLOT(newControllerClicked())); - connect(deleteSysex, SIGNAL(clicked()), SLOT(deleteSysexClicked())); - connect(newSysex, SIGNAL(clicked()), SLOT(newSysexClicked())); - - connect(ctrlType,SIGNAL(activated(int)), SLOT(ctrlTypeChanged(int))); - } - -//--------------------------------------------------------- -// fileNew -//--------------------------------------------------------- - -void EditInstrument::fileNew() - { - for (int i = 1;; ++i) { - QString s = QString("Instrument-%1").arg(i); - bool found = false; - for (iMidiInstrument i = midiInstruments.begin(); i != midiInstruments.end(); ++i) { - if (s == (*i)->iname()) { - found = true; - break; - } - } - if (!found) { - MidiInstrument* ni = new MidiInstrument(s); - midiInstruments.append(ni); - QListWidgetItem* item = new QListWidgetItem(ni->iname()); - QVariant v = qVariantFromValue((void*)(ni)); - item->setData(Qt::UserRole, v); - instrumentList->addItem(item); - instrumentList->setCurrentItem(item); - break; - } - } - } - -//--------------------------------------------------------- -// fileSave -//--------------------------------------------------------- - -void EditInstrument::fileSave() - { - QListWidgetItem* item = instrumentList->currentItem(); - if (item == 0) - return; - MidiInstrument* instrument = (MidiInstrument*)item->data(Qt::UserRole).value(); - if (instrument->filePath().isEmpty()) - fileSaveAs(); - else { - QFile f(instrument->filePath()); - if (!f.open(QIODevice::WriteOnly)) { - fileSaveAs(); - } - else { - f.close(); - if (fileSave(instrument, instrument->filePath())) - instrument->setDirty(false); - } - } - } - -//--------------------------------------------------------- -// fileSave -//--------------------------------------------------------- - -bool EditInstrument::fileSave(MidiInstrument* instrument, const QString& name) - { - QFile f(name); - if (!f.open(QIODevice::WriteOnly)) { - QString s("Creating file failed: "); - s += strerror(errno); - QMessageBox::critical(this, - tr("MusE: Create file failed"), s); - return false; - } - Xml xml(&f); - updateInstrument(instrument); - instrument->write(xml); - f.close(); - if (f.error()) { - QString s = QString("Write File\n") + f.fileName() + QString("\nfailed: ") - + f.errorString(); - QMessageBox::critical(this, tr("MusE: Write File failed"), s); - return false; - } - return true; - } - -//--------------------------------------------------------- -// fileSaveAs -//--------------------------------------------------------- - -void EditInstrument::fileSaveAs() - { - QListWidgetItem* item = instrumentList->currentItem(); - if (item == 0) - return; - MidiInstrument* instrument = (MidiInstrument*)item->data(Qt::UserRole).value(); - QString path = QDir::homePath() + "/" + config.instrumentPath; - if (instrument->filePath().isEmpty()) - path += QString("/%1.idf").arg(instrument->iname()); - else { - QFileInfo fi(instrument->filePath()); - path += QString("/%1.idf").arg(fi.baseName()); - } - QString s = QFileDialog::getSaveFileName(this, - tr("MusE: Save Instrument Definition"), - path, - tr("Instrument Definition (*.idf)")); - if (s.isEmpty()) - return; - instrument->setFilePath(s); - if (fileSave(instrument, s)) - instrument->setDirty(false); - } - -//--------------------------------------------------------- -// closeEvent -//--------------------------------------------------------- - -void EditInstrument::closeEvent(QCloseEvent* ev) - { - QListWidgetItem* item = instrumentList->currentItem(); - if (item) { - MidiInstrument* instrument = (MidiInstrument*)item->data(Qt::UserRole).value(); - if (checkDirty(instrument)) { - ev->ignore(); - return; - } - } - QMainWindow::closeEvent(ev); - } - -//--------------------------------------------------------- -// instrumentNameChanged -//--------------------------------------------------------- - -void EditInstrument::instrumentNameChanged(const QString& s) - { - QListWidgetItem* item = instrumentList->currentItem(); - if (item == 0) - return; - if (s != item->text()) { - item->setText(s); - MidiInstrument* instrument = (MidiInstrument*)item->data(Qt::UserRole).value(); - instrument->setDirty(true); - } - } - -//--------------------------------------------------------- -// deletePatchClicked -//--------------------------------------------------------- - -void EditInstrument::deletePatchClicked() - { - QListWidgetItem* item = instrumentList->currentItem(); - if (item == 0) - return; - MidiInstrument* instrument = (MidiInstrument*)item->data(Qt::UserRole).value(); - QTreeWidgetItem* pi = patchView->currentItem(); - if (pi == 0) - return; - void* p = pi->data(0, Qt::UserRole).value(); - if (p == 0) - return; - Patch* patch = (Patch*)p; - std::vector* pg = instrument->groups(); - for (std::vector::iterator g = pg->begin(); g != pg->end(); ++g) { - for (iPatch p = g->patches.begin(); p != g->patches.end(); ++p) { - if (patch == *p) { - g->patches.erase(p); - delete pi; - instrument->setDirty(true); - return; - } - } - } - printf("fatal: patch not found\n"); - } - -//--------------------------------------------------------- -// newPatchClicked -//--------------------------------------------------------- - -void EditInstrument::newPatchClicked() - { - QListWidgetItem* item = instrumentList->currentItem(); - if (item == 0) - return; - MidiInstrument* instrument = (MidiInstrument*)item->data(Qt::UserRole).value(); - std::vector* pg = instrument->groups(); - QString patchName; - for (int i = 1;; ++i) { - patchName = QString("Patch-%1").arg(i); - bool found = false; - - for (std::vector::iterator g = pg->begin(); g != pg->end(); ++g) { - for (iPatch p = g->patches.begin(); p != g->patches.end(); ++p) { - if ((*p)->name == patchName) { - found = true; - break; - } - } - if (found) - break; - } - if (!found) - break; - } - - // - // search current patch group - // - PatchGroup* pGroup = 0; - QTreeWidgetItem* pi = patchView->currentItem(); - if (pi == 0) - return; - if (pi->data(0, Qt::UserRole).value()) - pi = pi->parent(); - for (std::vector::iterator g = pg->begin(); g != pg->end(); ++g) { - if (g->name == pi->text(0)) { - pGroup = &*g; - break; - } - } - if (pGroup == 0) { - printf("group not found\n"); - return; - } - Patch* patch = new Patch; - patch->name = patchName; - pGroup->patches.push_back(patch); - QTreeWidgetItem* sitem = new QTreeWidgetItem; - sitem->setText(0, patch->name); - QVariant v = QVariant::fromValue((void*)(patch)); - sitem->setData(0, Qt::UserRole, v); - - pi->addChild(sitem); - patchView->setCurrentItem(sitem); - instrument->setDirty(true); - } - -//--------------------------------------------------------- -// newGroupClicked -//--------------------------------------------------------- - -void EditInstrument::newGroupClicked() - { - QListWidgetItem* item = instrumentList->currentItem(); - if (item == 0) - return; - MidiInstrument* instrument = (MidiInstrument*)item->data(Qt::UserRole).value(); - std::vector* pg = instrument->groups(); - QString groupName; - for (int i = 1;; ++i) { - groupName = QString("Group-%1").arg(i); - bool found = false; - - for (std::vector::iterator g = pg->begin(); g != pg->end(); ++g) { - if (g->name == groupName) { - found = true; - break; - } - } - if (!found) - break; - } - - PatchGroup pGroup; - pGroup.name = groupName; - pg->push_back(pGroup); - - QTreeWidgetItem* sitem = new QTreeWidgetItem; - sitem->setText(0, groupName); - QVariant v = QVariant::fromValue((void*)0); - sitem->setData(0, Qt::UserRole, v); - patchView->addTopLevelItem(sitem); - patchView->setCurrentItem(sitem); - instrument->setDirty(true); - } - -//--------------------------------------------------------- -// newCategoryClicked -//--------------------------------------------------------- - -void EditInstrument::newCategoryClicked() - { - QListWidgetItem* item = instrumentList->currentItem(); - if (item == 0) - return; - MidiInstrument* instrument = (MidiInstrument*)item->data(Qt::UserRole).value(); - bool ok; - QString cat = QInputDialog::getText(this, - tr("MusE: Enter new Category"), - tr("Enter new Category:"), - QLineEdit::Normal, "", &ok - ); - if (ok && !cat.isEmpty()) { - category->addItem(cat); - instrument->addCategory(cat); - instrument->setDirty(true); - } - } - -//--------------------------------------------------------- -// deleteControllerClicked -//--------------------------------------------------------- - -void EditInstrument::deleteControllerClicked() - { - QListWidgetItem* item = instrumentList->currentItem(); - QListWidgetItem* item2 = listController->currentItem(); - if (item == 0 || item2 == 0) - return; - MidiInstrument* instrument = (MidiInstrument*)item->data(Qt::UserRole).value(); - MidiController* ctrl = (MidiController*)item2->data(Qt::UserRole).value(); - MidiControllerList* cl = instrument->controller(); - cl->removeAll(ctrl); - delete item2; - instrument->setDirty(true); - } - -//--------------------------------------------------------- -// newControllerClicked -//--------------------------------------------------------- - -void EditInstrument::newControllerClicked() - { - QListWidgetItem* item = instrumentList->currentItem(); - if (item == 0) - return; - MidiInstrument* instrument = (MidiInstrument*)item->data(Qt::UserRole).value(); - - QString ctrlName; - MidiControllerList* cl = instrument->controller(); - for (int i = 1;; ++i) { - ctrlName = QString("Controller-%d").arg(i); - - bool found = false; - for (iMidiController ic = cl->begin(); ic != cl->end(); ++ic) { - MidiController* c = *ic; - if (c->name() == ctrlName) { - found = true; - break; - } - } - if (!found) - break; - } - - MidiController* ctrl = new MidiController(); - ctrl->setName(ctrlName); - item = new QListWidgetItem(ctrlName); - QVariant v = qVariantFromValue((void*)(ctrl)); - item->setData(Qt::UserRole, v); - listController->addItem(item); - listController->setCurrentItem(item); - instrument->setDirty(true); - } - -//--------------------------------------------------------- -// deleteSysexClicked -//--------------------------------------------------------- - -void EditInstrument::deleteSysexClicked() - { - QListWidgetItem* item = instrumentList->currentItem(); - QListWidgetItem* item2 = sysexList->currentItem(); - if (item == 0 || item2 == 0) - return; - MidiInstrument* instrument = (MidiInstrument*)item->data(Qt::UserRole).value(); - SysEx* sysex = (SysEx*)item2->data(Qt::UserRole).value(); - QList sl = instrument->sysex(); - instrument->removeSysex(sysex); - delete item2; - instrument->setDirty(true); - } - -//--------------------------------------------------------- -// newSysexClicked -//--------------------------------------------------------- - -void EditInstrument::newSysexClicked() - { - QListWidgetItem* item = instrumentList->currentItem(); - if (item == 0) - return; - MidiInstrument* instrument = (MidiInstrument*)item->data(Qt::UserRole).value(); - - QString sysexName; - for (int i = 1;; ++i) { - sysexName = QString("Sysex-%1").arg(i); - - bool found = false; - foreach(const SysEx* s, instrument->sysex()) { - if (s->name == sysexName) { - found = true; - break; - } - } - if (!found) - break; - } - SysEx* nsysex = new SysEx; - nsysex->name = sysexName; - instrument->addSysex(nsysex); - - item = new QListWidgetItem(sysexName); - QVariant v = QVariant::fromValue((void*)nsysex); - item->setData(Qt::UserRole, v); - sysexList->addItem(item); - sysexList->setCurrentItem(item); - instrument->setDirty(true); - } - -//--------------------------------------------------------- -// instrumentChanged -//--------------------------------------------------------- - -void EditInstrument::instrumentChanged(QListWidgetItem* sel, QListWidgetItem* old) - { - if (sel == 0) - return; - if (old) { - MidiInstrument* oi = (MidiInstrument*)old->data(Qt::UserRole).value(); - checkDirty(oi); - oi->setDirty(false); - } - - patchView->clear(); - listController->clear(); - category->clear(); - sysexList->clear(); - - // populate patch list - - MidiInstrument* instrument = (MidiInstrument*)sel->data(Qt::UserRole).value(); - instrument->setDirty(false); - - instrumentName->setText(instrument->iname()); - std::vector* pg = instrument->groups(); - for (std::vector::iterator g = pg->begin(); g != pg->end(); ++g) { - QTreeWidgetItem* item = new QTreeWidgetItem; - item->setText(0, g->name); - QVariant v = QVariant::fromValue((void*)0); - item->setData(0, Qt::UserRole, v); - patchView->addTopLevelItem(item); - for (iPatch p = g->patches.begin(); p != g->patches.end(); ++p) { - Patch* patch = *p; - QTreeWidgetItem* sitem = new QTreeWidgetItem; - sitem->setText(0, patch->name); - QVariant v = QVariant::fromValue((void*)patch); - sitem->setData(0, Qt::UserRole, v); - item->addChild(sitem); - } - } - MidiControllerList* cl = instrument->controller(); - for (iMidiController ic = cl->begin(); ic != cl->end(); ++ic) { - MidiController* c = *ic; - QListWidgetItem* item = new QListWidgetItem(c->name()); - QVariant v = QVariant::fromValue((void*)c); - item->setData(Qt::UserRole, v); - listController->addItem(item); - } - listController->setItemSelected(listController->item(0), true); - controllerChanged(listController->item(0), 0); - - category->addItems(instrument->categories()); - - foreach(const SysEx* s, instrument->sysex()) { - QListWidgetItem* item = new QListWidgetItem(s->name); - QVariant v = QVariant::fromValue((void*)s); - item->setData(Qt::UserRole, v); - sysexList->addItem(item); - } - - sysexList->setItemSelected(sysexList->item(0), true); - sysexChanged(sysexList->item(0), 0); - - if (!cl->empty()) { - listController->setItemSelected(listController->item(0), true); - controllerChanged(listController->item(0), 0); - } - } - -//--------------------------------------------------------- -// updatePatch -//--------------------------------------------------------- - -void EditInstrument::updatePatch(MidiInstrument* instrument, Patch* p) - { - if (p->name != patchNameEdit->text()) { - p->name = patchNameEdit->text(); - instrument->setDirty(true); - } - if (p->hbank != spinBoxHBank->value()) { - p->hbank = spinBoxHBank->value(); - instrument->setDirty(true); - } - if (p->lbank != spinBoxLBank->value()) { - p->hbank = spinBoxHBank->value(); - instrument->setDirty(true); - } - if (p->prog != spinBoxProgram->value()) { - p->prog = spinBoxProgram->value(); - instrument->setDirty(true); - } - // there is no logical xor in c++ - bool a = p->typ & 1; - bool b = p->typ & 2; - bool c = p->typ & 4; - bool aa = checkBoxGM->isChecked(); - bool bb = checkBoxGS->isChecked(); - bool cc = checkBoxXG->isChecked(); - if ((a ^ aa) || (b ^ bb) || (c ^ cc)) { - int value = 0; - if (checkBoxGM->isChecked()) - value |= 1; - if (checkBoxGS->isChecked()) - value |= 2; - if (checkBoxXG->isChecked()) - value |= 4; - p->typ = value; - instrument->setDirty(true); - } - if (p->categorie != category->currentIndex()) { - p->categorie = category->currentIndex(); - instrument->setDirty(true); - } - } - -//--------------------------------------------------------- -// patchChanged -//--------------------------------------------------------- - -void EditInstrument::patchChanged(QTreeWidgetItem* sel, QTreeWidgetItem* old) - { - if (old && old->data(0, Qt::UserRole).value()) { - QListWidgetItem* item = instrumentList->currentItem(); - if (item == 0) - return; - MidiInstrument* instrument = (MidiInstrument*)item->data(Qt::UserRole).value(); - Patch* p = (Patch*)old->data(0, Qt::UserRole).value(); - updatePatch(instrument, p); - } - if (sel == 0 || sel->data(0, Qt::UserRole).value() == 0) { - patchNameEdit->setText(""); - return; - } - Patch* p = (Patch*)sel->data(0, Qt::UserRole).value(); - patchNameEdit->setText(p->name); - spinBoxHBank->setValue(p->hbank); - spinBoxLBank->setValue(p->lbank); - spinBoxProgram->setValue(p->prog); - checkBoxDrum->setChecked(p->drumMap); - checkBoxGM->setChecked(p->typ & 1); - checkBoxGS->setChecked(p->typ & 2); - checkBoxXG->setChecked(p->typ & 4); - category->setCurrentIndex(p->categorie); - } - -//--------------------------------------------------------- -// updateController -//--------------------------------------------------------- - -void EditInstrument::updateController(MidiInstrument* instrument, MidiController* oc) - { - int ctrlH = spinBoxHCtrlNo->value(); - int ctrlL = spinBoxLCtrlNo->value(); - MidiController::ControllerType type = (MidiController::ControllerType)ctrlType->currentIndex(); - int num = MidiController::genNum(type, ctrlH, ctrlL); - - if (num != oc->num()) { - oc->setNum(num); - instrument->setDirty(true); - } - if (spinBoxMin->value() != oc->minVal()) { - oc->setMinVal(spinBoxMin->value()); - instrument->setDirty(true); - } - if (spinBoxMax->value() != oc->maxVal()) { - oc->setMaxVal(spinBoxMax->value()); - instrument->setDirty(true); - } - if (spinBoxDefault->value() != oc->initVal()) { - oc->setInitVal(spinBoxDefault->value()); - instrument->setDirty(true); - } - if (moveWithPart->isChecked() ^ oc->moveWithPart()) { - oc->setMoveWithPart(moveWithPart->isChecked()); - instrument->setDirty(true); - } - if (ctrlName->text() != oc->name()) { - oc->setName(ctrlName->text()); - instrument->setDirty(true); - } - if (ctrlComment->toPlainText() != oc->comment()) { - oc->setComment(ctrlComment->toPlainText()); - instrument->setDirty(true); - } - } - -//--------------------------------------------------------- -// controllerChanged -//--------------------------------------------------------- - -void EditInstrument::controllerChanged(QListWidgetItem* sel, QListWidgetItem* old) - { - if (old) { - QListWidgetItem* item = instrumentList->currentItem(); - if (item == 0) - return; - MidiInstrument* instrument = (MidiInstrument*)item->data(Qt::UserRole).value(); - MidiController* oc = (MidiController*)old->data(Qt::UserRole).value(); - updateController(instrument, oc); - } - if (sel == 0 || sel->data(Qt::UserRole).value() == 0) { - ctrlName->setText(""); - ctrlComment->setText(""); - return; - } - MidiController* c = (MidiController*)sel->data(Qt::UserRole).value(); - ctrlName->setText(c->name()); - ctrlComment->setText(c->comment()); - int ctrlH = (c->num() >> 8) & 0x7f; - int ctrlL = c->num() & 0x7f; - int type = int(c->type()); - ctrlType->setCurrentIndex(type); - ctrlTypeChanged(type); - spinBoxHCtrlNo->setValue(ctrlH); - spinBoxLCtrlNo->setValue(ctrlL); - spinBoxMin->setValue(c->minVal()); - spinBoxMax->setValue(c->maxVal()); - spinBoxDefault->setRange(c->minVal()-1, c->maxVal()); - spinBoxDefault->setValue(c->initVal()); - moveWithPart->setChecked(c->moveWithPart()); - } - -//--------------------------------------------------------- -// updateSysex -//--------------------------------------------------------- - -void EditInstrument::updateSysex(MidiInstrument* instrument, SysEx* so) - { - if (sysexName->text() != so->name) { - so->name = sysexName->text(); - instrument->setDirty(true); - } - if (sysexComment->toPlainText() != so->comment) { - so->comment = sysexComment->toPlainText(); - instrument->setDirty(true); - } - unsigned char* data; - int len = string2sysex(sysexData->toPlainText(), &data); - if (so->dataLen != len || !memcmp(data, so->data, len)) { - delete so->data; - so->data = data; - so->dataLen = len; - } - } - -//--------------------------------------------------------- -// sysexChanged -//--------------------------------------------------------- - -void EditInstrument::sysexChanged(QListWidgetItem* sel, QListWidgetItem* old) - { - if (old) { - QListWidgetItem* item = instrumentList->currentItem(); - if (item == 0) - return; - MidiInstrument* instrument = (MidiInstrument*)item->data(Qt::UserRole).value(); - SysEx* so = (SysEx*)item->data(Qt::UserRole).value(); - updateSysex(instrument, so); - } - if (sel == 0) { - sysexName->setText(""); - sysexComment->setText(""); - sysexData->setText(""); - sysexName->setEnabled(false); - sysexComment->setEnabled(false); - sysexData->setEnabled(false); - return; - } - sysexName->setEnabled(true); - sysexComment->setEnabled(true); - sysexData->setEnabled(true); - - SysEx* sx = (SysEx*)sel->data(Qt::UserRole).value(); - sysexName->setText(sx->name); - sysexComment->setText(sx->comment); - sysexData->setText(sysex2string(sx->dataLen, sx->data)); - } - -//--------------------------------------------------------- -// checkDirty -// return true on Abort -//--------------------------------------------------------- - -bool EditInstrument::checkDirty(MidiInstrument* i) - { - updateInstrument(i); - if (!i->dirty()) - return false; - int n = QMessageBox::warning(this, tr("MusE"), - tr("The current Instrument contains unsaved data\n" - "Save Current Instrument?"), - tr("&Save"), tr("&Nosave"), tr("&Abort"), 0, 2); - if (n == 0) { - if (i->filePath().isEmpty()) - fileSaveAs(); - else { - QFile f(i->filePath()); - if (!f.open(QIODevice::WriteOnly)) - fileSaveAs(); - else { - f.close(); - if (fileSave(i, i->filePath())) - i->setDirty(false); - } - } - return false; - } - return n == 2; - } - -//--------------------------------------------------------- -// ctrlTypeChanged -//--------------------------------------------------------- - -void EditInstrument::ctrlTypeChanged(int idx) - { - MidiController::ControllerType t = (MidiController::ControllerType)idx; - switch (t) { - case MidiController::RPN: - case MidiController::NRPN: - case MidiController::Controller7: - spinBoxHCtrlNo->setEnabled(false); - spinBoxLCtrlNo->setEnabled(true); - break; - case MidiController::Controller14: - case MidiController::RPN14: - case MidiController::NRPN14: - spinBoxHCtrlNo->setEnabled(true); - spinBoxLCtrlNo->setEnabled(true); - break; - case MidiController::Pitch: - case MidiController::Program: - spinBoxHCtrlNo->setEnabled(false); - spinBoxLCtrlNo->setEnabled(false); - break; - default: - break; - } - } - -//--------------------------------------------------------- -// updateInstrument -//--------------------------------------------------------- - -void EditInstrument::updateInstrument(MidiInstrument* instrument) - { - QListWidgetItem* sysexItem = sysexList->currentItem(); - if (sysexItem) { - SysEx* so = (SysEx*)sysexItem->data(Qt::UserRole).value(); - updateSysex(instrument, so); - } - QListWidgetItem* ctrlItem = listController->currentItem(); - if (ctrlItem) { - MidiController* ctrl = (MidiController*)ctrlItem->data(Qt::UserRole).value(); - updateController(instrument, ctrl); - } - QTreeWidgetItem* patchItem = patchView->currentItem(); - if (patchItem) { - Patch* p = (Patch*)patchItem->data(0, Qt::UserRole).value(); - updatePatch(instrument, p); - } - } - diff --git a/muse/muse/instruments/editinstrument.h b/muse/muse/instruments/editinstrument.h deleted file mode 100644 index cefafe74..00000000 --- a/muse/muse/instruments/editinstrument.h +++ /dev/null @@ -1,70 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __EDITINSTRUMENT_H__ -#define __EDITINSTRUMENT_H__ - -#include "ui_editinstrument.h" - -class MidiInstrument; -class SysEx; -class MidiController; -struct Patch; - -//--------------------------------------------------------- -// EditInstrument -//--------------------------------------------------------- - -class EditInstrument : public QMainWindow, public Ui::EditInstrumentBase { - Q_OBJECT - - bool fileSave(MidiInstrument*, const QString& name); - void closeEvent(QCloseEvent*); - bool checkDirty(MidiInstrument*); - void updateInstrument(MidiInstrument*); - void updateSysex(MidiInstrument*, SysEx*); - void updateController(MidiInstrument*, MidiController*); - void updatePatch(MidiInstrument* instrument, Patch* p); - - private slots: - virtual void fileNew(); - virtual void fileSave(); - virtual void fileSaveAs(); - void instrumentChanged(QListWidgetItem*, QListWidgetItem*); - void patchChanged(QTreeWidgetItem*, QTreeWidgetItem*); - void controllerChanged(QListWidgetItem*, QListWidgetItem*); - void sysexChanged(QListWidgetItem*, QListWidgetItem*); - void instrumentNameChanged(const QString&); - void deletePatchClicked(); - void newPatchClicked(); - void newGroupClicked(); - void newCategoryClicked(); - void deleteControllerClicked(); - void newControllerClicked(); - void deleteSysexClicked(); - void newSysexClicked(); - void ctrlTypeChanged(int); - - public: - EditInstrument(QWidget* parent = 0); - }; - -#endif - diff --git a/muse/muse/instruments/editinstrument.ui b/muse/muse/instruments/editinstrument.ui deleted file mode 100644 index f58d9d28..00000000 --- a/muse/muse/instruments/editinstrument.ui +++ /dev/null @@ -1,998 +0,0 @@ - - EditInstrumentBase - - - - 0 - 0 - 821 - 551 - - - - MusE: Instrument Editor - - - - - 9 - - - 6 - - - - - Qt::Horizontal - - - - - 5 - 7 - 0 - 0 - - - - QListView::Adjust - - - QListView::Batched - - - - - - 0 - - - 6 - - - - - 0 - - - 6 - - - - - Instrument Name: - - - - - - - - - - - - 0 - - - - Patches - - - - 9 - - - 6 - - - - - Qt::Horizontal - - - - - 5 - 7 - 0 - 0 - - - - true - - - - Patch/Group - - - - - - - 0 - - - 6 - - - - - - - - Patch Name: - - - - - - - Program: - - - - - - - 0 - - - 6 - - - - - - 5 - 0 - 0 - 0 - - - - &Delete - - - Alt+D - - - - - - - - 5 - 1 - 0 - 0 - - - - &New Patch - - - Alt+N - - - - - - - New Group - - - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 240 - 20 - - - - - - - - New Category - - - - - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 280 - 20 - - - - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 280 - 20 - - - - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 280 - 20 - - - - - - - - d.c. - - - 127 - - - -1 - - - -1 - - - - - - - High Bank: - - - - - - - Low Bank: - - - - - - - Qt::Vertical - - - QSizePolicy::Expanding - - - - 20 - 90 - - - - - - - - d.c. - - - 127 - - - -1 - - - -1 - - - - - - - - - - 0 - - - 6 - - - - - Drum - - - - - - - GM - - - - - - - GS - - - - - - - XG - - - - - - - - - true - - - - - - - Category: - - - - - - - - - - - - Controller - - - - 9 - - - 6 - - - - - Qt::Horizontal - - - - - 0 - - - 6 - - - - - - 5 - 0 - 0 - 0 - - - - Controller List: - - - - - - - This is a list of commonly used midi controllers. -Note that in MusE pitch and program changes are -handled like normal controllers. - - - - - - - - - 0 - - - 6 - - - - - - 1 - 5 - 0 - 0 - - - - Properties - - - - 9 - - - 6 - - - - - Name - - - - - - - - - - Comment - - - - - - - - - - Type - - - - - - - 2 - - - 6 - - - - - - Controller-7Bit - - - - - Controller-14Bit - - - - - RPN-7Bit - - - - - NRPN-7Bit - - - - - RPN-14Bit - - - - - NRPN-14Bit - - - - - Pitch - - - - - Program - - - - - - - - H-Ctrl - - - 10 - - - - - - - Midi Controller Number High Byte - - - 127 - - - 0 - - - 1 - - - - - - - L-Ctrl - - - 10 - - - - - - - Midi Controller Number Low Byte - - - 127 - - - 0 - - - 1 - - - - - - - - - Range - - - - - - - 0 - - - 6 - - - - - Min - - - 10 - - - - - - - 16384 - - - -16385 - - - - - - - Max - - - 10 - - - - - - - 8388607 - - - -16385 - - - 127 - - - - - - - Default - - - - - - - ?? - - - -1 - - - - - - - - - Move Controller Values with Part - - - - - - - - - - 0 - - - 6 - - - - - Delete - - - - - - - New Controller - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - - SysEx - - - - 9 - - - 6 - - - - - Qt::Horizontal - - - - - 0 - - - 6 - - - - - SYSEX-List: - - - - - - - - 7 - 7 - 0 - 0 - - - - QListView::Adjust - - - true - - - - - - - - - 0 - - - 6 - - - - - Properties - - - - 9 - - - 6 - - - - - Name: - - - - - - - - - - Comment: - - - - - - - - - - Data: - - - - - - - - - - - - - 0 - - - 6 - - - - - Delete - - - - - - - New Sysex - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - - - - - - - - - - - 0 - 0 - 821 - 32 - - - - false - - - - - 434 - 167 - 146 - 168 - - - - &File - - - - - - - - - - - - Qt::Horizontal - - - 4 - - - - - - - - :/xpm/filenew.png - - - &New - - - New - - - Ctrl+N - - - - - :/xpm/fileopen.png - - - &Open... - - - Open - - - Ctrl+O - - - - - :/xpm/filesave.png - - - &Save - - - Save - - - Ctrl+S - - - - - :/xpm/fileopen.png - - - Save &As... - - - Save As - - - - - - - - :/xpm/off.svg - - - E&xit - - - Exit - - - - - - - - - - - - diff --git a/muse/muse/instruments/midictrledit.cpp b/muse/muse/instruments/midictrledit.cpp deleted file mode 100644 index b2f33e30..00000000 --- a/muse/muse/instruments/midictrledit.cpp +++ /dev/null @@ -1,418 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "app.h" -#include "driver/mididev.h" -#include "midictrl.h" -#include "midictrledit.h" -#include "xml.h" -#include "filedialog.h" -#include "globals.h" - -MidiControllerEditDialog* midiControllerEditDialog; - -static MidiController predefinedMidiController[] = { - MidiController("Pitch", 0x40000, -10000, +10000), - MidiController("Program", 0x40001, 0, 127), - MidiController("BankSel", 0x10000, 0, 16383) - }; - -enum { - COL_NAME = 0, COL_TYPE, - COL_HNUM, COL_LNUM, COL_MIN, COL_MAX - }; - -//--------------------------------------------------------- -// addControllerToView -//--------------------------------------------------------- - -void MidiControllerEditDialog::addControllerToView(MidiController* mctrl) - { - QString hnum; - hnum.setNum(mctrl->num()); - QString lnum("---"); - QString min; - min.setNum(mctrl->minVal()); - QString max; - max.setNum(mctrl->maxVal()); - new Q3ListViewItem(viewController, - mctrl->name(), - int2ctrlType(mctrl->type()), - hnum, lnum, min, max - ); - } - -//--------------------------------------------------------- -// MidiControllerEditDialog -//--------------------------------------------------------- - -MidiControllerEditDialog::MidiControllerEditDialog(QWidget* parent, const char* name, bool modal, Qt::WFlags fl) - : MidiControllerEditDialogBase(parent, name, modal, fl) - { - viewController->setColumnAlignment(COL_HNUM, AlignCenter); - viewController->setColumnAlignment(COL_LNUM, AlignCenter); - viewController->setColumnAlignment(COL_MIN, AlignCenter); - viewController->setColumnAlignment(COL_MAX, AlignCenter); - viewController->setColumnWidthMode(COL_NAME, Q3ListView::Maximum); - - // populate list of predefined controller - int size = sizeof(predefinedMidiController) / sizeof(*predefinedMidiController); - for (int i = 0; i < size; ++i) - listController->insertItem(predefinedMidiController[i].name()); - listController->setSelected(0, true); - - // populate ports pulldown - for (int i = 0; i < MIDI_PORTS; ++i) { - MidiPort* port = &midiPorts[i]; - MidiDevice* dev = port->device(); - QString name; - name.sprintf("%d(%s)", port->portno()+1, - dev ? dev->name().latin1() : "none"); - midiPortsList->insertItem(name, i); - } - - reject(); // populate list - viewController->setCurrentItem(viewController->firstChild()); - - connect(buttonNew, SIGNAL(clicked()), SLOT(ctrlAdd())); - connect(buttonDelete, SIGNAL(clicked()), SLOT(ctrlDelete())); - connect(entryName, SIGNAL(textChanged(const QString&)), SLOT(nameChanged(const QString&))); - connect(comboType, SIGNAL(activated(const QString&)), SLOT(typeChanged(const QString&))); - connect(spinboxHCtrlNo, SIGNAL(valueChanged(int)), SLOT(valueHChanged(int))); - connect(spinboxLCtrlNo, SIGNAL(valueChanged(int)), SLOT(valueLChanged(int))); - connect(spinboxMin, SIGNAL(valueChanged(int)), SLOT(minChanged(int))); - connect(spinboxMax, SIGNAL(valueChanged(int)), SLOT(maxChanged(int))); - connect(viewController, SIGNAL(selectionChanged()), SLOT(controllerChanged())); - - controllerChanged(viewController->currentItem()); - } - -//--------------------------------------------------------- -// reject -//--------------------------------------------------------- - -void MidiControllerEditDialog::reject() - { - viewController->clear(); - for (iMidiController i = midiControllerList.begin(); - i != midiControllerList.end(); ++i) { - addControllerToView(&*i); - } - MidiControllerEditDialogBase::reject(); - } - -//--------------------------------------------------------- -// ctrlAdd -//--------------------------------------------------------- - -void MidiControllerEditDialog::ctrlAdd() - { - Q3ListBoxItem* item = listController->selectedItem(); - if (item == 0) - return; - QString name = item->text(); - int size = sizeof(predefinedMidiController) / sizeof(*predefinedMidiController); - for (int i = 0; i < size; ++i) { - MidiController* c = &predefinedMidiController[i]; - if (c->name() != name) - continue; - MidiController::ControllerType t = c->type(); - QString type = int2ctrlType(t); - QString min, max; - min.setNum(c->minVal()); - max.setNum(c->maxVal()); - - QString hno, lno; - int h = (c->num() >> 14) & 0x7f; - int l = c->num() & 0x7f; - - switch(t) { - case MidiController::Controller7: - hno = "---"; - lno.setNum(l); - break; - case MidiController::RPN: - case MidiController::NRPN: - case MidiController::Controller14: - hno.setNum(h); - lno.setNum(l); - break; - case MidiController::Pitch: - case MidiController::Program: - hno = "---"; - lno = "---"; - default: - break; - } - - Q3ListViewItem* item = new Q3ListViewItem(viewController, - name, type, hno, lno, min, max); - - viewController->setCurrentItem(item); - controllerChanged(item); - break; - } - } - -//--------------------------------------------------------- -// ctrlDelete -//--------------------------------------------------------- - -void MidiControllerEditDialog::ctrlDelete() - { - Q3ListViewItem* item = viewController->currentItem(); - if (item == 0) - return; - delete item; - } - -//--------------------------------------------------------- -// accept -//--------------------------------------------------------- - -void MidiControllerEditDialog::accept() - { - midiControllerList.clear(); - - Q3ListViewItem* item = viewController->firstChild(); - int hval = item->text(COL_HNUM).toInt(); - int lval = item->text(COL_LNUM).toInt(); - - while (item) { - MidiController c; - c.setName(item->text(COL_NAME)); - MidiController::ControllerType type = ctrlType2Int(item->text(COL_TYPE)); - - switch(type) { - case MidiController::Controller7: - c.setNum(hval); - break; - case MidiController::Controller14: - c.setNum((hval << 8 | lval) | 0x10000); - break; - case MidiController::RPN: - c.setNum((hval << 8 | lval) | 0x20000); - break; - case MidiController::NRPN: - c.setNum((hval << 8 | lval) | 0x30000); - break; - case MidiController::Pitch: - c.setNum(CTRL_PITCH); - break; - default: - break; - } - c.setMinVal(item->text(COL_MIN).toInt()); - c.setMaxVal(item->text(COL_MAX).toInt()); - midiControllerList.push_back(c); - item = item->nextSibling(); - } - MidiControllerEditDialogBase::accept(); - } - -//--------------------------------------------------------- -// nameChanged -//--------------------------------------------------------- - -void MidiControllerEditDialog::nameChanged(const QString& s) - { - Q3ListViewItem* item = viewController->currentItem(); - if (item == 0) - return; - item->setText(COL_NAME, s); - } - -//--------------------------------------------------------- -// typeChanged -//--------------------------------------------------------- - -void MidiControllerEditDialog::typeChanged(const QString& s) - { - Q3ListViewItem* item = viewController->currentItem(); - if (item == 0) - return; - item->setText(COL_TYPE, s); - item->setText(COL_MIN, QString("0")); - switch(ctrlType2Int(s)) { - case 2: // RPN - case 3: // NRPN - case MidiController::Controller14: - item->setText(COL_MAX, QString("16383")); - break; - case MidiController::Controller7: - case MidiController::Program: - item->setText(COL_MAX, QString("127")); - break; - case MidiController::Pitch: - item->setText(COL_MIN, QString("-5000")); - item->setText(COL_MAX, QString("+5000")); - break; - default: - break; - } - controllerChanged(item); - } - -//--------------------------------------------------------- -// valueHChanged -//--------------------------------------------------------- - -void MidiControllerEditDialog::valueHChanged(int val) - { - Q3ListViewItem* item = viewController->currentItem(); - if (item == 0) - return; - QString s; - s.setNum(val); - item->setText(COL_HNUM, s); - } - -//--------------------------------------------------------- -// valueLChanged -//--------------------------------------------------------- - -void MidiControllerEditDialog::valueLChanged(int val) - { - Q3ListViewItem* item = viewController->currentItem(); - if (item == 0) - return; - QString s; - s.setNum(val); - item->setText(COL_LNUM, s); - } - -//--------------------------------------------------------- -// controllerChanged -//--------------------------------------------------------- - -void MidiControllerEditDialog::controllerChanged() - { - Q3ListViewItem* item = viewController->selectedItem(); - controllerChanged(item); - } - -void MidiControllerEditDialog::controllerChanged(Q3ListViewItem* item) - { - if (item == 0) { - entryName->setEnabled(false); - comboType->setEnabled(false); - spinboxHCtrlNo->setEnabled(false); - spinboxLCtrlNo->setEnabled(false); - spinboxMin->setEnabled(false); - spinboxMax->setEnabled(false); - return; - } - - entryName->blockSignals(true); - comboType->blockSignals(true); - spinboxHCtrlNo->blockSignals(true); - spinboxLCtrlNo->blockSignals(true); - spinboxMin->blockSignals(true); - spinboxMax->blockSignals(true); - - entryName->setEnabled(true); - entryName->setText(item->text(COL_NAME)); - comboType->setCurrentItem(int(ctrlType2Int(item->text(COL_TYPE)))); - switch (ctrlType2Int(item->text(COL_TYPE))) { - case MidiController::Controller7: - comboType->setEnabled(true); - spinboxHCtrlNo->setEnabled(false); - spinboxLCtrlNo->setEnabled(true); - spinboxMin->setEnabled(true); - spinboxMax->setEnabled(true); - - spinboxHCtrlNo->setValue(item->text(COL_HNUM).toInt()); - spinboxMin->setValue(item->text(COL_MIN).toInt()); - spinboxMax->setValue(item->text(COL_MAX).toInt()); - item->setText(COL_LNUM, QString("---")); - break; - - case MidiController::Controller14: - case MidiController::RPN: - case MidiController::NRPN: - comboType->setEnabled(true); - spinboxHCtrlNo->setEnabled(true); - spinboxLCtrlNo->setEnabled(true); - spinboxMin->setEnabled(true); - spinboxMax->setEnabled(true); - - spinboxHCtrlNo->setValue(item->text(COL_HNUM).toInt()); - spinboxLCtrlNo->setValue(item->text(COL_LNUM).toInt()); - spinboxMin->setValue(item->text(COL_MIN).toInt()); - spinboxMax->setValue(item->text(COL_MAX).toInt()); - break; - - case MidiController::Pitch: - case MidiController::Program: - comboType->setEnabled(true); - spinboxHCtrlNo->setEnabled(false); - spinboxLCtrlNo->setEnabled(false); - spinboxMin->setEnabled(true); - spinboxMax->setEnabled(true); - break; - default: - break; - } - entryName->blockSignals(false); - comboType->blockSignals(false); - spinboxHCtrlNo->blockSignals(false); - spinboxLCtrlNo->blockSignals(false); - spinboxMin->blockSignals(false); - spinboxMax->blockSignals(false); - } - -//--------------------------------------------------------- -// minChanged -//--------------------------------------------------------- - -void MidiControllerEditDialog::minChanged(int val) - { - Q3ListViewItem* item = viewController->currentItem(); - if (item == 0) - return; - QString s; - s.setNum(val); - item->setText(COL_MIN, s); - } - -//--------------------------------------------------------- -// maxChanged -//--------------------------------------------------------- - -void MidiControllerEditDialog::maxChanged(int val) - { - Q3ListViewItem* item = viewController->currentItem(); - if (item == 0) - return; - QString s; - s.setNum(val); - item->setText(COL_MAX, s); - } - -//--------------------------------------------------------- -// configMidiController -//--------------------------------------------------------- - -void configMidiController() - { - if (midiControllerEditDialog == 0) - midiControllerEditDialog = new MidiControllerEditDialog(); - midiControllerEditDialog->show(); - } diff --git a/muse/muse/instruments/midictrledit.h b/muse/muse/instruments/midictrledit.h deleted file mode 100644 index 321f14b7..00000000 --- a/muse/muse/instruments/midictrledit.h +++ /dev/null @@ -1,58 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __MIDICTRLEDIT_H__ -#define __MIDICTRLEDIT_H__ - -#include "ccontrolbase.h" -#include "midictrl.h" - -//--------------------------------------------------------- -// MidiControllerEditDialog -//--------------------------------------------------------- - -class MidiControllerEditDialog : public MidiControllerEditDialogBase { - Q_OBJECT - - void addControllerToView(MidiController* mctrl); - void mergeReplace(bool replace); - - private slots: - void ctrlAdd(); - void ctrlDelete(); - virtual void accept(); - virtual void reject(); - void nameChanged(const QString&); - void typeChanged(const QString&); - void valueHChanged(int); - void valueLChanged(int); - void controllerChanged(Q3ListViewItem*); - void controllerChanged(); - void minChanged(int); - void maxChanged(int); - - public: - MidiControllerEditDialog(QWidget* parent = 0, const char* name = 0, bool modal = false, Qt::WFlags fl = 0); - }; - -extern MidiControllerEditDialog* midiControllerEditDialog; -extern void configMidiController(); -#endif - diff --git a/muse/muse/instruments/minstrument.cpp b/muse/muse/instruments/minstrument.cpp deleted file mode 100644 index a189c63d..00000000 --- a/muse/muse/instruments/minstrument.cpp +++ /dev/null @@ -1,631 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "minstrument.h" -#include "midioutport.h" -#include "globals.h" -#include "event.h" -#include "midievent.h" -#include "midictrl.h" -#include "gconfig.h" -#include "midiedit/drummap.h" - -MidiInstrumentList midiInstruments; -MidiInstrument* genericMidiInstrument; - -//--------------------------------------------------------- -// string2sysex -//--------------------------------------------------------- - -int string2sysex(const QString& s, unsigned char** data) - { - const char* src = s.toLatin1().data(); - char buffer[2048]; - char* dst = buffer; - - if(src) { - while (*src) { - while (*src == ' ' || *src == '\n') { - ++src; - } - char* ep; - long val = strtol(src, &ep, 16); - if (ep == src) { - QMessageBox::information(0, - QString("MusE"), - QWidget::tr("Cannot convert sysex string")); - return 0; - } - src = ep; - *dst++ = val; - if (dst - buffer >= 2048) { - QMessageBox::information(0, - QString("MusE"), - QWidget::tr("Hex String too long (2048 bytes limit)")); - return 0; - } - } - } - int len = dst - buffer; - unsigned char* b = new unsigned char[len+1]; - memcpy(b, buffer, len); - b[len] = 0; - *data = b; - return len; - } - -//--------------------------------------------------------- -// sysex2string -//--------------------------------------------------------- - -QString sysex2string(int len, unsigned char* data) - { - QString d; - QString s; - for (int i = 0; i < len; ++i) { - if ((i > 0) && ((i % 8)==0)) { - d += "\n"; - } - else if (i) - d += " "; - d += s.sprintf("%02x", data[i]); - } - return d; - } - -//--------------------------------------------------------- -// Patch -//--------------------------------------------------------- - -Patch::Patch() - { - drumMap = 0; - categorie = -1; - } - -Patch::~Patch() - { - if (drumMap) - delete drumMap; - } - -//--------------------------------------------------------- -// loadIDF -//--------------------------------------------------------- - -static void loadIDF(QFileInfo* fi) - { - QFile qf(fi->filePath()); - if (!qf.open(QIODevice::ReadOnly)) { - printf("cannot open file %s\n", fi->fileName().toLatin1().data()); - return; - } - if (debugMsg) - printf(" load instrument definition <%s>\n", fi->filePath().toLocal8Bit().data()); - QDomDocument doc; - int line, column; - QString err; - if (!doc.setContent(&qf, false, &err, &line, &column)) { - QString col, ln, error; - col.setNum(column); - ln.setNum(line); - error = err + " at line: " + ln + " col: " + col; - printf("error reading file <%s>:\n %s\n", - fi->filePath().toLatin1().data(), error.toLatin1().data()); - return; - } - QDomNode node = doc.documentElement(); - while (!node.isNull()) { - QDomElement e = node.toElement(); - if (e.isNull()) - continue; - if (e.tagName() == "muse") { - QString version = e.attribute(QString("version")); - for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) { - QDomElement e = n.toElement(); - if (e.tagName() == "MidiInstrument") { - MidiInstrument* i = new MidiInstrument(); - i->read(n); - i->setFilePath(fi->filePath()); - bool replaced = false; - for (int idx = 0; idx < midiInstruments.size(); ++idx) { - if (midiInstruments[idx]->iname() == i->iname()) { - midiInstruments.replace(idx, i); - replaced = true; - if (debugMsg) - printf("Midi Instrument Definition <%s> overwritten\n", - i->iname().toLocal8Bit().data()); - break; - } - } - if (!replaced) - midiInstruments += i; - } - } - } - else - printf("MusE:laodIDF: %s not supported\n", e.tagName().toLatin1().data()); - node = node.nextSibling(); - } - qf.close(); - } - -//--------------------------------------------------------- -// initMidiInstruments -//--------------------------------------------------------- - -void initMidiInstruments() - { - genericMidiInstrument = new MidiInstrument(QWidget::tr("generic midi")); - - midiInstruments.push_back(genericMidiInstrument); - QString museGlobalInstruments(museGlobalShare - + QString("/instruments")); - if (debugMsg) - printf("load instrument definitions from <%s>\n", museGlobalInstruments.toLatin1().data()); - QDir instrumentsDir(museGlobalInstruments, QString("*.idf"), - QDir::SortFlags(QDir::Name | QDir::IgnoreCase), QDir::Files); - if (instrumentsDir.exists()) { - QFileInfoList list = instrumentsDir.entryInfoList(); - int n = list.size(); - for (int i = 0; i < n; ++i) { - QFileInfo fi = list.at(i); - loadIDF(&fi); - } - } - QString path2 = QDir::homePath() + "/" + config.instrumentPath; - if (debugMsg) - printf("load instrument definitions from <%s>\n", path2.toLatin1().data()); - QDir instrumentsDir2(path2, QString("*.idf"), - QDir::SortFlags(QDir::Name | QDir::IgnoreCase), QDir::Files); - if (instrumentsDir2.exists()) { - QFileInfoList list = instrumentsDir2.entryInfoList(); - int n = list.size(); - for (int i = 0; i < n; ++i) { - QFileInfo fi = list.at(i); - loadIDF(&fi); - } - } - } - -//--------------------------------------------------------- -// registerMidiInstrument -//--------------------------------------------------------- - -MidiInstrument* registerMidiInstrument(const QString& name) - { - for (iMidiInstrument i = midiInstruments.begin(); - i != midiInstruments.end(); ++i) { - if ((*i)->iname() == name) - return *i; - } - return genericMidiInstrument; - } - -//--------------------------------------------------------- -// removeMidiInstrument -//--------------------------------------------------------- - -void removeMidiInstrument(const QString& name) - { - for (iMidiInstrument i = midiInstruments.begin(); - i != midiInstruments.end(); ++i) { - if ((*i)->iname() == name) { - midiInstruments.erase(i); - return; - } - } - } - -void removeMidiInstrument(const MidiInstrument* instr) - { - for (iMidiInstrument i = midiInstruments.begin(); - i != midiInstruments.end(); ++i) { - if (*i == instr) { - midiInstruments.erase(i); - return; - } - } - } - -//--------------------------------------------------------- -// MidiInstrument -//--------------------------------------------------------- - -void MidiInstrument::init() - { - _initScript = 0; - _midiInit = new EventList(); - _midiReset = new EventList(); - _midiState = new EventList(); - _controller = new MidiControllerList; - - // add some default controller to controller list - // this controllers are always available for all instruments - // - MidiController* prog = new MidiController("Program", CTRL_PROGRAM, 0, 0x7fffff, 0); - _controller->push_back(prog); - _dirty = false; - _readonly = false; - } - -MidiInstrument::MidiInstrument() - { - init(); - } - -//--------------------------------------------------------- -// MidiInstrument -//--------------------------------------------------------- - -MidiInstrument::MidiInstrument(const QString& txt) - { - _name = txt; - init(); - } - -//--------------------------------------------------------- -// MidiInstrument -//--------------------------------------------------------- - -MidiInstrument::~MidiInstrument() - { - delete _midiInit; - delete _midiReset; - delete _midiState; - delete _controller; - if (_initScript) - delete _initScript; - } - -//--------------------------------------------------------- -// readPatchGroup -//--------------------------------------------------------- - -void PatchGroup::read(QDomNode node, MidiInstrument* instrument) - { - for (; !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - QString tag(e.tagName()); - - if (tag == "Patch") { - Patch* patch = new Patch; - patch->read(node, false, instrument); - patches.push_back(patch); - } - else if (tag == "drummap") { - Patch* patch = new Patch; - patch->read(node, true, instrument); - patches.push_back(patch); - } - else if (!tag.isEmpty()) - printf("MusE:PatchGroup(): unknown tag %s in group %s\n", - e.tagName().toLatin1().data(), name.toLatin1().data()); - } - } - -//--------------------------------------------------------- -// read -//--------------------------------------------------------- - -void Patch::read(QDomNode node, bool dr, MidiInstrument* instrument) - { - QDomElement e = node.toElement(); - name = e.attribute("name"); - typ = e.attribute("mode", "-1").toInt(); - hbank = e.attribute("hbank", "-1").toInt(); - lbank = e.attribute("lbank", "-1").toInt(); - prog = e.attribute("prog", "0").toInt(); - QString cat = e.attribute("cat"); - categorie = instrument->categories().indexOf(cat); - drumMap = 0; - if (!dr) - return; - drumMap = new DrumMap(name); - int idx = 0; - for (node = node.firstChild(); !node.isNull(); node = node.nextSibling()) { - e = node.toElement(); - QString tag(e.tagName()); - if (tag == "entry") { - DrumMapEntry* de = drumMap->entry(idx); - de->read(node); - ++idx; - } - else if (!tag.isEmpty()) { - printf("Patch: read drummap: unknown tag %s\n", tag.toLatin1().data()); - } - } - drumMap->init(); - } - -//--------------------------------------------------------- -// write -//--------------------------------------------------------- - -void Patch::write(Xml& xml) - { - if (drumMap == 0) { - QString s = QString("Patch name=\"%1\"").arg(Xml::xmlString(name)); - if (typ != -1) - s += QString(" mode=\"%d\"").arg(typ); - s += QString(" hbank=\"%1\" lbank=\"%2\" prog=\"%3\"").arg(hbank).arg(lbank).arg(prog); - xml.tagE(s); - return; - } - QString s = QString("drummap name=\"%1\"").arg(Xml::xmlString(name)); - s += QString(" hbank=\"%1\" lbank=\"%2\" prog=\"%3\"").arg(hbank).arg(lbank).arg(prog); - xml.stag(s); - for (int i = 0; i < DRUM_MAPSIZE; ++i) { - DrumMapEntry* dm = drumMap->entry(i); - dm->write(xml); - } - xml.etag("drummap"); - } - -//--------------------------------------------------------- -// readMidiState -//--------------------------------------------------------- - -void MidiInstrument::readMidiState(QDomNode node) - { - _midiState->read(node, true); - } - -//--------------------------------------------------------- -// read -//--------------------------------------------------------- - -void MidiInstrument::read(QDomNode node) - { - QDomElement e = node.toElement(); - _name = e.attribute("name"); - - for (node = node.firstChild(); !node.isNull(); node = node.nextSibling()) { - e = node.toElement(); - QString tag(e.tagName()); - if (tag == "Patch") { - Patch* patch = new Patch; - patch->read(node, false, this); - if (pg.empty()) { - PatchGroup p; - p.patches.push_back(patch); - pg.push_back(p); - } - else - pg[0].patches.push_back(patch); - } - else if (tag == "Category") { - QString name = e.attribute(QString("name")); - _categories.append(name); - } - else if (tag == "drummap") { - Patch* patch = new Patch; - patch->read(node, true, this); - if (pg.empty()) { - PatchGroup p; - p.patches.push_back(patch); - pg.push_back(p); - } - else - pg[0].patches.push_back(patch); - } - else if (tag == "PatchGroup") { - PatchGroup p; - p.name = e.attribute("name"); - p.read(node.firstChild(), this); - pg.push_back(p); - } - else if (tag == "Controller") { - MidiController* mc = new MidiController(); - mc->read(node); - // - // HACK: make predefined "Program" controller overloadable - // - if (mc->name() == "Program") { - for (iMidiController i = _controller->begin(); i != _controller->end(); ++i) { - if ((*i)->name() == mc->name()) { - _controller->erase(i); - break; - } - } - } - _controller->push_back(mc); - } - else if (tag == "Init") - _midiInit->read(node.firstChild(), true); - else if (tag == "SysEx") { - SysEx* se = new SysEx; - se->name = e.attribute("name"); - for (QDomNode nnode = node.firstChild(); !nnode.isNull(); nnode = nnode.nextSibling()) { - e = nnode.toElement(); - QString tag(e.tagName()); - if (tag == "comment") - se->comment = e.text(); - else if (tag == "data") { - se->dataLen = string2sysex(e.text(), &(se->data)); - } - else - printf("MidiInstrument::read():SysEx: unknown tag %s\n", tag.toLatin1().data()); - } - _sysex.append(se); - } - else if (!tag.isEmpty()) { - printf("MidiInstrument::read(): unknown tag %s\n", tag.toLatin1().data()); - } - } - } - -//--------------------------------------------------------- -// getPatchName -//--------------------------------------------------------- - -QString MidiInstrument::getPatchName(int /*channel*/, int prog) - { - int hbank = (prog >> 16) & 0xff; - int lbank = (prog >> 8) & 0xff; - prog &= 0xff; - if (prog == 0xff) - return "---"; - - int tmask = 1; - bool hb = hbank == 0xff; - bool lb = lbank == 0xff; - - for (std::vector::iterator i = pg.begin(); i != pg.end(); ++i) { - PatchList& pl = i->patches; - for (PatchList::const_iterator ipl = pl.begin(); ipl != pl.end(); ++ipl) { - const Patch* mp = *ipl; - if ((mp->typ & tmask) - && (prog == mp->prog) - && (hbank == mp->hbank || hb || mp->hbank == -1) - && (lbank == mp->lbank || lb || mp->lbank == -1)) - return mp->name; - } - } - return QString("---"); - } - -//--------------------------------------------------------- -// getDrumMap -//--------------------------------------------------------- - -DrumMap* MidiInstrument::getDrumMap(int prog) - { - int hbank = (prog >> 16) & 0xff; - int lbank = (prog >> 8) & 0xff; - prog &= 0xff; - if (prog == 0xff) - return 0; - - int tmask = 1; - bool hb = hbank == 0xff; - bool lb = lbank == 0xff; - - for (std::vector::iterator i = pg.begin(); i != pg.end(); ++i) { - PatchList& pl = i->patches; - for (PatchList::const_iterator ipl = pl.begin(); ipl != pl.end(); ++ipl) { - const Patch* mp = *ipl; - if ((mp->typ & tmask) - && (prog == mp->prog) - && (hbank == mp->hbank || hb || mp->hbank == -1) - && (lbank == mp->lbank || lb || mp->lbank == -1)) { - return mp->drumMap; - } - } - } - return 0; - } - -//--------------------------------------------------------- -// populatePatchPopup -//--------------------------------------------------------- - -void MidiInstrument::populatePatchPopup(QMenu* menu, int) - { - menu->clear(); - int mask = 7; - - if (pg.size() > 1) { - for (std::vector::iterator i = pg.begin(); i != pg.end(); ++i) { - QMenu* pm = menu->addMenu(i->name); -// pm->setFont(config.fonts[0]); - PatchList& pl = i->patches; - for (PatchList::const_iterator ipl = pl.begin(); ipl != pl.end(); ++ipl) { - const Patch* mp = *ipl; - if (mp->typ & mask) { - int id = ((mp->hbank & 0xff) << 16) - + ((mp->lbank & 0xff) << 8) + (mp->prog & 0xff); - QAction* a = pm->addAction(mp->name); - a->setData(id); - } - } - } - } - else if (pg.size() == 1 ){ - // no groups - PatchList& pl = pg.front().patches; - for (PatchList::const_iterator ipl = pl.begin(); ipl != pl.end(); ++ipl) { - const Patch* mp = *ipl; - if (mp->typ & mask) { - int id = ((mp->hbank & 0xff) << 16) - + ((mp->lbank & 0xff) << 8) + (mp->prog & 0xff); - QAction* a = menu->addAction(mp->name); - a->setData(id); - } - } - } - } - -//--------------------------------------------------------- -// getMidiController -//--------------------------------------------------------- - -MidiController* MidiInstrument::midiController(int num) const - { - for (iMidiController i = _controller->begin(); i != _controller->end(); ++i) { - int cn = (*i)->num(); - if (cn == num) - return *i; - // wildcard? - if (((cn & 0xff) == 0xff) && ((cn & ~0xff) == (num & ~0xff))) - return *i; - } - for (iMidiController i = defaultMidiController.begin(); i != defaultMidiController.end(); ++i) { - int cn = (*i)->num(); - if (cn == num) - return *i; - // wildcard? - if (((cn & 0xff) == 0xff) && ((cn & ~0xff) == (num & ~0xff))) - return *i; - } - QString name = midiCtrlName(num); - int min = 0; - int max = 127; - MidiController* c = new MidiController(name, num, min, max, 0); - defaultMidiController.push_back(c); - return c; - } - -//--------------------------------------------------------- -// write -//--------------------------------------------------------- - -void MidiInstrument::write(Xml& xml) - { - xml.header(); - xml.stag("muse version=\"2.1\""); - xml.stag(QString("MidiInstrument name=\"%1\"").arg(Xml::xmlString(iname()))); - - foreach(const QString& s, _categories) - xml.tagE(QString("Category name=\"%1\"").arg(Xml::xmlString(s))); - - std::vector* pg = groups(); - for (std::vector::iterator g = pg->begin(); g != pg->end(); ++g) { - xml.stag(QString("PatchGroup name=\"%1\"").arg(Xml::xmlString(g->name))); - for (iPatch p = g->patches.begin(); p != g->patches.end(); ++p) - (*p)->write(xml); - xml.etag("PatchGroup"); - } - for (iMidiController ic = _controller->begin(); ic != _controller->end(); ++ic) - (*ic)->write(xml); - xml.etag("MidiInstrument"); - xml.etag("muse"); - } - diff --git a/muse/muse/instruments/minstrument.h b/muse/muse/instruments/minstrument.h deleted file mode 100644 index 5bcf2616..00000000 --- a/muse/muse/instruments/minstrument.h +++ /dev/null @@ -1,160 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __MINSTRUMENT_H__ -#define __MINSTRUMENT_H__ - -#include "globaldefs.h" - -namespace AL { - class Xml; - }; -using AL::Xml; - -class MidiOutPort; -class EventList; -class MidiControllerList; -class MidiController; -class MidiEvent; -class DrumMap; -class MidiInstrument; - -//--------------------------------------------------------- -// Patch -//--------------------------------------------------------- - -struct Patch { - signed char typ; // 1 - GM 2 - GS 4 - XG - signed char hbank, lbank, prog; - QString name; - int categorie; - DrumMap* drumMap; - - void read(QDomNode, bool, MidiInstrument*); - void write(Xml& xml); - - Patch(); - ~Patch(); - }; - -typedef std::list PatchList; -typedef PatchList::iterator iPatch; -typedef PatchList::const_iterator ciPatch; - -//--------------------------------------------------------- -// PatchGroup -//--------------------------------------------------------- - -struct PatchGroup { - QString name; - PatchList patches; - void read(QDomNode, MidiInstrument*); - }; - -struct SysEx { - QString name; - QString comment; - int dataLen; - unsigned char* data; - }; - -//--------------------------------------------------------- -// MidiInstrument -//--------------------------------------------------------- - -class MidiInstrument { - std::vector pg; - MidiControllerList* _controller; - QList _sysex; - bool _dirty; - bool _readonly; - - void init(); - - protected: - QList _categories; - EventList* _midiInit; - EventList* _midiReset; - EventList* _midiState; - char* _initScript; - QString _name; - QString _filePath; - - public: - MidiInstrument(); - virtual ~MidiInstrument(); - MidiInstrument(const QString& txt); - const QString& iname() const { return _name; } - void setIName(const QString& txt) { _name = txt; } - QString filePath() const { return _filePath; } - void setFilePath(const QString& s) { _filePath = s; } - bool dirty() const { return _dirty; } - void setDirty(bool v) { _dirty = v; } - bool readonly() const { return _readonly; } - void setReadonly(bool v) { _readonly = v; } - - EventList* midiInit() const { return _midiInit; } - EventList* midiReset() const { return _midiReset; } - EventList* midiState() const { return _midiState; } - const char* initScript() const { return _initScript; } - MidiControllerList* controller() const { return _controller; } - - void readMidiState(QDomNode); - virtual bool guiVisible() const { return false; } - virtual void showGui(bool) {} - virtual bool hasGui() const { return false; } - virtual void writeToGui(const MidiEvent&) {} - - virtual QString getPatchName(int,int); - virtual DrumMap* getDrumMap(int); - - virtual void populatePatchPopup(QMenu*, int); - void read(QDomNode); - void write(Xml& xml); - const QList& sysex() const { return _sysex; } - void removeSysex(SysEx* sysex) { _sysex.removeAll(sysex); } - void addSysex(SysEx* sysex) { _sysex.append(sysex); } - - MidiController* midiController(int num) const; - - std::vector* groups() { return &pg; } - const QList& categories() const { return _categories; } - void addCategory(const QString& s) { _categories.append(s); } - }; - -//--------------------------------------------------------- -// MidiInstrumentList -//--------------------------------------------------------- - -class MidiInstrumentList : public QList { - }; - -typedef MidiInstrumentList::iterator iMidiInstrument; - -extern MidiInstrumentList midiInstruments; - -extern MidiInstrument* genericMidiInstrument; -extern void initMidiInstruments(); -extern MidiInstrument* registerMidiInstrument(const QString&); -extern void removeMidiInstrument(const QString& name); -extern void removeMidiInstrument(const MidiInstrument* instr); - -#endif - diff --git a/muse/muse/jack.cpp b/muse/muse/jack.cpp deleted file mode 100644 index bc372357..00000000 --- a/muse/muse/jack.cpp +++ /dev/null @@ -1,886 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "config.h" -#include "al/al.h" -#include "al/tempo.h" -#include "audio.h" -#include "globals.h" -#include "song.h" -#include "jackaudio.h" -#include "track.h" -#include "midiinport.h" - -#ifdef VST_SUPPORT -#include -#endif - -JackAudio* jackAudio; - -//--------------------------------------------------------- -// init -//--------------------------------------------------------- - -bool JackAudio::init() - { - return true; - } - -//--------------------------------------------------------- -// jack_thread_init -//--------------------------------------------------------- - -static void jack_thread_init (void* /*data*/) - { -#ifdef VST_SUPPORT - if (loadVST) - fst_adopt_thread(); -#endif - } - -//--------------------------------------------------------- -// timebase_callback -//--------------------------------------------------------- - -static void timebase_callback(jack_transport_state_t /* state */, - jack_nframes_t /* nframes */, - jack_position_t* pos, - int /* new_pos */, - void*) - { - AL::Pos p(pos->frame, AL::FRAMES); - pos->valid = JackPositionBBT; - p.mbt(&pos->bar, &pos->beat, &pos->tick); - pos->bar++; - pos->beat++; - pos->bar_start_tick = Pos(pos->bar, 0, 0).tick(); - // - // dummy: - // - pos->beats_per_bar = 4; - pos->beat_type = 4; - pos->ticks_per_beat = 384; - int tempo = AL::tempomap.tempo(p.tick()); - pos->beats_per_minute = (60000000.0 / tempo) * AL::tempomap.globalTempo()/100.0; - } - -//--------------------------------------------------------- -// processAudio -// JACK callback -//--------------------------------------------------------- - -int JackAudio::processAudio(jack_nframes_t frames, void*) - { - jackAudio->_frameCounter += frames; - - int jackState = jackAudio->getTransportState(); - segmentSize = frames; - if (audioState == AUDIO_RUNNING) - audio->process((unsigned long)frames, jackState); - else if (audioState == AUDIO_STOP) { - if (debugMsg) - puts("jack calling when audio is stopped!\n"); - } - else if (audioState == AUDIO_START1) - audioState = AUDIO_START2; - return 0; - } - -//--------------------------------------------------------- -// getTransportState -//--------------------------------------------------------- - -int JackAudio::getTransportState() - { - int jackState; - transportState = jack_transport_query(_client, &pos); - switch (jackAudio->transportState) { - case JackTransportStopped: - jackState = Audio::STOP; - break; - case JackTransportLooping: - case JackTransportRolling: - jackState = Audio::PLAY; - break; - case JackTransportStarting: - jackState = Audio::START_PLAY; - break; - default: - jackState = Audio::STOP; - break; - } - return jackState; - } - -//--------------------------------------------------------- -// processSync -// return TRUE (non-zero) when ready to roll. -//--------------------------------------------------------- - -static int processSync(jack_transport_state_t state, jack_position_t* pos, void*) - { - int audioState = Audio::STOP; - switch (state) { - case JackTransportStopped: - audioState = Audio::STOP; - break; - case JackTransportLooping: - case JackTransportRolling: - audioState = Audio::PLAY; - break; - case JackTransportStarting: - audioState = Audio::START_PLAY; - break; - } - unsigned frame = pos->frame; - return audio->sync(audioState, frame); - } - -//--------------------------------------------------------- -// processShutdown -//--------------------------------------------------------- - -static void processShutdown(void*) - { - audio->shutdown(); - - for (int i = 0; i < 10; ++i) { - if (audioState == AUDIO_STOP) - break; - sleep(1); - } - if (audioState == AUDIO_RUNNING) - fprintf(stderr, "MusE: sequencer still running, something is very wrong.\n"); - jackAudio->zeroClientPtr(); // jack disconnect client no longer valid - } - -//--------------------------------------------------------- -// jackError -//--------------------------------------------------------- - -static void jackError(const char* s) - { - fprintf(stderr, "JACK ERROR: %s\n", s); - } - -//--------------------------------------------------------- -// noJackError -//--------------------------------------------------------- - -static void noJackError(const char* /* s */) - { - } - -//--------------------------------------------------------- -// JackAudio -//--------------------------------------------------------- - -JackAudio::JackAudio(jack_client_t* cl, char* name) - : AudioDriver() - { - strcpy(jackRegisteredName, name); - _client = cl; - _frameCounter = 0; - } - -//--------------------------------------------------------- -// ~JackAudio -//--------------------------------------------------------- - -JackAudio::~JackAudio() - { - if (_client) { - if (jack_client_close(_client)) { - fprintf(stderr, "jack_client_close() failed: %s\n", - strerror(errno)); - } - } - _client = 0; - } - -//--------------------------------------------------------- -// getJackName() -//--------------------------------------------------------- - -char* JackAudio::getJackName() - { - return jackRegisteredName; - } - -//--------------------------------------------------------- -// restart -//--------------------------------------------------------- - -bool JackAudio::restart() - { - printf("JackAudio::restart\n"); - _client = jack_client_new(jackRegisteredName); - if (!_client) - return true; - registerClient(); - return false; - } - -//--------------------------------------------------------- -// bufsize_callback -//--------------------------------------------------------- - -static int bufsize_callback(jack_nframes_t n, void*) - { - printf("JACK: buffersize changed %d\n", n); - return 0; - } - -//--------------------------------------------------------- -// freewheel_callback -//--------------------------------------------------------- - -static void freewheel_callback(int starting, void*) - { - audio->setFreewheel(starting); - } - -//--------------------------------------------------------- -// srate_callback -//--------------------------------------------------------- - -static int srate_callback(jack_nframes_t n, void*) - { - if (debugMsg) - printf("JACK: sample rate changed: %d\n", n); - return 0; - } - -//--------------------------------------------------------- -// registration_callback -//--------------------------------------------------------- - -static void registration_callback(jack_port_id_t, int, void*) - { - if (debugMsg) - printf("JACK: registration changed\n"); - } - -//--------------------------------------------------------- -// graph_callback -// this is called from jack when the connections -// changed -//--------------------------------------------------------- - -static int graph_callback(void*) - { - // we cannot call JackAudio::graphChanged() from this - // context, so we send a message to the gui thread which in turn - // calls graphChanged() - - audio->sendMsgToGui(MSG_GRAPH_CHANGED); - if (debugMsg) - printf("JACK: graph changed!\n"); - return 0; - } - -//--------------------------------------------------------- -// JackAudio::graphChanged -// this is called from song in gui context triggered -// by graph_callback() -//--------------------------------------------------------- - -void JackAudio::graphChanged() - { - RouteList rr, ra; - - InputList* il = song->inputs(); - for (iAudioInput ii = il->begin(); ii != il->end(); ++ii) { - AudioInput* it = *ii; - int channels = it->channels(); - RouteList* irl = it->inRoutes(); - - for (int channel = 0; channel < channels; ++channel) { - jack_port_t* port = it->jackPort(channel).jackPort(); - if (port == 0) - continue; - const char** ports = jack_port_get_all_connections(_client, port); - - //--------------------------------------- - // check for disconnects - //--------------------------------------- - - foreach (const Route& r, *irl) { - if (r.dst.channel != channel) - continue; - const char* name = jack_port_name(r.src.port.jackPort()); - bool found = false; - for (const char** pn = ports; pn && *pn; ++pn) { - if (strcmp(*pn, name) == 0) { - found = true; - break; - } - } - if (!found) - rr.append(r); - } - - //--------------------------------------- - // check for connects - //--------------------------------------- - - if (ports) { - for (const char** pn = ports; *pn; ++pn) { - bool found = false; - foreach(const Route& r, *irl) { - if (r.dst.channel != channel) - continue; - const char* name = jack_port_name(r.src.port.jackPort()); - if (strcmp(*pn, name) == 0) { - found = true; - break; - } - } - if (!found) { - Route a; - Port port(jack_port_by_name(_client, *pn)); - a.src = RouteNode(port, -1, RouteNode::AUDIOPORT); - a.dst = RouteNode(it, channel); - ra.append(a); - } - } - free(ports); - } - } - } - -// printf(" input: remove %d add %d routes\n", rr.size(), ra.size()); - foreach(Route r, rr) - audio->msgRemoveRoute1(r); - foreach(Route r, ra) - audio->msgAddRoute1(r); - rr.clear(); - ra.clear(); - - OutputList* ol = song->outputs(); - for (iAudioOutput ii = ol->begin(); ii != ol->end(); ++ii) { - AudioOutput* it = *ii; - int channels = it->channels(); - for (int channel = 0; channel < channels; ++channel) { - jack_port_t* port = it->jackPort(channel).jackPort(); - if (port == 0) - continue; - const char** ports = jack_port_get_all_connections(_client, port); - RouteList* rl = it->outRoutes(); - - //--------------------------------------- - // check for disconnects - //--------------------------------------- - - foreach(const Route& r, *rl) { - if (r.src.channel != channel) - continue; - const char* name = jack_port_name(r.dst.port.jackPort()); - bool found = false; - const char** pn = ports; - while (pn && *pn) { - if (strcmp(*pn, name) == 0) { - found = true; - break; - } - ++pn; - } - if (!found) - rr.append(r); - } - - //--------------------------------------- - // check for connects - //--------------------------------------- - - if (ports) { - const char** pn = ports; - while (*pn) { - bool found = false; - foreach (const Route& r, *rl) { - if (r.src.channel != channel) - continue; - const char* name = jack_port_name(r.dst.port.jackPort()); - if (strcmp(*pn, name) == 0) { - found = true; - break; - } - } - if (!found) { - Route a; - Port port(jack_port_by_name(_client, *pn)); - a.src = RouteNode(it, channel, RouteNode::TRACK); - a.dst = RouteNode(port, -1, RouteNode::AUDIOPORT); - ra.append(a); - } - ++pn; - } - free(ports); - } - } - } -// printf(" output: remove %d add %d routes\n", rr.size(), ra.size()); - foreach(Route r, rr) - audio->msgRemoveRoute1(r); - foreach(Route r, ra) - audio->msgAddRoute1(r); - } - -//--------------------------------------------------------- -// register -//--------------------------------------------------------- - -void JackAudio::registerClient() - { - jack_set_process_callback(_client, processAudio, 0); - jack_set_sync_callback(_client, processSync, 0); - jack_on_shutdown(_client, processShutdown, 0); - jack_set_buffer_size_callback(_client, bufsize_callback, 0); - jack_set_sample_rate_callback(_client, srate_callback, 0); - jack_set_port_registration_callback(_client, registration_callback, 0); - jack_set_graph_order_callback(_client, graph_callback, 0); - jack_set_freewheel_callback (_client, freewheel_callback, 0); - jack_set_thread_init_callback(_client, (JackThreadInitCallback) jack_thread_init, 0); - jack_set_timebase_callback(_client, 0, timebase_callback, 0); - } - -//--------------------------------------------------------- -// registerInPort -//--------------------------------------------------------- - -Port JackAudio::registerInPort(const QString& name, bool midi) - { - const char* type = midi ? JACK_DEFAULT_MIDI_TYPE : JACK_DEFAULT_AUDIO_TYPE; - Port p(jack_port_register(_client, name.toLatin1().data(), type, JackPortIsInput, 0)); -// printf("JACK: registerInPort<%s>: <%s> %p\n", type, name.toLatin1().data(), p.jackPort()); - if (!p.jackPort()) - p.setZero(); - return p; - } - -//--------------------------------------------------------- -// registerOutPort -//--------------------------------------------------------- - -Port JackAudio::registerOutPort(const QString& name, bool midi) - { - const char* type = midi ? JACK_DEFAULT_MIDI_TYPE : JACK_DEFAULT_AUDIO_TYPE; - Port p(jack_port_register(_client, name.toLatin1().data(), type, JackPortIsOutput, 0)); -// printf("JACK: registerOutPort<%s>: <%s> %p\n", type, name.toLatin1().data(), p.jackPort()); - if (!p.jackPort()) - p.setZero(); - return p; - } - -//--------------------------------------------------------- -// exitJackAudio -//--------------------------------------------------------- - -void exitJackAudio() - { - if (jackAudio) - delete jackAudio; - } - -//--------------------------------------------------------- -// connect -// return false on error -//--------------------------------------------------------- - -bool JackAudio::connect(Port src, Port dst) - { - if (src.isZero() || dst.isZero()) { - fprintf(stderr, "JackAudio::connect(1): unknown jack ports (%d-%d)\n", - src.isZero(), dst.isZero()); - return false; - } - const char* sn = jack_port_name(src.jackPort()); - const char* dn = jack_port_name(dst.jackPort()); - - if (debugMsg) - printf("jack connect <%s>%p - <%s>%p\n", sn, src.jackPort(), dn, dst.jackPort()); - - if (sn == 0 || dn == 0) { - fprintf(stderr, "JackAudio::connect(2): unknown jack ports\n"); - return false; - } - int rv = jack_connect(_client, sn, dn); - if (rv) { - fprintf(stderr, "%d: jack connect <%s> - <%s> failed\n", - rv, sn, dn); - if (rv == EEXIST) - fprintf(stderr, " connection already made\n"); - else { - int pf = jack_port_flags(src.jackPort()); - if (!(pf & JackPortIsOutput)) - fprintf(stderr, " src is not an output port\n"); - pf = jack_port_flags(dst.jackPort()); - if (!(pf & JackPortIsInput)) - fprintf(stderr, " dst is not an input port\n"); - } - return false; - } - return true; - } - -//--------------------------------------------------------- -// disconnect -//--------------------------------------------------------- - -bool JackAudio::disconnect(Port src, Port dst) - { - const char* sn = jack_port_name(src.jackPort()); - const char* dn = jack_port_name(dst.jackPort()); - - if (debugMsg) - printf("jack disconnect <%s>%p - <%s>%p\n", sn, src.jackPort(), dn, dst.jackPort()); - - if (sn == 0 || dn == 0) { - fprintf(stderr, "JackAudio::disconnect: unknown jack ports\n"); - return false; - } - if (jack_disconnect(_client, sn, dn)) { - fprintf(stderr, "jack disconnect <%s> - <%s> failed\n", - sn, dn); - return false; - } - return true; - } - -//--------------------------------------------------------- -// start -//--------------------------------------------------------- - -void JackAudio::start(int) - { - if (jack_activate(_client)) { - fprintf (stderr, "JACK: cannot activate client\n"); - exit(-1); - } - } - -//--------------------------------------------------------- -// stop -//--------------------------------------------------------- - -void JackAudio::stop() - { - if (_client == 0) - return; - if (jack_deactivate(_client)) - fprintf (stderr, "JACK: cannot deactivate client\n"); - } - -//--------------------------------------------------------- -// outputPorts -//--------------------------------------------------------- - -QList JackAudio::outputPorts(bool midi) - { - const char* type = midi ? JACK_DEFAULT_MIDI_TYPE : JACK_DEFAULT_AUDIO_TYPE; - const char** ports = jack_get_ports(_client, 0, type, JackPortIsOutput); - QList clientList; - for (const char** p = ports; p && *p; ++p) { - jack_port_t* port = jack_port_by_name(_client, *p); - char buffer[128]; - strncpy(buffer, *p, 128); - if (strncmp(buffer, "MusE", 4) == 0) - continue; - PortName pn; - pn.name = QString(buffer); - pn.port = Port(port); - clientList.append(pn); - } - return clientList; - } - -//--------------------------------------------------------- -// inputPorts -//--------------------------------------------------------- - -QList JackAudio::inputPorts(bool midi) - { - const char* type = midi ? JACK_DEFAULT_MIDI_TYPE : JACK_DEFAULT_AUDIO_TYPE; - const char** ports = jack_get_ports(_client, 0, type, JackPortIsInput); - QList clientList; - for (const char** p = ports; p && *p; ++p) { - jack_port_t* port = jack_port_by_name(_client, *p); - char buffer[128]; - strncpy(buffer, *p, 128); - if (strncmp(buffer, "MusE", 4) == 0) - continue; - PortName pn; - pn.name = QString(buffer); - pn.port = Port(port); - clientList.append(pn); - } - return clientList; - } - -//--------------------------------------------------------- -// portName -//--------------------------------------------------------- - -QString JackAudio::portName(Port port) - { - const char* nameStrPtr = jack_port_name(port.jackPort()); - QString s(nameStrPtr); - return s; - } - -//--------------------------------------------------------- -// unregisterPort -//--------------------------------------------------------- - -void JackAudio::unregisterPort(Port p) - { - if (_client) { -// printf("JACK: unregister Port %p\n", p); - if (jack_port_unregister(_client, p.jackPort())) - fprintf(stderr, "jack unregister port %p failed\n", p.jackPort()); - } - } - -//--------------------------------------------------------- -// setFreewheel -//--------------------------------------------------------- - -void JackAudio::setFreewheel(bool f) - { -// printf("JACK: setFreewheel %d\n", f); - jack_set_freewheel(_client, f); - } - -//--------------------------------------------------------- -// startTransport -//--------------------------------------------------------- - -void JackAudio::startTransport() - { - jack_transport_start(_client); - } - -//--------------------------------------------------------- -// stopTransport -//--------------------------------------------------------- - -void JackAudio::stopTransport() - { - if (_client) - jack_transport_stop(_client); - } - -//--------------------------------------------------------- -// seekTransport -//--------------------------------------------------------- - -void JackAudio::seekTransport(unsigned frame) - { - jack_transport_locate(_client, frame); - } - -//--------------------------------------------------------- -// findPort -//--------------------------------------------------------- - -Port JackAudio::findPort(const QString& name) - { - if (_client == 0) { - printf("JackAudio(%p)::findPort(%s): _client==0\n", this, qPrintable(name)); - return Port(); - } - jack_port_t* port = jack_port_by_name(_client, name.toLatin1().data()); - return (port == 0) ? Port() : Port(port); - } - -//--------------------------------------------------------- -// realtimePriority -// return zero if not running realtime -// can only be called if JACK client thread is already -// running -//--------------------------------------------------------- - -int JackAudio::realtimePriority() const - { - pthread_t t = jack_client_thread_id(_client); - int policy; - struct sched_param param; - memset(¶m, 0, sizeof(param)); - int rv = pthread_getschedparam(t, &policy, ¶m); - if (rv) { - perror("MusE: get jack schedule parameter"); - return 0; - } - if (policy != SCHED_FIFO) { - printf("JACK is not running realtime\n"); - return 0; - } - return param.sched_priority; - } - -//--------------------------------------------------------- -// initJackAudio -// return true if JACK not found -//--------------------------------------------------------- - -bool initJackAudio() - { - if (debugMsg) { - fprintf(stderr, "init Jack Audio\n"); - jack_set_error_function(jackError); - } - else - jack_set_error_function(noJackError); - - jack_client_t* client = 0; - jack_status_t status; - jack_options_t options = JackNullOption; - client = jack_client_open("MusE", options, &status); - if (!client) { - if (status & JackServerStarted) - printf("jack server started...\n"); - if (status & JackServerFailed) - printf("cannot connect to jack server\n"); - if (status & JackServerError) - printf("communication with jack server failed\n"); - if (status & JackShmFailure) - printf("jack cannot access shared memory\n"); - if (status & JackVersionError) - printf("jack server has wrong version\n"); - printf("cannot create jack client\n"); - return true; - } - - if (debugMsg) - fprintf(stderr, "init Jack Audio: register device\n"); - - jack_set_error_function(jackError); - if (debugMsg) - fprintf(stderr, "init Jack Audio: register device\n"); - - jackAudio = new JackAudio(client, jack_get_client_name(client)); - if (debugMsg) - fprintf(stderr, "init Jack Audio: register client\n"); - jackAudio->registerClient(); - AL::sampleRate = jack_get_sample_rate(client); - segmentSize = jack_get_buffer_size(client); - audioDriver = jackAudio; - return false; - } - -//--------------------------------------------------------- -// putEvent -//--------------------------------------------------------- - -void JackAudio::putEvent(Port port, const MidiEvent& e) - { - if (midiOutputTrace) { - printf("MidiOut<%s>: jackMidi: ", portName(port).toLatin1().data()); - e.dump(); - } - void* pb = jack_port_get_buffer(port.jackPort(), segmentSize); - int ft = e.time() - _frameCounter; - if (ft < 0) - ft = 0; - if (ft >= (int)segmentSize) { - printf("JackAudio::putEvent: time out of range %d(seg=%d)\n", ft, segmentSize); - if (ft > (int)segmentSize) - ft = segmentSize - 1; - } - switch(e.type()) { - case ME_NOTEON: - case ME_NOTEOFF: - case ME_POLYAFTER: - case ME_CONTROLLER: - case ME_PITCHBEND: - { - unsigned char* p = jack_midi_event_reserve(pb, ft, 3); - if (p == 0) { - fprintf(stderr, "JackMidi: buffer overflow, event lost\n"); - return; - } - p[0] = e.type() | e.channel(); - p[1] = e.dataA(); - p[2] = e.dataB(); - } - break; - - case ME_PROGRAM: - case ME_AFTERTOUCH: - { - unsigned char* p = jack_midi_event_reserve(pb, ft, 2); - if (p == 0) { - fprintf(stderr, "JackMidi: buffer overflow, event lost\n"); - return; - } - p[0] = e.type() | e.channel(); - p[1] = e.dataA(); - } - break; - case ME_SYSEX: - { - const unsigned char* data = e.data(); - int len = e.len(); - unsigned char* p = jack_midi_event_reserve(pb, ft, len+2); - if (p == 0) { - fprintf(stderr, "JackMidi: buffer overflow, event lost\n"); - return; - } - p[0] = 0xf0; - p[len+1] = 0xf7; - memcpy(p+1, data, len); - } - break; - case ME_SONGPOS: - case ME_CLOCK: - case ME_START: - case ME_CONTINUE: - case ME_STOP: - printf("JackMidi: event type %x not supported\n", e.type()); - break; - } - } - -//--------------------------------------------------------- -// startMidiCycle -//--------------------------------------------------------- - -void JackAudio::startMidiCycle(Port port) - { - void* port_buf = jack_port_get_buffer(port.jackPort(), segmentSize); - jack_midi_clear_buffer(port_buf); - } - -//--------------------------------------------------------- -// collectMidiEvents -//--------------------------------------------------------- - -void JackAudio::collectMidiEvents(MidiInPort* track, Port port) - { - void* port_buf = jack_port_get_buffer(port.jackPort(), segmentSize); - jack_midi_event_t event; - jack_nframes_t eventCount = jack_midi_get_event_count(port_buf); - for (jack_nframes_t i = 0; i < eventCount; ++i) { - jack_midi_event_get(&event, port_buf, i); - track->eventReceived(&event); - } - } - - diff --git a/muse/muse/jackaudio.h b/muse/muse/jackaudio.h deleted file mode 100644 index 1839d27e..00000000 --- a/muse/muse/jackaudio.h +++ /dev/null @@ -1,90 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __JACKAUDIO_H__ -#define __JACKAUDIO_H__ - -#include "audiodev.h" -class MidiInPort; - -//--------------------------------------------------------- -// JackAudio -//--------------------------------------------------------- - -class JackAudio : public AudioDriver { - jack_client_t* _client; - jack_position_t pos; - char jackRegisteredName[8]; - jack_transport_state_t transportState; - jack_nframes_t _frameCounter; - - static int processAudio(jack_nframes_t frames, void*); - - public: - JackAudio(jack_client_t* cl, char * jack_id_string); - virtual ~JackAudio(); - - int getTransportState(); - virtual bool init(); - virtual void start(int); - virtual bool restart(); - virtual void stop (); - virtual void zeroClientPtr() { _client = 0; } - virtual float* getBuffer(Port port, unsigned long nframes) { - return (float*)jack_port_get_buffer(port.jackPort(), nframes); - } - - virtual QList outputPorts(bool midi); - virtual QList inputPorts(bool midi); - - virtual void registerClient(); - - virtual Port registerOutPort(const QString& name, bool midi); - virtual Port registerInPort(const QString& name, bool midi); - - virtual char* getJackName(); - - virtual void unregisterPort(Port); - virtual bool connect(Port, Port); - virtual bool disconnect(Port, Port); - virtual void setPortName(Port p, const QString& n) { - jack_port_set_name(p.jackPort(), n.toLatin1().data()); - } - virtual Port findPort(const QString& name); - virtual QString portName(Port); - virtual int realtimePriority() const; - virtual void startTransport(); - virtual void stopTransport(); - virtual void seekTransport(unsigned frame); - virtual void setFreewheel(bool f); - - jack_transport_state_t transportQuery(jack_position_t* pos) { - return jack_transport_query(_client, pos); - } - void graphChanged(); - virtual void putEvent(Port, const MidiEvent&); - virtual void startMidiCycle(Port); - - virtual unsigned frameTime() const { return _frameCounter; } - virtual void collectMidiEvents(MidiInPort*, Port); - }; - -#endif - diff --git a/muse/muse/ladspa.h b/muse/muse/ladspa.h deleted file mode 100644 index 7bbc338f..00000000 --- a/muse/muse/ladspa.h +++ /dev/null @@ -1,599 +0,0 @@ -/* ladspa.h - - Linux Audio Developer's Simple Plugin API Version 1.1[provisional, - LGPL]. Copyright (C) 2000-2002 Richard W.E. Furse, Paul - Barton-Davis, Stefan Westerfeld. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public License - as published by the Free Software Foundation; either version 2.1 of - the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - USA. */ - -#ifndef LADSPA_INCLUDED -#define LADSPA_INCLUDED - -#ifdef __cplusplus -extern "C" { -#endif - -/*****************************************************************************/ - -/* Overview: - - There is a large number of synthesis packages in use or development - on the Linux platform at this time. This API (`The Linux Audio - Developer's Simple Plugin API') attempts to give programmers the - ability to write simple `plugin' audio processors in C/C++ and link - them dynamically (`plug') into a range of these packages (`hosts'). - It should be possible for any host and any plugin to communicate - completely through this interface. - - This API is deliberately short and simple. To achieve compatibility - with a range of promising Linux sound synthesis packages it - attempts to find the `greatest common divisor' in their logical - behaviour. Having said this, certain limiting decisions are - implicit, notably the use of a fixed type (LADSPA_Data) for all - data transfer and absence of a parameterised `initialisation' - phase. See below for the LADSPA_Data typedef. - - Plugins are expected to distinguish between control and audio - data. Plugins have `ports' that are inputs or outputs for audio or - control data and each plugin is `run' for a `block' corresponding - to a short time interval measured in samples. Audio data is - communicated using arrays of LADSPA_Data, allowing a block of audio - to be processed by the plugin in a single pass. Control data is - communicated using single LADSPA_Data values. Control data has a - single value at the start of a call to the `run()' or `run_adding()' - function, and may be considered to remain this value for its - duration. The plugin may assume that all its input and output ports - have been connected to the relevant data location (see the - `connect_port()' function below) before it is asked to run. - - Plugins will reside in shared object files suitable for dynamic - linking by dlopen() and family. The file will provide a number of - `plugin types' that can be used to instantiate actual plugins - (sometimes known as `plugin instances') that can be connected - together to perform tasks. - - This API contains very limited error-handling. */ - -/*****************************************************************************/ - -/* Fundamental data type passed in and out of plugin. This data type - is used to communicate audio samples and control values. It is - assumed that the plugin will work sensibly given any numeric input - value although it may have a preferred range (see hints below). - - For audio it is generally assumed that 1.0f is the `0dB' reference - amplitude and is a `normal' signal level. */ - -typedef float LADSPA_Data; - -/*****************************************************************************/ - -/* Special Plugin Properties: - - Optional features of the plugin type are encapsulated in the - LADSPA_Properties type. This is assembled by ORing individual - properties together. */ - -typedef int LADSPA_Properties; - -/* Property LADSPA_PROPERTY_REALTIME indicates that the plugin has a - real-time dependency (e.g. listens to a MIDI device) and so its - output must not be cached or subject to significant latency. */ -#define LADSPA_PROPERTY_REALTIME 0x1 - -/* Property LADSPA_PROPERTY_INPLACE_BROKEN indicates that the plugin - may cease to work correctly if the host elects to use the same data - location for both input and output (see connect_port()). This - should be avoided as enabling this flag makes it impossible for - hosts to use the plugin to process audio `in-place.' */ -#define LADSPA_PROPERTY_INPLACE_BROKEN 0x2 - -/* Property LADSPA_PROPERTY_HARD_RT_CAPABLE indicates that the plugin - is capable of running not only in a conventional host but also in a - `hard real-time' environment. To qualify for this the plugin must - satisfy all of the following: - - (1) The plugin must not use malloc(), free() or other heap memory - management within its run() or run_adding() functions. All new - memory used in run() must be managed via the stack. These - restrictions only apply to the run() function. - - (2) The plugin will not attempt to make use of any library - functions with the exceptions of functions in the ANSI standard C - and C maths libraries, which the host is expected to provide. - - (3) The plugin will not access files, devices, pipes, sockets, IPC - or any other mechanism that might result in process or thread - blocking. - - (4) The plugin will take an amount of time to execute a run() or - run_adding() call approximately of form (A+B*SampleCount) where A - and B depend on the machine and host in use. This amount of time - may not depend on input signals or plugin state. The host is left - the responsibility to perform timings to estimate upper bounds for - A and B. */ -#define LADSPA_PROPERTY_HARD_RT_CAPABLE 0x4 - -#define LADSPA_IS_REALTIME(x) ((x) & LADSPA_PROPERTY_REALTIME) -#define LADSPA_IS_INPLACE_BROKEN(x) ((x) & LADSPA_PROPERTY_INPLACE_BROKEN) -#define LADSPA_IS_HARD_RT_CAPABLE(x) ((x) & LADSPA_PROPERTY_HARD_RT_CAPABLE) - -/*****************************************************************************/ - -/* Plugin Ports: - - Plugins have `ports' that are inputs or outputs for audio or - data. Ports can communicate arrays of LADSPA_Data (for audio - inputs/outputs) or single LADSPA_Data values (for control - input/outputs). This information is encapsulated in the - LADSPA_PortDescriptor type which is assembled by ORing individual - properties together. - - Note that a port must be an input or an output port but not both - and that a port must be a control or audio port but not both. */ - -typedef int LADSPA_PortDescriptor; - -/* Property LADSPA_PORT_INPUT indicates that the port is an input. */ -#define LADSPA_PORT_INPUT 0x1 - -/* Property LADSPA_PORT_OUTPUT indicates that the port is an output. */ -#define LADSPA_PORT_OUTPUT 0x2 - -/* Property LADSPA_PORT_CONTROL indicates that the port is a control - port. */ -#define LADSPA_PORT_CONTROL 0x4 - -/* Property LADSPA_PORT_AUDIO indicates that the port is a audio - port. */ -#define LADSPA_PORT_AUDIO 0x8 - -#define LADSPA_IS_PORT_INPUT(x) ((x) & LADSPA_PORT_INPUT) -#define LADSPA_IS_PORT_OUTPUT(x) ((x) & LADSPA_PORT_OUTPUT) -#define LADSPA_IS_PORT_CONTROL(x) ((x) & LADSPA_PORT_CONTROL) -#define LADSPA_IS_PORT_AUDIO(x) ((x) & LADSPA_PORT_AUDIO) - -/*****************************************************************************/ - -/* Plugin Port Range Hints: - - The host may wish to provide a representation of data entering or - leaving a plugin (e.g. to generate a GUI automatically). To make - this more meaningful, the plugin should provide `hints' to the host - describing the usual values taken by the data. - - Note that these are only hints. The host may ignore them and the - plugin must not assume that data supplied to it is meaningful. If - the plugin receives invalid input data it is expected to continue - to run without failure and, where possible, produce a sensible - output (e.g. a high-pass filter given a negative cutoff frequency - might switch to an all-pass mode). - - Hints are meaningful for all input and output ports but hints for - input control ports are expected to be particularly useful. - - More hint information is encapsulated in the - LADSPA_PortRangeHintDescriptor type which is assembled by ORing - individual hint types together. Hints may require further - LowerBound and UpperBound information. - - All the hint information for a particular port is aggregated in the - LADSPA_PortRangeHint structure. */ - -typedef int LADSPA_PortRangeHintDescriptor; - -/* Hint LADSPA_HINT_BOUNDED_BELOW indicates that the LowerBound field - of the LADSPA_PortRangeHint should be considered meaningful. The - value in this field should be considered the (inclusive) lower - bound of the valid range. If LADSPA_HINT_SAMPLE_RATE is also - specified then the value of LowerBound should be multiplied by the - sample rate. */ -#define LADSPA_HINT_BOUNDED_BELOW 0x1 - -/* Hint LADSPA_HINT_BOUNDED_ABOVE indicates that the UpperBound field - of the LADSPA_PortRangeHint should be considered meaningful. The - value in this field should be considered the (inclusive) upper - bound of the valid range. If LADSPA_HINT_SAMPLE_RATE is also - specified then the value of UpperBound should be multiplied by the - sample rate. */ -#define LADSPA_HINT_BOUNDED_ABOVE 0x2 - -/* Hint LADSPA_HINT_TOGGLED indicates that the data item should be - considered a Boolean toggle. Data less than or equal to zero should - be considered `off' or `false,' and data above zero should be - considered `on' or `true.' LADSPA_HINT_TOGGLED may not be used in - conjunction with any other hint except LADSPA_HINT_DEFAULT_0 or - LADSPA_HINT_DEFAULT_1. */ -#define LADSPA_HINT_TOGGLED 0x4 - -/* Hint LADSPA_HINT_SAMPLE_RATE indicates that any bounds specified - should be interpreted as multiples of the sample rate. For - instance, a frequency range from 0Hz to the Nyquist frequency (half - the sample rate) could be requested by this hint in conjunction - with LowerBound = 0 and UpperBound = 0.5. Hosts that support bounds - at all must support this hint to retain meaning. */ -#define LADSPA_HINT_SAMPLE_RATE 0x8 - -/* Hint LADSPA_HINT_LOGARITHMIC indicates that it is likely that the - user will find it more intuitive to view values using a logarithmic - scale. This is particularly useful for frequencies and gains. */ -#define LADSPA_HINT_LOGARITHMIC 0x10 - -/* Hint LADSPA_HINT_INTEGER indicates that a user interface would - probably wish to provide a stepped control taking only integer - values. Any bounds set should be slightly wider than the actual - integer range required to avoid floating point rounding errors. For - instance, the integer set {0,1,2,3} might be described as [-0.1, - 3.1]. */ -#define LADSPA_HINT_INTEGER 0x20 - -/* The various LADSPA_HINT_HAS_DEFAULT_* hints indicate a `normal' - value for the port that is sensible as a default. For instance, - this value is suitable for use as an initial value in a user - interface or as a value the host might assign to a control port - when the user has not provided one. Defaults are encoded using a - mask so only one default may be specified for a port. Some of the - hints make use of lower and upper bounds, in which case the - relevant bound or bounds must be available and - LADSPA_HINT_SAMPLE_RATE must be applied as usual. The resulting - default must be rounded if LADSPA_HINT_INTEGER is present. Default - values were introduced in LADSPA v1.1. */ -#define LADSPA_HINT_DEFAULT_MASK 0x3C0 - -/* This default values indicates that no default is provided. */ -#define LADSPA_HINT_DEFAULT_NONE 0x0 - -/* This default hint indicates that the suggested lower bound for the - port should be used. */ -#define LADSPA_HINT_DEFAULT_MINIMUM 0x40 - -/* This default hint indicates that a low value between the suggested - lower and upper bounds should be chosen. For ports with - LADSPA_HINT_LOGARITHMIC, this should be exp(log(lower) * 0.75 + - log(upper) * 0.25). Otherwise, this should be (lower * 0.75 + upper - * 0.25). */ -#define LADSPA_HINT_DEFAULT_LOW 0x80 - -/* This default hint indicates that a middle value between the - suggested lower and upper bounds should be chosen. For ports with - LADSPA_HINT_LOGARITHMIC, this should be exp(log(lower) * 0.5 + - log(upper) * 0.5). Otherwise, this should be (lower * 0.5 + upper * - 0.5). */ -#define LADSPA_HINT_DEFAULT_MIDDLE 0xC0 - -/* This default hint indicates that a high value between the suggested - lower and upper bounds should be chosen. For ports with - LADSPA_HINT_LOGARITHMIC, this should be exp(log(lower) * 0.25 + - log(upper) * 0.75). Otherwise, this should be (lower * 0.25 + upper - * 0.75). */ -#define LADSPA_HINT_DEFAULT_HIGH 0x100 - -/* This default hint indicates that the suggested upper bound for the - port should be used. */ -#define LADSPA_HINT_DEFAULT_MAXIMUM 0x140 - -/* This default hint indicates that the number 0 should be used. Note - that this default may be used in conjunction with - LADSPA_HINT_TOGGLED. */ -#define LADSPA_HINT_DEFAULT_0 0x200 - -/* This default hint indicates that the number 1 should be used. Note - that this default may be used in conjunction with - LADSPA_HINT_TOGGLED. */ -#define LADSPA_HINT_DEFAULT_1 0x240 - -/* This default hint indicates that the number 100 should be used. */ -#define LADSPA_HINT_DEFAULT_100 0x280 - -/* This default hint indicates that the Hz frequency of `concert A' - should be used. This will be 440 unless the host uses an unusual - tuning convention, in which case it may be within a few Hz. */ -#define LADSPA_HINT_DEFAULT_440 0x2C0 - -#define LADSPA_IS_HINT_BOUNDED_BELOW(x) ((x) & LADSPA_HINT_BOUNDED_BELOW) -#define LADSPA_IS_HINT_BOUNDED_ABOVE(x) ((x) & LADSPA_HINT_BOUNDED_ABOVE) -#define LADSPA_IS_HINT_TOGGLED(x) ((x) & LADSPA_HINT_TOGGLED) -#define LADSPA_IS_HINT_SAMPLE_RATE(x) ((x) & LADSPA_HINT_SAMPLE_RATE) -#define LADSPA_IS_HINT_LOGARITHMIC(x) ((x) & LADSPA_HINT_LOGARITHMIC) -#define LADSPA_IS_HINT_INTEGER(x) ((x) & LADSPA_HINT_INTEGER) - -#define LADSPA_IS_HINT_HAS_DEFAULT(x) ((x) & LADSPA_HINT_DEFAULT_MASK) -#define LADSPA_IS_HINT_DEFAULT_MINIMUM(x) (((x) & LADSPA_HINT_DEFAULT_MASK) \ - == LADSPA_HINT_DEFAULT_MINIMUM) -#define LADSPA_IS_HINT_DEFAULT_LOW(x) (((x) & LADSPA_HINT_DEFAULT_MASK) \ - == LADSPA_HINT_DEFAULT_LOW) -#define LADSPA_IS_HINT_DEFAULT_MIDDLE(x) (((x) & LADSPA_HINT_DEFAULT_MASK) \ - == LADSPA_HINT_DEFAULT_MIDDLE) -#define LADSPA_IS_HINT_DEFAULT_HIGH(x) (((x) & LADSPA_HINT_DEFAULT_MASK) \ - == LADSPA_HINT_DEFAULT_HIGH) -#define LADSPA_IS_HINT_DEFAULT_MAXIMUM(x) (((x) & LADSPA_HINT_DEFAULT_MASK) \ - == LADSPA_HINT_DEFAULT_MAXIMUM) -#define LADSPA_IS_HINT_DEFAULT_0(x) (((x) & LADSPA_HINT_DEFAULT_MASK) \ - == LADSPA_HINT_DEFAULT_0) -#define LADSPA_IS_HINT_DEFAULT_1(x) (((x) & LADSPA_HINT_DEFAULT_MASK) \ - == LADSPA_HINT_DEFAULT_1) -#define LADSPA_IS_HINT_DEFAULT_100(x) (((x) & LADSPA_HINT_DEFAULT_MASK) \ - == LADSPA_HINT_DEFAULT_100) -#define LADSPA_IS_HINT_DEFAULT_440(x) (((x) & LADSPA_HINT_DEFAULT_MASK) \ - == LADSPA_HINT_DEFAULT_440) - -typedef struct _LADSPA_PortRangeHint { - - /* Hints about the port. */ - LADSPA_PortRangeHintDescriptor HintDescriptor; - - /* Meaningful when hint LADSPA_HINT_BOUNDED_BELOW is active. When - LADSPA_HINT_SAMPLE_RATE is also active then this value should be - multiplied by the relevant sample rate. */ - LADSPA_Data LowerBound; - - /* Meaningful when hint LADSPA_HINT_BOUNDED_ABOVE is active. When - LADSPA_HINT_SAMPLE_RATE is also active then this value should be - multiplied by the relevant sample rate. */ - LADSPA_Data UpperBound; - -} LADSPA_PortRangeHint; - -/*****************************************************************************/ - -/* Plugin Handles: - - This plugin handle indicates a particular instance of the plugin - concerned. It is valid to compare this to NULL (0 for C++) but - otherwise the host should not attempt to interpret it. The plugin - may use it to reference internal instance data. */ - -typedef void * LADSPA_Handle; - -/*****************************************************************************/ - -/* Descriptor for a Type of Plugin: - - This structure is used to describe a plugin type. It provides a - number of functions to examine the type, instantiate it, link it to - buffers and workspaces and to run it. */ - -typedef struct _LADSPA_Descriptor { - - /* This numeric identifier indicates the plugin type - uniquely. Plugin programmers may reserve ranges of IDs from a - central body to avoid clashes. Hosts may assume that IDs are - below 0x1000000. */ - unsigned long UniqueID; - - /* This identifier can be used as a unique, case-sensitive - identifier for the plugin type within the plugin file. Plugin - types should be identified by file and label rather than by index - or plugin name, which may be changed in new plugin - versions. Labels must not contain white-space characters. */ - const char * Label; - - /* This indicates a number of properties of the plugin. */ - LADSPA_Properties Properties; - - /* This member points to the null-terminated name of the plugin - (e.g. "Sine Oscillator"). */ - const char * Name; - - /* This member points to the null-terminated string indicating the - maker of the plugin. This can be an empty string but not NULL. */ - const char * Maker; - - /* This member points to the null-terminated string indicating any - copyright applying to the plugin. If no Copyright applies the - string "None" should be used. */ - const char * Copyright; - - /* This indicates the number of ports (input AND output) present on - the plugin. */ - unsigned long PortCount; - - /* This member indicates an array of port descriptors. Valid indices - vary from 0 to PortCount-1. */ - const LADSPA_PortDescriptor * PortDescriptors; - - /* This member indicates an array of null-terminated strings - describing ports (e.g. "Frequency (Hz)"). Valid indices vary from - 0 to PortCount-1. */ - const char * const * PortNames; - - /* This member indicates an array of range hints for each port (see - above). Valid indices vary from 0 to PortCount-1. */ - const LADSPA_PortRangeHint * PortRangeHints; - - /* This may be used by the plugin developer to pass any custom - implementation data into an instantiate call. It must not be used - or interpreted by the host. It is expected that most plugin - writers will not use this facility as LADSPA_Handle should be - used to hold instance data. */ - void * ImplementationData; - - /* This member is a function pointer that instantiates a plugin. A - handle is returned indicating the new plugin instance. The - instantiation function accepts a sample rate as a parameter. The - plugin descriptor from which this instantiate function was found - must also be passed. This function must return NULL if - instantiation fails. - - Note that instance initialisation should generally occur in - activate() rather than here. */ - LADSPA_Handle (*instantiate)(const struct _LADSPA_Descriptor * Descriptor, - unsigned long SampleRate); - - /* This member is a function pointer that connects a port on an - instantiated plugin to a memory location at which a block of data - for the port will be read/written. The data location is expected - to be an array of LADSPA_Data for audio ports or a single - LADSPA_Data value for control ports. Memory issues will be - managed by the host. The plugin must read/write the data at these - locations every time run() or run_adding() is called and the data - present at the time of this connection call should not be - considered meaningful. - - connect_port() may be called more than once for a plugin instance - to allow the host to change the buffers that the plugin is - reading or writing. These calls may be made before or after - activate() or deactivate() calls. - - connect_port() must be called at least once for each port before - run() or run_adding() is called. When working with blocks of - LADSPA_Data the plugin should pay careful attention to the block - size passed to the run function as the block allocated may only - just be large enough to contain the block of samples. - - Plugin writers should be aware that the host may elect to use the - same buffer for more than one port and even use the same buffer - for both input and output (see LADSPA_PROPERTY_INPLACE_BROKEN). - However, overlapped buffers or use of a single buffer for both - audio and control data may result in unexpected behaviour. */ - void (*connect_port)(LADSPA_Handle Instance, - unsigned long Port, - LADSPA_Data * DataLocation); - - /* This member is a function pointer that initialises a plugin - instance and activates it for use. This is separated from - instantiate() to aid real-time support and so that hosts can - reinitialise a plugin instance by calling deactivate() and then - activate(). In this case the plugin instance must reset all state - information dependent on the history of the plugin instance - except for any data locations provided by connect_port() and any - gain set by set_run_adding_gain(). If there is nothing for - activate() to do then the plugin writer may provide a NULL rather - than an empty function. - - When present, hosts must call this function once before run() (or - run_adding()) is called for the first time. This call should be - made as close to the run() call as possible and indicates to - real-time plugins that they are now live. Plugins should not rely - on a prompt call to run() after activate(). activate() may not be - called again unless deactivate() is called first. Note that - connect_port() may be called before or after a call to - activate(). */ - void (*activate)(LADSPA_Handle Instance); - - /* This method is a function pointer that runs an instance of a - plugin for a block. Two parameters are required: the first is a - handle to the particular instance to be run and the second - indicates the block size (in samples) for which the plugin - instance may run. - - Note that if an activate() function exists then it must be called - before run() or run_adding(). If deactivate() is called for a - plugin instance then the plugin instance may not be reused until - activate() has been called again. - - If the plugin has the property LADSPA_PROPERTY_HARD_RT_CAPABLE - then there are various things that the plugin should not do - within the run() or run_adding() functions (see above). */ - void (*run)(LADSPA_Handle Instance, - unsigned long SampleCount); - - /* This method is a function pointer that runs an instance of a - plugin for a block. This has identical behaviour to run() except - in the way data is output from the plugin. When run() is used, - values are written directly to the memory areas associated with - the output ports. However when run_adding() is called, values - must be added to the values already present in the memory - areas. Furthermore, output values written must be scaled by the - current gain set by set_run_adding_gain() (see below) before - addition. - - run_adding() is optional. When it is not provided by a plugin, - this function pointer must be set to NULL. When it is provided, - the function set_run_adding_gain() must be provided also. */ - void (*run_adding)(LADSPA_Handle Instance, - unsigned long SampleCount); - - /* This method is a function pointer that sets the output gain for - use when run_adding() is called (see above). If this function is - never called the gain is assumed to default to 1. Gain - information should be retained when activate() or deactivate() - are called. - - This function should be provided by the plugin if and only if the - run_adding() function is provided. When it is absent this - function pointer must be set to NULL. */ - void (*set_run_adding_gain)(LADSPA_Handle Instance, - LADSPA_Data Gain); - - /* This is the counterpart to activate() (see above). If there is - nothing for deactivate() to do then the plugin writer may provide - a NULL rather than an empty function. - - Hosts must deactivate all activated units after they have been - run() (or run_adding()) for the last time. This call should be - made as close to the last run() call as possible and indicates to - real-time plugins that they are no longer live. Plugins should - not rely on prompt deactivation. Note that connect_port() may be - called before or after a call to deactivate(). - - Deactivation is not similar to pausing as the plugin instance - will be reinitialised when activate() is called to reuse it. */ - void (*deactivate)(LADSPA_Handle Instance); - - /* Once an instance of a plugin has been finished with it can be - deleted using the following function. The instance handle passed - ceases to be valid after this call. - - If activate() was called for a plugin instance then a - corresponding call to deactivate() must be made before cleanup() - is called. */ - void (*cleanup)(LADSPA_Handle Instance); - -} LADSPA_Descriptor; - -/**********************************************************************/ - -/* Accessing a Plugin: */ - -/* The exact mechanism by which plugins are loaded is host-dependent, - however all most hosts will need to know is the name of shared - object file containing the plugin types. To allow multiple hosts to - share plugin types, hosts may wish to check for environment - variable LADSPA_PATH. If present, this should contain a - colon-separated path indicating directories that should be searched - (in order) when loading plugin types. - - A plugin programmer must include a function called - "ladspa_descriptor" with the following function prototype within - the shared object file. This function will have C-style linkage (if - you are using C++ this is taken care of by the `extern "C"' clause - at the top of the file). - - A host will find the plugin shared object file by one means or - another, find the ladspa_descriptor() function, call it, and - proceed from there. - - Plugin types are accessed by index (not ID) using values from 0 - upwards. Out of range indexes must result in this function - returning NULL, so the plugin count can be determined by checking - for the least index that results in NULL being returned. */ - -const LADSPA_Descriptor * ladspa_descriptor(unsigned long Index); - -/* Datatype corresponding to the ladspa_descriptor() function. */ -typedef const LADSPA_Descriptor * -(*LADSPA_Descriptor_Function)(unsigned long Index); - -/**********************************************************************/ - -#ifdef __cplusplus -} -#endif - -#endif /* LADSPA_INCLUDED */ - -/* EOF */ diff --git a/muse/muse/ladspaplugin.cpp b/muse/muse/ladspaplugin.cpp deleted file mode 100644 index 85398d74..00000000 --- a/muse/muse/ladspaplugin.cpp +++ /dev/null @@ -1,235 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "al/al.h" -#include "ladspaplugin.h" -#include "fastlog.h" -#include "ctrl.h" - -//--------------------------------------------------------- -// defaultValue -//--------------------------------------------------------- - -float ladspaDefaultValue(const LADSPA_Descriptor* plugin, int k) - { - LADSPA_PortRangeHint range = plugin->PortRangeHints[k]; - LADSPA_PortRangeHintDescriptor rh = range.HintDescriptor; -// bool isLog = LADSPA_IS_HINT_LOGARITHMIC(rh); - double val = 1.0; - float m = (rh & LADSPA_HINT_SAMPLE_RATE) ? float(AL::sampleRate) : 1.0f; - if (LADSPA_IS_HINT_DEFAULT_MINIMUM(rh)) { - val = range.LowerBound * m; - } - else if (LADSPA_IS_HINT_DEFAULT_LOW(rh)) { - if (LADSPA_IS_HINT_LOGARITHMIC(rh)) - val = exp(fast_log10(range.LowerBound * m) * .75 + - log(range.UpperBound * m) * .25); - else - val = range.LowerBound*.75*m + range.UpperBound*.25*m; - } - else if (LADSPA_IS_HINT_DEFAULT_MIDDLE(rh)) { - if (LADSPA_IS_HINT_LOGARITHMIC(rh)) - val = exp(log(range.LowerBound * m) * .5 + - log10(range.UpperBound * m) * .5); - else - val = range.LowerBound*.5*m + range.UpperBound*.5*m; - } - else if (LADSPA_IS_HINT_DEFAULT_HIGH(rh)) { - if (LADSPA_IS_HINT_LOGARITHMIC(rh)) - val = exp(log(range.LowerBound * m) * .25 + - log(range.UpperBound * m) * .75); - else - val = range.LowerBound*.25*m + range.UpperBound*.75*m; - } - else if (LADSPA_IS_HINT_DEFAULT_MAXIMUM(rh)) { - val = range.UpperBound*m; - } - else if (LADSPA_IS_HINT_DEFAULT_0(rh)) - val = 0.0; - else if (LADSPA_IS_HINT_DEFAULT_1(rh)) - val = 1.0; - else if (LADSPA_IS_HINT_DEFAULT_100(rh)) - val = 100.0; - else if (LADSPA_IS_HINT_DEFAULT_440(rh)) - val = 440.0; - return val; - } - -//--------------------------------------------------------- -// LadpsaPlugin -//--------------------------------------------------------- - -LadspaPlugin::LadspaPlugin(const QFileInfo* f, - const LADSPA_Descriptor_Function ldf, - const LADSPA_Descriptor* d) - : Plugin(f), ladspa(ldf), plugin(d) - { - _inports = 0; - _outports = 0; - _parameter = 0; - for (unsigned k = 0; k < plugin->PortCount; ++k) { - LADSPA_PortDescriptor pd = d->PortDescriptors[k]; - static const int CI = LADSPA_PORT_CONTROL | LADSPA_PORT_INPUT; - if ((pd & CI) == CI) { - ++_parameter; - pIdx.push_back(k); - } - else if (pd & LADSPA_PORT_INPUT) { - ++_inports; - iIdx.push_back(k); - } - else if (pd & LADSPA_PORT_OUTPUT) { - ++_outports; - oIdx.push_back(k); - } - } - LADSPA_Properties properties = plugin->Properties; - _inPlaceCapable = !LADSPA_IS_INPLACE_BROKEN(properties); - if (_inports != _outports) - _inPlaceCapable = false; - } - -//--------------------------------------------------------- -// instantiate -//--------------------------------------------------------- - -void* LadspaPlugin::instantiate() - { - return plugin->instantiate(plugin, AL::sampleRate); - } - -//--------------------------------------------------------- -// range -//--------------------------------------------------------- - -void LadspaPlugin::range(int i, double* min, double* max) const - { - i = pIdx[i]; - LADSPA_PortRangeHint range = plugin->PortRangeHints[i]; - LADSPA_PortRangeHintDescriptor desc = range.HintDescriptor; - if (desc & LADSPA_HINT_TOGGLED) { - *min = -1.0; - *max = 1.0; - return; - } - double m = (desc & LADSPA_HINT_SAMPLE_RATE) ? float(AL::sampleRate) : 1.0f; - - if (desc & LADSPA_HINT_BOUNDED_BELOW) - *min = range.LowerBound * m; - else - *min = 0.0; - if (desc & LADSPA_HINT_BOUNDED_ABOVE) - *max = range.UpperBound * m; - else - *max = 1.0; - } - -//--------------------------------------------------------- -// createPIF -//--------------------------------------------------------- - -PluginIF* LadspaPlugin::createPIF(PluginI* pi) - { - LadspaPluginIF* pif = new LadspaPluginIF(pi); - pif->init(pi->plugin()); - return pif; - } - -//--------------------------------------------------------- -// LadspaPluginIF -//--------------------------------------------------------- - -LadspaPluginIF::LadspaPluginIF(PluginI* pi) - : PluginIF(pi) - { - descr = 0; - plugin = (LadspaPlugin*)(pi->plugin()); - } - -//--------------------------------------------------------- -// init -// return true on error -//--------------------------------------------------------- - -bool LadspaPluginIF::init(Plugin* pl) - { - handle = (LADSPA_Descriptor*) ((LadspaPlugin*)pl)->instantiate(); - plugin = (LadspaPlugin*)pl; - descr = plugin->ladspaDescriptor(); - - int controlPorts = plugin->parameter(); - controls = new LadspaPort[controlPorts]; - - for (int k = 0; k < controlPorts; ++k) { - controls[k].val = plugin->defaultValue(k); - descr->connect_port(handle, plugin->pIdx[k], &controls[k].val); - } - return handle == 0; - } - -//--------------------------------------------------------- -// apply -//--------------------------------------------------------- - -void LadspaPluginIF::apply(unsigned nframes, float** src, float** dst) - { - int iports = plugin->inports(); - int oports = plugin->outports(); - int cports = plugin->parameter(); - - // - // update parameter - // - for (int i = 0; i < cports; ++i) - controls[i].val = pluginI->controllerList[i]->curVal().f; - // - // set connections - // - for (int k = 0; k < iports; ++k) - descr->connect_port(handle, plugin->iIdx[k], src[k]); - for (int k = 0; k < oports; ++k) - descr->connect_port(handle, plugin->oIdx[k], dst[k]); - - descr->run(handle, nframes); - } - -//--------------------------------------------------------- -// defaultValue -//--------------------------------------------------------- - -double LadspaPlugin::defaultValue(int k) const - { - k = pIdx[k]; - return ladspaDefaultValue(plugin, k); - } - -//--------------------------------------------------------- -// activate -//--------------------------------------------------------- - -void LadspaPluginIF::activate() - { - // - // TODO: init values? - // - if (descr->activate) - descr->activate(handle); - } - diff --git a/muse/muse/ladspaplugin.h b/muse/muse/ladspaplugin.h deleted file mode 100644 index 4c492813..00000000 --- a/muse/muse/ladspaplugin.h +++ /dev/null @@ -1,127 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __LADSPAPLUGIN_H__ -#define __LADSPAPLUGIN_H__ - -#include "ladspa.h" -#include "plugin.h" - -//--------------------------------------------------------- -// LadspaPlugin -//--------------------------------------------------------- - -class LadspaPlugin : public Plugin { - LADSPA_Descriptor_Function ladspa; - const LADSPA_Descriptor* plugin; - - protected: - int _parameter; - std::vector pIdx; - - int _inports; - std::vector iIdx; - - int _outports; - std::vector oIdx; - - bool _inPlaceCapable; - friend class LadspaPluginIF; - - public: - LadspaPlugin(const QFileInfo* f, - const LADSPA_Descriptor_Function, - const LADSPA_Descriptor* d); - - virtual QString label() const { return QString(plugin->Label); } - virtual QString name() const { return QString(plugin->Name); } - virtual unsigned long id() const { return plugin->UniqueID; } - virtual QString maker() const { return QString(plugin->Maker); } - virtual QString copyright() const { return QString(plugin->Copyright); } - - void* instantiate(); - virtual void range(int i, double*, double*) const; - virtual int parameter() const { return _parameter; } - virtual int inports() const { return _inports; } - virtual int outports() const { return _outports; } - - virtual bool inPlaceCapable() const { return _inPlaceCapable; } - virtual PluginIF* createPIF(PluginI*); - const LADSPA_Descriptor* ladspaDescriptor() const { return plugin; } - - virtual bool isLog(int k) const { - LADSPA_PortRangeHint r = plugin->PortRangeHints[pIdx[k]]; - return LADSPA_IS_HINT_LOGARITHMIC(r.HintDescriptor); - } - virtual bool isBool(int k) const { - return LADSPA_IS_HINT_TOGGLED(plugin->PortRangeHints[pIdx[k]].HintDescriptor); - } - virtual bool isInt(int k) const { - LADSPA_PortRangeHint r = plugin->PortRangeHints[pIdx[k]]; - return LADSPA_IS_HINT_INTEGER(r.HintDescriptor); - } - virtual double defaultValue(int) const; - }; - -//--------------------------------------------------------- -// LadspaPort -//--------------------------------------------------------- - -struct LadspaPort { - float val; - }; - -//--------------------------------------------------------- -// LadspaPluginIF -//--------------------------------------------------------- - -class LadspaPluginIF : public PluginIF { - const LADSPA_Descriptor* descr; - LADSPA_Handle handle; // per instance - LadspaPlugin* plugin; - - LadspaPort* controls; - - public: - LadspaPluginIF(PluginI* pi); - - virtual void apply(unsigned nframes, float** src, float** dst); - virtual void activate(); - virtual void deactivate() { - if (descr->deactivate) - descr->deactivate(handle); - } - virtual void cleanup() { - if (descr->cleanup) - descr->cleanup(handle); - } - virtual const char* getParameterName(int i) const { - return plugin->plugin->PortNames[plugin->pIdx[i]]; - } - virtual void setParam(int i, double val) { controls[i].val = val; } - virtual float param(int i) const { return controls[i].val; } - bool init(Plugin*); - }; - -extern float ladspaDefaultValue(const LADSPA_Descriptor* plugin, int k); - -#endif - - diff --git a/muse/muse/liste/CMakeLists.txt b/muse/muse/liste/CMakeLists.txt deleted file mode 100644 index 988efaf8..00000000 --- a/muse/muse/liste/CMakeLists.txt +++ /dev/null @@ -1,48 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -QT4_WRAP_CPP ( liste_mocs - listedit.h - ctrllistedit.h - tracklistedit.h - partlistedit.h - ieventdialog.h - ) - -QT4_WRAP_UI ( liste_ui_headers - ctrllistedit.ui - partlistedit.ui - tracklistedit.ui - ) - -add_library ( liste STATIC - listedit.cpp listedit.h - ctrllistedit.cpp ctrllistedit.h - partlistedit.cpp partlistedit.h - tracklistedit.cpp tracklistedit.h - ieventdialog.cpp ieventdialog.h - ${liste_mocs} - ${liste_ui_headers} - ) -set_target_properties( liste - PROPERTIES COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all.h" - ) - - diff --git a/muse/muse/liste/ctrllistedit.cpp b/muse/muse/liste/ctrllistedit.cpp deleted file mode 100644 index ab9e66e3..00000000 --- a/muse/muse/liste/ctrllistedit.cpp +++ /dev/null @@ -1,569 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "ctrllistedit.h" -#include "ctrl.h" -#include "track.h" -#include "song.h" -#include "al/pos.h" -#include "awl/posedit.h" - -//--------------------------------------------------------- -// CtrlListEditor -//--------------------------------------------------------- - -CtrlListEditor::CtrlListEditor(ListEdit* e, QWidget* parent) - : ListWidget(parent) - { - listEdit = e; - updateListDisabled = false; - QWidget* cew = new QWidget; - le.setupUi(cew); - QVBoxLayout* layout = new QVBoxLayout; - layout->addWidget(cew); - setLayout(layout); - le.minValue->setRange(-10000000.0, 100000000.0); - le.maxValue->setRange(-10000000.0, 100000000.0); - le.defaultValue->setRange(-10000000.0, 100000000.0); - le.minValue->setSingleStep(1.0); - le.maxValue->setSingleStep(1.0); - le.defaultValue->setSingleStep(1.0); - - QFontMetrics fm(le.ctrlList->font()); - int zW = fm.width("0"); - le.ctrlList->setColumnWidth(TICK_COL, zW * 8); - le.ctrlList->setColumnWidth(TIME_COL, zW * 14); - CtrlDelegate* ctrlDelegate = new CtrlDelegate(this); - le.ctrlList->setItemDelegate(ctrlDelegate); - - track = 0; - connect(le.ctrlList, SIGNAL(itemActivated(QTreeWidgetItem*, int)), - SLOT(itemActivated(QTreeWidgetItem*,int))); - connect(le.ctrlList, SIGNAL(itemChanged(QTreeWidgetItem*, int)), - SLOT(itemChanged(QTreeWidgetItem*, int))); - connect(le.ctrlList, SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), - SLOT(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*))); - connect(le.insertButton, SIGNAL(clicked()), SLOT(insertClicked())); - connect(le.deleteButton, SIGNAL(clicked()), SLOT(deleteClicked())); - connect(le.controllerName, SIGNAL(textEdited(const QString&)), - SLOT(nameEdited(const QString&))); - connect(le.minValue, SIGNAL(valueChanged(double)), SLOT(minValChanged(double))); - connect(le.maxValue, SIGNAL(valueChanged(double)), SLOT(maxValChanged(double))); - connect(le.defaultValue, SIGNAL(valueChanged(double)), SLOT(defaultValChanged(double))); - EscapeFilter* ef = new EscapeFilter(this); - installEventFilter(ef); - } - -//--------------------------------------------------------- -// eventFilter -//--------------------------------------------------------- - -bool EscapeFilter::eventFilter(QObject* obj, QEvent* event) - { - if (event->type() == QEvent::KeyPress) { - if (((QKeyEvent*)event)->key() == Qt::Key_Escape) { - ((CtrlListEditor*)parent())->sendEscape(); - return true; - } - } - return QObject::eventFilter(obj, event); - } - -//--------------------------------------------------------- -// setup -//--------------------------------------------------------- - -void CtrlListEditor::setup(const ListType& lt) - { - if (track) - disconnect(track, SIGNAL(controllerChanged(int)), this, SLOT(controllerChanged(int))); - track = lt.track; - connect(track, SIGNAL(controllerChanged(int)), SLOT(controllerChanged(int))); - - c = lt.ctrl; - le.controllerName->setText(c->name()); - le.discreteCheckBox->setChecked(c->type() & Ctrl::DISCRETE); - le.logarithmicCheckBox->setChecked(c->type() & Ctrl::LOG); - le.floatCheckBox->setChecked(!(c->type() & Ctrl::INT)); - le.ctrlId->setValue(c->id()); - if (c->type() & Ctrl::INT) { - le.minValue->setDecimals(0); - le.minValue->setValue(c->minVal().i); - le.maxValue->setDecimals(0); - le.maxValue->setValue(c->maxVal().i); - le.defaultValue->setDecimals(0); - le.defaultValue->setValue(c->getDefault().i); - } - else { - if (c->type() & Ctrl::LOG) { - le.minValue->setDecimals(0); - le.minValue->setValue(c->minVal().f * 20.0); - le.minValue->setSuffix(tr("dB")); - le.maxValue->setDecimals(0); - le.maxValue->setValue(c->maxVal().f * 20.0); - le.maxValue->setSuffix(tr("dB")); - le.defaultValue->setDecimals(0); - le.defaultValue->setValue(c->getDefault().f * 20.0); - le.defaultValue->setSuffix(tr("dB")); - } - else { - le.minValue->setDecimals(1); - le.minValue->setValue(c->minVal().f); - le.maxValue->setDecimals(1); - le.maxValue->setValue(c->maxVal().f); - le.defaultValue->setDecimals(1); - le.defaultValue->setValue(c->getDefault().f); - } - } - updateList(); - } - -//--------------------------------------------------------- -// updateList -//--------------------------------------------------------- - -void CtrlListEditor::updateList() - { - if (updateListDisabled) - return; - le.ctrlList->clear(); - int idx = 0; - bool curItemSet = false; - for (iCtrlVal i = c->begin(); i != c->end(); ++i, ++idx) { - CVal v = i.value(); - QTreeWidgetItem* item = new QTreeWidgetItem; - item->setData(TICK_COL, Qt::TextAlignmentRole, int(Qt::AlignRight | Qt::AlignVCenter)); - item->setData(TIME_COL, Qt::TextAlignmentRole, int(Qt::AlignRight | Qt::AlignVCenter)); - item->setData(VAL_COL, Qt::TextAlignmentRole, int(Qt::AlignHCenter | Qt::AlignVCenter)); - - item->setData(TICK_COL, Qt::DisplayRole, i.key()); - item->setData(TIME_COL, Qt::DisplayRole, i.key()); - if (c->type() & Ctrl::INT) - item->setData(VAL_COL, Qt::DisplayRole, v.i); - else - item->setData(VAL_COL, Qt::DisplayRole, v.f); - le.ctrlList->insertTopLevelItem(idx, item); - if (!curItemSet && (i.key() >= listEdit->pos().tick())) { - le.ctrlList->setCurrentItem(item); - curItemSet = true; - } - } - } - -//--------------------------------------------------------- -// controllerChanged -//--------------------------------------------------------- - -void CtrlListEditor::controllerChanged(int id) - { - if (id != c->id()) - return; - updateList(); - } - -//--------------------------------------------------------- -// itemActivated -//--------------------------------------------------------- - -void CtrlListEditor::itemActivated(QTreeWidgetItem* item, int column) - { - le.ctrlList->openPersistentEditor(item, column); - } - -//--------------------------------------------------------- -// itemChanged -//--------------------------------------------------------- - -void CtrlListEditor::itemChanged(QTreeWidgetItem* item, int column) - { - CVal val; - if (c->type() & Ctrl::INT) { - val.i = item->data(VAL_COL, Qt::DisplayRole).toInt(); - bool updateData = false; - if (val.i < c->minVal().i) { - val.i = c->minVal().i; - updateData = true; - } - else if (val.i > c->maxVal().i) { - val.i = c->maxVal().i; - updateData = true; - } - if (updateData) - item->setData(VAL_COL, Qt::DisplayRole, val.i); - } - else { - val.f = item->data(VAL_COL, Qt::DisplayRole).toDouble(); - bool updateData = false; - if (val.f < c->minVal().f) { - val.f = c->minVal().f; - updateData = true; - } - else if (val.f > c->maxVal().f) { - val.f = c->maxVal().f; - updateData = true; - } - if (updateData) - item->setData(VAL_COL, Qt::DisplayRole, val.f); - } - le.ctrlList->closePersistentEditor(item, TICK_COL); - le.ctrlList->closePersistentEditor(item, TIME_COL); - le.ctrlList->closePersistentEditor(item, VAL_COL); - updateListDisabled = true; - switch(column) { - case TICK_COL: - { - int otick = item->data(TIME_COL, Qt::DisplayRole).toInt(); - int tick = item->data(TICK_COL, Qt::DisplayRole).toInt(); - item->setData(TIME_COL, Qt::DisplayRole, tick); - song->cmdRemoveControllerVal(track, c->id(), otick); - song->cmdAddControllerVal(track, c, tick, val); - } - break; - case TIME_COL: - { - int otick = item->data(TICK_COL, Qt::DisplayRole).toInt(); - int tick = item->data(TIME_COL, Qt::DisplayRole).toInt(); - item->setData(TICK_COL, Qt::DisplayRole, tick); - song->cmdRemoveControllerVal(track, c->id(), otick); - song->cmdAddControllerVal(track, c, tick, val); - } - break; - case VAL_COL: - song->cmdAddControllerVal(track, c, listEdit->pos(), val); - break; - } - updateListDisabled = false; - } - -//--------------------------------------------------------- -// sendEscape -//--------------------------------------------------------- - -void CtrlListEditor::sendEscape() - { - QTreeWidgetItem* cur = le.ctrlList->currentItem(); - if (cur == 0) - return; - le.ctrlList->closePersistentEditor(cur, TICK_COL); - le.ctrlList->closePersistentEditor(cur, TIME_COL); - le.ctrlList->closePersistentEditor(cur, VAL_COL); - } - -//--------------------------------------------------------- -// currentItemChanged -//--------------------------------------------------------- - -void CtrlListEditor::currentItemChanged(QTreeWidgetItem* cur, QTreeWidgetItem* prev) - { - if (prev) { - le.ctrlList->closePersistentEditor(prev, TICK_COL); - le.ctrlList->closePersistentEditor(prev, TIME_COL); - le.ctrlList->closePersistentEditor(prev, VAL_COL); - } - if (cur) { - Pos pos(cur->data(TICK_COL, Qt::DisplayRole).toInt(), track->timeType()); - listEdit->pos() = pos; - } - le.deleteButton->setEnabled(cur); - } - -//--------------------------------------------------------- -// insertClicked -// insert one tick before current value -//--------------------------------------------------------- - -void CtrlListEditor::insertClicked() - { - CVal val = c->minVal(); - QTreeWidgetItem* cur = le.ctrlList->currentItem(); - if (cur) { - int tick = cur->data(TICK_COL, Qt::DisplayRole).toInt(); - if (tick == 0) // cannot insert value at position < 0 - return; - listEdit->pos().setTick(tick - 1); - if (c->type() & Ctrl::INT) - val.i = cur->data(VAL_COL, Qt::DisplayRole).toInt(); - else - val.f = cur->data(VAL_COL, Qt::DisplayRole).toDouble(); - } - song->cmdAddControllerVal(track, c, listEdit->pos(), val); - } - -//--------------------------------------------------------- -// deleteClicked -//--------------------------------------------------------- - -void CtrlListEditor::deleteClicked() - { - QTreeWidgetItem* cur = le.ctrlList->currentItem(); - if (cur == 0) - return; - int tick = cur->data(TICK_COL, Qt::DisplayRole).toInt(); - song->cmdRemoveControllerVal(track, c->id(), tick); - } - -//--------------------------------------------------------- -// nameEdited -//--------------------------------------------------------- - -void CtrlListEditor::nameEdited(const QString& s) - { - track->changeCtrlName(c, s); - } - -//--------------------------------------------------------- -// minValChanged -//--------------------------------------------------------- - -void CtrlListEditor::minValChanged(double v) - { - CVal val; - if (c->type() & Ctrl::INT) - val.i = int(v); - else { - if (c->type() & Ctrl::LOG) - v /= 20.0; - val.f = v; - } - c->setRange(val, c->maxVal()); - } - -//--------------------------------------------------------- -// maxValChanged -//--------------------------------------------------------- - -void CtrlListEditor::maxValChanged(double v) - { - CVal val; - if (c->type() & Ctrl::INT) - val.i = int(v); - else { - if (c->type() & Ctrl::LOG) - v /= 20.0; - val.f = v; - } - c->setRange(c->minVal(), val); - } - -//--------------------------------------------------------- -// defaultValChanged -//--------------------------------------------------------- - -void CtrlListEditor::defaultValChanged(double v) - { - CVal val; - if (c->type() & Ctrl::INT) - val.i = int(v); - else - val.f = v; - c->setDefault(val); - } - -//--------------------------------------------------------- -// CtrlDelegate -//--------------------------------------------------------- - -CtrlDelegate::CtrlDelegate(QObject* parent) - : QItemDelegate(parent) - { - } - -//--------------------------------------------------------- -// createEditor -//--------------------------------------------------------- - -QWidget* CtrlDelegate::createEditor(QWidget* pw, - const QStyleOptionViewItem& option, const QModelIndex& index) const - { - switch(index.column()) { - case CtrlListEditor::TICK_COL: - break; - case CtrlListEditor::TIME_COL: - return new Awl::PosEdit(pw); - case CtrlListEditor::VAL_COL: - { - CtrlListEditor* ce = static_cast(parent()); - Ctrl* c = ce->ctrl(); - if (c->type() & Ctrl::INT) { - QSpinBox* w = new QSpinBox(pw); - w->setRange(c->minVal().i, c->maxVal().i); - w->installEventFilter(const_cast(this)); - return w; - } - QDoubleSpinBox* w = new QDoubleSpinBox(pw); - if (c->type() & Ctrl::LOG) - w->setSuffix(tr("dB")); -// w->setRange(c->minVal().f, c->maxVal().f); - w->installEventFilter(const_cast(this)); - return w; - } - } - return QItemDelegate::createEditor(pw, option, index); - } - -//--------------------------------------------------------- -// setEditorData -//--------------------------------------------------------- - -void CtrlDelegate::setEditorData(QWidget* editor, - const QModelIndex& index) const - { - switch(index.column()) { - case CtrlListEditor::TICK_COL: - break; - case CtrlListEditor::TIME_COL: - { - Awl::PosEdit* pe = static_cast(editor); - pe->setValue(AL::Pos(index.data().toInt())); - } - return; - case CtrlListEditor::VAL_COL: - { - CtrlListEditor* ce = static_cast(parent()); - Ctrl* c = ce->ctrl(); - if (c->type() & Ctrl::INT) { - QSpinBox* w = static_cast(editor); - w->setValue(index.data().toInt()); - } - else { - QDoubleSpinBox* w = static_cast(editor); - double v = index.data().toDouble(); -printf("type %x\n", c->type()); - if (c->type() & Ctrl::LOG) - v *= 20.0; - w->setValue(v); - } - } - return; - } - QItemDelegate::setEditorData(editor, index); - } - -//--------------------------------------------------------- -// setModelData -//--------------------------------------------------------- - -void CtrlDelegate::setModelData(QWidget* editor, QAbstractItemModel* model, - const QModelIndex& index) const - { - switch(index.column()) { - case CtrlListEditor::TICK_COL: - break; - case CtrlListEditor::TIME_COL: - { - Awl::PosEdit* pe = static_cast(editor); - model->setData(index, pe->pos().tick(), Qt::DisplayRole); - } - return; - case CtrlListEditor::VAL_COL: - { - CtrlListEditor* ce = static_cast(parent()); - Ctrl* c = ce->ctrl(); - if (c->type() & Ctrl::INT) { - QSpinBox* w = static_cast(editor); - model->setData(index, w->value(), Qt::DisplayRole); - } - else { - QDoubleSpinBox* w = static_cast(editor); - double v = w->value(); - if (c->type() & Ctrl::LOG) - v /= 20.0; - model->setData(index, v, Qt::DisplayRole); - } - } - break; - } - QItemDelegate::setModelData(editor, model, index); - } - -//--------------------------------------------------------- -// paint -//--------------------------------------------------------- - -void CtrlDelegate::paint(QPainter* painter, - const QStyleOptionViewItem& option, const QModelIndex& index) const - { - QString text; - CtrlListEditor* ce = static_cast(parent()); - - switch(index.column()) { - case CtrlListEditor::TICK_COL: - { - Track* track = ce->getTrack(); - AL::Pos pos(index.data().toInt(), track->timeType()); - text = QString("%1").arg(pos.tick()); - } - break; - case CtrlListEditor::TIME_COL: - { - Track* track = ce->getTrack(); - AL::Pos pos(index.data().toInt(), track->timeType()); - int measure, beat, tick; - pos.mbt(&measure, &beat, &tick); - text.sprintf("%04d.%02d.%03u", measure+1, beat+1, tick); - } - break; - case CtrlListEditor::VAL_COL: - { - Ctrl* c = ce->ctrl(); - if (c->type() & Ctrl::INT) { - text = QString("%1").arg(index.data().toInt()); - } - else { - if (c->type() & Ctrl::LOG) { - double f = index.data().toDouble(); - if (f <= -1000.0f) - text = tr("off"); - else - text = QString("%1 dB").arg(f * 20.0); - } - else { - text = QString("%1").arg(index.data().toDouble()); - } - } - } - break; - } - - QStyleOptionViewItemV2 opt = setOptions(index, option); - const QStyleOptionViewItemV2 *v2 = qstyleoption_cast(&option); - opt.features = v2 ? v2->features : QStyleOptionViewItemV2::ViewItemFeatures(QStyleOptionViewItemV2::None); - - painter->save(); - QVariant value; - QRect displayRect; - displayRect = option.rect; // textRectangle(painter, d->textLayoutBounds(opt), opt.font, text); - - QRect checkRect; - Qt::CheckState checkState = Qt::Unchecked; - value = index.data(Qt::CheckStateRole); - if (value.isValid()) { - checkState = static_cast(value.toInt()); - checkRect = check(opt, opt.rect, value); - } - - drawBackground(painter, opt, index); - drawCheck(painter, opt, checkRect, checkState); - drawDisplay(painter, opt, displayRect, text); - drawFocus(painter, opt, text.isEmpty() ? QRect() : displayRect); - painter->restore(); - } - - diff --git a/muse/muse/liste/ctrllistedit.h b/muse/muse/liste/ctrllistedit.h deleted file mode 100644 index 75ed6008..00000000 --- a/muse/muse/liste/ctrllistedit.h +++ /dev/null @@ -1,96 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __CTRLLISTEDIT_H__ -#define __CTRLLISTEDIT_H__ - -#include "al/pos.h" -#include "listedit.h" -#include "ui_ctrllistedit.h" - -//--------------------------------------------------------- -// CtrlDelegate -//--------------------------------------------------------- - -class CtrlDelegate : public QItemDelegate { - Q_OBJECT - - virtual QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem&, - const QModelIndex& index) const; - virtual void setEditorData(QWidget* editor, const QModelIndex&) const; - virtual void setModelData(QWidget* editor, QAbstractItemModel*, - const QModelIndex&) const; - void paint(QPainter*, const QStyleOptionViewItem&, - const QModelIndex&) const; - - public: - CtrlDelegate(QObject* parent = 0); - }; - -//--------------------------------------------------------- -// EscapeFilter -//--------------------------------------------------------- - -class EscapeFilter : public QObject { - Q_OBJECT - protected: - bool eventFilter(QObject*, QEvent*); - public: - EscapeFilter(QObject* parent = 0): QObject(parent) {} - }; - -//--------------------------------------------------------- -// CtrlListEditor -//--------------------------------------------------------- - -class CtrlListEditor : public ListWidget { - Q_OBJECT - - Ui::CtrlListEdit le; - Track* track; - Ctrl* c; - bool updateListDisabled; - ListEdit* listEdit; - - void updateList(); - - private slots: - void controllerChanged(int id); - void itemActivated(QTreeWidgetItem*,int); - void itemChanged(QTreeWidgetItem*,int); - void currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*); - void insertClicked(); - void deleteClicked(); - void nameEdited(const QString&); - void minValChanged(double); - void maxValChanged(double); - void defaultValChanged(double); - - public: - CtrlListEditor(ListEdit*, QWidget* parent = 0); - virtual void setup(const ListType&); - void sendEscape(); - Ctrl* ctrl() const { return c; } - Track* getTrack() const { return track; } - enum { TICK_COL, TIME_COL, VAL_COL }; - }; - -#endif - diff --git a/muse/muse/liste/ctrllistedit.ui b/muse/muse/liste/ctrllistedit.ui deleted file mode 100644 index 27389b7c..00000000 --- a/muse/muse/liste/ctrllistedit.ui +++ /dev/null @@ -1,334 +0,0 @@ - - CtrlListEdit - - - - 0 - 0 - 400 - 341 - - - - Form - - - - 9 - - - 6 - - - - - 0 - - - 6 - - - - - - 5 - 0 - 0 - 0 - - - - - 75 - true - - - - Controller: - - - - - - - - - - - - 0 - - - 6 - - - - - - 0 - 0 - 0 - 0 - - - - Id: - - - - - - - true - - - - - - - move with part - - - - - - - - - 0 - - - 6 - - - - - false - - - - 5 - 0 - 0 - 0 - - - - discrete - - - - - - - false - - - - 5 - 0 - 0 - 0 - - - - logarithmic - - - - - - - false - - - - 5 - 0 - 0 - 0 - - - - float - - - - - - - - - 0 - - - 6 - - - - - - 5 - 0 - 0 - 0 - - - - min: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 5 - 0 - 0 - 0 - - - - - - - - - 5 - 0 - 0 - 0 - - - - max: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 5 - 0 - 0 - 0 - - - - - - - - - 5 - 0 - 0 - 0 - - - - default: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 5 - 0 - 0 - 0 - - - - - - - - - - true - - - 0 - - - false - - - true - - - false - - - - Tick - - - - - Time - - - - - Value - - - - - - - - 0 - - - 6 - - - - - Delete - - - - - - - Insert - - - - - - - Qt::Horizontal - - - - 231 - 29 - - - - - - - - - - - diff --git a/muse/muse/liste/ieventdialog.cpp b/muse/muse/liste/ieventdialog.cpp deleted file mode 100644 index a2914ffc..00000000 --- a/muse/muse/liste/ieventdialog.cpp +++ /dev/null @@ -1,428 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2007 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include -#include -#include "ieventdialog.h" - -InsertEventDialog::InsertEventDialog(const Pos& time, Part* part, Event* ev, - QWidget* parent, Qt::WindowFlags f) - : QDialog(parent, f) { - setWindowTitle("Insert Event Dialog"); - - _selectedType = -1; - - - _part = part; - - _lastDir = QDir::currentPath(); - - _mainLayout = new QGridLayout(parent); - //event type - QLabel* eventTypeLabel = new QLabel("Event Type", parent); - _mainLayout->addWidget(eventTypeLabel, 0, 0); - _eventTypeComboBox = new QComboBox(parent); - for(unsigned i = 0; i < IED_TypeCount; i++) { - _typeWidget.push_back(new QWidget(parent)); - QGridLayout* tLayout = new QGridLayout(_typeWidget[i]); - if(i == IED_Note) { - _eventTypeComboBox->addItem(NoteSTR); - //pitch - QLabel* pitchLabel = new QLabel("Pitch", _typeWidget[i]); - tLayout->addWidget(pitchLabel, 0, 0); - /*_noteLabel = new QLabel("C4", _typeWidget[i]); - _noteLabel->setFrameShape(QFrame::Panel); - _noteLabel->setFrameShadow(QFrame::Sunken); - tLayout->addWidget(_noteLabel, 0, 1);*/ - _pitchSpinBox = new QSpinBox(_typeWidget[i]); - _pitchSpinBox->setMaximum(127); - _pitchSpinBox->setMinimum(0); - _pitchSpinBox->setValue(ev && ev->type()==Note?ev->pitch():72/*C4*/); - tLayout->addWidget(_pitchSpinBox, 0, 1); - //Velocity - QLabel* velocityLabel = new QLabel("Velocity", _typeWidget[i]); - tLayout->addWidget(velocityLabel, 1, 0); - _velocitySpinBox = new QSpinBox(_typeWidget[i]); - _velocitySpinBox->setMaximum(127); - _velocitySpinBox->setMinimum(0); - _velocitySpinBox->setValue(ev && ev->type()==Note?ev->velo():70); - tLayout->addWidget(_velocitySpinBox, 1, 1); - //Velocity Off - /*QLabel* veloOffLabel = new QLabel("Velocity Off", _typeWidget[i]); - tLayout->addWidget(veloOffLabel, 2, 0); - _veloOffSpinBox = new QSpinBox(_typeWidget[i]); - _veloOffSpinBox->setMaximum(127); - _veloOffSpinBox->setMinimum(0); - _veloOffSpinBox->setValue(0); - tLayout->addWidget(_veloOffSpinBox, 2, 1);*/ - //Length - QLabel* lengthLabel = new QLabel("Length", _typeWidget[i]); - tLayout->addWidget(lengthLabel, 2, 0); - _lengthSpinBox = new QSpinBox(_typeWidget[i]); - _lengthSpinBox->setMaximum(32768); - _lengthSpinBox->setMinimum(1); - _lengthSpinBox->setValue(ev && ev->type()==Note?ev->lenTick():384); - tLayout->addWidget(_lengthSpinBox, 2, 1); - } - else if(i == IED_ProgramChange) { - _eventTypeComboBox->addItem(ProgramChangeSTR); - //TODO - QLabel* programChangeEventTODO = - new QLabel("TODO : Program change event", _typeWidget[i]); - tLayout->addWidget(programChangeEventTODO, 0, 0, 1, 2); - } - else if(i == IED_ControlChange) { - _eventTypeComboBox->addItem(ControlChangeSTR); - //TODO - QLabel* controlChangeEventTODO = - new QLabel("TODO : Control change event", _typeWidget[i]); - tLayout->addWidget(controlChangeEventTODO, 0, 0, 1, 2); - } - else if(i == IED_Sysex) { - _eventTypeComboBox->addItem(SysexSTR); - //number of sysex - QLabel* numOfSysexLabel = new QLabel("Number of Sysex", _typeWidget[i]); - tLayout->addWidget(numOfSysexLabel, 0, 0); - _sysexCountSpinBox = new QSpinBox(_typeWidget[i]); - _sysexCountSpinBox->setMaximum(1024); - _sysexCountSpinBox->setMinimum(1); - _sysexCountSpinBox->setValue(1); - tLayout->addWidget(_sysexCountSpinBox, 0, 1); - //current sysex - QLabel* curSysexLabel = new QLabel("Current Sysex", _typeWidget[i]); - tLayout->addWidget(curSysexLabel, 1, 0); - _curSysexSpinBox = new QSpinBox(_typeWidget[i]); - _curSysexSpinBox->setMaximum(0); - _curSysexSpinBox->setMinimum(0); - _curSysexSpinBox->setValue(0); - tLayout->addWidget(_curSysexSpinBox, 1, 1); - //select from the instrument - QPushButton* selectButton = new QPushButton("Select from instrument", - _typeWidget[i]); - tLayout->addWidget(selectButton, 2, 0, 1, 2); - //load - _loadButton = new QPushButton("Load...", _typeWidget[i]); - tLayout->addWidget(_loadButton, 3, 0); - //save - _saveButton = new QPushButton("Save...", _typeWidget[i]); - tLayout->addWidget(_saveButton, 3, 1); - //length - QLabel* lengthLabel = new QLabel("Length", _typeWidget[i]); - tLayout->addWidget(lengthLabel, 4, 0); - _lengthIntLabel = new QLabel(ev && ev->type()==Sysex? - QString::number(ev->dataLen()):"0", - _typeWidget[i]); - tLayout->addWidget(_lengthIntLabel, 4, 1); - //text edit - _sysexTextEdit = new QTextEdit(_typeWidget[i]); - _sysexCursorPos = 0; - _dataSysex.push_back(ev && ev->type()==Sysex? - QByteArray((const char*)ev->data(), ev->dataLen()) - :QByteArray()); - _lengthIntLabel->setText(QString::number(sysexLength())); - _dataSysexStr.push_back(ev && ev->type()==Sysex? - charArray2Str((const char*)ev->data(), - ev->dataLen()): - "F0 F7"); - tLayout->addWidget(_sysexTextEdit, 5, 0, 3, 2); - setSysexTextEdit(); - QString HEX = "(?!F7)([A-F]|\\d){1,2}"; - QString SRE = QString("^F0(\\s+)(") + HEX + QString("(\\s+))*F7$"); - _hexRegExp = new QRegExp(SRE, Qt::CaseInsensitive); - } - tLayout->setMargin(0); - _typeWidget[i]->setLayout(tLayout); - _mainLayout->addWidget(_typeWidget[i], 2, 0, 1, 2); - } - _mainLayout->addWidget(_eventTypeComboBox, 0, 1); - //time - QLabel* timeLabel = new QLabel("Time", parent); - _mainLayout->addWidget(timeLabel, 1, 0); - _timePosEdit = new PosEdit(parent); - _timePosEdit->setValue(time); - _mainLayout->addWidget(_timePosEdit, 1, 1); - //Ok, cancel - QDialogButtonBox* OkCancelBox = - new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, - Qt::Horizontal, parent); - _mainLayout->addWidget(OkCancelBox, 3, 0, 1, 2); - - if(ev) - if(ev->type()==Note) _eventTypeComboBox->setCurrentIndex(IED_Note); - else if(ev->type()==Sysex) _eventTypeComboBox->setCurrentIndex(IED_Sysex); - else _eventTypeComboBox->setCurrentIndex(IED_Note); - else _eventTypeComboBox->setCurrentIndex(IED_Note); - - updateType(_eventTypeComboBox->currentIndex()); - - setLayout(_mainLayout); - - //connection - connect(_sysexTextEdit, SIGNAL(textChanged()), this, - SLOT(updateSysexTextEdit())); - connect(_sysexTextEdit, SIGNAL(cursorPositionChanged()), this, - SLOT(updateSysexCursor())); - connect(_eventTypeComboBox, SIGNAL(currentIndexChanged(int)), this, - SLOT(updateType(int))); - connect(_sysexCountSpinBox, SIGNAL(valueChanged(int)), this, - SLOT(updateSysexCount(int))); - connect(_curSysexSpinBox, SIGNAL(valueChanged(int)), this, - SLOT(updateCurSysexSpinBox(int))); - connect(_loadButton, SIGNAL(clicked()), this, SLOT(updateSysexLoad())); - connect(_saveButton, SIGNAL(clicked()), this, SLOT(updateSysexSave())); - connect(OkCancelBox, SIGNAL(accepted()), this, SLOT(accept())); - connect(OkCancelBox, SIGNAL(rejected()), this, SLOT(reject())); -} - -InsertEventDialog::~InsertEventDialog() { -} - -EventList* InsertEventDialog::elResult() { - unsigned evTick; - evTick = (unsigned)IED_MAX(0, (int)_timePosEdit->pos().tick() - - (int)_part->tick()); - Pos evPos(evTick); - EventList* res = new EventList; - - int curType = _eventTypeComboBox->currentIndex(); - - if(curType == IED_Note) { - Event evNote(Note); - evNote.setPos(evPos); - evNote.setPitch(_pitchSpinBox->value()); - evNote.setVelo(_velocitySpinBox->value()); - //evNote.setVeloOff(_veloOffSpinBox->value()); - evNote.setLenTick(_lengthSpinBox->value()); - res->add(evNote); - return res; - } - else if(curType == IED_ProgramChange) { - //TODO - return NULL; - } - else if(curType == IED_ControlChange) { - //TODO - return NULL; - } - else if(curType == IED_Sysex) { - for(unsigned i = 0; (int)i < _sysexCountSpinBox->value(); i++) { - Event evSysex(Sysex); - evSysex.setPos(evPos); - evSysex.setData((const unsigned char*) _dataSysex[i].data(), - _dataSysex[i].size()); - res->add(evSysex); - } - return res; - } - else return NULL; -} - -int InsertEventDialog::sysexLength() { - return _dataSysex[_curSysexSpinBox->value()].size(); -} -QString InsertEventDialog::charArray2Str(const char* s, int length) { - return ByteArray2Str(QByteArray(s, length)); -} -QString InsertEventDialog::ByteArray2Str(const QByteArray& ba) { - QString res = "F0 "; - for(int i = 0; i < ba.size(); i++) { - res += QString::number((unsigned char)ba.at(i), 16); - res += " "; - } - res += "F7"; - return res.toUpper(); -} -QByteArray InsertEventDialog::Str2ByteArray(const QString& s) { - QByteArray ba; - QString simpli = s.simplified(); - QStringList sl = simpli.split(" "); - bool ok; - for(int i = 1; i < sl.size() - 1; i++) {//i=1 and until size-1 to skip F0, F7 - ba.push_back(sl[i].toInt(&ok, 16)); - } - return ba; -} -char* InsertEventDialog::Str2CharArray(const QString& s) { - return Str2ByteArray(s).data(); -} - -void InsertEventDialog::setSysexTextEdit() { - QString s = _dataSysexStr[_curSysexSpinBox->value()].toUpper(); - _sysexTextEdit->blockSignals(true); - //print in gray F0 - _sysexTextEdit->setTextColor(Qt::darkGray); - _sysexTextEdit->setPlainText(s.left(2)); - //move cursor at the end - QTextCursor tc1(_sysexTextEdit->document()); - tc1.movePosition(QTextCursor::End); - _sysexTextEdit->setTextCursor(tc1); - //print in black the core - _sysexTextEdit->setTextColor(Qt::black); - _sysexTextEdit->insertPlainText(s.mid(2, s.size()-4)); - //move cursor at the end - QTextCursor tc2(_sysexTextEdit->document()); - tc2.movePosition(QTextCursor::End); - _sysexTextEdit->setTextCursor(tc2); - //print in gray F7 - _sysexTextEdit->setTextColor(Qt::darkGray); - _sysexTextEdit->insertPlainText(s.right(2)); - //relocate cursor - QTextCursor tc(_sysexTextEdit->document()); - tc.setPosition(_sysexCursorPos); - _sysexTextEdit->setTextCursor(tc); - //update length label - _lengthIntLabel->setText(QString::number(sysexLength())); - - _sysexTextEdit->blockSignals(false); -} - -//SLOTS -void InsertEventDialog::updateSysexTextEdit() { - int cur = _curSysexSpinBox->value(); - int curCursor = _sysexTextEdit->textCursor().position(); - QString data = _sysexTextEdit->toPlainText(); - bool correctInput = _hexRegExp->exactMatch(data); - - if(correctInput) { - _dataSysexStr[cur] = data; - _sysexCursorPos = curCursor; - } - - //display text, relocate cursor and update length - setSysexTextEdit(); - //update _dataSysex - _dataSysex[cur] = Str2ByteArray(_dataSysexStr[cur]); -} -void InsertEventDialog::updateSysexCursor() { - if(_dataSysexStr[_curSysexSpinBox->value()] - == _sysexTextEdit->toPlainText()) //only if the text hasn't changed - _sysexCursorPos = _sysexTextEdit->textCursor().position(); -} -void InsertEventDialog::updateSysexCount(int c) { - while((int)_dataSysexStr.size() < c) { - _dataSysexStr.push_back(QString("F0 F7")); - QByteArray ba; - _dataSysex.push_back(ba); - } - if(c <= _curSysexSpinBox->value()) _curSysexSpinBox->setValue(c-1); - _curSysexSpinBox->setMaximum(c-1); -} -void InsertEventDialog::updateCurSysexSpinBox(int /*c*/) { - setSysexTextEdit(); -} -void InsertEventDialog::updateSysexLoad() { - QByteArray ba; - QString fileName = - QFileDialog::getOpenFileName(this, - tr("Load Sysex dialog"), - _lastDir, - QString("*.syx;; *")); - if(!fileName.isEmpty()) { - QFileInfo fi(fileName); - _lastDir = fi.path(); - - QFile f(fileName); - if(f.open(QIODevice::ReadOnly)) { - ba = f.readAll(); - bool sysexStart = false; - int sysexCount = 0; - for(int i = 0; i < ba.size(); i++) { - if((unsigned char)ba.at(i) == 0xF0) { - sysexStart = true; - sysexCount++; - while((int)_dataSysex.size() < sysexCount) { - QByteArray tempba; - _dataSysex.push_back(tempba); - _dataSysexStr.push_back(QString("")); - } - _dataSysex[sysexCount-1].clear(); - } - else if((unsigned char)ba.at(i) == 0xF7) { - QByteArray endba(_dataSysex[sysexCount-1]); - sysexStart = false; - _dataSysexStr[sysexCount-1] = ByteArray2Str(endba); - } - else if(sysexStart) _dataSysex[sysexCount-1].push_back(ba.at(i)); - } - _sysexCountSpinBox->setValue(sysexCount); - _curSysexSpinBox->setValue(0); - updateCurSysexSpinBox(0); - //Message dialog - if(sysexCount > 0) { - QMessageBox::information(this, tr("Sysex loaded"), - tr("MusE has successfully detected" - " and loaded ") + - QString::number(sysexCount) + - tr(" sysex messages.")); - } - else { - QMessageBox::information(this, tr("No sysex"), - tr("No sysex in this file")); - } - } - else { - QMessageBox::critical(0, - tr("Critical Error"), - tr("Cannot open file %1").arg(fileName)); - } - } -} -void InsertEventDialog::updateSysexSave() { - QString filename = - QFileDialog::getSaveFileName( - this, - tr("Save Sysex Dialog"), - _lastDir, - QString("*")); - if(!filename.isEmpty()) { - QFileInfo fi(filename); - _lastDir = fi.path(); - QFile f(filename); - if(f.open(QIODevice::WriteOnly)) { - for(unsigned i = 0; i < _dataSysex.size(); i++) { - qint64 wok; - wok = f.write(QByteArray(1, 0xF0)); - wok = f.write(_dataSysex[i]); - wok = f.write(QByteArray(1, 0xF7)); - if(wok == -1) { - QMessageBox::critical(0, - tr("Critical Error"), - tr("Cannot write the sysex number %1") - .arg(i)); - } - } - } - else { - QMessageBox::critical(0, - tr("Critical Error"), - tr("Cannot save file %1").arg(filename)); - } - } -} -void InsertEventDialog::updateType(int type) { - if(_selectedType != type) { - for(unsigned i = 0; i < IED_TypeCount; i++) { - if(type == (int)i) _typeWidget[i]->show(); - else _typeWidget[i]->hide(); - } - _selectedType = type; - resize(1, 1); - } -} diff --git a/muse/muse/liste/ieventdialog.h b/muse/muse/liste/ieventdialog.h deleted file mode 100644 index 7906f6c9..00000000 --- a/muse/muse/liste/ieventdialog.h +++ /dev/null @@ -1,117 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2007 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __IEVENTDIALOG_H__ -#define __IEVENTDIALOG_H__ - -#include -#include -#include -#include -#include -#include -#include -#include "awl/posedit.h" -#include "midievent.h" -#include "al/pos.h" -#include "muse/event.h" -#include "muse/part.h" - -class QDialog; -using Awl::PosEdit; -using AL::Pos; - -#define NoteSTR "Note" -#define ProgramChangeSTR "Program change" -#define ControlChangeSTR "Control change" -#define SysexSTR "Sysex" - -#define IED_MAX(x, y) (x > y? x : y) - -class InsertEventDialog : public QDialog { - Q_OBJECT - - QGridLayout* _mainLayout; - std::vector _typeWidget; - int _selectedType; - - QString _lastDir; - - Part* _part; - - - //event type - QComboBox* _eventTypeComboBox; - - //time - PosEdit* _timePosEdit; - - //Note - QSpinBox* _pitchSpinBox; - QSpinBox* _velocitySpinBox; - QSpinBox* _veloOffSpinBox; - QSpinBox* _lengthSpinBox; - //QLabel* _noteLabel; - - //Sysex - QSpinBox* _sysexCountSpinBox; - QSpinBox* _curSysexSpinBox; - QLabel* _lengthIntLabel; - QTextEdit* _sysexTextEdit; - QRegExp* _hexRegExp; - int _sysexCursorPos; - QPushButton* _loadButton; - QPushButton* _saveButton; - std::vector _dataSysex; - std::vector _dataSysexStr; - - enum { - IED_Note, - IED_ProgramChange, - IED_ControlChange, - IED_Sysex, - IED_TypeCount }; - - int sysexLength(); //return the length of the current sysex - void setSysexTextEdit(); //set the display of sysexTextEdit - - public: - InsertEventDialog(const Pos& time, Part* part, Event* ev = NULL, - QWidget* parent = 0, Qt::WindowFlags f = 0); - ~InsertEventDialog(); - - EventList* elResult(); - - static QString charArray2Str(const char* s, int length); //add F0 and F7 - static QString ByteArray2Str(const QByteArray& ba); //add F0 and F7 - static QByteArray Str2ByteArray(const QString& s); //skip F0 and F7 - static char* Str2CharArray(const QString& s); - - private slots: - void updateSysexTextEdit(); - void updateSysexCursor(); - void updateSysexCount(int c); - void updateCurSysexSpinBox(int c); - void updateSysexLoad(); - void updateSysexSave(); - void updateType(int type); -}; - -#endif diff --git a/muse/muse/liste/listedit.cpp b/muse/muse/liste/listedit.cpp deleted file mode 100644 index 1f6138a8..00000000 --- a/muse/muse/liste/listedit.cpp +++ /dev/null @@ -1,298 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "listedit.h" -#include "ctrllistedit.h" -#include "partlistedit.h" -#include "tracklistedit.h" -#include "song.h" -#include "part.h" -#include "ctrl.h" - -//--------------------------------------------------------- -// operator== -//--------------------------------------------------------- - -bool ListType::operator==(const ListType& t) const - { - return id == t.id && track == t.track - && part == t.part && (ctrl ? ctrl->id() == t.ctrl->id() : true); - } - -//--------------------------------------------------------- -// ListEdit -//--------------------------------------------------------- - -ListEdit::ListEdit(QWidget*) - : TopWin() - { - setWindowTitle(tr("MusE: List Edit")); - - QSplitter* split = new QSplitter; - split->setOpaqueResize(true); - setCentralWidget(split); - - list = new QTreeWidget; - list->setColumnCount(1); - list->setSelectionMode(QAbstractItemView::SingleSelection); - list->setRootIsDecorated(true); - list->setColumnCount(1); - list->setHeaderLabels(QStringList("Element")); - list->setSortingEnabled(false); - list->setUniformRowHeights(true); - split->addWidget(list); - - stack = new QStackedWidget; - split->addWidget(stack); - - ctrlPanel = new CtrlListEditor(this); - stack->addWidget(ctrlPanel); - partPanel = new PartListEditor(this); - stack->addWidget(partPanel); - trackPanel = new TrackListEditor(this); - stack->addWidget(trackPanel); - - connect(list, SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), - SLOT(itemChanged(QTreeWidgetItem*,QTreeWidgetItem*))); - connect(list, SIGNAL(itemExpanded(QTreeWidgetItem*)), SLOT(itemExpanded(QTreeWidgetItem*))); - connect(list, SIGNAL(itemCollapsed(QTreeWidgetItem*)), SLOT(itemExpanded(QTreeWidgetItem*))); - connect(song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); - list->resizeColumnToContents(0); - resize(900, 400); - } - -//--------------------------------------------------------- -// itemExpanded -//--------------------------------------------------------- - -void ListEdit::itemExpanded(QTreeWidgetItem*) - { - list->resizeColumnToContents(0); - } - -//--------------------------------------------------------- -// itemChanged -//--------------------------------------------------------- - -void ListEdit::itemChanged(QTreeWidgetItem* i, QTreeWidgetItem*) - { - if (i == 0) - return; - ListWidget* ew = ctrlPanel; - lt = i->data(0, Qt::UserRole).value(); - switch(lt.id) { - case LIST_TRACK: - ew = trackPanel; - break; - case LIST_PART: - ew = partPanel; - break; - case LIST_CTRL: - ew = ctrlPanel; - break; - default: - return; - } - ew->setup(lt); - stack->setCurrentWidget(ew); - } - -//--------------------------------------------------------- -// buildList -//--------------------------------------------------------- - -void ListEdit::buildList() - { - list->clear(); - TrackList* tl = song->tracks(); - int idx = 0; - ListType lt; - - for (iTrack i = tl->begin(); i != tl->end(); ++i,++idx) { - QTreeWidgetItem* item = new QTreeWidgetItem; - Track* t = *i; - item->setText(0, t->name()); - lt.id = LIST_TRACK; - lt.track = t; - item->setData(0, Qt::UserRole, QVariant::fromValue(lt)); - list->insertTopLevelItem(idx, item); - - PartList* pl = t->parts(); - if (!pl->empty()) { - QTreeWidgetItem* pitem = new QTreeWidgetItem(item); - pitem->setFlags(pitem->flags() & ~Qt::ItemIsSelectable); - pitem->setText(0, tr("Parts")); - lt.id = LIST_NONE; - pitem->setData(0, Qt::UserRole, QVariant::fromValue(lt)); - for (iPart pi = pl->begin(); pi != pl->end(); ++pi) { - lt.id = LIST_PART; - lt.part = pi->second; - QTreeWidgetItem* ppitem = new QTreeWidgetItem(pitem); - ppitem->setData(0, Qt::UserRole, QVariant::fromValue(lt)); - ppitem->setText(0, pi->second->name()); - } - } - - CtrlList* cl = t->controller(); - lt.part = 0; - if (!cl->empty()) { - QTreeWidgetItem* citem = new QTreeWidgetItem(item); - citem->setText(0, tr("Controller")); - citem->setFlags(citem->flags() & ~Qt::ItemIsSelectable); - lt.id = LIST_NONE; - citem->setData(0, Qt::UserRole, QVariant::fromValue(lt)); - for (iCtrl ci = cl->begin(); ci != cl->end(); ++ci) { - QTreeWidgetItem* ccitem = new QTreeWidgetItem(citem); - ccitem->setText(0, ci->second->name()); - lt.id = LIST_CTRL; - lt.ctrl = ci->second; - ccitem->setData(0, Qt::UserRole, QVariant::fromValue(lt)); - } - } - } - } - -//--------------------------------------------------------- -// songChanged -//--------------------------------------------------------- - -void ListEdit::songChanged(int flags) - { - if (flags & (SC_TRACK_INSERTED | SC_TRACK_REMOVED | SC_PART_INSERTED - | SC_PART_REMOVED)) { - buildList(); - selectItem(); - } - } - -//--------------------------------------------------------- -// findItem -//--------------------------------------------------------- - -QTreeWidgetItem* ListEdit::findItem(const ListType& lt, QTreeWidgetItem* item) - { - if (item->flags() & Qt::ItemIsSelectable) { - if (lt == item->data(0, Qt::UserRole).value()) - return item; - } - for (int n = 0; n < item->childCount(); ++n) { - QTreeWidgetItem* i = findItem(lt, item->child(n)); - if (i) - return i; - } - return 0; - } - -//--------------------------------------------------------- -// selectItem -//--------------------------------------------------------- - -void ListEdit::selectItem(const AL::Pos& p, Track* track, Part* part, Ctrl* ctrl) - { - _pos = p; - stack->setCurrentWidget(ctrlPanel); - if (ctrl) - lt.id = LIST_CTRL; - else if (part) - lt.id = LIST_PART; - else if (track) - lt.id = LIST_TRACK; - else - return; - lt.track = track; - lt.part = part; - lt.ctrl = ctrl; - selectItem(); - } - -void ListEdit::selectItem() - { - stack->setCurrentWidget(ctrlPanel); - buildList(); - for (int i = 0;; ++i) { - QTreeWidgetItem* item = list->topLevelItem(i); - if (item == 0) { - printf("MusE::ListEdit: Element not found\n"); - break; - } - item = findItem(lt, item); - if (item) { - list->setItemExpanded(item, true); - list->setCurrentItem(item); - list->scrollToItem(item); - break; - } - } - } - -//--------------------------------------------------------- -// readStatus -//--------------------------------------------------------- - -void ListEdit::read(QDomNode node) - { - QString trackName; - Track* track = 0; - Part* part = 0; - Ctrl* ctrl = 0; - - for (node = node.firstChild(); !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - QString tag(e.tagName()); - if (tag == "Track") { - track = song->findTrack(e.text()); - if (track == 0) { - printf("MusE::ListEdit::read: track not found\n"); - } - } - else if (tag == "Pos") - _pos.read(node); - else if (tag == "Ctrl") { - int ctrlId = e.text().toInt(); - ctrl = track->getController(ctrlId); - if (ctrl == 0) { - printf("MusE::ListEdit::read: controller not found: track %p\n", track); - printf("MusE::ListEdit::read: controller %d not found\n", ctrlId); - return; - } - } - else - AL::readProperties(this, node); - } - selectItem(_pos, track, part, ctrl); - } - -//--------------------------------------------------------- -// write -//--------------------------------------------------------- - -void ListEdit::write(Xml& xml) const - { - xml.stag(metaObject()->className()); - xml.writeProperties(this); - - xml.tag("Track", lt.track->name()); - if (lt.ctrl) { - xml.tag("Ctrl", lt.ctrl->id()); - _pos.write(xml, "Pos"); - } - xml.etag(metaObject()->className()); - } - diff --git a/muse/muse/liste/listedit.h b/muse/muse/liste/listedit.h deleted file mode 100644 index b49e61c3..00000000 --- a/muse/muse/liste/listedit.h +++ /dev/null @@ -1,98 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __LISTEDIT_H__ -#define __LISTEDIT_H__ - -#include "al/pos.h" -#include "cobject.h" - -class Track; -class Part; -class Ctrl; -class CtrlListEditor; -class PartListEditor; -class TrackListEditor; - -//--------------------------------------------------------- -// ListType -//--------------------------------------------------------- - -enum { LIST_NONE, LIST_TRACK, LIST_PART, LIST_CTRL }; - -struct ListType { - int id; - Track* track; - Part* part; - Ctrl* ctrl; - - bool operator==(const ListType& t) const; - }; - -Q_DECLARE_METATYPE(struct ListType); - -//--------------------------------------------------------- -// ListWidget -// interface class -//--------------------------------------------------------- - -class ListWidget : public QWidget { - Q_OBJECT; - - public: - ListWidget(QWidget* = 0) {} - virtual void setup(const ListType&) = 0; - }; - -//--------------------------------------------------------- -// ListEdit -//--------------------------------------------------------- - -class ListEdit : public TopWin { - Q_OBJECT; - - ListType lt; - AL::Pos _pos; - - QStackedWidget* stack; - QTreeWidget* list; - CtrlListEditor* ctrlPanel; - PartListEditor* partPanel; - TrackListEditor* trackPanel; - - void buildList(); - QTreeWidgetItem* findItem(const ListType& lt, QTreeWidgetItem* item); - void selectItem(); - - private slots: - void itemChanged(QTreeWidgetItem*, QTreeWidgetItem*); - void itemExpanded(QTreeWidgetItem*); - void songChanged(int); - - public: - ListEdit(QWidget* parent = 0); - void selectItem(const AL::Pos&, Track*, Part*, Ctrl*); - virtual void read(QDomNode); - virtual void write(Xml& xml) const; - AL::Pos& pos() { return _pos; } - }; - -#endif - diff --git a/muse/muse/liste/partlistedit.cpp b/muse/muse/liste/partlistedit.cpp deleted file mode 100644 index d3db4de2..00000000 --- a/muse/muse/liste/partlistedit.cpp +++ /dev/null @@ -1,434 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "partlistedit.h" -#include "track.h" -#include "song.h" -#include "al/pos.h" -#include "awl/posedit.h" -#include "part.h" - -//--------------------------------------------------------- -// PartListEditor -//--------------------------------------------------------- - -PartListEditor::PartListEditor(ListEdit* e, QWidget* parent) - : ListWidget(parent) - { - listEdit = e; - updateListDisabled = false; - curEvent = NULL; - QWidget* cew = new QWidget; - le.setupUi(cew); - QVBoxLayout* layout = new QVBoxLayout; - layout->addWidget(cew); - setLayout(layout); - - QFontMetrics fm(le.eventList->font()); - int zW = fm.width("0"); - le.eventList->setColumnWidth(TICK_COL, zW * 8); - le.eventList->setColumnWidth(TIME_COL, zW * 14); - EventDelegate* eventDelegate = new EventDelegate(this); - le.eventList->setItemDelegate(eventDelegate); - - part = 0; - - connect(le.eventList, SIGNAL(itemActivated(QTreeWidgetItem*, int)), - SLOT(itemActivated(QTreeWidgetItem*,int))); - connect(le.eventList, SIGNAL(itemChanged(QTreeWidgetItem*, int)), - SLOT(itemChanged(QTreeWidgetItem*, int))); - connect(le.eventList, - SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), - SLOT(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*))); - connect(le.insertButton, SIGNAL(clicked()), SLOT(insertClicked())); - connect(le.deleteButton, SIGNAL(clicked()), SLOT(deleteClicked())); - } - -//--------------------------------------------------------- -// getTrack -//--------------------------------------------------------- - -Track* PartListEditor::getTrack() const - { - return part->track(); - } - -//--------------------------------------------------------- -// setup -//--------------------------------------------------------- - -void PartListEditor::setup(const ListType& lt) - { - part = lt.part; - le.partName->setText(part->name()); - updateList(); - } - -//--------------------------------------------------------- -// updateList -//--------------------------------------------------------- - -void PartListEditor::updateList() { - if(updateListDisabled) { - updateListDisabled = false; - return; - } - EventList* el = part->events(); - int idx = 0; - le.eventList->clear(); - for (iEvent i = el->begin(); i != el->end(); ++i, ++idx) { - Event e = i->second; - QTreeWidgetItem* item = new QTreeWidgetItem; - item->setData(TICK_COL, Qt::TextAlignmentRole, - int(Qt::AlignRight | Qt::AlignVCenter)); - item->setData(TIME_COL, Qt::TextAlignmentRole, - int(Qt::AlignRight | Qt::AlignVCenter)); - item->setData(TICK_COL, Qt::DisplayRole, e.tick() + part->tick()); - item->setData(TIME_COL, Qt::DisplayRole, e.tick() + part->tick()); - item->setData(TYPE_COL, Qt::TextAlignmentRole, - int(Qt::AlignRight | Qt::AlignVCenter)); - item->setData(TYPE_COL, Qt::DisplayRole, e.eventTypeName()); - item->setData(A_COL, Qt::TextAlignmentRole, - int(Qt::AlignHCenter | Qt::AlignVCenter)); - if(e.type()!=Sysex) item->setData(A_COL, Qt::DisplayRole, e.dataA()); - item->setData(B_COL, Qt::TextAlignmentRole, - int(Qt::AlignHCenter | Qt::AlignVCenter)); - if(e.type()!=Sysex) item->setData(B_COL, Qt::DisplayRole, e.dataB()); - item->setData(C_COL, Qt::TextAlignmentRole, - int(Qt::AlignHCenter | Qt::AlignVCenter)); - if(e.type()!=Sysex) item->setData(C_COL, Qt::DisplayRole, e.dataC()); - item->setData(LEN_COL, Qt::TextAlignmentRole, - int(Qt::AlignHCenter | Qt::AlignVCenter)); - item->setData(LEN_COL, Qt::DisplayRole, - (e.type()==Sysex?e.dataLen():e.lenTick())); - QString dataStr; - if(e.type()==Sysex) - dataStr = InsertEventDialog::charArray2Str((const char*)e.data(), - e.dataLen()); - else dataStr = QString(""); - item->setText(DATA_COL, dataStr); - le.eventList->insertTopLevelItem(idx, item); - } -} - -//--------------------------------------------------------- -// item2Event -//--------------------------------------------------------- - -Event* PartListEditor::item2Event(QTreeWidgetItem* item, int time_col) { - if(item) { - int tick; - if(time_col == TICK_COL) - tick = item->data(TICK_COL, Qt::DisplayRole).toInt(); - else tick = item->data(TIME_COL, Qt::DisplayRole).toInt(); - int evTick = (unsigned)IED_MAX(0, (int)tick - (int)part->tick()); - QString type = item->text(TYPE_COL); - if(type == "Note") { - Event* ev = new Event(Note); - int pitch = item->data(A_COL, Qt::DisplayRole).toInt(); - int velo = item->data(B_COL, Qt::DisplayRole).toInt(); - int len = item->data(LEN_COL, Qt::DisplayRole).toInt(); - ev->setTick(evTick); - ev->setPitch(pitch); - ev->setVelo(velo); - ev->setLenTick(len); - return ev; - } - else if(type == "Sysex") { - Event* ev = new Event(Sysex); - QString dataStr = item->text(DATA_COL); - char* data = InsertEventDialog::Str2CharArray(dataStr); - int len = item->data(LEN_COL, Qt::DisplayRole).toInt(); - ev->setTick(evTick); - ev->setData((const unsigned char*)data, len); - return ev; - } - else return NULL; - } - else return NULL; -} - -//--------------------------------------------------------- -// itemActivated -//--------------------------------------------------------- - -void PartListEditor::itemActivated(QTreeWidgetItem* item, int column) { - AL::Pos time; - int tick = item->data(TIME_COL, Qt::DisplayRole).toInt(); - time.setTick(tick); - Event* ev = item2Event(item); - EventList* el; - - if(column == TYPE_COL) { - InsertEventDialog dialog(time, part, ev, this); - if(dialog.exec() == QDialog::Accepted) { - el = dialog.elResult(); - if(el) { - if(ev) song->deleteEvent(*ev, part); - for(iEvent ie = el->begin(); ie != el->end(); ie++) { - Event e = ie->second; - song->addEvent(e, part); - } - } - } - } - else if((column==A_COL || column==B_COL || column==C_COL || column==LEN_COL) - && ev && ev->type()==Sysex) { - //DO NOTHING - } - else if(column == DATA_COL) { - if(ev && ev->type()==Sysex) { - InsertEventDialog dialog(time, part, ev, this); - if(dialog.exec() == QDialog::Accepted) { - el = dialog.elResult(); - if(el) { - if(ev) song->deleteEvent(*ev, part); - for(iEvent ie = el->begin(); ie != el->end(); ie++) { - Event e = ie->second; - song->addEvent(e, part); - } - } - } - } - } - else le.eventList->openPersistentEditor(item, column); -} - -//--------------------------------------------------------- -// itemChanged -//--------------------------------------------------------- - -void PartListEditor::itemChanged(QTreeWidgetItem* item, int column) { - updateListDisabled = (column != TICK_COL && column != TIME_COL); - if(item) { - Event* newEvent = item2Event(item, column); - song->changeEvent(*curEvent, *newEvent, part); - } -} - -//--------------------------------------------------------- -// currentItemChanged -//--------------------------------------------------------- - -void PartListEditor::currentItemChanged(QTreeWidgetItem* cur, - QTreeWidgetItem* pre) { - if(pre) { - le.eventList->closePersistentEditor(pre, TICK_COL); - le.eventList->closePersistentEditor(pre, TIME_COL); - le.eventList->closePersistentEditor(pre, A_COL); - le.eventList->closePersistentEditor(pre, B_COL); - le.eventList->closePersistentEditor(pre, C_COL); - le.eventList->closePersistentEditor(pre, LEN_COL); - } - if(cur) { - curEvent = item2Event(cur); - } -} - -//--------------------------------------------------------- -// insertClicked -// insert one tick before current value -//--------------------------------------------------------- - -void PartListEditor::insertClicked() - { - QTreeWidgetItem* cur = le.eventList->currentItem(); - AL::Pos time; - if(cur) { - int tick = cur->data(TIME_COL, Qt::DisplayRole).toInt(); - time.setTick(tick); - } - - EventList* el; - - InsertEventDialog dialog(time, part, NULL, this); - if(dialog.exec() == QDialog::Accepted) { - el = dialog.elResult(); - if(el) { - for(iEvent ie = el->begin(); ie != el->end(); ie++) { - Event e = ie->second; - song->addEvent(e, part); - } - } - } - } - -//--------------------------------------------------------- -// deleteClicked -//--------------------------------------------------------- - -void PartListEditor::deleteClicked() - { - QTreeWidgetItem* cur = le.eventList->currentItem(); - if (cur == 0) - return; - Event* ev = item2Event(cur); - song->deleteEvent(*ev, part); - } - -//--------------------------------------------------------- -// EventDelegate -//--------------------------------------------------------- - -EventDelegate::EventDelegate(QObject* parent) - : QItemDelegate(parent) - { - } - -//--------------------------------------------------------- -// createEditor -//--------------------------------------------------------- - -QWidget* EventDelegate::createEditor(QWidget* pw, - const QStyleOptionViewItem& option, const QModelIndex& index) const - { - switch(index.column()) { - case PartListEditor::TICK_COL: - break; - case PartListEditor::TIME_COL: - return new Awl::PosEdit(pw); - case PartListEditor::TYPE_COL: - case PartListEditor::A_COL: - case PartListEditor::B_COL: - case PartListEditor::C_COL: - case PartListEditor::LEN_COL: - case PartListEditor::DATA_COL: - break; - } - return QItemDelegate::createEditor(pw, option, index); - } - -//--------------------------------------------------------- -// setEditorData -//--------------------------------------------------------- - -void EventDelegate::setEditorData(QWidget* editor, - const QModelIndex& index) const - { - switch(index.column()) { - case PartListEditor::TICK_COL: - break; - case PartListEditor::TIME_COL: - { - Awl::PosEdit* pe = static_cast(editor); - pe->setValue(AL::Pos(index.data().toInt())); - } - return; - case PartListEditor::TYPE_COL: - case PartListEditor::A_COL: - case PartListEditor::B_COL: - case PartListEditor::C_COL: - case PartListEditor::LEN_COL: - case PartListEditor::DATA_COL: - break; - } - QItemDelegate::setEditorData(editor, index); - } - -//--------------------------------------------------------- -// setModelData -//--------------------------------------------------------- - -void EventDelegate::setModelData(QWidget* editor, QAbstractItemModel* model, - const QModelIndex& index) const - { - switch(index.column()) { - case PartListEditor::TICK_COL: - break; - case PartListEditor::TIME_COL: - { - Awl::PosEdit* pe = static_cast(editor); - model->setData(index, pe->pos().tick(), Qt::DisplayRole); - } - return; - case PartListEditor::TYPE_COL: - case PartListEditor::A_COL: - case PartListEditor::B_COL: - case PartListEditor::C_COL: - case PartListEditor::LEN_COL: - case PartListEditor::DATA_COL: - break; - } - QItemDelegate::setModelData(editor, model, index); - } - -//--------------------------------------------------------- -// paint -//--------------------------------------------------------- - -void EventDelegate::paint(QPainter* painter, - const QStyleOptionViewItem& option, const QModelIndex& index) const - { - QString text; - PartListEditor* ce = static_cast(parent()); - - switch(index.column()) { - case PartListEditor::TICK_COL: - { - Track* track = ce->getTrack(); - AL::Pos pos(index.data().toInt(), track->timeType()); - text = QString("%1").arg(pos.tick()); - } - break; - case PartListEditor::TIME_COL: - { - Track* track = ce->getTrack(); - AL::Pos pos(index.data().toInt(), track->timeType()); - int measure, beat, tick; - pos.mbt(&measure, &beat, &tick); - text.sprintf("%04d.%02d.%03u", measure+1, beat+1, tick); - } - break; - case PartListEditor::TYPE_COL: - case PartListEditor::A_COL: - case PartListEditor::B_COL: - case PartListEditor::C_COL: - case PartListEditor::LEN_COL: - case PartListEditor::DATA_COL: - QItemDelegate::paint(painter, option, index); - return; - } - - QStyleOptionViewItemV2 opt = setOptions(index, option); - const QStyleOptionViewItemV2 *v2 = qstyleoption_cast(&option); - opt.features = v2 ? v2->features : QStyleOptionViewItemV2::ViewItemFeatures(QStyleOptionViewItemV2::None); - - painter->save(); - QVariant value; - QRect displayRect; - displayRect = option.rect; // textRectangle(painter, d->textLayoutBounds(opt), opt.font, text); - - QRect checkRect; - Qt::CheckState checkState = Qt::Unchecked; - value = index.data(Qt::CheckStateRole); - if (value.isValid()) { - checkState = static_cast(value.toInt()); - checkRect = check(opt, opt.rect, value); - } - - drawBackground(painter, opt, index); - drawCheck(painter, opt, checkRect, checkState); - drawDisplay(painter, opt, displayRect, text); - drawFocus(painter, opt, text.isEmpty() ? QRect() : displayRect); - painter->restore(); - } - - - diff --git a/muse/muse/liste/partlistedit.h b/muse/muse/liste/partlistedit.h deleted file mode 100644 index 10eda46a..00000000 --- a/muse/muse/liste/partlistedit.h +++ /dev/null @@ -1,79 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __PARTLISTEDIT_H__ -#define __PARTLISTEDIT_H__ - -#include "al/pos.h" -#include "ieventdialog.h" -#include "listedit.h" -#include "ui_partlistedit.h" - -//--------------------------------------------------------- -// EventDelegate -//--------------------------------------------------------- - -class EventDelegate : public QItemDelegate { - Q_OBJECT - - virtual QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem&, - const QModelIndex& index) const; - virtual void setEditorData(QWidget* editor, const QModelIndex&) const; - virtual void setModelData(QWidget* editor, QAbstractItemModel*, - const QModelIndex&) const; - void paint(QPainter*, const QStyleOptionViewItem&, - const QModelIndex&) const; - - public: - EventDelegate(QObject* parent = 0); - }; - -//--------------------------------------------------------- -// PartListEditor -//--------------------------------------------------------- - -class PartListEditor : public ListWidget { - Q_OBJECT - - ListEdit* listEdit; - Ui::PartListEdit le; - Part* part; - Event* curEvent; - bool updateListDisabled; - - void updateList(); - Event* item2Event(QTreeWidgetItem* item, int time_col = TICK_COL); - - private slots: - void itemActivated(QTreeWidgetItem* item, int column); - void itemChanged(QTreeWidgetItem* item, int column); - void currentItemChanged(QTreeWidgetItem* cur, QTreeWidgetItem* pre); - void insertClicked(); - void deleteClicked(); - - public: - PartListEditor(ListEdit*, QWidget* parent = 0); - virtual void setup(const ListType&); - Track* getTrack() const; - enum { TICK_COL, TIME_COL, TYPE_COL, A_COL, B_COL, C_COL, LEN_COL, DATA_COL}; - }; - -#endif - diff --git a/muse/muse/liste/partlistedit.ui b/muse/muse/liste/partlistedit.ui deleted file mode 100644 index c575ef03..00000000 --- a/muse/muse/liste/partlistedit.ui +++ /dev/null @@ -1,166 +0,0 @@ - - PartListEdit - - - - 0 - 0 - 400 - 341 - - - - Form - - - - 9 - - - 6 - - - - - 0 - - - 6 - - - - - - 5 - 0 - 0 - 0 - - - - - 75 - true - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:400;">Part:</span></p></body></html> - - - - - - - - - - - - Eventlist: - - - - - - - true - - - 0 - - - false - - - true - - - false - - - - Tick - - - - - Time - - - - - Type - - - - - Val A - - - - - Val B - - - - - Val C - - - - - Length - - - - - Data - - - - - - - - 0 - - - 6 - - - - - Delete - - - - - - - Insert - - - - - - - Qt::Horizontal - - - - 231 - 29 - - - - - - - - - - - diff --git a/muse/muse/liste/tracklistedit.cpp b/muse/muse/liste/tracklistedit.cpp deleted file mode 100644 index 24fc4722..00000000 --- a/muse/muse/liste/tracklistedit.cpp +++ /dev/null @@ -1,65 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "tracklistedit.h" -#include "track.h" -#include "song.h" -#include "al/pos.h" -#include "awl/posedit.h" - -//--------------------------------------------------------- -// TrackListEditor -//--------------------------------------------------------- - -TrackListEditor::TrackListEditor(ListEdit* e, QWidget* parent) - : ListWidget(parent) - { - listEdit = e; - QWidget* cew = new QWidget; - le.setupUi(cew); - QVBoxLayout* layout = new QVBoxLayout; - layout->addWidget(cew); - setLayout(layout); - - QFontMetrics fm(le.partList->font()); - int zW = fm.width("0"); - le.partList->setColumnWidth(TICK_COL, zW * 8); - le.partList->setColumnWidth(TIME_COL, zW * 14); - track = 0; - } - -//--------------------------------------------------------- -// setup -//--------------------------------------------------------- - -void TrackListEditor::setup(const ListType& lt) - { - track = lt.track; - le.trackName->setText(track->name()); - updateList(); - } - -//--------------------------------------------------------- -// updateList -//--------------------------------------------------------- - -void TrackListEditor::updateList() - { - } diff --git a/muse/muse/liste/tracklistedit.h b/muse/muse/liste/tracklistedit.h deleted file mode 100644 index 7d4b57f7..00000000 --- a/muse/muse/liste/tracklistedit.h +++ /dev/null @@ -1,50 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __TRACKLISTEDIT_H__ -#define __TRACKLISTEDIT_H__ - -#include "al/pos.h" -#include "listedit.h" -#include "ui_tracklistedit.h" - -//--------------------------------------------------------- -// TrackListEditor -//--------------------------------------------------------- - -class TrackListEditor : public ListWidget { - Q_OBJECT - - ListEdit* listEdit; - Ui::TrackListEdit le; - Track* track; - - void updateList(); - - private slots: - - public: - TrackListEditor(ListEdit*, QWidget* parent = 0); - virtual void setup(const ListType&); - enum { TICK_COL, TIME_COL }; - }; - -#endif - diff --git a/muse/muse/liste/tracklistedit.ui b/muse/muse/liste/tracklistedit.ui deleted file mode 100644 index dfddf1c7..00000000 --- a/muse/muse/liste/tracklistedit.ui +++ /dev/null @@ -1,146 +0,0 @@ - - TrackListEdit - - - - 0 - 0 - 400 - 341 - - - - Form - - - - 9 - - - 6 - - - - - 0 - - - 6 - - - - - - 5 - 0 - 0 - 0 - - - - - 75 - true - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:400;">Track:</span></p></body></html> - - - - - - - - - - - - Partlist: - - - - - - - true - - - 0 - - - false - - - true - - - false - - - - Tick - - - - - Time - - - - - Len - - - - - Name - - - - - - - - 0 - - - 6 - - - - - Delete - - - - - - - Insert - - - - - - - Qt::Horizontal - - - - 231 - 29 - - - - - - - - - - - diff --git a/muse/muse/marker/CMakeLists.txt b/muse/muse/marker/CMakeLists.txt deleted file mode 100644 index d031533c..00000000 --- a/muse/muse/marker/CMakeLists.txt +++ /dev/null @@ -1,45 +0,0 @@ -# -# -# -# - -MACRO(WRAP_CPP outfiles ) - FOREACH(it ${ARGN}) - SET(${outfiles} ${${outfiles}} ${it}.cpp) - ENDFOREACH(it) - ENDMACRO(WRAP_CPP) - -MACRO(WRAP_H outfiles ) - FOREACH(it ${ARGN}) - SET(${outfiles} ${${outfiles}} ${it}.h) - ENDFOREACH(it) - ENDMACRO(WRAP_H) - -MACRO(WRAP_UI outfiles ) - FOREACH(it ${ARGN}) - SET(${outfiles} ${${outfiles}} ${it}.ui) - ENDFOREACH(it) - ENDMACRO(WRAP_UI) - -set(mocs - markerview - ) - -WRAP_H(mocH ${mocs}) -WRAP_CPP(mocCPP ${mocs}) - -QT4_WRAP_CPP (moc_headers ${mocH}) - -set (uics - ) - -WRAP_UI(uiUI ${uics}) -QT4_WRAP_UI (ui_headers ${uiUI}) - -set ( marker_src ${mocCPP} ${moc_headers}) - -add_library ( marker STATIC ${marker_src}) -set_target_properties( marker - PROPERTIES COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all.h" - ) - diff --git a/muse/muse/marker/markerview.cpp b/muse/muse/marker/markerview.cpp deleted file mode 100644 index 7cab2d02..00000000 --- a/muse/muse/marker/markerview.cpp +++ /dev/null @@ -1,413 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "markerview.h" -#include "globals.h" -#include "sync.h" -#include "icons.h" -#include "song.h" -#include "awl/posedit.h" -#include "al/al.h" -#include "al/xml.h" -#include "al/sig.h" -#include "al/tempo.h" -#include "al/marker.h" -#include "shortcuts.h" - -enum { COL_TICK = 0, COL_SMPTE, COL_LOCK, COL_NAME }; - -//--------------------------------------------------------- -// tick -//--------------------------------------------------------- - -unsigned MarkerItem::tick() const - { - return _marker->tick(); - } - -//--------------------------------------------------------- -// name -//--------------------------------------------------------- - -const QString MarkerItem::name() const - { - return _marker->name(); - } - -//--------------------------------------------------------- -// lock -//--------------------------------------------------------- - -bool MarkerItem::lock() const - { - return _marker->type() == AL::FRAMES; - } - -//--------------------------------------------------------- -// MarkerItem -//--------------------------------------------------------- - -MarkerItem::MarkerItem(QTreeWidget* parent, AL::Marker* m) - : QTreeWidgetItem(parent) - { - _marker = m; - setText(COL_NAME, m->name()); - setTick(m->tick()); - setIcon(COL_LOCK, m->type() == AL::FRAMES ? *lockIcon : QIcon()); - } - -//--------------------------------------------------------- -// setName -//--------------------------------------------------------- - -void MarkerItem::setName(const QString& s) - { - setText(COL_NAME, s); - _marker = song->setMarkerName(_marker, s); - } - -//--------------------------------------------------------- -// setLock -//--------------------------------------------------------- - -void MarkerItem::setLock(bool lck) - { - setIcon(COL_LOCK, lck ? *lockIcon : QIcon()); - _marker = song->setMarkerLock(_marker, lck); - } - -//--------------------------------------------------------- -// setTick -//--------------------------------------------------------- - -void MarkerItem::setTick(unsigned v) - { - if (_marker->tick() != v) - _marker = song->setMarkerTick(_marker, v); - QString s; - int bar, beat; - int tick; - _marker->mbt(&bar, &beat, &tick); - s.sprintf("%04d.%02d.%03d", bar+1, beat+1, tick); - setText(COL_TICK, s); - - int min, sec, frame, subframe; - _marker->msf(&min, &sec, &frame, &subframe); - - s.sprintf("%03d:%02d:%02d:%02d", min, sec, frame, subframe); - setText(COL_SMPTE, s); - } - -//--------------------------------------------------------- -// MarkerView -//--------------------------------------------------------- - -MarkerView::MarkerView() - : TopWin() - { - lockChange = false; - setWindowTitle(tr("MusE: Marker")); - - //---------Actions---------------------------- - QAction* markerAdd = new QAction(QIcon(*flagIcon), tr("add marker"), this); - markerAdd->setToolTip(tr("Add Marker")); - connect(markerAdd, SIGNAL(triggered()), SLOT(addMarker())); - - QAction* markerDelete = getAction("delete", this); - connect(markerDelete, SIGNAL(triggered()), SLOT(deleteMarker())); - - //---------Pulldown Menu---------------------------- - QMenuBar* mb = menuBar(); - - QMenu* editMenu = mb->addMenu(tr("&Edit")); - editMenu->addAction(markerAdd); - editMenu->addAction(markerDelete); - - //---------ToolBar---------------------------------- - QToolBar* tools = addToolBar(tr("marker-tools")); - tools->addAction(undoAction); - tools->addAction(redoAction); - - QToolBar* edit = addToolBar(tr("edit tools")); - edit->addAction(markerAdd); - edit->addAction(markerDelete); - - //--------------------------------------------------- - // master - //--------------------------------------------------- - - QWidget* w = new QWidget; - setCentralWidget(w); - QVBoxLayout* vbox = new QVBoxLayout; - w->setLayout(vbox); - - table = new QTreeWidget; - table->setUniformRowHeights(true); - table->setAlternatingRowColors(true); - table->setSelectionBehavior(QAbstractItemView::SelectRows); - table->setSelectionMode(QTreeWidget::SingleSelection); - table->setSortingEnabled(false); - table->setIndentation(0); - QStringList labels; - labels << tr("Bar:Beat:Tick") - << tr("Min:Sc:Fr:Sf") - << tr("Lock") - << tr("Text"); - table->setHeaderLabels(labels); - - table->header()->resizeSection(0, 120); - table->header()->resizeSection(1, 120); - table->header()->resizeSection(2, 50); - table->header()->resizeSection(3, 200); -// table->header()->resizeSection(mnWidthMode(3, QTreeWidget::Maximum); - connect(table, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), SLOT(currentChanged(QTreeWidgetItem*))); - connect(table, SIGNAL(itemSelectionChanged()), SLOT(selectionChanged())); - connect(table, SIGNAL(itemClicked(QTreeWidgetItem*,int)), SLOT(clicked(QTreeWidgetItem*))); - - QGroupBox* props = new QGroupBox(tr("Marker Properties")); - QHBoxLayout* propsLayout = new QHBoxLayout; - props->setLayout(propsLayout); - - editTick = new Awl::PosEdit; - propsLayout->addWidget(editTick); - editTick->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, - QSizePolicy::Fixed)); - - editSMPTE = new Awl::PosEdit; - propsLayout->addWidget(editSMPTE); - editSMPTE->setSmpte(true); - editSMPTE->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, - QSizePolicy::Fixed)); - - lock = new QToolButton; - propsLayout->addWidget(lock); - lock->setIcon(*lockIcon); - lock->setCheckable(true); - - editName = new QLineEdit; - propsLayout->addWidget(editName); - editName->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, - QSizePolicy::Preferred)); - connect(editName, SIGNAL(textChanged(const QString&)), - SLOT(nameChanged(const QString&))); - connect(editTick, SIGNAL(valueChanged(const Pos&)), - SLOT(tickChanged(const Pos&))); - connect(editSMPTE, SIGNAL(valueChanged(const Pos&)), - SLOT(tickChanged(const Pos&))); - connect(editSMPTE, SIGNAL(valueChanged(const Pos&)), - editTick, SLOT(setValue(const Pos&))); - connect(editTick, SIGNAL(valueChanged(const Pos&)), - editSMPTE, SLOT(setValue(const Pos&))); - connect(lock, SIGNAL(toggled(bool)), - SLOT(lockChanged(bool))); - connect(song, SIGNAL(markerChanged(int)), SLOT(markerChanged(int))); - - vbox->addWidget(table); - vbox->addWidget(props); - - //--------------------------------------------------- - // Rest - //--------------------------------------------------- - -// connect(song, SIGNAL(songChanged(int)), SLOT(updateList())); - updateList(); - markerChanged(Song::MARKER_CUR); // select current marker - } - -//--------------------------------------------------------- -// addMarker -//--------------------------------------------------------- - -void MarkerView::addMarker() - { - addMarker(song->cPos()); - } - -void MarkerView::addMarker(const AL::Pos& pos) - { -// new MarkerItem(table, m); - song->addMarker(QString(""), pos); - table->sortItems(0, Qt::AscendingOrder); - } - -//--------------------------------------------------------- -// deleteMarker -//--------------------------------------------------------- - -void MarkerView::deleteMarker() - { - MarkerItem* item = (MarkerItem*)table->currentItem(); - if (item) { - AL::Marker* marker = item->marker(); - delete item; - song->removeMarker(marker); - } - } - -//--------------------------------------------------------- -// updateList -//--------------------------------------------------------- - -void MarkerView::updateList() - { - table->clear(); - AL::MarkerList* marker = song->marker(); - for (AL::iMarker i = marker->begin(); i != marker->end(); ++i) { - AL::Marker* m = &i->second; - new MarkerItem(table, m); - } - } - -//--------------------------------------------------------- -// currentChanged -//--------------------------------------------------------- - -void MarkerView::currentChanged(QTreeWidgetItem* i) - { - MarkerItem* item = (MarkerItem*)i; - if (item == 0) { // never triggered - editTick->setValue(0); - editSMPTE->setValue(0); - editName->setText(QString("")); - lock->setChecked(false); - editSMPTE->setEnabled(false); - editTick->setEnabled(false); - lock->setEnabled(false); - editName->setEnabled(false); - } - else { - editTick->setValue(item->tick()); - editSMPTE->setValue(item->tick()); - editName->setText(item->name()); - editName->setEnabled(true); - lock->setChecked(item->lock()); - lock->setEnabled(true); - editSMPTE->setEnabled(item->lock()); - editTick->setEnabled(!item->lock()); - } - } - -//--------------------------------------------------------- -// selectionChanged -//--------------------------------------------------------- - -void MarkerView::selectionChanged() - { -#if 0 - QList sel = table->selectedItems(); - if (!sel.empty()) { - MarkerItem* item = (MarkerItem*)(sel[0]); - } -#endif - } - -//--------------------------------------------------------- -// clicked -//--------------------------------------------------------- - -void MarkerView::clicked(QTreeWidgetItem* i) - { - MarkerItem* item = (MarkerItem*)i; - if (item == 0) { - table->clearSelection(); - return; - } - Pos p(item->tick(), AL::TICKS); - song->setPos(0, p, true, true, false); - } - -//--------------------------------------------------------- -// nameChanged -//--------------------------------------------------------- - -void MarkerView::nameChanged(const QString& s) - { - MarkerItem* item = (MarkerItem*)table->currentItem(); - if (item) - item->setName(s); - } - -//--------------------------------------------------------- -// tickChanged -//--------------------------------------------------------- - -void MarkerView::tickChanged(const Pos& pos) - { - MarkerItem* item = (MarkerItem*)table->currentItem(); - if (item) { - lockChange = true; - item->setTick(pos.tick()); - Pos p(pos.tick(), AL::TICKS); - song->setPos(0, p, true, true, false); - lockChange = false; - } - } - -//--------------------------------------------------------- -// lockChanged -//--------------------------------------------------------- - -void MarkerView::lockChanged(bool lck) - { - MarkerItem* item = (MarkerItem*)table->currentItem(); - if (item) { - item->setLock(lck); - editSMPTE->setEnabled(item->lock()); - editTick->setEnabled(!item->lock()); - } - } - -//--------------------------------------------------------- -// markerChanged -//--------------------------------------------------------- - -void MarkerView::markerChanged(int val) - { - if (lockChange) - return; - switch (val) { - case Song::MARKER_ADD: - case Song::MARKER_REMOVE: - updateList(); - // fall through - case Song::MARKER_CUR: - { - AL::MarkerList* marker = song->marker(); - for (AL::iMarker i = marker->begin(); i != marker->end(); ++i) { - if (i->second.current()) { - int n = table->topLevelItemCount(); - for (int k = 0; k < n; ++k) { - MarkerItem* item = (MarkerItem*)(table->topLevelItem(k)); - if (item->marker() == &i->second) { - table->setCurrentItem(item); - return; - } - } - } - } - } - break; - case Song::MARKER_NAME: - case Song::MARKER_TICK: - case Song::MARKER_LOCK: - break; - } - } - diff --git a/muse/muse/marker/markerview.h b/muse/muse/marker/markerview.h deleted file mode 100644 index 53205e3d..00000000 --- a/muse/muse/marker/markerview.h +++ /dev/null @@ -1,98 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __MARKERVIEW_H__ -#define __MARKERVIEW_H__ - -#include "cobject.h" - -namespace Awl { - class PosEdit; - }; - -namespace AL { - class Pos; - class Xml; - class Marker; - }; -using AL::Pos; -using AL::Xml; - - -//--------------------------------------------------------- -// MarkerItem -//--------------------------------------------------------- - -class MarkerItem : public QTreeWidgetItem { - AL::Marker* _marker; - - public: - MarkerItem(QTreeWidget* parent, AL::Marker* m); - AL::Marker* marker() const { return _marker; } - unsigned tick() const; - const QString name() const; - bool lock() const; - void setName(const QString& s); - void setTick(unsigned t); - void setLock(bool lck); - }; - -//--------------------------------------------------------- -// MarkerView -//--------------------------------------------------------- - -class MarkerView : public TopWin { - Q_OBJECT - - bool lockChange; - - QTreeWidget* table; - QLineEdit* editName; - Awl::PosEdit* editSMPTE; - Awl::PosEdit* editTick; - QToolButton* lock; - - void closeEvent(QCloseEvent* e) { - emit closed(); - QMainWindow::closeEvent(e); - } - - signals: - void closed(); - - private slots: - void addMarker(); - void addMarker(const AL::Pos&); - void deleteMarker(); - void currentChanged(QTreeWidgetItem*); - void selectionChanged(); - void nameChanged(const QString&); - void tickChanged(const Pos&); - void lockChanged(bool); - void markerChanged(int); - void clicked(QTreeWidgetItem*); - void updateList(); - - public: - MarkerView(); - }; - -#endif - diff --git a/muse/muse/master/CMakeLists.txt b/muse/muse/master/CMakeLists.txt deleted file mode 100644 index a20d3be1..00000000 --- a/muse/muse/master/CMakeLists.txt +++ /dev/null @@ -1,37 +0,0 @@ -# -# -# -# - -MACRO(WRAP_CPP outfiles ) - FOREACH(it ${ARGN}) - SET(${outfiles} ${${outfiles}} ${it}.cpp) - ENDFOREACH(it) - ENDMACRO(WRAP_CPP) - -MACRO(WRAP_H outfiles ) - FOREACH(it ${ARGN}) - SET(${outfiles} ${${outfiles}} ${it}.h) - ENDFOREACH(it) - ENDMACRO(WRAP_H) - -MACRO(WRAP_UI outfiles ) - FOREACH(it ${ARGN}) - SET(${outfiles} ${${outfiles}} ${it}.ui) - ENDFOREACH(it) - ENDMACRO(WRAP_UI) - -set( mocs master masteredit ) - -WRAP_H(mocH ${mocs}) -WRAP_CPP(mocCPP ${mocs}) - -QT4_WRAP_CPP (moc_headers ${mocH}) - -set ( master_src ${mocCPP} ${moc_headers}) - -add_library ( master STATIC ${master_src}) -set_target_properties( master - PROPERTIES COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all.h" - ) - diff --git a/muse/muse/master/master.cpp b/muse/muse/master/master.cpp deleted file mode 100644 index d033753c..00000000 --- a/muse/muse/master/master.cpp +++ /dev/null @@ -1,233 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "master.h" -#include "icons.h" -#include "audio.h" -#include "al/tempo.h" -#include "song.h" - -static const int minTempo = 50; -static const int maxTempo = 250; - -//--------------------------------------------------------- -// pix2tempo -//--------------------------------------------------------- - -int MasterCanvas::pix2tempo(int val) const - { - return maxTempo*1000 - mapyDev(val); - } - -//--------------------------------------------------------- -// tempo2pix -//--------------------------------------------------------- - -int MasterCanvas::tempo2pix(int val) const - { - return mapy(maxTempo*1000 - lrint(60000000000.0/val)); - } - -//--------------------------------------------------------- -// MasterCanvas -//--------------------------------------------------------- - -MasterCanvas::MasterCanvas() - : TimeCanvas(TIME_CANVAS) - { - setMarkerList(song->marker()); - setMag(xmag(), 400.0 / (maxTempo * 1000.0)); - setYMagRange(40.0 / (maxTempo*1000), 4000.0 / (maxTempo*1000)); - setVSize((maxTempo - minTempo) * 1000); - setYFit(true); - verticalScrollBar()->setSingleStep(1000); - verticalScrollBar()->setMinimum(minTempo * 1000); - verticalScrollBar()->setMaximum(maxTempo * 1000); - drag = DRAG_OFF; - } - -//--------------------------------------------------------- -// paint -//--------------------------------------------------------- - -void MasterCanvas::paint(QPainter& p, QRect rect) - { - int y = rect.y(); - - //--------------------------------------------------- - // draw Canvas Items - //--------------------------------------------------- - - int y2 = lrint(maxTempo * 1000 * _ymag); - const AL::TempoList* tl = &AL::tempomap; - for (AL::ciTEvent i = tl->begin(); i != tl->end(); ++i) { - AL::TEvent* e = i->second; - int x1 = pos2pix(AL::Pos(i->first)); - int x2 = pos2pix(AL::Pos(i->second->tick)); - int y1 = lrint(_ymag * (maxTempo*1000 - lrint(60000000000.0/e->tempo))); - if (y1 < y) - y1 = y; - p.fillRect(x1, y1, x2 - x1, y2 - y1, Qt::blue); - } - } - -//--------------------------------------------------------- -// viewMousePressEvent -//--------------------------------------------------------- - -void MasterCanvas::mousePress(QMouseEvent* event) - { - start = event->pos(); - int x = start.x() - rCanvasA.x(); - int y = start.y() - rCanvasA.y(); - - switch (tool()) { - case PointerTool: - drag = DRAG_LASSO_START; - break; - - case PencilTool: - drag = DRAG_NEW; - song->startUndo(); - newVal(x, x, y); - break; - - case RubberTool: - drag = DRAG_DELETE; - song->startUndo(); - deleteVal(x, x); - break; - - default: - break; - } - } - -//--------------------------------------------------------- -// viewMouseMoveEvent -//--------------------------------------------------------- - -void MasterCanvas::mouseMove(QPoint pos) - { - int y = pos.y() - rCanvasA.y(); - int x = pos.x() - rCanvasA.x(); - - QPoint dist = pos - start; - // bool moving = dist.y() >= 3 || dist.y() <= 3 || dist.x() >= 3 || dist.x() <= 3; - - int sx = start.x() - rCanvasA.x(); - switch (drag) { - case DRAG_NEW: - newVal(sx, x, y); - start = pos; - break; - - case DRAG_DELETE: - deleteVal(sx, x); - start = pos; - break; - - default: - break; - } - emit tempoChanged(pix2tempo(y)); -// emit timeChanged(editor->rasterVal(x)); - } - -//--------------------------------------------------------- -// mouseRelease -//--------------------------------------------------------- - -void MasterCanvas::mouseRelease(QMouseEvent*) - { - switch (drag) { - case DRAG_RESIZE: - case DRAG_NEW: - case DRAG_DELETE: - song->endUndo(SC_TEMPO); - break; - default: - break; - } - drag = DRAG_OFF; - } - -//--------------------------------------------------------- -// deleteVal -//--------------------------------------------------------- - -bool MasterCanvas::deleteVal1(const AL::Pos& p1, const AL::Pos& p2) - { - bool songChanged = false; - - AL::TempoList* tl = &AL::tempomap; - for (AL::iTEvent i = tl->begin(); i != tl->end(); ++i) { - if (i->first < p1.tick()) - continue; - if (i->first >= p2.tick()) - break; - AL::iTEvent ii = i; - ++ii; - if (ii != tl->end()) { - int tempo = ii->second->tempo; - audio->msgDeleteTempo(i->first, tempo, false); - songChanged = true; - } - } - return songChanged; - } - -//--------------------------------------------------------- -// deleteVal -//--------------------------------------------------------- - -void MasterCanvas::deleteVal(int x1, int x2) - { - AL::Pos p1(pix2pos(x1)); - AL::Pos p2(pix2pos(x2)); - p1.downSnap(raster()); - p2.upSnap(raster()); - if (deleteVal1(p1, p2)) - widget()->update(); - } - -//--------------------------------------------------------- -// newVal -//--------------------------------------------------------- - -void MasterCanvas::newVal(int x1, int x2, int y) - { - int tempo = lrint(60000000000.0 / pix2tempo(y)); - AL::Pos p1 = pix2pos(x1); - p1.downSnap(raster()); - AL::Pos p2 = pix2pos(x2); - p2.upSnap(raster()); - - if (p1 > p2) { - AL::Pos tmp = p2; - p2 = p1; - p1 = tmp; - } - deleteVal1(p1, p2); - audio->msgAddTempo(p1.tick(), tempo, false); - widget()->update(); - } - - diff --git a/muse/muse/master/master.h b/muse/muse/master/master.h deleted file mode 100644 index 54899663..00000000 --- a/muse/muse/master/master.h +++ /dev/null @@ -1,63 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __MASTER_H__ -#define __MASTER_H__ - -#include "awl/tcanvas.h" - -class GraphMidiEditor; - -//--------------------------------------------------------- -// MasterCanvas -//--------------------------------------------------------- - -class MasterCanvas : public TimeCanvas { - QPoint start; - - enum { - DRAG_OFF, DRAG_LASSO_START, DRAG_RESIZE, DRAG_NEW, - DRAG_DELETE - } drag; - - Q_OBJECT - virtual void mouseMove(QPoint); - virtual void mousePress(QMouseEvent* event); - virtual void mouseRelease(QMouseEvent*); - - virtual void paint(QPainter&, QRect); - - void newVal(int x1, int x2, int y); - bool deleteVal1(const AL::Pos&, const AL::Pos&); - void deleteVal(int x1, int x2); - - int pix2tempo(int) const; - int tempo2pix(int) const; - - signals: - void tempoChanged(int); - - public: - MasterCanvas(); - virtual ~MasterCanvas() {} - }; - -#endif - diff --git a/muse/muse/master/masteredit.cpp b/muse/muse/master/masteredit.cpp deleted file mode 100644 index e3271ea6..00000000 --- a/muse/muse/master/masteredit.cpp +++ /dev/null @@ -1,302 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "song.h" -#include "masteredit.h" -#include "awl/poslabel.h" -#include "awl/tempoedit.h" -#include "awl/tempolabel.h" -#include "awl/sigedit.h" -#include "master.h" -#include "al/tempo.h" -#include "widgets/tools.h" - -static int rasterTable[] = { 1, 0, 768, 384, 192, 96 }; -static const char* rastval[] = { - QT_TR_NOOP("Off"), "Bar", "1/2", "1/4", "1/8", "1/16" - }; - -int MasterEdit::initRaster = MasterEdit::INIT_RASTER; -int MasterEdit::initWidth = MasterEdit::INIT_WIDTH; -int MasterEdit::initHeight = MasterEdit::INIT_HEIGHT; -double MasterEdit::initXmag = 0.04; -double MasterEdit::initYmag = 1.0; - -//--------------------------------------------------------- -// MasterEdit -//--------------------------------------------------------- - -MasterEdit::MasterEdit() - : Editor() - { - setWindowTitle(tr("MusE: Mastertrack")); - - //---------ToolBar---------------------------------- - tools = addToolBar(tr("edit tools")); - tools->addAction(undoAction); - tools->addAction(redoAction); - tools->addSeparator(); - - tools2 = new EditToolBar(this, - PointerTool | PencilTool | RubberTool); - addToolBar(tools2); - - QToolBar* enableMaster = addToolBar(tr("EnableTempomap")); - enableMasterAction = enableMaster->addAction(tr("Tempomap")); - enableMasterAction->setCheckable(true); - enableMasterAction->setToolTip(tr("Enable use of tempo map")); - enableMasterAction->setChecked(song->masterFlag()); - connect(enableMasterAction, SIGNAL(triggered(bool)), song, SLOT(setMasterFlag(bool))); - - addToolBarBreak(); - QToolBar* info = new QToolBar(tr("Info"), this); - addToolBar(info); - - QLabel* label = new QLabel(tr("Cursor")); - info->addWidget(label); - - cursorPos = new PosLabel; - info->addWidget(cursorPos); - tempo = new TempoLabel(info); - info->addWidget(tempo); - - info->addWidget(new QLabel(tr("Snap"))); - rasterLabel = new QComboBox; - info->addWidget(rasterLabel); - for (int i = 0; i < 6; i++) - rasterLabel->addItem(tr(rastval[i]), i); - connect(rasterLabel, SIGNAL(activated(int)), SLOT(_setRaster(int))); - - cursorPos->setToolTip(tr("time at cursor position")); - tempo->setToolTip(tr("tempo at cursor position")); - - //---------values for current position--------------- - info->addWidget(new QLabel(tr("CurPos "))); - curTempo = new TempoEdit(info); - info->addWidget(curTempo); - curSig = new SigEdit(info); - info->addWidget(curSig); - curSig->setValue(AL::TimeSignature(4, 4)); - curTempo->setToolTip(tr("tempo at current position")); - curSig->setToolTip(tr("time signature at current position")); - connect(curSig, SIGNAL(valueChanged(const AL::TimeSignature&)), song, SLOT(setSig(const AL::TimeSignature&))); - connect(curTempo, SIGNAL(tempoChanged(int)), song, SLOT(setTempo(int))); - - //--------------------------------------------------- - // master - //--------------------------------------------------- - - tcanvas = new MasterCanvas; - setCentralWidget(tcanvas); - tcanvas->setEndPos(AL::Pos(song->len())); - setRaster(INIT_RASTER); - tcanvas->setMag(initXmag, initYmag); - - connect(song, SIGNAL(posChanged(int,const AL::Pos&,bool)), tcanvas, SLOT(setLocatorPos(int,const AL::Pos&,bool))); - connect(song, SIGNAL(posChanged(int,const AL::Pos&,bool)), SLOT(posChanged(int,const AL::Pos&,bool))); - connect(song, SIGNAL(lenChanged(const AL::Pos&)), tcanvas, SLOT(setEndPos(const AL::Pos&))); - connect(song, SIGNAL(tempoChanged()), tcanvas, SLOT(tempoChanged())); - - connect(tcanvas, SIGNAL(posChanged(int,const AL::Pos&)), song, SLOT(setPos(int,const AL::Pos&))); - connect(tcanvas, SIGNAL(cursorPos(const AL::Pos&,bool)), cursorPos, SLOT(setValue(const AL::Pos&,bool))); - - connect(tcanvas, SIGNAL(tempoChanged(int)), SLOT(setTempo(int))); - connect(tools2, SIGNAL(toolChanged(int)), tcanvas, SLOT(setTool(int))); - connect(song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); - - resize(initWidth, initHeight); - } - -//--------------------------------------------------------- -// ~MasterEdit -//--------------------------------------------------------- - -MasterEdit::~MasterEdit() - { - } - -//--------------------------------------------------------- -// songChanged -//--------------------------------------------------------- - -void MasterEdit::songChanged(int type) - { - if (type & SC_TEMPO) { - int tempo = AL::tempomap.tempo(song->cpos()); - curTempo->setTempo(tempo); - } - if (type & SC_MASTER) - enableMasterAction->setChecked(song->masterFlag()); - } - -//--------------------------------------------------------- -// _setRaster -//--------------------------------------------------------- - -void MasterEdit::_setRaster(int index) - { - setRaster(rasterTable[index]); - } - -//--------------------------------------------------------- -// setRaster -//--------------------------------------------------------- - -void MasterEdit::setRaster(int val) - { - _raster = val; - tcanvas->setRaster(val); - for (unsigned i = 0; i < sizeof(rasterTable)/sizeof(*rasterTable); ++i) { - if (rasterTable[i] == val) { - rasterLabel->setCurrentIndex(i); - return; - } - } - rasterLabel->setCurrentIndex(1); - } - -//--------------------------------------------------------- -// posChanged -//--------------------------------------------------------- - -void MasterEdit::posChanged(int idx, const AL::Pos& pos, bool) - { - if (idx == 0) { - unsigned val = pos.tick(); - int tempo = AL::tempomap.tempo(val); - AL::TimeSignature sig = AL::sigmap.timesig(val); - curSig->blockSignals(true); - - curTempo->setTempo(tempo); - curSig->setValue(sig); - - curSig->blockSignals(false); - } - } - -//--------------------------------------------------------- -// setTempo -//--------------------------------------------------------- - -void MasterEdit::setTempo(int val) - { - if (val == -1) - tempo->setEnabled(false); - else { - tempo->setEnabled(true); - tempo->setValue(val); - } - } - -//--------------------------------------------------------- -// read -//--------------------------------------------------------- - -void MasterEdit::read(QDomNode node) - { - for (node = node.firstChild(); !node.isNull(); node = node.nextSibling()) - AL::readProperties(this, node); - } - -//--------------------------------------------------------- -// write -//--------------------------------------------------------- - -void MasterEdit::write(Xml& xml) const - { - xml.stag(metaObject()->className()); - xml.writeProperties(this); - xml.etag(metaObject()->className()); - } - -//--------------------------------------------------------- -// tool -//--------------------------------------------------------- - -int MasterEdit::tool() const - { - return tcanvas->tool(); - } - -//--------------------------------------------------------- -// setTool -//--------------------------------------------------------- - -void MasterEdit::setTool(int n) - { - tcanvas->setTool(n); - tools2->set(n); - } - -//--------------------------------------------------------- -// canvasPos -//--------------------------------------------------------- - -QPoint MasterEdit::canvasPos() const - { - return tcanvas->getWPos(); - } - -//--------------------------------------------------------- -// setCanvasPos -//--------------------------------------------------------- - -void MasterEdit::setCanvasPos(const QPoint& p) - { - tcanvas->setWPos(p); - } - -//--------------------------------------------------------- -// xmag -//--------------------------------------------------------- - -double MasterEdit::xmag() const - { - return tcanvas->xmag(); - } - -//--------------------------------------------------------- -// setXmag -//--------------------------------------------------------- - -void MasterEdit::setXmag(double val) - { - tcanvas->setMag(val, tcanvas->ymag()); - } - -//--------------------------------------------------------- -// ymag -//--------------------------------------------------------- - -double MasterEdit::ymag() const - { - return tcanvas->ymag(); - } - -//--------------------------------------------------------- -// setYmag -//--------------------------------------------------------- - -void MasterEdit::setYmag(double val) - { - tcanvas->setMag(tcanvas->xmag(), val); - } - - diff --git a/muse/muse/master/masteredit.h b/muse/muse/master/masteredit.h deleted file mode 100644 index e60f3a67..00000000 --- a/muse/muse/master/masteredit.h +++ /dev/null @@ -1,107 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __MASTER_EDIT_H__ -#define __MASTER_EDIT_H__ - -#include "editor.h" -#include "widgets/noteinfo.h" -#include "cobject.h" - -class MasterCanvas; -class EditToolBar; - -namespace AL { - class Xml; - }; -using AL::Xml; - -namespace Awl { - class TempoEdit; - class SigEdit; - class PosLabel; - class TempoLabel; - }; -using Awl::TempoEdit; -using Awl::SigEdit; -using Awl::PosLabel; -using Awl::TempoLabel; - -//--------------------------------------------------------- -// MasterEdit -//--------------------------------------------------------- - -class MasterEdit : public Editor { - Q_OBJECT - Q_PROPERTY(int raster READ raster WRITE setRaster) - Q_PROPERTY(QPoint canvasPos READ canvasPos WRITE setCanvasPos) - Q_PROPERTY(int tool READ tool WRITE setTool) - Q_PROPERTY(double xmag READ xmag WRITE setXmag) - Q_PROPERTY(double ymag READ ymag WRITE setYmag) - - EditToolBar* tools2; - QAction* enableMasterAction; - TempoEdit* curTempo; - SigEdit* curSig; - QComboBox* rasterLabel; - QToolBar* tools; - PosLabel* cursorPos; - TempoLabel* tempo; - - int _raster; - - MasterCanvas* canvas() { return (MasterCanvas*)tcanvas; } - - private slots: - void _setRaster(int); - void posChanged(int idx, const AL::Pos& pos, bool); - void setTempo(int); - void songChanged(int); - - signals: - void deleted(void*); - - public: - MasterEdit(); - ~MasterEdit(); - void read(QDomNode); - void write(Xml&) const; - - int raster() const { return _raster; } - void setRaster(int val); - QPoint canvasPos() const; - void setCanvasPos(const QPoint&); - double xmag() const; - void setXmag(double val); - double ymag() const; - void setYmag(double val); - int tool() const; - void setTool(int); - - static int initRaster, initWidth, initHeight; - static double initXmag, initYmag; - - static const int INIT_RASTER = 384; - static const int INIT_WIDTH = 650; - static const int INIT_HEIGHT = 450; - }; - -#endif - diff --git a/muse/muse/midi.cpp b/muse/muse/midi.cpp deleted file mode 100644 index a182fe4a..00000000 --- a/muse/muse/midi.cpp +++ /dev/null @@ -1,633 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "song.h" -#include "midi.h" -#include "midiedit/drummap.h" -#include "event.h" -#include "globals.h" -#include "midictrl.h" -#include "midictrl.h" -#include "audio.h" -#include "audiodev.h" -#include "wave.h" -#include "synth.h" -#include "sync.h" -#include "gconfig.h" -#include "ticksynth.h" -#include "al/tempo.h" -#include "al/sig.h" -#include "part.h" -#include "midiplugin.h" -#include "midiinport.h" -#include "midioutport.h" -#include "instruments/minstrument.h" - -extern void dump(const unsigned char* p, int n); - -unsigned const char gmOnMsg[] = { - 0x7e, // Non-Real Time header - 0x7f, // ID of target device (7f = all devices) - 0x09, - 0x01 - }; -unsigned const char gsOnMsg[] = { - 0x41, // roland id - 0x10, // Id of target device (default = 10h for roland) - 0x42, // model id (42h = gs devices) - 0x12, // command id (12h = data set) - 0x40, // address & value - 0x00, - 0x7f, - 0x00, - 0x41 // checksum? - }; -unsigned const char xgOnMsg[] = { - 0x43, // yamaha id - 0x10, // device number (0) - 0x4c, // model id - 0x00, // address (high, mid, low) - 0x00, - 0x7e, - 0x00 // data - }; -unsigned const int gmOnMsgLen = sizeof(gmOnMsg); -unsigned const int gsOnMsgLen = sizeof(gsOnMsg); -unsigned const int xgOnMsgLen = sizeof(xgOnMsg); - -/*--------------------------------------------------------- - * midi_meta_name - *---------------------------------------------------------*/ - -QString midiMetaName(int meta) - { - const char* s = ""; - switch (meta) { - case 0: s = "Sequence Number"; break; - case 1: s = "Text Event"; break; - case 2: s = "Copyright"; break; - case 3: s = "Sequence/Track Name"; break; - case 4: s = "Instrument Name"; break; - case 5: s = "Lyric"; break; - case 6: s = "Marker"; break; - case 7: s = "Cue Point"; break; - case 8: - case 9: - case 0x0a: - case 0x0b: - case 0x0c: - case 0x0d: - case 0x0e: - case 0x0f: s = "Text"; break; - case 0x20: s = "Channel Prefix"; break; - case 0x21: s = "Port Change"; break; - case 0x2f: s = "End of Track"; break; - case 0x51: s = "Set Tempo"; break; - case 0x54: s = "SMPTE Offset"; break; - case 0x58: s = "Time Signature"; break; - case 0x59: s = "Key Signature"; break; - case 0x74: s = "Sequencer-Specific1"; break; - case 0x7f: s = "Sequencer-Specific2"; break; - default: - break; - } - return QString(s); - } - -//--------------------------------------------------------- -// QString nameSysex -//--------------------------------------------------------- - -QString nameSysex(unsigned int len, const unsigned char* buf) - { - QString s; - switch(buf[0]) { - case 0x00: - if (buf[1] == 0 && buf[2] == 0x41) - s = "Microsoft"; - break; - case 0x01: s = "Sequential Circuits: "; break; - case 0x02: s = "Big Briar: "; break; - case 0x03: s = "Octave / Plateau: "; break; - case 0x04: s = "Moog: "; break; - case 0x05: s = "Passport Designs: "; break; - case 0x06: s = "Lexicon: "; break; - case 0x07: s = "Kurzweil"; break; - case 0x08: s = "Fender"; break; - case 0x09: s = "Gulbransen"; break; - case 0x0a: s = "Delta Labas"; break; - case 0x0b: s = "Sound Comp."; break; - case 0x0c: s = "General Electro"; break; - case 0x0d: s = "Techmar"; break; - case 0x0e: s = "Matthews Research"; break; - case 0x10: s = "Oberheim"; break; - case 0x11: s = "PAIA: "; break; - case 0x12: s = "Simmons: "; break; - case 0x13: s = "DigiDesign"; break; - case 0x14: s = "Fairlight: "; break; - case 0x15: s = "JL Cooper"; break; - case 0x16: s = "Lowery"; break; - case 0x17: s = "Lin"; break; - case 0x18: s = "Emu"; break; - case 0x1b: s = "Peavy"; break; - case 0x20: s = "Bon Tempi: "; break; - case 0x21: s = "S.I.E.L: "; break; - case 0x23: s = "SyntheAxe: "; break; - case 0x24: s = "Hohner"; break; - case 0x25: s = "Crumar"; break; - case 0x26: s = "Solton"; break; - case 0x27: s = "Jellinghaus Ms"; break; - case 0x28: s = "CTS"; break; - case 0x29: s = "PPG"; break; - case 0x2f: s = "Elka"; break; - case 0x36: s = "Cheetah"; break; - case 0x3e: s = "Waldorf"; break; - case 0x40: s = "Kawai: "; break; - case 0x41: s = "Roland: "; break; - case 0x42: s = "Korg: "; break; - case 0x43: s = "Yamaha: "; break; - case 0x44: s = "Casio"; break; - case 0x45: s = "Akai"; break; - case 0x7c: s = "MusE Soft Synth"; break; - case 0x7d: s = "Educational Use"; break; - case 0x7e: s = "Universal: Non Real Time"; break; - case 0x7f: s = "Universal: Real Time"; break; - default: s = "??: "; break; - } - // - // following messages should not show up in event list - // they are filtered while importing midi files - // - if ((len == gmOnMsgLen) && memcmp(buf, gmOnMsg, gmOnMsgLen) == 0) - s += "GM-ON"; - else if ((len == gsOnMsgLen) && memcmp(buf, gsOnMsg, gsOnMsgLen) == 0) - s += "GS-ON"; - else if ((len == xgOnMsgLen) && memcmp(buf, xgOnMsg, xgOnMsgLen) == 0) - s += "XG-ON"; - return s; - } - -//--------------------------------------------------------- -// buildMidiEventList -// TODO: -// parse data increment/decrement controller -// NRPN/RPN fine/course data 7/14 Bit -// must we set datah/datal to zero after change -// of NRPN/RPN register? -// generally: how to handle incomplete messages? -//--------------------------------------------------------- - -void buildMidiEventList(EventList* del, const MidiEventList* el, MidiTrack* track, int channel, - int div, bool addSysexMeta) - { - QString tname; - int hbank = 0xff; - int lbank = 0xff; - int rpnh = -1; - int rpnl = -1; - int datah = 0; - int datal = 0; - int dataType = 0; // 0 : disabled, 0x20000 : rpn, 0x30000 : nrpn - - EventList mel; - int metaChannel = -1; - for (iMidiEvent i = el->begin(); i != el->end(); ++i) { - MidiEvent ev = *i; - if (ev.type() == ME_META) { - if (ev.dataA() == 0x20) { - metaChannel = ((char*)(ev.data()))[0]; - } - if (metaChannel == channel) { - if (ev.dataA() == 0x4) { - tname = (char*)(ev.data()); - } - } - } - if (!addSysexMeta && (ev.type() == ME_SYSEX || ev.type() == ME_META)) - continue; - if (!(ev.type() == ME_SYSEX || ev.type() == ME_META || (ev.channel() == channel))) - continue; - int tick = ev.time(); - Event e; - switch(ev.type()) { - case ME_NOTEON: - e.setType(Note); - - if (track->useDrumMap()) { - int instr = track->drumMap()->inmap(ev.dataA()); - e.setPitch(instr); - } - else - e.setPitch(ev.dataA()); - - e.setVelo(ev.dataB()); - e.setLenTick(0); - break; - case ME_NOTEOFF: - e.setType(Note); - if (track->useDrumMap()) { - int instr = track->drumMap()->inmap(ev.dataA()); - e.setPitch(instr); - } - else - e.setPitch(ev.dataA()); - e.setVelo(0); - e.setVeloOff(ev.dataB()); - e.setLenTick(0); - break; - case ME_POLYAFTER: - e.setType(PAfter); - e.setA(ev.dataA()); - e.setB(ev.dataB()); - break; - case ME_CONTROLLER: - { - int val = ev.dataB(); - switch(ev.dataA()) { - case CTRL_HBANK: - hbank = val; - break; - - case CTRL_LBANK: - lbank = val; - break; - - case CTRL_HDATA: - datah = val; - // check if a CTRL_LDATA follows - // e.g. wie have a 14 bit controller: - { - iMidiEvent ii = i; - ++ii; - bool found = false; - for (; ii != el->end(); ++ii) { - MidiEvent ev = *ii; - if (ev.type() == ME_CONTROLLER) { - if (ev.dataA() == CTRL_LDATA) { - // handle later - found = true; - } - break; - } - } - if (!found) { - if (rpnh == -1 || rpnl == -1) { - printf("parameter number not defined, data 0x%x\n", datah); - } - else { - int ctrl = dataType | (rpnh << 8) | rpnl; - e.setType(Controller); - e.setA(ctrl); - e.setB(datah); - } - } - } - break; - - case CTRL_LDATA: - datal = val; - - if (rpnh == -1 || rpnl == -1) { - printf("parameter number not defined, data 0x%x 0x%x, tick %d, channel %d\n", - datah, datal, tick, channel); - break; - } - // assume that the sequence is always - // CTRL_HDATA - CTRL_LDATA - // eg. that LDATA is always send last - - e.setType(Controller); - // 14 Bit RPN/NRPN - e.setA((dataType+0x30000) | (rpnh << 8) | rpnl); - e.setB((datah << 7) | datal); - break; - - case CTRL_HNRPN: - rpnh = val; - dataType = 0x30000; - break; - - case CTRL_LNRPN: - rpnl = val; - dataType = 0x30000; - break; - - case CTRL_HRPN: - rpnh = val; - dataType = 0x20000; - break; - - case CTRL_LRPN: - rpnl = val; - dataType = 0x20000; - break; - - default: - e.setType(Controller); - e.setA(ev.dataA()); - e.setB(val); - break; - } - } - break; - - case ME_PROGRAM: - e.setType(Controller); - e.setA(CTRL_PROGRAM); - e.setB((hbank << 16) | (lbank << 8) | ev.dataA()); - break; - - case ME_AFTERTOUCH: - e.setType(CAfter); - e.setA(ev.dataA()); - break; - - case ME_PITCHBEND: - e.setType(Controller); - e.setA(CTRL_PITCH); - e.setB(ev.dataA()); - break; - - case ME_SYSEX: - e.setType(Sysex); - e.setData(ev.data(), ev.len()); - break; - - case ME_META: - { - const unsigned char* data = ev.data(); - switch (ev.dataA()) { - case 0x01: // Text - if (track->comment().isEmpty()) - track->setComment(QString((const char*)data)); - else - track->setComment(track->comment() + "\n" + QString((const char*)data)); - break; - case 0x02: // Copyright - config.copyright = (char*)data; - break; - case 0x03: // Sequence-/TrackName - tname = (char*)data; - break; - case 0x6: // Marker - { - Pos pos((tick * config.division + div/2) / div, AL::TICKS); - song->addMarker(QString((const char*)(data)), pos); - } - break; - case 0x4: // Instrument Name - case 0x5: // Lyrics - case 0x8: // text - case 0x9: - case 0xa: - case 0x20: // channel prefix - case 0x21: // port change - break; - - case 0x0f: // Track Comment - track->setComment(QString((char*)data)); - break; - - case 0x51: // Tempo - { - int tempo = data[2] + (data[1] << 8) + (data[0] <<16); - int ltick = (tick * config.division + div/2) / div; - AL::tempomap.addTempo(ltick, tempo); - } - break; - - case 0x58: // Time Signature - { - int timesig_z = data[0]; - int n = data[1]; - int timesig_n = 1; - for (int i = 0; i < n; i++) - timesig_n *= 2; - int ltick = (tick * config.division + div/2) / div; - AL::sigmap.add(ltick, AL::TimeSignature(timesig_z, timesig_n)); - } - break; - - case 0x59: // Key Signature - printf("Meta: Key Signature %d %d\n", data[0], data[1]); - // track->scale.set(data[0]); - // track->scale.setMajorMinor(data[1]); - break; - - case 0x7f: // Sequencer Specific - printf("Meta: Seq specific:len %d\n", ev.len()); - break; - - default: - printf("unknown Meta 0x%x %d\n", ev.dataA(), ev.dataA()); - } - } - break; - } // switch(ev.type() - if (!e.empty()) { - e.setTick(tick); - mel.add(e); - } - } // i != el->end() - - //--------------------------------------------------- - // resolve NoteOff events - //--------------------------------------------------- - - for (iEvent i = mel.begin(); i != mel.end(); ++i) { - Event ev = i->second; - if (!ev.isNote()) - continue; - if (ev.lenTick()) - continue; -// printf("%d note %d %d\n", ev.tick(), ev.pitch(), ev.velo()); - if (ev.isNoteOff()) { - bool found = false; - iEvent k = i; -// printf(" start with note off\n"); - for (++k; k != mel.end(); ++k) { - Event event = k->second; - if (event.tick() > ev.tick()) - break; - if (event.isNote() && event.velo() && event.pitch() == ev.pitch()) { - ev.setLenTick(1); - ev.setVelo(event.velo()); - ev.setVeloOff(0); - found = true; -// printf(" found on: %d\n", event.tick()); - break; - } - } - if (!found) { - // maybe found note with velocity zero is really a - // note-on ! - k = i; - found = true; - for (++k; k != mel.end(); ++k) { - Event event = k->second; - if (!event.isNote()) - continue; - if (event.pitch() == ev.pitch()) { - if (event.velo() == 0) { - found = true; - int t = event.tick() - ev.tick(); - ev.setLenTick(t); - ev.setVelo(1); - ev.setVeloOff(0); - mel.erase(k); - i = mel.begin(); - } - break; - } - } - if (!found) { - printf("NOTE OFF without Note ON tick %d type %d %d %d\n", - ev.tick(), ev.type(), ev.pitch(), ev.velo()); - } - else - continue; - } - else { - mel.erase(k); - i = mel.begin(); // DEBUG - continue; - } - } - iEvent k; - // ev is noteOn - for (k = mel.lower_bound(ev.tick()); k != mel.end(); ++k) { - Event event = k->second; -// printf(" - %d(%d,%d)\n", event.tick(), event.pitch(), event.velo()); - if (ev.isNoteOff(event)) { - int t = k->first - i->first; - if (t <= 0) { - if (debugMsg) { - printf("Note len is (%d-%d)=%d, set to 1\n", - k->first, i->first, k->first - i->first); - ev.dump(); - event.dump(); - } - t = 1; - } - ev.setLenTick(t); - ev.setVeloOff(event.veloOff()); - break; - } - } - if (k == mel.end()) { - printf(" -no note-off! %d pitch %d velo %d\n", - ev.tick(), ev.pitch(), ev.velo()); - // - // switch off at end of measure - // - int endTick = song->roundUpBar(ev.tick()+1); - ev.setLenTick(endTick-ev.tick()); - } - else { - mel.erase(k); - i = mel.begin(); - } - } - - for (iEvent i = mel.begin(); i != mel.end(); ++i) { - Event ev = i->second; - if (ev.isNoteOff()) { - printf("+extra note-off! %d pitch %d velo %d\n", - i->first, ev.pitch(), ev.velo()); -// ev.dump(); - continue; - } - int tick = (ev.tick() * config.division + div/2) / div; - if (ev.isNote()) { - int lenTick = (ev.lenTick() * config.division + div/2) / div; - ev.setLenTick(lenTick); - } - ev.setTick(tick); - if (ev.type() == Controller) { - int id = ev.dataA(); - CVal val; - val.i = ev.dataB(); - -// bool found = false; - Ctrl* c = track->getController(id); - if (c) - c->add(tick, val); - else - // if no managed controller, store as event - del->add(ev); - } - else - del->add(ev); - } - if (!tname.isEmpty()) - track->setName(tname); - } - -//--------------------------------------------------------- -// initMidiDevices -//--------------------------------------------------------- - -void Audio::initMidiDevices() - { - // - // test for explicit instrument initialization - // - MidiOutPortList* mpl = song->midiOutPorts(); - for (iMidiOutPort i = mpl->begin(); i != mpl->end(); ++i) { - MidiOutPort* mp = *i; - MidiInstrument* instr = mp->instrument(); - if (!instr) - continue; // TODO: use default instrument? - EventList* events = instr->midiInit(); - for (iEvent ie = events->begin(); ie != events->end(); ++ie) { - MidiEvent ev(0, 0, ie->second); - mp->playMidiEvent(&ev); - } - } - } - -//--------------------------------------------------------- -// resetMidiDevices -//--------------------------------------------------------- - -void Audio::resetMidiDevices() - { - MidiTrackList* mcl = song->midis(); - for (iMidiTrack i = mcl->begin(); i != mcl->end(); ++i) { - MidiTrack* mc = *i; - if (!mc->mute() && mc->autoRead()) { - CtrlList* cl = mc->controller(); - for (iCtrl ic = cl->begin(); ic != cl->end(); ++ic) { - ic->second->setCurVal(CTRL_VAL_UNKNOWN); - } - } - } - MidiOutPortList* mpl = song->midiOutPorts(); - for (iMidiOutPort i = mpl->begin(); i != mpl->end(); ++i) { - MidiOutPort* mp = *i; - if (!mp->mute() && mp->autoRead()) { - CtrlList* cl = mp->controller(); - for (iCtrl ic = cl->begin(); ic != cl->end(); ++ic) { - ic->second->setCurVal(CTRL_VAL_UNKNOWN); - } - } - } - } - diff --git a/muse/muse/midi.h b/muse/muse/midi.h deleted file mode 100644 index d6713c5a..00000000 --- a/muse/muse/midi.h +++ /dev/null @@ -1,68 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __MIDI_H__ -#define __MIDI_H__ - -enum { - ME_NOTEOFF = 0x80, - ME_NOTEON = 0x90, - ME_POLYAFTER = 0xa0, - ME_CONTROLLER = 0xb0, - ME_PROGRAM = 0xc0, - ME_AFTERTOUCH = 0xd0, - ME_PITCHBEND = 0xe0, - ME_SYSEX = 0xf0, - ME_META = 0xff, - ME_MTC_QUARTER = 0xf1, - ME_SONGPOS = 0xf2, - ME_SONGSEL = 0xf3, - ME_TUNE_REQ = 0xf6, - ME_SYSEX_END = 0xf7, - ME_CLOCK = 0xf8, - ME_TICK = 0xf9, - ME_START = 0xfa, - ME_CONTINUE = 0xfb, - ME_STOP = 0xfc, - ME_SENSE = 0xfe, - }; - -#define ME_TIMESIG 0x58 - -extern unsigned const char gmOnMsg[]; -extern unsigned const char gsOnMsg[]; -extern unsigned const char xgOnMsg[]; - -extern unsigned const int gmOnMsgLen; -extern unsigned const int gsOnMsgLen; -extern unsigned const int xgOnMsgLen; - -QString nameSysex(unsigned int len, const unsigned char* buf); -QString midiMetaName(int); - -class EventList; -class MidiTrack; -class MidiEventList; - -extern void buildMidiEventList(EventList* mel, const MidiEventList* el, MidiTrack* track, - int channel, int division, bool); - -#endif - diff --git a/muse/muse/midictrl.cpp b/muse/muse/midictrl.cpp deleted file mode 100644 index 89e40ec1..00000000 --- a/muse/muse/midictrl.cpp +++ /dev/null @@ -1,372 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "midictrl.h" -#include "al/xml.h" - -static const char* ctrlName[] = { - "BankSelMSB", "Modulation", "BreathCtrl", "Control 3", "Foot Ctrl", - "Porta Time", "DataEntMSB", "MainVolume", "Balance", "Control 9", -/*10*/ "Pan", "Expression", "Control 12", "Control 13", "Control 14", - "Control 15", "Gen.Purp.1", "Gen.Purp.2", "Gen.Purp.3", "Gen.Purp.4", -/*20*/ "Control 20", "Control 21", "Control 22", "Control 23", "Control 24", - "Control 25", "Control 26", "Control 27", "Control 28", "Control 29", -/*30*/ "Control 30", "Control 31", "BankSelLSB", "Modul. LSB", "BrthCt.LSB", - "Control 35", "FootCt.LSB", "Port.T LSB", "DataEntLSB", "MainVolLSB", - "BalanceLSB", "Control 41", "Pan LSB", "Expr. LSB", "Control 44", - "Control 45", "Control 46", "Control 47", "Gen.P.1LSB", "Gen.P.2LSB", -/*50*/ "Gen.P.3LSB", "Gen.P.4LSB", "Control 52", "Control 53", "Control 54", - "Control 55", "Control 56", "Control 57", "Control 58", "Control 59", - "Control 60", "Control 61", "Control 62", "Control 63", "Sustain", - "Porta Ped", "Sostenuto", "Soft Pedal", "Control 68", "Hold 2", - "Control 70", "HarmonicCo", "ReleaseTime", "Attack Time", "Brightness", - "Control 75", "Control 76", "Control 77", "Control 78", "Control 79", - "Gen.Purp.5", "Gen.Purp.6", "Gen.Purp.7", "Gen.Purp.8", "Porta Ctrl", - "Control 85", "Control 86", "Control 87", "Control 88", "Control 89", - "Control 90", "Effect1Dep", "Effect2Dep", "Effect3Dep", "Effect4Dep", - "Phaser Dep", "Data Incr", "Data Decr", "NRPN LSB", "NRPN MSB", -/*100*/ "RPN LSB", "RPN MSB", "Control102", "Control103", "Control104", - "Control105", "Control106", "Control107", "Control108", "Control109", - "Control110", "Control111", "Control112", "Control113", "Control114", - "Control115", "Control116", "Control117", "Control118", "Control119", - "AllSndOff", "Reset Ctrl", "Local Ctrl", "AllNoteOff", "OmniModOff", - "OmniModeOn", "MonoModeOn", "PolyModeOn" - }; - -#if 0 -static const char* ctrl14Name[] = { - "BankSel", "Modulation", "BreathCtrl", - "Control 3", "Foot Ctrl", "Porta Time", "DataEntry", - "MainVolume", "Balance", "Control 9", "Pan", - "Expression", "Control 12", "Control 13", "Control 14", - "Control 15", "Gen.Purp.1", "Gen.Purp.2", "Gen.Purp.3", - "Gen.Purp.4", "Control 20", "Control 21", "Control 22", - "Control 23", "Control 24", "Control 25", "Control 26", - "Control 27", "Control 28", "Control 29", "Control 30", - "Control 31", - }; -#endif - -enum { - COL_NAME = 0, COL_TYPE, - COL_HNUM, COL_LNUM, COL_MIN, COL_MAX - }; - -MidiControllerList defaultMidiController; -// -// some global controller which are always available: -// -MidiController veloCtrl("Velocity", CTRL_VELOCITY, 0, 127, 0); -static MidiController pitchCtrl("PitchBend", CTRL_PITCH, -8192, +8191, 0); -static MidiController programCtrl("Program", CTRL_PROGRAM, 0, 0xffffff, 0); -static MidiController mastervolCtrl("MasterVolume", CTRL_MASTER_VOLUME, 0, 0x3fff, 0x3000); -static MidiController volumeCtrl("MainVolume", CTRL_VOLUME, 0, 127, 100); -static MidiController panCtrl("Pan", CTRL_PANPOT, 0, 127, 64); -static MidiController reverbCtrl("ReverbSend", CTRL_REVERB_SEND, 0, 127, 0); -static MidiController chorusCtrl("ChorusSend", CTRL_CHORUS_SEND, 0, 127, 0); -static MidiController variationCtrl("VariationSend",CTRL_VARIATION_SEND,0, 127, 0); - -//--------------------------------------------------------- -// ctrlType2Int -// int2ctrlType -//--------------------------------------------------------- - -static struct { - MidiController::ControllerType type; - QString name; - } ctrlTypes[] = { - { MidiController::Controller7, QString("Control7") }, - { MidiController::Controller14, QString("Control14") }, - { MidiController::RPN, QString("RPN") }, - { MidiController::NRPN, QString("NRPN") }, - { MidiController::Pitch, QString("Pitch") }, - { MidiController::Program, QString("Program") }, - { MidiController::RPN14, QString("RPN14") }, - { MidiController::NRPN14, QString("NRPN14") }, - { MidiController::Controller7, QString("Control") }, // alias - }; - -//--------------------------------------------------------- -// ctrlType2Int -//--------------------------------------------------------- - -MidiController::ControllerType ctrlType2Int(const QString& s) - { - int n = sizeof(ctrlTypes)/sizeof(*ctrlTypes); - for (int i = 0; i < n; ++i) { - if (ctrlTypes[i].name == s) - return ctrlTypes[i].type; - } - return MidiController::ControllerType(0); - } - -//--------------------------------------------------------- -// int2ctrlType -//--------------------------------------------------------- - -const QString& int2ctrlType(int n) - { - static QString dontKnow("?T?"); - int size = sizeof(ctrlTypes)/sizeof(*ctrlTypes); - for (int i = 0; i < size; ++i) { - if (ctrlTypes[i].type == n) - return ctrlTypes[i].name; - } - return dontKnow; - } - -//--------------------------------------------------------- -// initMidiController -//--------------------------------------------------------- - -void initMidiController() - { - static bool initialized = false; - if (initialized) - return; - defaultMidiController.push_back(&veloCtrl); - defaultMidiController.push_back(&pitchCtrl); - defaultMidiController.push_back(&programCtrl); - defaultMidiController.push_back(&mastervolCtrl); - defaultMidiController.push_back(&volumeCtrl); - defaultMidiController.push_back(&panCtrl); - defaultMidiController.push_back(&reverbCtrl); - defaultMidiController.push_back(&chorusCtrl); - defaultMidiController.push_back(&variationCtrl); - initialized = true; - } - -//--------------------------------------------------------- -// midiCtrlName -//--------------------------------------------------------- - -QString midiCtrlName(int ctrl) - { - if (ctrl < 0x10000) - return QString(ctrlName[ctrl]); - QString s("?N?"); - switch(ctrl) { - case CTRL_PITCH: - s = "Pitch"; - break; - case CTRL_PROGRAM: - s = "ProgramChange"; - break; - case CTRL_VELOCITY: - s = "Velocity"; - break; - case CTRL_MASTER_VOLUME: - s = "MasterVolume"; - break; - default: - printf("midiCtrlName unknown %x\n", ctrl); - break; - } - return s; - } - -//--------------------------------------------------------- -// MidiController -//--------------------------------------------------------- - -MidiController::MidiController() - : _name(QString(QT_TR_NOOP("Velocity"))) - { - _num = CTRL_VELOCITY; - _minVal = 0; - _maxVal = 127; - _initVal = 0; - _moveWithPart = true; - } - -MidiController::MidiController(const QString& s, int n, int min, int max, int init, - bool mwp) - : _name(s), _num(n), _minVal(min), _maxVal(max), _initVal(init), - _moveWithPart(mwp) - { - } - -//--------------------------------------------------------- -// type -//--------------------------------------------------------- - -MidiController::ControllerType midiControllerType(int num) - { - if (num == CTRL_PITCH) - return MidiController::Pitch; - if (num == CTRL_PROGRAM) - return MidiController::Program; - if (num == CTRL_VELOCITY || num == CTRL_SVELOCITY) - return MidiController::Velo; - if (num < CTRL_14_OFFSET) - return MidiController::Controller7; - if (num < CTRL_RPN_OFFSET) - return MidiController::Controller14; - if (num < CTRL_NRPN_OFFSET) - return MidiController::RPN; - if (num < CTRL_RPN14_OFFSET) - return MidiController::NRPN; - if (num < CTRL_NRPN14_OFFSET) - return MidiController::RPN14; - if (num < CTRL_NONE_OFFSET) - return MidiController::NRPN14; - return MidiController::Controller7; - } - -//--------------------------------------------------------- -// MidiController::write -//--------------------------------------------------------- - -void MidiController::write(Xml& xml) const - { - ControllerType t = midiControllerType(_num); - QString type(int2ctrlType(t)); - - int h = (_num >> 8) & 0x7f; - int l = _num & 0x7f; - - QString sl; - if ((_num & 0xff) == 0xff) - sl = "Pitch"; - else - sl.setNum(l); - - QString s = QString("Controller name=\"%1\" type=\"%2\" h=\"%3\" l=\"%4\" min=\"%5\" max=\"%6\" init=\"%7\"") - .arg(Xml::xmlString(_name)).arg(type).arg(h).arg(sl).arg(_minVal).arg(_maxVal).arg(_initVal); - if (_comment.isEmpty()) - xml.tagE(s); - else { - xml.putLevel(); - xml << '<' << s << '>' << Xml::xmlString(_comment) << "\n"; - } - } - -//--------------------------------------------------------- -// MidiController::read -//--------------------------------------------------------- - -void MidiController::read(QDomNode node) - { - ControllerType t = Controller7; - static const int NOT_SET = 0x100000; - int l = 0; - - QDomElement e = node.toElement(); - _name = e.attribute("name"); - _comment = e.text(); - t = ctrlType2Int(e.attribute("type")); - int h = e.attribute("h","0").toInt(0,0); - QString s = e.attribute("l"); - if (s == "pitch") - l = 0xff; - else - l = s.toInt(0,0); - _minVal = e.attribute("min", "0").toInt(0,0); - _maxVal = e.attribute("max", "0x100000").toInt(0,0); - _initVal = e.attribute("init", "-1").toInt(0,0); - - _num = (h << 8) + l; - switch (t) { - case RPN: - if (_maxVal == NOT_SET) - _maxVal = 127; - _num |= 0x20000; - break; - case NRPN: - if (_maxVal == NOT_SET) - _maxVal = 127; - _num |= 0x30000; - break; - case Controller7: - if (_maxVal == NOT_SET) - _maxVal = 127; - break; - case Controller14: - _num |= 0x10000; - if (_maxVal == NOT_SET) - _maxVal = 127 * 127 * 127; - break; - case RPN14: - if (_maxVal == NOT_SET) - _maxVal = 127 * 127 * 127; - _num |= 0x50000; - break; - case NRPN14: - if (_maxVal == NOT_SET) - _maxVal = 127 * 127 * 127; - _num |= 0x60000; - break; - case Pitch: - if (_maxVal == NOT_SET) - _maxVal = 8191; - if (_minVal == NOT_SET) - _minVal = -8192; - _num = CTRL_PITCH; - break; - case Program: - if (_maxVal == NOT_SET) - _maxVal = 127 * 127 * 127; - _num = CTRL_PROGRAM; - break; - case Velo: // cannot happen - break; - } - return; - } - -//--------------------------------------------------------- -// type -//--------------------------------------------------------- - -MidiController::ControllerType MidiController::type() const - { - return midiControllerType(num()); - } - -//--------------------------------------------------------- -// genNum -//--------------------------------------------------------- - - -int MidiController::genNum(MidiController::ControllerType t, int h, int l) - { - int val = (h << 8) + l; - switch(t) { - case Controller7: - return l; - case Controller14: - return val + CTRL_14_OFFSET; - case RPN: - return l + CTRL_RPN_OFFSET; - case NRPN: - return l + CTRL_NRPN_OFFSET; - case RPN14: - return val + CTRL_RPN14_OFFSET; - case NRPN14: - return val + CTRL_NRPN14_OFFSET; - case Pitch: - return CTRL_PITCH; - case Program: - return CTRL_PROGRAM; - default: - return -1; - } - } - diff --git a/muse/muse/midictrl.h b/muse/muse/midictrl.h deleted file mode 100644 index 9d20fdcc..00000000 --- a/muse/muse/midictrl.h +++ /dev/null @@ -1,168 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __MIDICTRL_H__ -#define __MIDICTRL_H__ - -const int CTRL_HBANK = 0x00; -const int CTRL_LBANK = 0x20; - -const int CTRL_HDATA = 0x06; -const int CTRL_LDATA = 0x26; - -const int CTRL_HNRPN = 0x63; -const int CTRL_LNRPN = 0x62; - -const int CTRL_HRPN = 0x65; -const int CTRL_LRPN = 0x64; - -const int CTRL_MODULATION = 0x01; -const int CTRL_PORTAMENTO_TIME = 0x05; -const int CTRL_VOLUME = 0x07; -const int CTRL_PANPOT = 0x0a; -const int CTRL_EXPRESSION = 0x0b; -const int CTRL_SUSTAIN = 0x40; -const int CTRL_PORTAMENTO = 0x41; -const int CTRL_SOSTENUTO = 0x42; -const int CTRL_SOFT_PEDAL = 0x43; -const int CTRL_HARMONIC_CONTENT = 0x47; -const int CTRL_RELEASE_TIME = 0x48; -const int CTRL_ATTACK_TIME = 0x49; - -const int CTRL_BRIGHTNESS = 0x4a; -const int CTRL_PORTAMENTO_CONTROL = 0x54; -const int CTRL_REVERB_SEND = 0x5b; -const int CTRL_CHORUS_SEND = 0x5d; -const int CTRL_VARIATION_SEND = 0x5e; - -const int CTRL_ALL_SOUNDS_OFF = 0x78; // 120 -const int CTRL_RESET_ALL_CTRL = 0x79; // 121 -const int CTRL_LOCAL_OFF = 0x7a; // 122 - -// controller types 0x10000 - 0x1ffff are 14 bit controller with -// 0x1xxyy -// xx - MSB controller -// yy - LSB controller - -// RPN - registered parameter numbers 0x20000 - -// NRPN - non registered parameter numbers 0x30000 - - -// internal controller types: -const int CTRL_PITCH = 0x40000; -const int CTRL_PROGRAM = 0x40001; -const int CTRL_VELOCITY = 0x40002; -const int CTRL_MASTER_VOLUME = 0x40003; -const int CTRL_OTHER = 0x40004; -const int CTRL_SVELOCITY = 0x40005; // single velocity, used for drum editor - // to show only velocity for current instrument -const int CTRL_NO_CTRL = 0x40006; - -const int CTRL_VAL_UNKNOWN = -1; // used as unknown hwVal - -const int CTRL_14_OFFSET = 0x10000; -const int CTRL_RPN_OFFSET = 0x20000; -const int CTRL_NRPN_OFFSET = 0x30000; -const int CTRL_RPN14_OFFSET = 0x50000; -const int CTRL_NRPN14_OFFSET = 0x60000; -const int CTRL_NONE_OFFSET = 0x70000; - -namespace AL { - class Xml; - }; -using AL::Xml; - -//--------------------------------------------------------- -// MidiController -//--------------------------------------------------------- - -class MidiController { - public: - // - // mapping of midi controller types to - // controller number: - // - enum ControllerType { - Controller7, // num values from 0 - 0x7f - Controller14, // values from 0x10000 - 0x12fff - RPN, // registered parameter 0x20000 - - NRPN, // non registered parameter 0x30000 - - RPN14, // registered parameter 0x50000 - NRPN14, // non registered parameter 0x60000 - - Pitch, // num value = CTRL_PITCH - Program, // num value = CTRL_PROGRAM - Velo // not assigned - }; - private: - QString _name; - QString _comment; - int _num; // Controller Number - int _minVal; // controller value range (used in gui) - int _maxVal; - int _initVal; - bool _moveWithPart; - - public: - MidiController(); - MidiController(const QString& n, int num, int min, int max, int init, - bool mwp = true); - const QString& name() const { return _name; } - void setName(const QString& s) { _name = s; } - const QString& comment() const { return _comment; } - void setComment(const QString& s) { _comment = s; } - int num() const { return _num; } - void setNum(int v) { _num = v; } - void write(Xml& xml) const; - void read(QDomNode); - int minVal() const { return _minVal; } - int maxVal() const { return _maxVal; } - int initVal() const { return _initVal; } - void setInitVal(int val) { _initVal = val; } - void setMinVal(int val) { _minVal = val; } - void setMaxVal(int val) { _maxVal = val; } - bool moveWithPart() const { return _moveWithPart; } - void setMoveWithPart(bool v) { _moveWithPart = v; } - ControllerType type() const; - static int genNum(ControllerType, int, int); - }; - -//--------------------------------------------------------- -// MidiControllerList -// this is a list of used midi controllers created -// - excplicit by user -// - implicit during import of a midi file -//--------------------------------------------------------- - -class MidiControllerList : public QList {}; - -typedef MidiControllerList::iterator iMidiController; -typedef MidiControllerList::const_iterator ciMidiController; - -extern MidiControllerList defaultMidiController; -extern void initMidiController(); - -extern MidiController::ControllerType midiControllerType(int num); -extern void configMidiController(); -extern const QString& int2ctrlType(int n); -extern MidiController::ControllerType ctrlType2Int(const QString& s); -extern QString midiCtrlName(int ctrl); -extern MidiController veloCtrl; - -#endif - diff --git a/muse/muse/midiedit/CMakeLists.txt b/muse/muse/midiedit/CMakeLists.txt deleted file mode 100644 index a71aed71..00000000 --- a/muse/muse/midiedit/CMakeLists.txt +++ /dev/null @@ -1,71 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -QT4_WRAP_CPP ( midiedit_mocs - midicmd.h - gatetime.h - velocity.h - quantconfig.h - dcanvas.h - drumedit.h - ecanvas.h - midieditor.h - pianoroll.h - prcanvas.h - miditracker.h - trackpattern.h - ) - -QT4_WRAP_UI ( midiedit_ui_headers - midicmd.ui - gatetime.ui - velocity.ui - quantconfig.ui - ) - -add_library ( midiedit STATIC - midicmd.h - gatetime.h - ${midiedit_ui_headers} - ${midiedit_mocs} - midicmd.cpp - gatetime.cpp - velocity.cpp - quantconfig.cpp - citem.h - cmd.h - drummap.h - midicmd.h - citem.cpp - dcanvas.cpp - drumedit.cpp - drummap.cpp - ecanvas.cpp - midieditor.cpp - pianoroll.cpp - prcanvas.cpp - miditracker.cpp - trackpattern.cpp - ) - -set_target_properties( midiedit - PROPERTIES COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all.h" - ) - diff --git a/muse/muse/midiedit/citem.cpp b/muse/muse/midiedit/citem.cpp deleted file mode 100644 index b7ae8287..00000000 --- a/muse/muse/midiedit/citem.cpp +++ /dev/null @@ -1,82 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "part.h" -#include "citem.h" - -//--------------------------------------------------------- -// CItem -//--------------------------------------------------------- - -CItem::CItem() - { - isMoving = false; - } - -CItem::CItem(const Event& e, Part* p) - { - event = e; - part = p; - isMoving = false; - pos = e.pos() + *p; - } - -//--------------------------------------------------------- -// isSelected -//--------------------------------------------------------- - -bool CItem::isSelected() const - { - return event.empty() ? part->selected() : event.selected(); - } - -//--------------------------------------------------------- -// setSelected -//--------------------------------------------------------- - -void CItem::setSelected(bool f) - { - event.empty() ? part->setSelected(f) : event.setSelected(f); - } - -//--------------------------------------------------------- -// CItemList -//--------------------------------------------------------- - -CItem* CItemList::find(const QPoint& pos) const - { - for (rciCItem i = rbegin(); i != rend(); ++i) { - if (i->second->contains(pos)) - return i->second; - } - return 0; - } - -//--------------------------------------------------------- -// CItemList -//--------------------------------------------------------- - -void CItemList::add(CItem* item) - { - std::multimap >::insert( - std::pair (item->pos.tick(), item) - ); - } - diff --git a/muse/muse/midiedit/citem.h b/muse/muse/midiedit/citem.h deleted file mode 100644 index 5b3452ac..00000000 --- a/muse/muse/midiedit/citem.h +++ /dev/null @@ -1,70 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __CITEM_H__ -#define __CITEM_H__ - -#include "al/pos.h" -#include "event.h" - -class Part; - -//--------------------------------------------------------- -// CItem -// Canvas Item -//--------------------------------------------------------- - -struct CItem { - Event event; - Part* part; - - bool isMoving; - AL::Pos moving; - int my; - - QRect bbox; - AL::Pos pos; - - CItem(); - CItem(const Event& e, Part* p); - - bool isSelected() const; - void setSelected(bool f); - bool contains(const QPoint& p) const { return bbox.contains(p); } - bool intersects(const QRect& r) const { return r.intersects(bbox); } - }; - -typedef std::multimap >::iterator iCItem; -typedef std::multimap >::const_iterator ciCItem; -typedef std::multimap >::const_reverse_iterator rciCItem; - -//--------------------------------------------------------- -// CItemList -// Canvas Item List -//--------------------------------------------------------- - -class CItemList: public std::multimap > { - public: - void add(CItem*); - CItem* find(const QPoint& pos) const; - }; - -#endif - diff --git a/muse/muse/midiedit/cmd.h b/muse/muse/midiedit/cmd.h deleted file mode 100644 index 7f51abdd..00000000 --- a/muse/muse/midiedit/cmd.h +++ /dev/null @@ -1,32 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __CMD_H__ -#define __CMD_H__ - -enum { - MCMD_LEFT, - MCMD_RIGHT, - MCMD_INSERT, - MCMD_DELETE, - }; - -#endif - diff --git a/muse/muse/midiedit/dcanvas.cpp b/muse/muse/midiedit/dcanvas.cpp deleted file mode 100644 index 20d8170d..00000000 --- a/muse/muse/midiedit/dcanvas.cpp +++ /dev/null @@ -1,723 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "dcanvas.h" -#include "song.h" -#include "midieditor.h" -#include "drummap.h" -#include "audio.h" -#include "velocity.h" -#include "gconfig.h" -#include "part.h" - -#define CARET 12 -#define CARET2 6 - -//--------------------------------------------------------- -// drumMap -//--------------------------------------------------------- - -DrumMap* DrumCanvas::drumMap() const - { - DrumMap* drumMap = track()->drumMap(); - if (drumMap == 0) - drumMap = &noDrumMap; - return drumMap; - } - -//--------------------------------------------------------- -// y2pitch -//--------------------------------------------------------- - -int DrumCanvas::y2pitch(int y) const - { - return drumMap()->anote(EventCanvas::y2pitch(y)); - } - -//--------------------------------------------------------- -// pitch2y -//--------------------------------------------------------- - -int DrumCanvas::pitch2y(int pitch) const - { - return EventCanvas::pitch2y(drumMap()->outmap(pitch)); - } - -//--------------------------------------------------------- -// DrumCanvas -//--------------------------------------------------------- - -DrumCanvas::DrumCanvas(MidiEditor* pr) - : EventCanvas(pr, TIME_CANVAS_DRUMEDIT) - { - singlePitch = -1; - verticalScrollBar()->setSingleStep(drumHeight/2); - canvasTools = PointerTool | PencilTool | RubberTool; - songChanged(SC_TRACK_INSERTED); - connect(track(), SIGNAL(drumMapChanged()), widget(), SLOT(update())); - } - -//--------------------------------------------------------- -// addItem -//--------------------------------------------------------- - -void DrumCanvas::addItem(Part* part, const Event& event) - { - CItem* item = new CItem(event, part); - unsigned tick = event.tick() + part->tick(); - item->pos = Pos(tick); - items.add(item); - } - -//--------------------------------------------------------- -// paint -//--------------------------------------------------------- - -void DrumCanvas::paint(QPainter& p, QRect r) - { - p.setPen(QPen(Qt::black, 0.0)); - - QPainterPath pa; - pa.moveTo(-CARET2, 0); - pa.lineTo(0, - CARET2); - pa.lineTo(CARET2, 0); - pa.lineTo(0, CARET2); - pa.closeSubpath(); - - Pos p1(pix2pos(r.x() - CARET2)); - Pos p2(pix2pos(r.x() + r.width() + CARET2)); - iCItem from(items.lower_bound(p1.tick())); - iCItem to(items.upper_bound(p2.tick())); - - for (iCItem i = from; i != to; ++i) { - CItem* e = i->second; - int x = pos2pix(AL::Pos(i->first)); - int y = pitch2y(e->event.pitch()) + drumHeight/2; - QPoint pt(x, y); - Event me(e->event); - - DrumMapEntry* dm = drumMap()->entry(me.pitch()); //Get the drum item - QColor color; - int velo = me.velo(); - if (velo < dm->lv1) - color.setRgb(240, 240, 255); - else if (velo < dm->lv2) - color.setRgb(200, 200, 255); - else if (velo < dm->lv3) - color.setRgb(170, 170, 255); - else - color.setRgb(0, 0, 255); - - if (e->part != curPart) - p.setBrush(Qt::lightGray); - else if (e->isMoving) { - p.setBrush(Qt::gray); - p.translate(pt); - p.drawPath(pa); - p.translate(-pt); - p.setBrush(Qt::black); - - int x = pos2pix(e->moving); - int y = e->my + drumHeight/2; - pt = QPoint(x, y); - } - else if (e->isSelected()) - p.setBrush(Qt::black); - else - p.setBrush(color); - p.translate(pt); - p.drawPath(pa); - p.translate(-pt); - } - - //--------------------------------------------------- - // draw lasso - //--------------------------------------------------- - - if (drag == DRAG_LASSO) { - p.setPen(Qt::blue); - p.setBrush(Qt::NoBrush); - p.drawRect(lasso); - } - } - -//--------------------------------------------------------- -// moveItem -//--------------------------------------------------------- - -void DrumCanvas::moveItem(CItem* nevent, DragType dtype) - { - Part* part = nevent->part; - Event event = nevent->event; - int npitch = y2pitch(nevent->my); - - Event newEvent = event.clone(); - newEvent.setPitch(npitch); - newEvent.setPos(nevent->moving - *(nevent->part)); - if (dtype == MOVE_COPY) - audio->msgAddEvent(newEvent, part, false); - else - audio->msgChangeEvent(event, newEvent, part, false); - } - -//--------------------------------------------------------- -// newItem -//--------------------------------------------------------- - -CItem* DrumCanvas::newItem(const QPoint& p, int state) - { - AL::Pos pos(pix2pos(p.x())); - pos.snap(raster()); - if (pos < partPos1 || pos >= partPos2) { - return 0; - } - - int pitch = y2pitch(p.y()); - int instr = drumMap()->outmap(pitch); - DrumMapEntry* dm = drumMap()->entry(instr); - int velo = dm->lv4; - if (state == Qt::ShiftModifier) - velo = dm->lv3; - else if (state == Qt::ControlModifier) - velo = dm->lv2; - else if (state == (Qt::ControlModifier | Qt::ShiftModifier)) - velo = dm->lv1; - - Event e(Note); - e.setPos(pos - *curPart); - e.setPitch(drumMap()->anote(instr)); - e.setVelo(velo); - e.setLenTick(dm->len); - return new CItem(e, curPart); - } - -//--------------------------------------------------------- -// resizeItem -//--------------------------------------------------------- - -void DrumCanvas::resizeItem(CItem* nevent, bool) - { - Event ev = nevent->event; - audio->msgDeleteEvent(ev, nevent->part); - } - -//--------------------------------------------------------- -// newItem -//--------------------------------------------------------- - -void DrumCanvas::newItem(CItem* nevent, bool noSnap) - { - Event event = nevent->event; - Pos pos(nevent->pos); - if (!noSnap) - pos.snap(editor->raster()); - event.setPos(pos - *(nevent->part)); - int npitch = event.pitch(); - event.setPitch(npitch); - - // - // check for existing event - // if found change command semantic from insert to delete - // - EventList* el = nevent->part->events(); - iEvent lower = el->lower_bound(event.tick()); - iEvent upper = el->upper_bound(event.tick()); - - for (iEvent i = lower; i != upper; ++i) { - Event ev = i->second; - if (ev.pitch() == npitch) { - audio->msgDeleteEvent(ev, nevent->part); - return; - } - } - - audio->msgAddEvent(event, nevent->part); - } - -//--------------------------------------------------------- -// deleteItem -//--------------------------------------------------------- - -bool DrumCanvas::deleteItem(CItem* item) - { - Event ev = item->event; - audio->msgDeleteEvent(ev, item->part); - return false; - } - -//--------------------------------------------------------- -// cmd -//--------------------------------------------------------- - -void DrumCanvas::cmd(QAction* a) - { - QString cmd(a->data().toString()); - - if (cmd == "paste") - paste(); - else if (cmd == "sel_all") { - for (iCItem k = items.begin(); k != items.end(); ++k) { - if (!k->second->isSelected()) - selectItem(k->second, true); - } - } - else if (cmd == "sel_none") - deselectAll(); - else if (cmd == "sel_inv") { - for (iCItem k = items.begin(); k != items.end(); ++k) - selectItem(k->second, !k->second->isSelected()); - } - else if (cmd == "sel_ins_loc") { - for (iCItem k = items.begin(); k != items.end(); ++k) { - CItem* nevent = k->second; - Part* part = nevent->part; - Event event = nevent->event; - unsigned tick = event.tick() + part->tick(); - if (tick < song->lpos() || tick >= song->rpos()) - selectItem(k->second, false); - else - selectItem(k->second, true); - } - } - else if (cmd == "sel_out_loc") { - for (iCItem k = items.begin(); k != items.end(); ++k) { - CItem* nevent = k->second; - Part* part = nevent->part; - Event event = nevent->event; - unsigned tick = event.tick() + part->tick(); - if (tick < song->lpos() || tick >= song->rpos()) - selectItem(k->second, true); - else - selectItem(k->second, false); - } - } - else if (cmd == "delete") { - if (selectionSize()) { - song->startUndo(); - for (iCItem i = items.begin(); i != items.end(); ++i) { - if (!i->second->isSelected()) - continue; - Event ev = i->second->event; - audio->msgDeleteEvent(ev, i->second->part, false); - } - song->endUndo(SC_EVENT_REMOVED); - } - return; - } - else if (cmd == "midi_fixed_len") { - if (selectionSize()) { - song->startUndo(); - for (iCItem k = items.begin(); k != items.end(); ++k) { - if (k->second->isSelected()) { - CItem* devent = k->second; - Event event = devent->event; - Event newEvent = event.clone(); - newEvent.setLenTick(drumMap()->entry(event.pitch())->len); - audio->msgChangeEvent(event, newEvent, devent->part, false); - } - } - song->endUndo(SC_EVENT_MODIFIED); - } - } - else if (cmd == "goto_left") { - int frames = pos[0].tick() - editor->rasterStep(pos[0].tick()); - if (frames < 0) - frames = 0; - Pos p(frames, AL::TICKS); - song->setPos(0, p, true, true, true); - } - else if (cmd == "goto_right") { - Pos p(pos[0].tick() + editor->rasterStep(pos[0].tick()), AL::TICKS); - song->setPos(0, p, true, true, true); - } - else if (cmd == "mid_mod_velo") { - Velocity w(this); - w.setRange(editor->applyTo()); - if (w.exec()) { - editor->setApplyTo(w.range()); - int rate = w.rateVal(); - int offset = w.offsetVal(); - - song->startUndo(); - for (iCItem k = items.begin(); k != items.end(); ++k) { - CItem* devent = k->second; - Event event = devent->event; - if (event.type() != Note) - continue; - unsigned tick = event.tick(); - bool selected = devent->isSelected(); - bool inLoop = (tick >= song->lpos()) && (tick < song->rpos()); - - int range = editor->applyTo(); - if ((range == RANGE_ALL) - || (range == RANGE_SELECTED && selected) - || (range == RANGE_LOOPED && inLoop) - || (range == (RANGE_LOOPED | RANGE_SELECTED) && selected && inLoop)) { - int velo = event.velo(); - - //velo = rate ? (velo * 100) / rate : 64; - velo = (velo * rate) / 100; - velo += offset; - - if (velo <= 0) - velo = 1; - if (velo > 127) - velo = 127; - if (event.velo() != velo) { - Event newEvent = event.clone(); - newEvent.setVelo(velo); - audio->msgChangeEvent(event, newEvent, devent->part, false); - } - } - } - song->endUndo(SC_EVENT_MODIFIED); - } - } - widget()->update(); - } - -//--------------------------------------------------------- -// paste -// paste events -//--------------------------------------------------------- - -void DrumCanvas::paste() - { - QString stype("x-muse-eventlist"); - QString s = QApplication::clipboard()->text(stype, QClipboard::Selection); - pasteAt(s, song->cpos()); - } - -//--------------------------------------------------------- -// startDrag -//--------------------------------------------------------- - -void DrumCanvas::startDrag(CItem* /* item*/, bool /*copymode*/) - { -printf("DrumCanvas: startDrag\n"); -#if 0 //TD - QMimeData* drag = getTextDrag(); - if (drag) { - QApplication::clipboard()->setMimeData(drag, QClipboard::Selection); - if (copymode) - drag->dragCopy(); - else - drag->dragMove(); - } -#endif - } - -//--------------------------------------------------------- -// dragEnterEvent -//--------------------------------------------------------- - -void DrumCanvas::dragEnterEvent(QDragEnterEvent* /*event*/) - { -printf("DrumCanvas: dragEnterEvent\n"); -//TD event->accept(Q3TextDrag::canDecode(event)); - } - -//--------------------------------------------------------- -// dragMoveEvent -//--------------------------------------------------------- - -void DrumCanvas::dragMoveEvent(QDragMoveEvent*) - { - printf("drag move %p\n", this); - } - -//--------------------------------------------------------- -// dragLeaveEvent -//--------------------------------------------------------- - -void DrumCanvas::dragLeaveEvent(QDragLeaveEvent*) - { - printf("drag leave\n"); - } - -//--------------------------------------------------------- -// dropEvent -//--------------------------------------------------------- - -void DrumCanvas::viewDropEvent(QDropEvent* /*event*/) - { -printf("DrumCanvas: viewDropEvent\n"); -#if 0 //TD - QString text; - if (event->source() == this) { - printf("local DROP\n"); - return; - } - if (Q3TextDrag::decode(event, text)) { -// printf("drop <%s>\n", text.ascii()); - int x = editor->rasterVal(event->pos().x()); - if (x < 0) - x = 0; - pasteAt(text, x); - } -#endif - } - -//--------------------------------------------------------- -// keyPressed -//--------------------------------------------------------- - -void DrumCanvas::keyPressed(int index, bool) - { - int pitch = drumMap()->entry(index)->anote; - - // play note: - MidiEvent e(0, 0, 0x90, pitch, 127); - track()->playMidiEvent(&e); - } - -//--------------------------------------------------------- -// keyReleased -//--------------------------------------------------------- - -void DrumCanvas::keyReleased(int index, bool) - { - int pitch = drumMap()->entry(index)->anote; - - // release note: - MidiEvent e(0, 0, 0x90, pitch, 0); - track()->playMidiEvent(&e); - } - -//--------------------------------------------------------- -// resizeEvent -//--------------------------------------------------------- - -void DrumCanvas::resizeEvent(QResizeEvent* ev) - { - if (ev->size().width() != ev->oldSize().width()) - emit newWidth(ev->size().width()); - EventCanvas::resizeEvent(ev); - } - - -//--------------------------------------------------------- -// modifySelected -//--------------------------------------------------------- - -void DrumCanvas::modifySelected(NoteInfo::ValType type, int delta) - { - audio->msgIdle(true); - song->startUndo(); - for (iCItem i = items.begin(); i != items.end(); ++i) { - if (!(i->second->isSelected())) - continue; - CItem* e = i->second; - Event event = e->event; - if (event.type() != Note) - continue; - - Part* part = e->part; - Event newEvent = event.clone(); - - switch (type) { - case NoteInfo::VAL_TIME: - { - int newTime = event.tick() + delta; - if (newTime < 0) - newTime = 0; - newEvent.setTick(newTime); - } - break; - case NoteInfo::VAL_LEN: - /* - { - int len = event.lenTick() + delta; - if (len < 1) - len = 1; - newEvent.setLenTick(len); - } - */ - printf("DrumCanvas::modifySelected - NoteInfo::VAL_LEN not implemented\n"); - break; - case NoteInfo::VAL_VELON: - /* - { - int velo = event->velo() + delta; - if (velo > 127) - velo = 127; - else if (velo < 0) - velo = 0; - newEvent.setVelo(velo); - } - */ - printf("DrumCanvas::modifySelected - NoteInfo::VAL_VELON not implemented\n"); - break; - case NoteInfo::VAL_VELOFF: - /* - { - int velo = event.veloOff() + delta; - if (velo > 127) - velo = 127; - else if (velo < 0) - velo = 0; - newEvent.setVeloOff(velo); - } - */ - printf("DrumCanvas::modifySelected - NoteInfo::VAL_VELOFF not implemented\n"); - break; - case NoteInfo::VAL_PITCH: - { - int pitch = event.pitch() - delta; // Reversing order since the drumlist is displayed in increasing order - if (pitch > 127) - pitch = 127; - else if (pitch < 0) - pitch = 0; - newEvent.setPitch(pitch); - } - break; - } - song->changeEvent(event, newEvent, part); - song->undoOp(UndoOp::ModifyEvent, newEvent, event, part); - } - song->endUndo(SC_EVENT_MODIFIED); - audio->msgIdle(false); - } - -//--------------------------------------------------------- -// paintDrumList -//--------------------------------------------------------- - -void DrumCanvas::paintDrumList(QPainter& p, QRect r) - { - p.fillRect(r, QColor(0xe0, 0xe0, 0xe0)); - paintVLine(p, 0, rPanelB.y(), rPanelA.x() + rPanelA.width()); -// p.setFont(config.fonts[1]); - - int yoff = wpos.y() - rPanelA.y(); - int i = (r.y() + yoff) / drumHeight; - if (i < 0) - i = 0; - if (i > 127) - return; - int y = i * drumHeight - yoff; - DrumMap* dm = drumMap(); - - for (; i < 128; ++i, y += drumHeight) { - if (y > r.y() + r.height()) - break; - QRect r(3, y, drumWidth-4, drumHeight); - if (dm->anote(i) == curPitch || dm->anote(i) == singlePitch) - p.fillRect(0, y, drumWidth-4, drumHeight, Qt::white); - DrumMapEntry* de = dm->entry(i); - if (de->mute) { - p.setPen(Qt::red); - p.drawText(r, Qt::AlignVCenter | Qt::AlignLeft, "m"); - p.setPen(Qt::darkGray); - p.drawText(r.adjusted(16, 0, 0, 0), Qt::AlignVCenter | Qt::AlignLeft, de->name); - } - else { - p.setPen(Qt::black); - p.drawText(r, Qt::AlignVCenter | Qt::AlignLeft, "m"); - p.drawText(r.adjusted(16, 0, 0, 0), Qt::AlignVCenter | Qt::AlignLeft, de->name); - } - if (i != 0) - p.drawLine(0, y, drumWidth-3, y); - } - p.setPen(QPen(Qt::darkGray, 1)); - p.drawLine(17, r.y(), 17, r.y() + r.height()); - } - -//--------------------------------------------------------- -// searchItem -//--------------------------------------------------------- - -CItem* DrumCanvas::searchItem(const QPoint& p) const - { - Pos p1(pix2pos(p.x() - CARET2)); - Pos p2(pix2pos(p.x() + CARET2)); - - ciCItem from(items.lower_bound(p1.tick())); - ciCItem to(items.upper_bound(p2.tick())); - - int pitch = y2pitch(p.y()); - for (ciCItem i = from; i != to; ++i) { - if (pitch == i->second->event.pitch()) - return i->second; - } - return 0; - } - -//--------------------------------------------------------- -// selectLasso -//--------------------------------------------------------- - -void DrumCanvas::selectLasso(bool toggle) - { - Pos p1(pix2pos(lasso.x())); - Pos p2(pix2pos(lasso.x() + lasso.width())); - - iCItem from(items.lower_bound(p1.tick())); - iCItem to(items.upper_bound(p2.tick())); - int y = lasso.y(); - int pitch1 = y2pitch(y); - int pitch2 = y2pitch(y + lasso.height()); - - int n = 0; - for (iCItem i = from; i != to; ++i) { - CItem* item = i->second; - int pitch = item->event.pitch(); - if (pitch >= pitch1 && pitch <= pitch2) { - selectItem(item, !(toggle && item->isSelected())); - ++n; - } - } - if (n) { - updateSelection(); - widget()->update(); - } - } - -//--------------------------------------------------------- -// mousePress -//--------------------------------------------------------- - -void DrumCanvas::mousePress(QMouseEvent* ev) - { - QPoint r(ev->pos()); - int pitch = y2pitch(r.y() - rPanelA.y() - wpos.y()); - if (r.x() < 20) { - // - // "mute" button click - // - DrumMap* dm = drumMap(); - int idx = dm->outmap(pitch); - DrumMapEntry* de = dm->entry(idx); - de->mute = !de->mute; - widget()->update(rPanelA); - return; - } - else if (r.x() < rCanvasA.x()) { - if (pitch != singlePitch) { - singlePitch = pitch; - for (iCtrlEdit i = ctrlEditList.begin(); i != ctrlEditList.end(); ++i) - (*i)->setSinglePitch(singlePitch); - widget()->update(); - } - } - EventCanvas::mousePress(ev); - } - - diff --git a/muse/muse/midiedit/dcanvas.h b/muse/muse/midiedit/dcanvas.h deleted file mode 100644 index 9d4ab754..00000000 --- a/muse/muse/midiedit/dcanvas.h +++ /dev/null @@ -1,77 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __DCANVAS_H__ -#define __DCANVAS_H__ - -#include "ecanvas.h" - -class MidiEditor; -class DrumMap; - -//--------------------------------------------------------- -// DrumCanvas -//--------------------------------------------------------- - -class DrumCanvas : public EventCanvas { - Q_OBJECT - - int singlePitch; - virtual void mousePress(QMouseEvent*); - virtual void paint(QPainter&, QRect); - virtual void addItem(Part* part, const Event& event); - virtual void moveItem(CItem*, DragType); - virtual CItem* newItem(const QPoint&, int); - virtual void resizeItem(CItem*, bool); - virtual void newItem(CItem*, bool); - virtual bool deleteItem(CItem*); - virtual CItem* searchItem(const QPoint& p) const; - - void copy(); - void paste(); - void startDrag(CItem*, bool copymode); - void dragEnterEvent(QDragEnterEvent* event); - void dragMoveEvent(QDragMoveEvent*); - void dragLeaveEvent(QDragLeaveEvent*); - void viewDropEvent(QDropEvent* event); - virtual void resizeEvent(QResizeEvent*); - virtual void paintDrumList(QPainter&, QRect); - virtual void selectLasso(bool toggle); - - DrumMap* drumMap() const; - - protected: - virtual int y2pitch(int y) const; - virtual int pitch2y(int pitch) const; - - signals: - void newWidth(int); - - public slots: - void keyPressed(int, bool); - void keyReleased(int, bool); - - public: - DrumCanvas(MidiEditor*); - void cmd(QAction*); - virtual void modifySelected(NoteInfo::ValType type, int delta); - }; -#endif - diff --git a/muse/muse/midiedit/drumedit.cpp b/muse/muse/midiedit/drumedit.cpp deleted file mode 100644 index a21a56a0..00000000 --- a/muse/muse/midiedit/drumedit.cpp +++ /dev/null @@ -1,450 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "drumedit.h" -#include "icons.h" -#include "drummap.h" -#include "audio.h" -#include "shortcuts.h" -#include "part.h" -#include "muse.h" -#include "song.h" - -static const int drumeditTools = PointerTool | PencilTool | RubberTool | DrawTool; - -int DrumEdit::initWidth = DrumEdit::INIT_WIDTH; -int DrumEdit::initHeight = DrumEdit::INIT_HEIGHT; -int DrumEdit::initRaster = DrumEdit::INIT_RASTER; -int DrumEdit::initQuant = DrumEdit::INIT_QUANT; -bool DrumEdit::initFollow = DrumEdit::INIT_FOLLOW; -bool DrumEdit::initSpeaker = DrumEdit::INIT_SPEAKER; -bool DrumEdit::initMidiin = DrumEdit::INIT_MIDIIN; -double DrumEdit::initXmag = 0.08; // DrumEdit::INIT_XMAG; -int DrumEdit::initApplyTo = DrumEdit::INIT_APPLY_TO; - -//--------------------------------------------------------- -// DrumEdit -//--------------------------------------------------------- - -DrumEdit::DrumEdit(PartList* pl, bool init) - : MidiEditor(pl) - { - _applyTo = initApplyTo; - - deltaMode = false; - drumMap = &noDrumMap; - - //---------Pulldown Menu---------------------------- - QMenuBar* mb = menuBar(); - - menuEdit->addSeparator(); - menuEdit->addAction(getAction("delete", this)); - - // Functions - menuFunctions = mb->addMenu(tr("&Functions")); - menuFunctions->addAction(getAction("midi_fixed_len", this)); - menuFunctions->addAction(getAction("midi_mod_velo", this)); - - menuSelect = menuEdit->addMenu(tr("&Select")); - menuSelect->setIcon(QIcon(*selectIcon)); - - menuSelect->addAction(getAction("sel_all", this)); - menuSelect->addAction(getAction("sel_none", this)); - menuSelect->addAction(getAction("sel_inv", this)); - menuSelect->addSeparator(); - menuSelect->addAction(getAction("sel_ins_loc", this)); - menuSelect->addAction(getAction("sel_out_loc", this)); - - connect(menuSelect, SIGNAL(triggered(QAction*)), SLOT(cmd(QAction*))); - connect(menuFunctions, SIGNAL(triggered(QAction*)), SLOT(cmd(QAction*))); - - //--------------------------------------------------- - // Toolbars - //--------------------------------------------------- - - tools = addToolBar(tr("Drum Tools")); - tools->addAction(undoAction); - tools->addAction(redoAction); - tools->addSeparator(); - - tools->addAction(stepRecAction); - stepRecAction->setChecked(INIT_SREC); - - tools->addAction(midiInAction); - midiInAction->setChecked(INIT_MIDIIN); - - tools->addAction(speaker); - speaker->setChecked(INIT_SPEAKER); - - tools->addAction(followSongAction); - followSongAction->setChecked(INIT_FOLLOW); - - tools2 = new EditToolBar(this, drumeditTools); - addToolBar(tools2); - - QToolBar* transport = addToolBar(tr("Transport")); - muse->setupTransportToolbar(transport); - - addToolBarBreak(); - toolbar = new Toolbar1(initRaster, initQuant, false); - addToolBar(toolbar); - addToolBarBreak(); - info = new NoteInfo(this); - addToolBar(info); - - tcanvas = new DrumCanvas(this); - setCentralWidget(tcanvas); - tcanvas->setCornerWidget(new QSizeGrip(tcanvas)); - tcanvas->setFollow(INIT_FOLLOW); - - connect(song, SIGNAL(posChanged(int,const AL::Pos&,bool)), canvas(), SLOT(setLocatorPos(int,const AL::Pos&,bool))); - connect(canvas(), SIGNAL(posChanged(int,const AL::Pos&)), SLOT(setPos(int,const AL::Pos&))); - - connect(canvas(), SIGNAL(toolChanged(int)), tools2, SLOT(set(int))); - connect(tools2, SIGNAL(toolChanged(int)), canvas(), SLOT(setTool(int))); - - connect(canvas(), SIGNAL(selectionChanged(int, Event&, Part*)), - SLOT(setSelection(int, Event&, Part*))); - - setWindowTitle(canvas()->getCaption()); - - Pos p1(0, AL::TICKS), p2(0, AL::TICKS); - canvas()->range(p1, p2); - p2 += AL::sigmap.ticksMeasure(p2.tick()); // show one more measure - canvas()->setTimeRange(p1, p2); - - // connect toolbar - connect(canvas(), SIGNAL(cursorPos(const AL::Pos&,bool)), toolbar, SLOT(setTime(const AL::Pos&,bool))); - connect(toolbar, SIGNAL(quantChanged(int)), SLOT(setQuant(int))); - connect(toolbar, SIGNAL(rasterChanged(int)), SLOT(setRaster(int))); - connect(toolbar, SIGNAL(soloChanged(bool)), SLOT(soloChanged(bool))); - connect(toolbar, SIGNAL(toChanged(int)), SLOT(setApplyTo(int))); - - connect(info, SIGNAL(valueChanged(NoteInfo::ValType, int)), SLOT(noteinfoChanged(NoteInfo::ValType, int))); - - clipboardChanged(); // enable/disable "Paste" - selectionChanged(); // enable/disable "Copy" & "Paste" - - canvas()->selectFirst(); - - // - // install misc shortcuts - // - QShortcut* sc; - sc = new QShortcut(Qt::Key_Escape, this); - sc->setContext(Qt::WindowShortcut); - connect(sc, SIGNAL(activated()), SLOT(close())); - - QSignalMapper* cmdMap = new QSignalMapper(this); - static const char* actions[] = { - "curpos_increase", "curpos_decrease", - "pointer", "pencil", "eraser", - "midi_quant_1", "midi_quant_2", "midi_quant_3", "midi_quant_4", - "midi_quant_5", "midi_quant_6", "midi_quant_7", - "midi_quant_triol", "midi_quant_punct", "midi_quant_punct2" - }; - for (unsigned i = 0; i < sizeof(actions)/sizeof(*actions); ++i) { - QAction* a = getAction(actions[i], this); - addAction(a); - cmdMap->setMapping(a, a); - connect(a, SIGNAL(triggered()), cmdMap, SLOT(map())); - } - connect(cmdMap, SIGNAL(mapped(QObject*)), SLOT(drumCmd(QObject*))); - - - connect(song, SIGNAL(songChanged(int)), canvas(), SLOT(songChanged(int))); - connect(followSongAction, SIGNAL(toggled(bool)), canvas(), SLOT(setFollow(bool))); - canvas()->selectFirst(); - - Part* part = canvas()->part(); - - setRaster(part->raster() != -1 ? part->raster() : initRaster); - setQuant(part->quant() != -1 ? part->quant() : initQuant); - setXmag(part->xmag() != -1.0 ? part->xmag() : initXmag); - - if (init) - initFromPart(); - else - resize(initWidth, initHeight); - } - -//--------------------------------------------------------- -// ~DrumEdit -//--------------------------------------------------------- - -DrumEdit::~DrumEdit() - { - } - -//--------------------------------------------------------- -// closeEvent -//--------------------------------------------------------- - -void DrumEdit::closeEvent(QCloseEvent* e) - { - MidiEditor::closeEvent(e); - } - -//--------------------------------------------------------- -// setSelection -// update Info Line -//--------------------------------------------------------- - -void DrumEdit::setSelection(int tick, Event& e, Part* p) - { - int selections = canvas()->selectionSize(); - selEvent = e; - selPart = p; - - if (selections > 1) { - info->setEnabled(true); - info->setDeltaMode(true); - if (!deltaMode) { - deltaMode = true; - info->setValues(0, 0, 0, 0, 0); - tickOffset = 0; - lenOffset = 0; - pitchOffset = 0; - veloOnOffset = 0; - veloOffOffset = 0; - } - } - else if (selections == 1) { - deltaMode = false; - info->setEnabled(true); - info->setDeltaMode(false); - info->setValues(tick, - selEvent.lenTick(), - selEvent.pitch(), - selEvent.velo(), - selEvent.veloOff()); - } - else { - deltaMode = false; - info->setEnabled(false); - } - selectionChanged(); - } - -//--------------------------------------------------------- -// soloChanged -//--------------------------------------------------------- - -void DrumEdit::soloChanged(bool flag) - { - song->setSolo(canvas()->track(), flag); - } - -//--------------------------------------------------------- -// edit currently selected Event -//--------------------------------------------------------- - -void DrumEdit::noteinfoChanged(NoteInfo::ValType type, int val) - { - int selections = canvas()->selectionSize(); - - if (selections == 0) { - printf("noteinfoChanged while nothing selected\n"); - } - else if (selections == 1) { - Event event = selEvent.clone(); - switch(type) { - case NoteInfo::VAL_TIME: - event.setTick(val - selPart->tick()); - break; - case NoteInfo::VAL_LEN: - event.setLenTick(val); - break; - case NoteInfo::VAL_VELON: - event.setVelo(val); - break; - case NoteInfo::VAL_VELOFF: - event.setVeloOff(val); - break; - case NoteInfo::VAL_PITCH: - event.setPitch(val); - break; - } - audio->msgChangeEvent(selEvent, event, selPart); - } - else { - // multiple events are selected; treat noteinfo values - // as offsets to event values - - int delta = 0; - switch (type) { - case NoteInfo::VAL_TIME: - delta = val - tickOffset; - tickOffset = val; - break; - case NoteInfo::VAL_LEN: - delta = val - lenOffset; - lenOffset = val; - break; - case NoteInfo::VAL_VELON: - delta = val - veloOnOffset; - veloOnOffset = val; - break; - case NoteInfo::VAL_VELOFF: - delta = val - veloOffOffset; - veloOffOffset = val; - break; - case NoteInfo::VAL_PITCH: - delta = val - pitchOffset; - pitchOffset = val; - break; - } - if (delta) - canvas()->modifySelected(type, delta); - } - } - -//--------------------------------------------------------- -// cmd -// pulldown menu commands -//--------------------------------------------------------- - -void DrumEdit::cmd(QAction* a) - { - canvas()->cmd(a); - } - -//--------------------------------------------------------- -// drumCmd -//--------------------------------------------------------- - -void DrumEdit::drumCmd(QObject* object) - { - QAction* a = (QAction*)object; - QString cmd(a->data().toString()); - - static const int rasterTable[] = { - //-9----8- 7 6 5 4 3(1/4) 2 1 - 4, 8, 16, 32, 64, 128, 256, 512, 1024, // triple - 6, 12, 24, 48, 96, 192, 384, 768, 1536, - 9, 18, 36, 72, 144, 288, 576, 1152, 2304 // dot - }; - - DrumCanvas* dc = canvas(); - int index = 0; - int n = sizeof(rasterTable); - for (; index < n; ++index) - if (rasterTable[index] == raster()) - break; - int off = (index / 9) * 9; - index = index % 9; - int val; - - if (cmd == "curpos_increase") { - dc->cmd(a); - return; - } - else if (cmd == "curpos_decrease") { - dc->cmd(a); - return; - } - else if (cmd == "pointer") { - tools2->set(PointerTool); - return; - } - else if (cmd == "pencil") { - tools2->set(PencilTool); - return; - } - else if (cmd == "eraser") { - tools2->set(RubberTool); - return; - } - else if (cmd == "midi_quant_1") - val = rasterTable[8 + off]; - else if (cmd == "midi_quant_2") - val = rasterTable[7 + off]; - else if (cmd == "midi_quant_3") - val = rasterTable[6 + off]; - else if (cmd == "midi_quant_4") - val = rasterTable[5 + off]; - else if (cmd == "midi_quant_5") - val = rasterTable[4 + off]; - else if (cmd == "midi_quant_6") - val = rasterTable[3 + off]; - else if (cmd == "midi_quant_7") - val = rasterTable[2 + off]; - else if (cmd == "midi_quant_triol") - val = rasterTable[index + ((off == 0) ? 9 : 0)]; - else if (cmd == "midi_quant_punct") - val = rasterTable[index + ((off == 18) ? 9 : 18)]; - - else if (cmd == "midi_quant_punct2") { - if ((off == 18) && (index > 2)) { - val = rasterTable[index + 9 - 1]; - } - else if ((off == 9) && (index < 8)) { - val = rasterTable[index + 18 + 1]; - } - else - return; - } - else { - printf("DrumEdit::drumCmd: unknown cmd <%s>\n", cmd.toLatin1().data()); - return; - } - setQuant(val); - setRaster(val); - toolbar->setQuant(quant()); - toolbar->setRaster(raster()); - } - -//--------------------------------------------------------- -// writeConfiguration -//--------------------------------------------------------- - -void DrumEdit::writeConfiguration(Xml& xml) - { - xml.stag("DrumEdit"); - if (DrumEdit::initWidth != DrumEdit::INIT_WIDTH) - xml.tag("width", DrumEdit::initWidth); - if (DrumEdit::initHeight != DrumEdit::INIT_HEIGHT) - xml.tag("height", DrumEdit::initHeight); - if (DrumEdit::initRaster != DrumEdit::INIT_RASTER) - xml.tag("raster", DrumEdit::initRaster); - xml.etag("DrumEdit"); - } - -//--------------------------------------------------------- -// readConfiguration -//--------------------------------------------------------- - -void DrumEdit::readConfiguration(QDomNode node) - { - for (node = node.firstChild(); !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - QString tag(e.tagName()); - int i = e.text().toInt(); - if (tag == "width") - DrumEdit::initWidth = i; - else if (tag == "height") - DrumEdit::initHeight = i; - else if (tag == "raster") - DrumEdit::initRaster = i; - else - printf("MusE:DrumEdit: unknown tag %s\n", tag.toLatin1().data()); - } - } - diff --git a/muse/muse/midiedit/drumedit.h b/muse/muse/midiedit/drumedit.h deleted file mode 100644 index 20cf99f6..00000000 --- a/muse/muse/midiedit/drumedit.h +++ /dev/null @@ -1,93 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __DRUM_EDIT_H__ -#define __DRUM_EDIT_H__ - -#include "midieditor.h" -#include "dcanvas.h" - -namespace AL { - class Xml; - }; -using AL::Xml; - - -class PartList; -class Part; -class DrumMap; - -//--------------------------------------------------------- -// DrumEdit -//--------------------------------------------------------- - -class DrumEdit : public MidiEditor { - Q_OBJECT - - Event selEvent; - DrumMap* drumMap; - int selTick; - QMenu *menuFunctions, *menuSelect; - - int tickOffset; - int lenOffset; - int pitchOffset; - int veloOnOffset; - int veloOffOffset; - bool deltaMode; - - virtual void closeEvent(QCloseEvent*); - QWidget* genToolbar(QWidget* parent); - DrumCanvas* canvas() { return (DrumCanvas*)tcanvas; } - - private slots: - void noteinfoChanged(NoteInfo::ValType type, int val); - virtual void cmd(QAction*); - void drumCmd(QObject* object); - - public slots: - void setSelection(int, Event&, Part*); - void soloChanged(bool); // called by Solo button - - public: - DrumEdit(PartList*, bool); - ~DrumEdit(); - - static int initRaster, initQuant, initWidth, initHeight; - static bool initFollow, initSpeaker, initMidiin; - static int initApplyTo; - static double initXmag; - - static void readConfiguration(QDomNode); - static void writeConfiguration(Xml&); - - static const int INIT_WIDTH = 650; - static const int INIT_HEIGHT = 450; - static const int INIT_RASTER = 384 / 4; - static const int INIT_QUANT = 384 / 4; - static const bool INIT_FOLLOW = false; - static const bool INIT_SPEAKER = true; - static const bool INIT_SREC = false; - static const bool INIT_MIDIIN = false; - static const double INIT_XMAG = 0.08; - static const int INIT_APPLY_TO = 0; - }; - -#endif diff --git a/muse/muse/midiedit/drummap.cpp b/muse/muse/midiedit/drummap.cpp deleted file mode 100644 index 978c7dab..00000000 --- a/muse/muse/midiedit/drummap.cpp +++ /dev/null @@ -1,219 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "drummap.h" -#include "al/xml.h" - -static const int DEFAULT_QUANT = 16; -static const int DEFAULT_LEN = 32; -static const int DEFAULT_CHANNEL = -1; -static const int DEFAULT_LV1 = 70; -static const int DEFAULT_LV2 = 90; -static const int DEFAULT_LV3 = 110; -static const int DEFAULT_LV4 = 127; - -//--------------------------------------------------------- -// GM default drum map -//--------------------------------------------------------- - -DrumMap gmDrumMap("generic"); -DrumMap noDrumMap("no-map"); - -//--------------------------------------------------------- -// DrumMap -//--------------------------------------------------------- - -DrumMap::DrumMap(const QString& s) - { - _name = s; - for (int i = 0; i < DRUM_MAPSIZE; ++i) { - map[i].name = "?"; - map[i].enote = i; - map[i].anote = i; - map[i].quant = DEFAULT_QUANT; - map[i].len = DEFAULT_LEN; - map[i].channel = DEFAULT_CHANNEL; - map[i].lv1 = DEFAULT_LV1; - map[i].lv2 = DEFAULT_LV2; - map[i].lv3 = DEFAULT_LV3; - map[i].lv4 = DEFAULT_LV4; - map[i].mute = false; - } - init(); - } - -//--------------------------------------------------------- -// initGm -//--------------------------------------------------------- - -void DrumMap::initGm() - { - static const char* gmNames[] = { - "Acoustic Bass Drum", "Bass Drum 1", "Side Stick", "Acoustic Snare", - "Hand Clap", "Electric Snare", "Low Floor Tom", "Closed Hi-Hat", - "High Floor Tom", "Pedal Hi-Hat", "Low Tom", "Open Hi-Hat", "Low-Mid Tom", - "Hi-Mid Tom", "Crash Cymbal 1", "High Tom", "Ride Cymbal 1", - "Chinese Cymbal", "Ride Bell", "Tambourine", "Splash Cymbal", - "Cowbell", "Crash Cymbal 2", "Vibraslap", "Ride Cymbal 2", - "Hi Bongo", "Low Bongo", "Mute Hi Conga", "Open Hi Conga", - "Low Conga", "High Timbale", "Low Timbale", "High Agogo", - "Low Agogo", "Cabasa", "Maracas", "Short Whistle", - "Long Whistle", "Short Guiro", "Long Guiro", "Claves", - "Hi Wood Block", "Low Wood Block", "Mute Cuica", - "Open Cuica", "Mute Triangle", "Open Triangle", 0 - }; - init(); - int idx = 0; - const char** p = &gmNames[0]; - int val = 35; - for (; *p; ++p, ++val, ++idx) { - map[idx].name = *p; - map[idx].enote = val; - map[idx].anote = val; - _inmap[int(map[idx].enote)] = idx; - _outmap[int(map[idx].anote)] = idx; - } - } - -//--------------------------------------------------------- -// init -// populate Inmap and Outmap -//--------------------------------------------------------- - -void DrumMap::init() - { - memset(_inmap, 0, sizeof(_inmap)); - memset(_outmap, 0, sizeof(_outmap)); - for (int i = 0; i < DRUM_MAPSIZE; ++i) { - _inmap[int(map[i].enote)] = i; - _outmap[int(map[i].anote)] = i; - } - } - -//--------------------------------------------------------- -// writeDrumMap -//--------------------------------------------------------- - -void DrumMap::write(Xml& xml) - { - xml.stag("drummap"); - for (int i = 0; i < DRUM_MAPSIZE; ++i) { - DrumMapEntry* dm = &map[i]; - dm->write(xml); - } - xml.etag("drummap"); - } - -//--------------------------------------------------------- -// write -//--------------------------------------------------------- - -void DrumMapEntry::write(Xml& xml) - { - xml.stag("entry"); - xml.tag("name", name); - if (quant != DEFAULT_QUANT) - xml.tag("quant", quant); - if (len != DEFAULT_LEN) - xml.tag("len", len); - if (channel != DEFAULT_CHANNEL) - xml.tag("channel", channel); - if (lv1 != DEFAULT_LV1) - xml.tag("lv1", lv1); - if (lv2 != DEFAULT_LV2) - xml.tag("lv2", lv2); - if (lv3 != DEFAULT_LV3) - xml.tag("lv3", lv3); - if (lv4 != DEFAULT_LV4) - xml.tag("lv4", lv4); - xml.tag("enote", enote); - if (anote != enote) - xml.tag("anote", anote); - xml.etag("entry"); - } - -//--------------------------------------------------------- -// read -//--------------------------------------------------------- - -void DrumMapEntry::read(QDomNode n) - { - anote = -1; - for (QDomNode node = n.firstChild(); !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - QString tag(e.tagName()); - QString s(e.text()); - if (tag == "name") - name = s; - else if (tag == "quant") - quant = s.toInt(); - else if (tag == "len") - len = s.toInt(); - else if (tag == "channel") - channel = s.toInt(); - else if (tag == "lv1") - lv1 = s.toInt(); - else if (tag == "lv2") - lv2 = s.toInt(); - else if (tag == "lv3") - lv3 = s.toInt(); - else if (tag == "lv4") - lv4 = s.toInt(); - else if (tag == "enote") - enote = s.toInt(); - else if (tag == "anote") - anote = s.toInt(); - else if (tag == "mute") - mute = s.toInt(); - else { - printf("read Drummap Entry: unknown tag %s\n", tag.toLatin1().data()); - break; - } - } - if (anote == -1) - anote = enote; - } - -//--------------------------------------------------------- -// readDrummap -//--------------------------------------------------------- - -void DrumMap::read(QDomNode node) - { - init(); - int idx = 0; - for (; !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - QString tag(e.tagName()); - - if (tag == "entry") { - QDomNode entryNode = node.firstChild(); - map[idx].read(entryNode); - _inmap[int(map[idx].enote)] = idx; - _outmap[int(map[idx].anote)] = idx; - ++idx; - } - else { - printf("read Drummap: unknown tag %s\n", tag.toLatin1().data()); - break; - } - } - } - diff --git a/muse/muse/midiedit/drummap.h b/muse/muse/midiedit/drummap.h deleted file mode 100644 index 0ec1d536..00000000 --- a/muse/muse/midiedit/drummap.h +++ /dev/null @@ -1,81 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __DRUMMAP_H__ -#define __DRUMMAP_H__ - -namespace AL { - class Xml; - }; -using AL::Xml; - -const int DRUM_MAPSIZE = 128; - -//--------------------------------------------------------- -// DrumMapEntry -//--------------------------------------------------------- - -struct DrumMapEntry { - QString name; - int quant; - int len; // len of event in ticks - int channel; // midi channel - char lv1, lv2, lv3, lv4; // velocities - char enote, anote; // input note - output note - bool mute; - - void read(QDomNode node); - void write(Xml& xml); - }; - -//--------------------------------------------------------- -// DrumMap -//--------------------------------------------------------- - -class DrumMap { - QString _name; - DrumMapEntry map[DRUM_MAPSIZE]; - char _outmap[DRUM_MAPSIZE]; - char _inmap[DRUM_MAPSIZE]; - - public: - DrumMap(const QString& name); - void init(); - void write(Xml& xml); - void read(QDomNode); - void initGm(); - DrumMapEntry* entry(int idx) { return &map[idx]; } - QString name() const { return _name; } - QString name(int i) const { return map[i].name; } - int quant(int i) const { return map[i].quant; } - int len(int i) const { return map[i].len; } - int channel(int i) const { return map[i].channel; } - int enote(int i) const { return map[i].enote; } - int anote(int i) const { return map[i].anote; } - bool mute(int i) const { return map[i].mute; } - int inmap(int i) const { return _inmap[i]; } - int outmap(int i) const { return _outmap[i]; } - }; - -extern DrumMap gmDrumMap; -extern DrumMap noDrumMap; - -#endif - diff --git a/muse/muse/midiedit/ecanvas.cpp b/muse/muse/midiedit/ecanvas.cpp deleted file mode 100644 index 8c2eefbf..00000000 --- a/muse/muse/midiedit/ecanvas.cpp +++ /dev/null @@ -1,1549 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "midieditor.h" -#include "ecanvas.h" -#include "song.h" -#include "shortcuts.h" -#include "widgets/simplebutton.h" -#include "widgets/tools.h" -#include "widgets/utils.h" -#include "part.h" -#include "audio.h" -#include "midi.h" - -//--------------------------------------------------------- -// EventCanvas -//--------------------------------------------------------- - -EventCanvas::EventCanvas(MidiEditor* pr, TimeCanvasType type) - : TimeCanvas(type) - { - setMarkerList(song->marker()); - canvasTools = 0; - curItem = 0; - curSplitter = -1; - dragSplitter = false; - - keyDown = -1; - - itemPopupMenu = 0; - canvasPopupMenu = 0; - drag = DRAG_OFF; - - editor = pr; - curVelo = 70; - - setAcceptDrops(true); - setFocusPolicy(Qt::StrongFocus); - setMouseTracking(true); - - curPart = editor->parts()->begin()->second; - connect(song, SIGNAL(midiEvent(const MidiEvent&)), SLOT(midiNote(const MidiEvent&))); - } - -//--------------------------------------------------------- -// range -//--------------------------------------------------------- - -void EventCanvas::range(AL::Pos& s, AL::Pos& e) const - { - s.setTick(startTick); - e.setTick(endTick); - } - -//--------------------------------------------------------- -// getCaption -//--------------------------------------------------------- - -QString EventCanvas::getCaption() const - { - int bar1, bar2, xx; - unsigned x; - AL::sigmap.tickValues(curPart->tick(), &bar1, &xx, &x); - AL::sigmap.tickValues(curPart->tick() + curPart->lenTick(), &bar2, &xx, &x); - - return QString("MusE: Part <") + curPart->name() - + QString("> %1-%2").arg(bar1+1).arg(bar2+1); - } - -//--------------------------------------------------------- -// startUndo -//--------------------------------------------------------- - -void EventCanvas::startUndo(DragType) - { - song->startUndo(); - } - -//--------------------------------------------------------- -// endUndo -//--------------------------------------------------------- - -void EventCanvas::endUndo(DragType dtype) - { - song->endUndo((dtype == MOVE_COPY) ? SC_EVENT_INSERTED : SC_EVENT_MODIFIED); - } - -//--------------------------------------------------------- -// updateSelection -//--------------------------------------------------------- - -void EventCanvas::updateSelection() - { - song->update(SC_SELECTION); - } - -//--------------------------------------------------------- -// songChanged(type) -// called from MidiEditor -//--------------------------------------------------------- - -void EventCanvas::songChanged(int flags) - { - if ((flags & ~SC_SELECTION) && !editor->parts()->empty()) { - items.clear(); - startTick = INT_MAX; - endTick = 0; - for (iPart p = editor->parts()->begin(); p != editor->parts()->end(); ++p) { - Part* part = p->second; - unsigned stick = part->tick(); - unsigned etick = stick + part->lenTick(); - if (stick < startTick) - startTick = stick; - if (etick > endTick) - endTick = etick; - - EventList* el = part->events(); - for (iEvent i = el->begin(); i != el->end(); ++i) { - Event e = i->second; - if (e.isNote()) - addItem(part, e); - } - } - } - - Event event; - Part* part = 0; - int x = 0; - CItem* nevent = 0; - - int n = 0; // count selections - for (iCItem k = items.begin(); k != items.end(); ++k) { - Event ev = k->second->event; - bool selected = ev.selected(); - if (selected) { - k->second->setSelected(true); - ++n; - if (!nevent) { - nevent = k->second; - Event mi = nevent->event; - curVelo = mi.velo(); - } - } - } - startTick = song->roundDownBar(startTick); - endTick = song->roundUpBar(endTick); - - if (n == 1) { - x = nevent->bbox.x(); - event = nevent->event; - part = nevent->part; - } - emit selectionChanged(x, event, part); - if (curPart) - setPart(*curPart, curPart->end()); - widget()->update(); - } - -//--------------------------------------------------------- -// selectFirst -//--------------------------------------------------------- - -void EventCanvas::selectFirst() - { - //Select leftmost note if none selected and there are any - if (!items.empty() && selectionSize() == 0) { - iCItem i = items.begin(); - if (!i->second->isSelected()) { - selectItem(i->second, true); - songChanged(SC_SELECTION); - } - } - } - -//--------------------------------------------------------- -// track -//--------------------------------------------------------- - -MidiTrack* EventCanvas::track() const - { - return (MidiTrack*)(curPart->track()); - } - -//--------------------------------------------------------- -// keyPress -//--------------------------------------------------------- - -void EventCanvas::keyPress(QKeyEvent* event) - { -#if 0 // TODOB - int key = event->key(); - if (event->modifiers() & Qt::ShiftModifier) - key += Qt::SHIFT; - if (event->modifiers() & Qt::AltModifier) - key += Qt::ALT; - if (event->modifiers() & Qt::ControlModifier) - key += Qt::CTRL; - - // - // Shortcut for DrumEditor & PianoRoll - // Sets locators to selected events - // - if (key == shortcuts[SHRT_LOCATORS_TO_SELECTION].key) { - int tick_max = 0; - int tick_min = INT_MAX; - bool found = false; - - for (iCItem i= items.begin(); i != items.end(); i++) { - if (!i->second->isSelected()) - continue; - - int tick = i->second->bbox.x(); - int len = i->second->event.lenTick(); - found = true; - if (tick + len > tick_max) - tick_max = tick + len; - if (tick < tick_min) - tick_min = tick; - } - if (found) { - Pos p1(tick_min, AL::TICKS); - Pos p2(tick_max, AL::TICKS); - song->setPos(1, p1); - song->setPos(2, p2); - } - } - // Select items by key (PianoRoll & DrumEditor) - else if (key == shortcuts[SHRT_SEL_RIGHT].key || key == shortcuts[SHRT_SEL_RIGHT_ADD].key) { - iCItem i, iRightmost; - CItem* rightmost = NULL; - //Get the rightmost selected note (if any) - for (i = items.begin(); i != items.end(); ++i) { - if (i->second->isSelected()) { - iRightmost = i; - rightmost = i->second; - } - } - if (rightmost) { - iCItem temp = iRightmost; - temp++; - //If so, deselect current note and select the one to the right - if (temp != items.end()) { - if (key != shortcuts[SHRT_SEL_RIGHT_ADD].key) - deselectAll(); - - iRightmost++; - iRightmost->second->setSelected(true); - updateSelection(); - } - } - } - //Select items by key: (PianoRoll & DrumEditor) - else if (key == shortcuts[SHRT_SEL_LEFT].key || key == shortcuts[SHRT_SEL_LEFT_ADD].key) { - iCItem i, iLeftmost; - CItem* leftmost = NULL; - for (i = items.end(), i--; i != items.begin(); i--) { - if (i->second->isSelected()) { - iLeftmost = i; - leftmost = i->second; - } - } - if (leftmost) { - if (iLeftmost != items.begin()) { - //Add item - if (key != shortcuts[SHRT_SEL_LEFT_ADD].key) - deselectAll(); - - iLeftmost--; - iLeftmost->second->setSelected(true); - updateSelection(); - } - } - } - else if (key == shortcuts[SHRT_INC_PITCH].key) { - modifySelected(NoteInfo::VAL_PITCH, 1); - } - else if (key == shortcuts[SHRT_DEC_PITCH].key) { - modifySelected(NoteInfo::VAL_PITCH, -1); - } - else if (key == shortcuts[SHRT_INC_POS].key) { - // TODO: Check boundaries - modifySelected(NoteInfo::VAL_TIME, editor->raster()); - } - else if (key == shortcuts[SHRT_DEC_POS].key) { - // TODO: Check boundaries - modifySelected(NoteInfo::VAL_TIME, 0 - editor->raster()); - } - else - event->ignore(); -#endif - } - -//--------------------------------------------------------- -// mousePressCanvasA -//--------------------------------------------------------- - -void EventCanvas::mousePressCanvasA(QMouseEvent* me) - { - QPoint p(me->pos() - rCanvasA.topLeft()); - - // special events if right button is clicked while operations - // like moving or drawing lasso is performed. - - if (button == Qt::RightButton) { - switch (drag) { - case DRAG_LASSO: - drag = DRAG_OFF; - widget()->update(); - return; - case DRAG_MOVE: - drag = DRAG_OFF; - endMoveItems(MOVE_MOVE); - return; - default: - break; - } - } - // ignore event if (another) button is already active: - if (me->buttons() & (Qt::LeftButton | Qt::RightButton | Qt::MidButton) - & ~button) - return; - - bool shift = keyState & Qt::ShiftModifier; - bool ctrl = keyState & Qt::ControlModifier; - start = p; - startPitch = y2pitch(start.y()); - deltaPitch = 0; - - //--------------------------------------------------- - // set curItem to item mouse is pointing - // (if any) - //--------------------------------------------------- - - curItem = searchItem(start); - if (curItem && editor->playEvents()) { - int pitch = curItem->event.pitch() + track()->transposition(); - MidiEvent e(0, 0, ME_NOTEON, pitch, curItem->event.velo()); - track()->playMidiEvent(&e); - } - - if (curItem && (button == Qt::MidButton)) { - if (!curItem->isSelected()) { - selectItem(curItem, true); - updateSelection(); - widget()->update(); - } - startDrag(curItem, shift); - } - else if (button == Qt::RightButton) { - if (curItem) { - if (shift) { - drag = DRAG_RESIZE; - setCursor(); - Pos p1(curItem->bbox.x(), timeType()); - Pos p2(pix2pos(start.x())); - curItem->bbox.setWidth(p2.time(timeType())-p1.time(timeType())); - - start.setX(curItem->bbox.x()); - deselectAll(); - selectItem(curItem, true); - updateSelection(); - widget()->update(); - } - else { - itemPopupMenu = genItemPopup(curItem); - if (itemPopupMenu) { - QAction* a = itemPopupMenu->exec(QCursor::pos()); - if (a) { - int n = a->data().toInt(); - itemPopup(curItem, n, start); - } - delete itemPopupMenu; - } - } - } - else { - canvasPopupMenu = genCanvasPopup(); - if (canvasPopupMenu) { - QAction* a = canvasPopupMenu->exec(QCursor::pos(), 0); - if (a) { - int n = a->data().toInt(); - canvasPopup(n); - } - delete canvasPopupMenu; - } - } - } - else if (button == Qt::LeftButton) { - switch (_tool) { - case PointerTool: - if (curItem) { - itemPressed(curItem); - if (curItem->part != curPart) - setCurPart(curItem->part); - if (shift && !ctrl) - drag = DRAG_COPY_START; - else if (!shift && ctrl) { - //Select all on the same pitch - deselectAll(); - int pitch = curItem->event.pitch(); - for (iCItem i = items.begin(); i != items.end(); ++i) { - if (i->second->event.pitch() == pitch) - selectItem(i->second, true); - } - updateSelection(); - widget()->update(); - drag = DRAG_MOVE_START; - } - else - drag = DRAG_MOVE_START; - } - else - drag = DRAG_LASSO_START; - setCursor(); - break; - - case RubberTool: - deleteItem(p); - drag = DRAG_DELETE; - setCursor(); - break; - - case PencilTool: - if (curItem) { - drag = DRAG_RESIZE; - setCursor(); - - Pos p1(curItem->bbox.x(), timeType()); - Pos p2(pix2pos(start.x())); - int w = p2.time(timeType()) - p1.time(timeType()); - curItem->bbox.setWidth(w); - start.setX(curItem->bbox.x()); - start.setY(curItem->bbox.y()); - } - else { - drag = DRAG_NEW; - setCursor(); - curItem = newItem(start, keyState); - if (curItem) { - items.add(curItem); - if (editor->playEvents()) { - int pitch = curItem->event.pitch() + track()->transposition(); - MidiEvent e(0, 0, ME_NOTEON, pitch, curItem->event.velo()); - track()->playMidiEvent(&e); - } - } - else { - drag = DRAG_OFF; - setCursor(); - } - } - deselectAll(); - if (curItem) - selectItem(curItem, true); - updateSelection(); - widget()->update(); - break; - - default: - break; - } - } - } - -//--------------------------------------------------------- -// mouseMoveCanvasA -// pos is relative to CanvasA -//--------------------------------------------------------- - -void EventCanvas::mouseMoveCanvasA(QPoint pos) - { - QPoint dist = pos - start; - bool isMoving = dist.manhattanLength() >= QApplication::startDragDistance(); - - switch (drag) { - case DRAG_LASSO_START: - if (!isMoving) - break; - drag = DRAG_LASSO; - setCursor(); - // proceed with DRAG_LASSO: - - case DRAG_LASSO: - lasso = QRect(start, QSize(dist.x(), dist.y())); - widget()->update(); - break; - - case DRAG_MOVE_START: - case DRAG_COPY_START: - if (!isMoving) - break; - { - bool shift = keyState & Qt::ShiftModifier; - bool ctrl = keyState & Qt::ControlModifier; - if (shift && ctrl) { - if (qAbs(dist.x()) > qAbs(dist.y())) { - if (drag == DRAG_MOVE_START) - drag = DRAGX_MOVE; - else - drag = DRAGX_COPY; - } - else { - if (drag == DRAG_MOVE_START) - drag = DRAGY_MOVE; - else - drag = DRAGY_COPY; - } - } - else { - if (drag == DRAG_MOVE_START) - drag = DRAG_MOVE; - else - drag = DRAG_COPY; - } - setCursor(); - if (!curItem->isSelected()) { - if (drag == DRAG_MOVE) - deselectAll(); - selectItem(curItem, true); - updateSelection(); - widget()->update(); - } - for (iCItem i = items.begin(); i != items.end(); ++i) { - if (i->second->isSelected()) { - i->second->isMoving = true; - moving.add(i->second); - } - } - moveItems(pos, 0); - } - break; - - case DRAG_MOVE: - case DRAG_COPY: - moveItems(pos, 0); - break; - - case DRAGX_MOVE: - case DRAGX_COPY: - moveItems(pos, 1); - break; - - case DRAGY_MOVE: - case DRAGY_COPY: - moveItems(pos, 2); - break; - - case DRAG_NEW: - case DRAG_RESIZE: - if (dist.x()) { - Pos p1(curItem->bbox.x(), timeType()); - Pos p2(pix2pos(pos.x())); - int w = p2.time(timeType()) - p1.time(timeType()); - if (w < 1) - w = 1; - curItem->bbox.setWidth(w); - widget()->update(); - } - break; - case DRAG_DELETE: - deleteItem(pos); - break; - - case DRAG_OFF: - break; - } - } - -//--------------------------------------------------------- -// mouseReleaseCanvasA -//--------------------------------------------------------- - -void EventCanvas::mouseReleaseCanvasA(QMouseEvent* me) - { - if (curItem && editor->playEvents()) { - int pitch = curItem->event.pitch() + track()->transposition(); - MidiEvent e(0, 0, ME_NOTEON, pitch, 0); - track()->playMidiEvent(&e); - } - // ignore event if (another) button is already active: - - if (me->buttons() & (Qt::LeftButton | Qt::RightButton | Qt::MidButton) - & ~button) - return; - - bool shift = keyState & Qt::ShiftModifier; - bool ctrl = keyState & Qt::ControlModifier; - bool redrawFlag = false; - - switch (drag) { - case DRAG_MOVE_START: - case DRAG_COPY_START: - if (!(shift || ctrl)) - deselectAll(); - if (!ctrl) - selectItem(curItem, !(shift && curItem->isSelected())); - updateSelection(); - redrawFlag = true; - itemReleased(); - break; - case DRAG_COPY: - case DRAGX_COPY: - case DRAGY_COPY: - endMoveItems(MOVE_COPY); - break; - case DRAG_MOVE: - case DRAGX_MOVE: - case DRAGY_MOVE: - endMoveItems(MOVE_MOVE); - break; - case DRAG_OFF: - break; - case DRAG_RESIZE: - resizeItem(curItem, false); - break; - case DRAG_NEW: - newItem(curItem, false); - redrawFlag = true; - break; - case DRAG_LASSO_START: - lasso.setRect(-1, -1, -1, -1); - if (!shift) - deselectAll(); - updateSelection(); - redrawFlag = true; - break; - - case DRAG_LASSO: - if (!shift) - deselectAll(); - lasso = lasso.normalized(); - selectLasso(shift); - updateSelection(); - redrawFlag = true; - break; - - case DRAG_DELETE: - break; - } - drag = DRAG_OFF; - if (redrawFlag) - widget()->update(); - setCursor(); - } - - -//--------------------------------------------------------- -// endMoveItems -//--------------------------------------------------------- - -void EventCanvas::endMoveItems(DragType dragtype) - { - startUndo(dragtype); - - for (iCItem i = moving.begin(); i != moving.end(); ++i) { - selectItem(i->second, true); - moveItem(i->second, dragtype); -//TD if (moving.size() == 1) { -// itemReleased(); -// } - if (dragtype == MOVE_COPY) - selectItem(i->second, false); - } - endUndo(dragtype); - moving.clear(); - updateSelection(); - widget()->update(); - } - -//--------------------------------------------------------- -// selectItem -//--------------------------------------------------------- - -void EventCanvas::selectItem(CItem* e, bool flag) - { - e->setSelected(flag); - } - -//--------------------------------------------------------- -// deselectAll -//--------------------------------------------------------- - -void EventCanvas::deselectAll() - { - for (iCItem i = items.begin(); i != items.end(); ++i) - i->second->setSelected(false); - } - -//--------------------------------------------------------- -// genCanvasPopup -//--------------------------------------------------------- - -QMenu* EventCanvas::genCanvasPopup() - { - if (canvasTools == 0) - return 0; - QMenu* canvasPopup = new QMenu(this); - - for (int i = 0; i < TOOLS; ++i) { - int data = 1 << i; - if ((canvasTools & data) == 0) - continue; - QAction* a = getAction(toolList[i], this); - a->setData(data); - a->setCheckable(true); - a->setChecked(data == int(_tool)); - canvasPopup->addAction(a); - } - return canvasPopup; - } - -//--------------------------------------------------------- -// canvasPopup -//--------------------------------------------------------- - -void EventCanvas::canvasPopup(int n) - { - setTool(n); - } - -//--------------------------------------------------------- -// setCursor -//--------------------------------------------------------- - -void EventCanvas::setCursor() - { - if (curSplitter != -1) { - widget()->setCursor(Qt::SplitVCursor); - return; - } - switch (drag) { - case DRAGX_MOVE: - case DRAGX_COPY: - widget()->setCursor(QCursor(Qt::SizeHorCursor)); - break; - - case DRAGY_MOVE: - case DRAGY_COPY: - widget()->setCursor(QCursor(Qt::SizeVerCursor)); - break; - - case DRAG_MOVE: - case DRAG_COPY: - widget()->setCursor(QCursor(Qt::SizeAllCursor)); - break; - - case DRAG_RESIZE: - widget()->setCursor(QCursor(Qt::SizeHorCursor)); - break; - - case DRAG_DELETE: - case DRAG_COPY_START: - case DRAG_MOVE_START: - case DRAG_NEW: - case DRAG_LASSO_START: - case DRAG_LASSO: - case DRAG_OFF: - TimeCanvas::setCursor(); - break; - } - } - -//--------------------------------------------------------- -// deleteItem -// p is relative to CanvasA -//--------------------------------------------------------- - -void EventCanvas::deleteItem(const QPoint& p) - { - Pos pos(pix2pos(p.x())); - int pitch(y2pitch(p.y())); - -// printf("%d %d - %d %d\n", p.x(), p.y(), pos.tick(), pitch); - - pos -= *curPart; - for (iCItem i = items.begin(); i != items.end(); ++i) { - Event& event = i->second->event; - if (event.pitch() == pitch - && (pos >= event.pos()) - && (pos < event.end())) { - deleteItem(i->second); - break; - } - } - } - -//--------------------------------------------------------- -// moveItems -// dir = 0 move in all directions -// 1 move only horizontal -// 2 move only vertical -//--------------------------------------------------------- - -void EventCanvas::moveItems(const QPoint& pos, int dir) - { - int dpitch = y2pitch(pos.y()) - startPitch; - - Pos sp(pix2pos(start.x())); - Pos cp(pix2pos(pos.x())); - - bool left = sp > cp; - Pos dx(left ? sp - cp : cp - sp); - - if (dir == 2) - dx.setTick(0); - - for (iCItem i = moving.begin(); i != moving.end(); ++i) { - CItem* item = i->second; - Pos p; - if (left) { - // - // restrict movement to pos >= 0 - // - if (dx > item->pos) - p.setTick(0); - else - p = item->pos - dx; - } - else - p = item->pos + dx; - p.snap(raster()); - - if (p < *curPart) - p = *curPart; - - if (item->moving != p || dpitch != deltaPitch) { - item->moving = p; - if (dir != 1) - item->my = pitch2y(item->event.pitch() + dpitch) - + (int)(wpos.y() / _ymag); - itemMoved(item); - } - } - deltaPitch = dpitch; - widget()->update(); - } - -//--------------------------------------------------------- -// selectionSize -//--------------------------------------------------------- - -int EventCanvas::selectionSize() const - { - int n = 0; - for (ciCItem i = items.begin(); i != items.end(); ++i) { - if (i->second->isSelected()) - ++n; - } - return n; - } - -//--------------------------------------------------------- -// layout -// called after resize -//--------------------------------------------------------- - -void EventCanvas::layout() - { - int n = ctrlEditList.size(); - if (n == 0) - return; - if (ctrlHeight == 0) { - int wh = widget()->height(); - resizeController(wh < 120 ? wh / 2 : 100); - } - - // check, if layout is ok already; this happens after - // song load - int h = 0; - for (iCtrlEdit i = ctrlEditList.begin(); i != ctrlEditList.end(); ++i) { - CtrlEdit* c = *i; - h += c->height(); - } - if (h == ctrlHeight) { - for (iCtrlEdit i = ctrlEditList.begin(); i != ctrlEditList.end(); ++i) - layoutPanelB(*i); - return; - } - - int y = 0; - int sch = ctrlHeight / n; - for (iCtrlEdit i = ctrlEditList.begin(); i != ctrlEditList.end(); ++i) { - CtrlEdit* c = *i; - c->y = y; - c->setHeight(sch); - layoutPanelB(c); - y += sch; - } - } - -//--------------------------------------------------------- -// layout1 -// called after read song -//--------------------------------------------------------- - -void EventCanvas::layout1() - { - int n = ctrlEditList.size(); - if (n == 0) - return; - int y = 0; - for (iCtrlEdit i = ctrlEditList.begin(); i != ctrlEditList.end(); ++i) { - CtrlEdit* c = *i; - c->y = y; - y += c->height(); - } - resizeController(y); - } - -//--------------------------------------------------------- -// layoutPanelB -//--------------------------------------------------------- - -void EventCanvas::layoutPanelB(CtrlEdit* c) - { - int y = c->y; - int h = c->height(); - int bx = rPanelB.x() + rPanelB.width() - 23; - int by = rPanelB.y() + y + h - 19; - c->minus->setGeometry(bx, by, 18, 18); - bx = rPanelB.x() + 1; - by = rPanelB.y() + y + 5; - c->sel->setGeometry(bx, by, rPanelB.width()-5, 18); - } - -//--------------------------------------------------------- -// addController -//--------------------------------------------------------- - -void EventCanvas::addController() - { - int n = ctrlEditList.size(); - CtrlEdit* ce = new CtrlEdit(widget(), this, track()); - ce->setHeight(50); - ctrlEditList.push_back(ce); - - ce->minus->defaultAction()->setData(n); - connect(ce->minus, SIGNAL(triggered(QAction*)), SLOT(removeController(QAction*))); - ce->minus->show(); - ce->sel->show(); - - layout(); - widget()->update(); - updatePartControllerList(); - } - -void EventCanvas::addController(int id, int h) - { - ctrlHeight += h; - int n = ctrlEditList.size(); - - CtrlEdit* ce = new CtrlEdit(widget(), this, track()); - ce->setHeight(h); - ce->setCtrl(id); - ctrlEditList.push_back(ce); - - ce->minus->defaultAction()->setData(n); - connect(ce->minus, SIGNAL(triggered(QAction*)), SLOT(removeController(QAction*))); - } - -//--------------------------------------------------------- -// paintControllerCanvas -// r(0, 0) is PanelB topLeft() -//--------------------------------------------------------- - -void EventCanvas::paintControllerCanvas(QPainter& p, QRect r) - { - int x1 = r.x(); - int x2 = x1 + r.width(); - - int xx2 = rCanvasB.width(); - if (xx2 >= x2) - x2 = xx2 - 2; - for (iCtrlEdit i = ctrlEditList.begin(); i != ctrlEditList.end(); ++i) { - CtrlEdit* c = *i; - int y = c->y; - paintHLine(p, x1, x2, y); - p.setPen(lineColor[0]); - p.drawLine(xx2-1, 1, xx2-1, splitWidth-2); - - QRect rc(0, y + splitWidth, rCanvasB.width(), c->cheight()); - QPoint pt(rc.topLeft()); - rc &= r; - if (!rc.isEmpty()) { - p.translate(pt); - c->paint(p, rc.translated(-pt)); - p.translate(-pt); - } - } - } - -//--------------------------------------------------------- -// paintControllerPanel -// panelB -//--------------------------------------------------------- - -void EventCanvas::paintControllerPanel(QPainter& p, QRect r) - { - p.fillRect(r, QColor(0xe0, 0xe0, 0xe0)); - int x1 = r.x(); - int x2 = x1 + r.width(); - - paintVLine(p, r.y() + splitWidth, r.y() + r.height(), - rPanelB.x() + rPanelB.width()); - - if (x1 == 0) - x1 = 1; - for (iCtrlEdit i = ctrlEditList.begin(); i != ctrlEditList.end(); ++i) { - CtrlEdit* c = *i; - paintHLine(p, x1, x2, c->y); - p.setPen(lineColor[0]); - p.drawLine(0, 1, 0, splitWidth-2); - } - } - -//--------------------------------------------------------- -// removeController -//--------------------------------------------------------- - -void EventCanvas::removeController(QAction* a) - { - int id = a->data().toInt(); - - int k = 0; - for (iCtrlEdit i = ctrlEditList.begin(); i != ctrlEditList.end(); ++i, ++k) { - if (k == id) { - CtrlEdit* c = *i; - delete c; - ctrlEditList.erase(i); - break; - } - } - k = 0; - for (iCtrlEdit i = ctrlEditList.begin(); i != ctrlEditList.end(); ++i, ++k) { - CtrlEdit* c = *i; - c->minus->defaultAction()->setData(k); - } - - if (ctrlEditList.empty()) - resizeController(0); - else - layout(); - widget()->update(); - updatePartControllerList(); - } - -//--------------------------------------------------------- -// enterB -//--------------------------------------------------------- - -void EventCanvas::enterB() - { - if ((button == 0) && curSplitter != -1) { - curSplitter = -1; - setCursor(); - } - } - -//--------------------------------------------------------- -// leaveB -//--------------------------------------------------------- - -void EventCanvas::leaveB() - { - if ((button == 0) && (curSplitter != -1)) { - curSplitter = -1; - setCursor(); - } - } - -//--------------------------------------------------------- -// noteOn -//--------------------------------------------------------- - -void EventCanvas::noteOn(int pitch, int velocity, bool shift) - { - DrumMap* dm = track()->drumMap(); - if (!dm) - pitch += track()->transposition(); - - // play note: - if (editor->playEvents()) { - MidiEvent e(0, 0, ME_NOTEON, pitch, velocity); - track()->playMidiEvent(&e); - } - - if (curPart && editor->stepRec() - && pos[0].tick() >= startTick - && pos[0].tick() < endTick) { - int len = editor->quant(); - unsigned tick = pos[0].tick() - curPart->tick(); //CDW - if (shift) - tick -= editor->rasterStep(tick); - Event e(Note); - e.setTick(tick); - e.setPitch(pitch); - e.setVelo(127); - e.setLenTick(len); - audio->msgAddEvent(e, curPart); - tick += editor->rasterStep(tick) + curPart->tick(); - if (tick != song->cpos()) { - Pos p(tick, AL::TICKS); - song->setPos(0, p, true, false, true); - } - } - } - -//--------------------------------------------------------- -// noteOff -//--------------------------------------------------------- - -void EventCanvas::noteOff(int pitch) - { - if (!editor->playEvents()) - return; - DrumMap* dm = track()->drumMap(); - if (!dm) - pitch += track()->transposition(); - - // release key: - MidiEvent e(0, 0, ME_NOTEON, pitch, 0); - track()->playMidiEvent(&e); - } - -//--------------------------------------------------------- -// mouseDoubleClick -//--------------------------------------------------------- - -void EventCanvas::mouseDoubleClick(QMouseEvent* me) - { - mousePress(me); - } - -//--------------------------------------------------------- -// mousePress -//--------------------------------------------------------- - -void EventCanvas::mousePress(QMouseEvent* me) - { - QPoint pos(me->pos()); - if (rPanelA.contains(pos)) { - bool shift = keyState & Qt::ShiftModifier; - if (keyDown != -1) { - noteOff(keyDown); - keyDown = -1; - } - keyDown = y2pitch(pos.y() - rCanvasA.y()); - int velocity = me->x()*127/40; - if (keyDown != -1) - noteOn(keyDown, velocity, shift); - return; - } - if (rCanvasA.contains(pos)) { - mousePressCanvasA(me); - return; - } - if (curSplitter != -1) { - dragSplitter = true; - splitterY = pos.y(); - return; - } - if (rCanvasB.contains(pos)) { - for (iCtrlEdit i = ctrlEditList.begin(); i != ctrlEditList.end(); ++i) { - CtrlEdit* c = *i; - QRect r(rCanvasB.x(), rCanvasB.y() + c->y + splitWidth, - rCanvasB.width(), c->cheight()); - if (r.contains(pos)) { - c->mousePress(pos - r.topLeft(), me); - break; - } - } - } - } - -//--------------------------------------------------------- -// mouseMove -//--------------------------------------------------------- - -void EventCanvas::mouseMove(QPoint pos) - { - if (rPanelA.contains(pos) || rCanvasA.contains(pos)) { - int y = pos.y() - rCanvasA.y(); - int pitch = y2pitch(y); - if (curPitch != pitch) { - curPitch = pitch; - widget()->update(rPanelA); // update keyboard - emit pitchChanged(curPitch); - if (button != Qt::NoButton) { - if (keyDown != -1 && curPitch != -1) { - bool shift = keyState & Qt::ShiftModifier; - if (curPitch != keyDown) { - noteOff(keyDown); - keyDown = curPitch; - int velocity = std::min(pos.x()*127/40, 127); - noteOn(keyDown, velocity, shift); - } - } - } - } - } - if (dragSplitter) { - int deltaY = pos.y() - splitterY; - - iCtrlEdit i = ctrlEditList.begin(); - int y = 0; - if (curSplitter > 0) { - int k = 0; - CtrlEdit* c = 0; - for (; i != ctrlEditList.end(); ++i, ++k) { - c = *i; - y += c->height(); - if ((k+1) == curSplitter) - break; - } - if (i == ctrlEditList.end()) { - printf("unexpected edit list end, curSplitter %d\n", curSplitter); - return; - } - if (c->height() + deltaY < splitWidth) - deltaY = splitWidth - c->height(); - ++i; - int rest = 0; - for (iCtrlEdit ii = i; ii != ctrlEditList.end(); ++ii) - rest += (*ii)->cheight(); - if (rest < deltaY) - deltaY = rest; - c->setHeight(c->height() + deltaY); - layoutPanelB(c); - y += deltaY; - } - // - // layout rest, add deltaY vertical - // - int rest = 0; - for (iCtrlEdit ii = i; ii != ctrlEditList.end(); ++ii) { - CtrlEdit* c = *ii; - rest += c->cheight(); - } - if (rest < deltaY) - deltaY = rest; - rest = deltaY; - for (; i != ctrlEditList.end(); ++i) { - CtrlEdit* c = *i; - int d = c->cheight(); - if (d > deltaY) - d = deltaY; - c->setHeight(c->height() - d); - c->y = y; - layoutPanelB(c); - y += c->height(); - deltaY -= d; - if (deltaY == 0) - break; - } - if (i != ctrlEditList.end()) - ++i; - for (; i != ctrlEditList.end(); ++i) { - CtrlEdit* c = *i; - c->y = y; - y += c->height(); - } - if (curSplitter == 0) - resizeController(ctrlHeight - rest); - else - widget()->update(rPanelB | rCanvasB); - splitterY = pos.y(); - updatePartControllerList(); - return; - } - if (rCanvasA.contains(pos)) { - mouseMoveCanvasA(pos - rCanvasA.topLeft()); - return; - } - if (button == 0) { - if (rPanelB.contains(pos) || rCanvasB.contains(pos)) { - int y = pos.y() - rPanelB.y(); - int k = 0; - for (iCtrlEdit i = ctrlEditList.begin(); i != ctrlEditList.end(); ++i, ++k) { - CtrlEdit* c = *i; - if (y >= c->y && y < (c->y + splitWidth)) { - curSplitter = k; - setCursor(); - return; - } - int ypos = y - c->y - splitWidth; - if (ypos >= 0) - emit yChanged(c->pixel2val(ypos)); - } - } - if (curSplitter != -1) { - curSplitter = -1; - setCursor(); - } - return; - } - if (rCanvasB.contains(pos)) { - for (iCtrlEdit i = ctrlEditList.begin(); i != ctrlEditList.end(); ++i) { - CtrlEdit* c = *i; - QRect r(rCanvasB.x(), rCanvasB.y() + c->y + splitWidth, - rCanvasB.width(), c->cheight()); - if (r.contains(pos)) { - c->mouseMove(pos - r.topLeft()); - break; - } - } - } - } - -//--------------------------------------------------------- -// mouseRelease -//--------------------------------------------------------- - -void EventCanvas::mouseRelease(QMouseEvent* me) - { - if (keyDown != -1) { - noteOff(keyDown); - keyDown = -1; - } - if (dragSplitter) { - dragSplitter = false; - return; - } - QPoint pos(me->pos()); - if (rCanvasA.contains(pos)) { - mouseReleaseCanvasA(me); - return; - } - if (rCanvasB.contains(pos)) { - for (iCtrlEdit i = ctrlEditList.begin(); i != ctrlEditList.end(); ++i) { - CtrlEdit* c = *i; - QRect r(rCanvasB.x(), rCanvasB.y() + c->y + splitWidth, - rCanvasB.width(), c->cheight()); - if (r.contains(pos)) { - c->mouseRelease(); - break; - } - } - } - } - -//--------------------------------------------------------- -// setCurPart -//--------------------------------------------------------- - -void EventCanvas::setCurPart(Part* part) - { - curPart = part; - - if (curPart->raster() != -1) - editor->setRaster(curPart->raster()); - if (curPart->quant() != -1) - editor->setQuant(curPart->quant()); - if (curPart->xmag() != 0.0) - editor->setXmag(curPart->xmag()); - curPart->setRaster(editor->raster()); - curPart->setQuant(editor->quant()); - curPart->setXmag(editor->xmag()); - setPart(*curPart, curPart->end()); - editor->setWindowTitle(getCaption()); - } - -//--------------------------------------------------------- -// getTextDrag -//--------------------------------------------------------- - -QMimeData* EventCanvas::getTextDrag() - { - //--------------------------------------------------- - // generate event list from selected events - //--------------------------------------------------- - - EventList el; - unsigned startTick = INT_MAX; - for (iCItem i = items.begin(); i != items.end(); ++i) { - if (!i->second->isSelected()) - continue; - CItem* ne = i->second; - Event e = ne->event; - if (startTick == INT_MAX) - startTick = e.tick(); - el.add(e); - } - QBuffer buffer; - buffer.open(QIODevice::WriteOnly); - Xml xml(&buffer); - xml.header(); - - xml.stag("eventlist"); - for (ciEvent e = el.begin(); e != el.end(); ++e) - e->second.write(xml, -startTick); - xml.etag("eventlist"); - - QByteArray data = buffer.buffer(); - QMimeData* drag = new QMimeData; - drag->setData("text/x-muse-eventlist", data); - buffer.close(); - return drag; - } - -//--------------------------------------------------------- -// pasteAt -//--------------------------------------------------------- - -void EventCanvas::pasteAt(const QString& pt, unsigned pos) - { - QDomDocument doc; - - if (!doc.setContent(pt, false)) { - printf("MusE:pasteAt(): syntax error\n"); - printf(">>%s<<\n", pt.toLatin1().data()); - return; - } - for (QDomNode node = doc.documentElement(); !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - if (e.isNull()) - continue; - if (e.tagName() == "eventlist") { - EventList el; - el.read(node.firstChild(), true); - song->startUndo(); - for (iEvent i = el.begin(); i != el.end(); ++i) { - Event e = i->second; - e.setTick(e.tick() + pos - curPart->tick()); - audio->msgAddEvent(e, curPart, false); - } - song->endUndo(SC_EVENT_INSERTED); - } - else - printf("MusE:pasteAt(): tag %s not supported\n", e.tagName().toLatin1().data()); - } - } - -//--------------------------------------------------------- -// midiNote -//--------------------------------------------------------- - -void EventCanvas::midiNote(const MidiEvent& me) - { - if (me.type() != ME_NOTEON) - return; - int pitch = me.dataA(); - int velo = me.dataB(); - - if (editor->midiIn() && editor->stepRec() && curPart - && !audio->isPlaying() && velo && pos[0].tick() >= startTick - && pos[0].tick() < endTick - && !(keyState & Qt::AltModifier)) { - int len = editor->quant(); - unsigned tick = pos[0].tick(); //CDW - unsigned starttick = tick; - if (keyState & Qt::ShiftModifier) - tick -= editor->rasterStep(tick); - - // - // extend len of last note? - // - EventList* events = curPart->events(); - if (keyState & Qt::ControlModifier) { - for (iEvent i = events->begin(); i != events->end(); ++i) { - Event ev = i->second; - if (!ev.isNote()) - continue; - if (ev.pitch() == pitch && ((ev.tick() + ev.lenTick()) == starttick)) { - Event e = ev.clone(); - e.setLenTick(ev.lenTick() + editor->rasterStep(starttick)); - audio->msgChangeEvent(ev, e, curPart); - tick += editor->rasterStep(tick); - if (tick != song->cpos()) { - Pos p(tick, AL::TICKS); - song->setPos(0, p, true, false, true); - } - return; - } - } - } - - // - // if we already entered the note, delete it - // - EventRange range = events->equal_range(tick); - for (iEvent i = range.first; i != range.second; ++i) { - Event ev = i->second; - if (ev.isNote() && ev.pitch() == pitch) { - audio->msgDeleteEvent(ev, curPart); - if (keyState & Qt::ShiftModifier) - tick += editor->rasterStep(tick); - return; - } - } - Event e(Note); - e.setTick(tick - curPart->tick()); - e.setPitch(pitch); - e.setVelo(velo); - e.setLenTick(len); - audio->msgAddEvent(e, curPart); - tick += editor->rasterStep(tick); - if (tick != song->cpos()) { - Pos p(tick, AL::TICKS); - song->setPos(0, p, true, false, true); - } - } - } - -//--------------------------------------------------------- -// magChanged -//--------------------------------------------------------- - -void EventCanvas::magChanged() - { - if (part()) { - part()->setXmag(_xmag); - } - } - -//--------------------------------------------------------- -// updatePartControllerList -//--------------------------------------------------------- - -void EventCanvas::updatePartControllerList() - { - if (curPart == 0) - return; - CtrlCanvasList* cl = curPart->getCtrlCanvasList(); - cl->clear(); - for (iCtrlEdit i = ctrlEditList.begin(); i != ctrlEditList.end(); ++i) { - CtrlCanvas cc; - cc.ctrlId = (*i)->ctrlId; - cc.height = (*i)->height(); - cl->push_back(cc); - } - } - diff --git a/muse/muse/midiedit/ecanvas.h b/muse/muse/midiedit/ecanvas.h deleted file mode 100644 index f128e5fa..00000000 --- a/muse/muse/midiedit/ecanvas.h +++ /dev/null @@ -1,173 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __ECANVAS_H__ -#define __ECANVAS_H__ - -#include "al/pos.h" -#include "awl/tcanvas.h" -#include "widgets/noteinfo.h" -#include "citem.h" -#include "ctrl/ctrledit.h" -#include "widgets/tb1.h" - -class MidiTrack; -class MidiEditor; -class MidiEvent; -class Part; -class Event; -class CtrlEdit; - -//--------------------------------------------------------- -// EventCanvas -//--------------------------------------------------------- - -class EventCanvas : public TimeCanvas { - Q_OBJECT - - int startPitch; // on start dragging events - int deltaPitch; - int keyDown; // pressed key on piano keypad (or drum instrument list) - int playedPitch; - - void noteOn(int pitch, int velocity, bool shift); - void noteOff(int pitch); - virtual void layout(); - virtual void magChanged(); - - protected: - enum DragMode { - DRAG_OFF, DRAG_NEW, - DRAG_MOVE_START, DRAG_MOVE, - DRAG_COPY_START, DRAG_COPY, - DRAGX_MOVE, DRAGY_MOVE, - DRAGX_COPY, DRAGY_COPY, - DRAG_DELETE, - DRAG_RESIZE, DRAG_LASSO_START, DRAG_LASSO, - }; - - enum DragType { - MOVE_MOVE, MOVE_COPY - }; - - CtrlEditList ctrlEditList; - MidiEditor* editor; - CItemList items; - CItemList moving; - CItem* curItem; - Part* curPart; - int canvasTools; - int curSplitter; // -1 mouse not in splitter - bool dragSplitter; - int splitterY; - - DragMode drag; - QRect lasso; - QPoint start; - QMenu* itemPopupMenu; - QMenu* canvasPopupMenu; - - unsigned startTick, endTick; - int curVelo; - - virtual void mousePress(QMouseEvent*); - virtual void mouseDoubleClick(QMouseEvent*); - virtual void mouseMove(QPoint); - virtual void enterB(); - virtual void leaveB(); - virtual void mouseRelease(QMouseEvent*); - void layoutPanelB(CtrlEdit* c); - - void updateSelection(); - virtual CItem* searchItem(const QPoint& p) const = 0; - virtual void addItem(Part*, const Event&) = 0; - virtual void moveItem(CItem*, DragType) = 0; - virtual CItem* newItem(const QPoint&, int state) = 0; - virtual void newItem(CItem*, bool noSnap=false) = 0; - virtual bool deleteItem(CItem*) = 0; - virtual void resizeItem(CItem*, bool noSnap=false) = 0; - - virtual void startDrag(CItem*, bool) {} - virtual QMenu* genItemPopup(CItem*) { return 0; } - virtual void itemPopup(CItem*, int, const QPoint&) {} - virtual void itemReleased() {} - virtual void itemPressed(const CItem*) {} - virtual void itemMoved(const CItem*) {} - - virtual void addController(); - - void endMoveItems(DragType); - virtual void selectItem(CItem* e, bool); - virtual void deselectAll(); - QMenu* genCanvasPopup(); - void canvasPopup(int); - virtual void startUndo(DragType); - virtual void endUndo(DragType); - virtual void selectLasso(bool) {} - void setCursor(); - virtual void deleteItem(const QPoint&); - void moveItems(const QPoint& pos, int dir); - void mousePressCanvasA(QPoint pos); - void mousePressCanvasA(QMouseEvent*); - void mouseMoveCanvasA(QPoint pos); - void mouseReleaseCanvasA(QMouseEvent*); - - virtual void paintControllerCanvas(QPainter&, QRect); - virtual void paintControllerPanel(QPainter&, QRect); - - void pasteAt(const QString& pt, unsigned pos); - void updatePartControllerList(); - - private slots: - void removeController(QAction*); - void midiNote(const MidiEvent&); - - public slots: - void setQuant(int) { update(); } - void songChanged(int); - - signals: - void selectionChanged(int, Event&, Part*); - void enterCanvas(); - void yChanged(int); // emitted from mouseMove in controller canvas - - public: - EventCanvas(MidiEditor*, TimeCanvasType); - MidiTrack* track() const; - Part* part() const { return curPart; } - QString getCaption() const; - void range(AL::Pos& s, AL::Pos& e) const; - void selectFirst(); - virtual void modifySelected(NoteInfo::ValType, int) {} - virtual void keyPress(QKeyEvent*); - int selectionSize() const; - void setCurPart(Part*); - QMimeData* getTextDrag(); - CItemList* getItems() { return &items; } - CtrlEditList* getCtrlEditors() { return &ctrlEditList; } - const CtrlEditList* getCtrlEditors() const { return &ctrlEditList; } - void addController(int id, int h); - void layout1(); - }; - -extern void paintVLine(QPainter& p, int y1, int y2, int x); - -#endif - diff --git a/muse/muse/midiedit/gatetime.cpp b/muse/muse/midiedit/gatetime.cpp deleted file mode 100644 index 862d4aaf..00000000 --- a/muse/muse/midiedit/gatetime.cpp +++ /dev/null @@ -1,105 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "gatetime.h" -#include "song.h" -#include "tb1.h" - -//--------------------------------------------------------- -// GateTime -//--------------------------------------------------------- - -GateTime::GateTime(QWidget*) - : MidiCmdDialog() - { - setWindowTitle(tr("MusE: Modify Gate Time")); - QWidget* gateTime = new QWidget; - gt.setupUi(gateTime); - layout->addWidget(gateTime); - layout->addStretch(10); - _rateVal = 0; - _offsetVal = 0; - gt.rate->setValue(_rateVal); - gt.offset->setValue(_offsetVal); - } - -//--------------------------------------------------------- -// accept -//--------------------------------------------------------- - -void GateTime::accept() - { - _rateVal = gt.rate->value(); - _offsetVal = gt.offset->value(); - MidiCmdDialog::accept(); - } - -//--------------------------------------------------------- -// MidifyGateTime -//--------------------------------------------------------- - -ModifyGateTimeCmd::ModifyGateTimeCmd(MidiEditor* e) - : MidiCmd(e) - { - dialog = 0; - } - -//--------------------------------------------------------- -// guiDialog -//--------------------------------------------------------- - -MidiCmdDialog* ModifyGateTimeCmd::guiDialog() - { - if (dialog == 0) - dialog = new GateTime(0); - return dialog; - } - -//--------------------------------------------------------- -// process -//--------------------------------------------------------- - -void ModifyGateTimeCmd::process(CItemList* items) - { - int rate = dialog->rateVal(); - int offset = dialog->offsetVal(); - - for (iCItem k = items->begin(); k != items->end(); ++k) { - CItem* item = k->second; - Event event = item->event; - if (event.type() != Note) - continue; - - if (itemInRange(item)) { - unsigned len = event.lenTick(); - len = rate ? (len * 100) / rate : 1; - len += offset; - if (len <= 1) - len = 1; - - if (event.lenTick() != len) { - Event newEvent = event.clone(); - newEvent.setLenTick(len); - changeEvent(event, newEvent, item->part); - } - } - } - } - diff --git a/muse/muse/midiedit/gatetime.h b/muse/muse/midiedit/gatetime.h deleted file mode 100644 index 699b7c61..00000000 --- a/muse/muse/midiedit/gatetime.h +++ /dev/null @@ -1,62 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __GATETIME_H__ -#define __GATETIME_H__ - -#include "ui_gatetime.h" -#include "midicmd.h" - -//--------------------------------------------------------- -// GateTime -//--------------------------------------------------------- - -class GateTime : public MidiCmdDialog { - Q_OBJECT - - Ui::GateTimeBase gt; - int _rateVal; - int _offsetVal; - - protected slots: - void accept(); - - public: - GateTime(QWidget* parent = 0); - int rateVal() const { return _rateVal; } - int offsetVal() const { return _offsetVal; } - }; - -//--------------------------------------------------------- -// ModifyGateTimeCmd -//--------------------------------------------------------- - -class ModifyGateTimeCmd : public MidiCmd - { - GateTime* dialog; - virtual MidiCmdDialog* guiDialog(); - virtual void process(CItemList* items); - - public: - ModifyGateTimeCmd(MidiEditor* e); - }; - -#endif - diff --git a/muse/muse/midiedit/gatetime.ui b/muse/muse/midiedit/gatetime.ui deleted file mode 100644 index e1b92e7e..00000000 --- a/muse/muse/midiedit/gatetime.ui +++ /dev/null @@ -1,85 +0,0 @@ - - - - - GateTimeBase - - - - 0 - 0 - 262 - 149 - - - - MusE: Modify Gate Time - - - - 11 - - - 6 - - - - - Values - - - - 6 - - - 3 - - - - - Rate: - - - - - - - Offset: - - - - - - - % - - - 200 - - - 100 - - - - - - - 999 - - - -999 - - - 1 - - - - - - - - - qPixmapFromMimeSource - - - diff --git a/muse/muse/midiedit/midicmd.cpp b/muse/muse/midiedit/midicmd.cpp deleted file mode 100644 index bb6b1972..00000000 --- a/muse/muse/midiedit/midicmd.cpp +++ /dev/null @@ -1,135 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "midicmd.h" -#include "song.h" -#include "gatetime.h" -#include "velocity.h" -#include "audio.h" -#include "midieditor.h" -#include "widgets/tb1.h" - -//========================================================== -// class MidiCmd is an attempt to formalize the -// interface between midi command code and MusE. -// Maybe this can be extended to an specialized -// plugin interface -//========================================================== - -//--------------------------------------------------------- -// MidiCmdDialog -//--------------------------------------------------------- - -MidiCmdDialog::MidiCmdDialog() - : QDialog() - { - QWidget* rangeWidget = new QWidget; - mc.setupUi(rangeWidget); - layout = new QVBoxLayout; - setLayout(layout); - layout->addWidget(rangeWidget); - rangeGroup = new QButtonGroup(this); - rangeGroup->setExclusive(true); - rangeGroup->addButton(mc.allEventsButton, RANGE_ALL); - rangeGroup->addButton(mc.selectedEventsButton, RANGE_SELECTED); - rangeGroup->addButton(mc.loopedEventsButton, RANGE_LOOPED); - rangeGroup->addButton(mc.selectedLoopedButton, RANGE_SELECTED | RANGE_LOOPED); - mc.allEventsButton->setChecked(true); - } - -//--------------------------------------------------------- -// setRange -//--------------------------------------------------------- - -void MidiCmdDialog::setRange(int id) - { - if (rangeGroup->button(id)) - rangeGroup->button(id)->setChecked(true); - else - printf("setRange: not button %d!\n", id); - } - -//--------------------------------------------------------- -// accept -//--------------------------------------------------------- - -void MidiCmdDialog::accept() - { - _range = rangeGroup->checkedId(); - QDialog::accept(); - } - -//--------------------------------------------------------- -// MidiCmd -//--------------------------------------------------------- - -MidiCmd::MidiCmd(MidiEditor* e) - { - editor = e; - } - -//--------------------------------------------------------- -// processEvents -//--------------------------------------------------------- - -void MidiCmd::processEvents(CItemList* items) - { - MidiCmdDialog* dialog = guiDialog(); - range = editor->applyTo(); - dialog->setRange(range); - bool rv = dialog->exec(); - if (!rv) - return; - range = dialog->range(); // all, selected, looped, sel+loop - editor->setApplyTo(range); - - modified = 0; - song->startUndo(); - process(items); - song->endUndo(modified); - } - -//--------------------------------------------------------- -// eventInRange -//--------------------------------------------------------- - -bool MidiCmd::itemInRange(CItem* item) - { - unsigned tick = item->event.tick(); - bool selected = item->isSelected(); - bool inLoop = (tick >= song->lpos()) && (tick < song->rpos()); - return ( - (range == 0) - || (range == 1 && selected) - || (range == 2 && inLoop) - || (range == 3 && selected && inLoop) - ); - } - -//--------------------------------------------------------- -// changeEvent -//--------------------------------------------------------- - -void MidiCmd::changeEvent(Event oldEvent, Event newEvent, Part* part) - { - audio->msgChangeEvent(oldEvent, newEvent, part, false); - modified = SC_EVENT_MODIFIED; - } - diff --git a/muse/muse/midiedit/midicmd.h b/muse/muse/midiedit/midicmd.h deleted file mode 100644 index f78f9cb9..00000000 --- a/muse/muse/midiedit/midicmd.h +++ /dev/null @@ -1,81 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __MIDICMD_H__ -#define __MIDICMD_H__ - -#include "citem.h" -#include "ui_midicmd.h" - -class MidiEditor; -class MidiCmdDialog; - -//--------------------------------------------------------- -// MidiCmdDialog -// GUI base class for midiCmd -//--------------------------------------------------------- - -class MidiCmdDialog : public QDialog - { - Q_OBJECT - - QButtonGroup* rangeGroup; - int _range; - Ui::MidiCmd mc; - - protected: - void accept(); - QVBoxLayout* layout; - - public: - MidiCmdDialog(); - int range() const { return _range; } - void setRange(int); - }; - -//--------------------------------------------------------- -// MidiCmd -// abstract base class for midi commands -//--------------------------------------------------------- - -class MidiCmd { - int modified; - - protected: - MidiEditor* editor; - int range; - - // convenience classes for derived classes - bool itemInRange(CItem* item); - void changeEvent(Event oldEvent, Event newEvent, Part* part); - - // virtual functions provided by derived classes - virtual void process(CItemList*) = 0; - virtual MidiCmdDialog* guiDialog() { return 0; } - - public: - MidiCmd(MidiEditor*); - virtual ~MidiCmd() {} - void processEvents(CItemList*); - }; - - -#endif - diff --git a/muse/muse/midiedit/midicmd.ui b/muse/muse/midiedit/midicmd.ui deleted file mode 100644 index e64e6ba4..00000000 --- a/muse/muse/midiedit/midicmd.ui +++ /dev/null @@ -1,76 +0,0 @@ - - - - - MidiCmd - - - - 0 - 0 - 387 - 392 - - - - MusE: Modify Gate Time - - - - 11 - - - 6 - - - - - Apply To - - - - 6 - - - 3 - - - - - All Events - - - - - - - Selected Events - - - true - - - - - - - Looped Events - - - - - - - Selected AND Looped - - - - - - - - - qPixmapFromMimeSource - - - diff --git a/muse/muse/midiedit/midieditor.cpp b/muse/muse/midiedit/midieditor.cpp deleted file mode 100644 index d004ef29..00000000 --- a/muse/muse/midiedit/midieditor.cpp +++ /dev/null @@ -1,444 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "midieditor.h" -#include "part.h" -#include "song.h" -#include "widgets/tools.h" -#include "ecanvas.h" -#include "icons.h" -#include "audio.h" -#include "shortcuts.h" - -//--------------------------------------------------------- -// MidiEditor -//--------------------------------------------------------- - -MidiEditor::MidiEditor(PartList* pl) - : Editor() - { - _pl = pl; - selPart = 0; - tools2 = 0; - info = 0; - tools = 0; - toolbar = 0; - - QMenuBar* mb = menuBar(); - - //---------Menu------------------------------- - menuEdit = new QMenu(tr("&Edit")); - mb->addMenu(menuEdit); - - menuEdit->addAction(undoAction); - menuEdit->addAction(redoAction); - - menuEdit->addSeparator(); - cutAction = getAction("cut", this); - menuEdit->addAction(cutAction); - copyAction = getAction("copy", this); - menuEdit->addAction(copyAction); - pasteAction = getAction("paste", this); - menuEdit->addAction(pasteAction); - - speaker = new QAction(this); - speaker->setCheckable(true); - speaker->setIcon(QIcon(*speakerIcon)); - speaker->setText(tr("Play Events")); - speaker->setToolTip(tr("Play Events")); - - stepRecAction = new QAction(this); - stepRecAction->setIcon(QIcon(*steprecIcon)); - stepRecAction->setText(tr("Step Record")); - stepRecAction->setToolTip(tr("Step Record")); - stepRecAction->setCheckable(true); - - midiInAction = new QAction(this); - midiInAction->setIcon(QIcon(*midiinIcon)); - midiInAction->setText(tr("Midi Input")); - midiInAction->setToolTip(tr("Midi Input")); - midiInAction->setCheckable(true); - - followSongAction = new QAction(this); - followSongAction->setText("F"); - followSongAction->setToolTip(tr("Follow Song")); - followSongAction->setCheckable(true); - - connect(song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); - - QClipboard* cb = QApplication::clipboard(); - connect(cb, SIGNAL(dataChanged()), SLOT(clipboardChanged())); - connect(cb, SIGNAL(selectionChanged()), SLOT(clipboardChanged())); - connect(menuEdit, SIGNAL(triggered(QAction*)), SLOT(midiCmd(QAction*))); - } - -//--------------------------------------------------------- -// cmd -//--------------------------------------------------------- - -void MidiEditor::midiCmd(QAction* a) - { - QString s(a->data().toString()); - if (s == "cut") { - copy(); - song->startUndo(); - CItemList* items = canvas()->getItems(); - for (iCItem i = items->begin(); i != items->end(); ++i) { - if (!i->second->isSelected()) - continue; - CItem* e = i->second; - Event event = e->event; - audio->msgDeleteEvent(event, e->part, false); - } - song->endUndo(SC_EVENT_REMOVED); - } - else if (s == "copy") - copy(); - else - cmd(a); - } - -//--------------------------------------------------------- -// copy -// cut copy paste -//--------------------------------------------------------- - -void MidiEditor::copy() - { - QMimeData* drag = canvas()->getTextDrag(); - if (drag) - QApplication::clipboard()->setMimeData(drag, QClipboard::Selection); - } - - -//--------------------------------------------------------- -// setPos -// snap locator positioning -//--------------------------------------------------------- - -void MidiEditor::setPos(int idx, const AL::Pos& pos) - { - song->setPos(idx, pos.snaped(_raster)); - } - -//--------------------------------------------------------- -// genPartlist -//--------------------------------------------------------- - -void MidiEditor::genPartlist() - { - MidiTrackList* tl = song->midis(); - PartList* npl = new PartList; - for (iPart ip = _pl->begin(); ip != _pl->end(); ++ip) { - Part* part = ip->second; - for (iMidiTrack it = tl->begin(); it != tl->end(); ++it) { - PartList* pl2 = (*it)->parts(); - iPart ip2 = pl2->begin(); - for (; ip2 != pl2->end(); ++ip2) - if (ip2->second == part) { - npl->add(part); - break; - } - if (ip2 != pl2->end()) - break; - } - } - delete _pl; - _pl = npl; - for (iPart ip = _pl->begin(); ip != _pl->end(); ++ip) { - if (ip->second == selPart) - return; - } - if (_pl->empty()) - return; - selPart = _pl->begin()->second; - if (canvas()) - canvas()->setCurPart(selPart); - } - -//--------------------------------------------------------- -// MidiEditor -//--------------------------------------------------------- - -MidiEditor::~MidiEditor() - { - if (_pl) - delete _pl; - } - -//--------------------------------------------------------- -// writePartList -//--------------------------------------------------------- - -void MidiEditor::writePartList(Xml& xml) const - { - for (ciPart p = _pl->begin(); p != _pl->end(); ++p) { - Part* part = p->second; - Track* track = part->track(); - int trkIdx = song->tracks()->indexOf(track); - int partIdx = track->parts()->index(part); - xml.stag("part"); - xml.put(QString("%1:%2").arg(trkIdx).arg(partIdx)); - xml.etag("part"); - } - } - -//--------------------------------------------------------- -// songChanged -//--------------------------------------------------------- - -void MidiEditor::songChanged(int type) - { - if (type & (SC_PART_REMOVED | SC_PART_MODIFIED - | SC_PART_INSERTED | SC_TRACK_REMOVED)) { - genPartlist(); - // close window if editor has no parts anymore - if (parts()->empty()) { - close(); - return; - } - } - canvas()->songChanged(type); - } - -//--------------------------------------------------------- -// setQuant -//--------------------------------------------------------- - -void MidiEditor::setQuant(int val) - { - _quant = val; - if (toolbar) - toolbar->setQuant(val); - if (canvas() && canvas()->part()) - canvas()->part()->setQuant(val); - } - -//--------------------------------------------------------- -// setRaster -//--------------------------------------------------------- - -void MidiEditor::setRaster(int val) - { - _raster = val; - if (toolbar) - toolbar->setRaster(val); - if (canvas()) { - canvas()->setRaster(val); - if (canvas()->part()) - canvas()->part()->setRaster(val); - } - } - -//--------------------------------------------------------- -// setApplyTo -//--------------------------------------------------------- - -void MidiEditor::setApplyTo(int val) - { - _applyTo = val; - if (toolbar) - toolbar->setApplyTo(_applyTo); - } - -//--------------------------------------------------------- -// rasterStep -//--------------------------------------------------------- - -int MidiEditor::rasterStep(unsigned tick) const - { - return AL::sigmap.rasterStep(tick, raster()); - } - -//--------------------------------------------------------- -// rasterVal -//--------------------------------------------------------- - -unsigned MidiEditor::rasterVal(unsigned v) const - { - return AL::sigmap.raster(v, raster()); - } - -//--------------------------------------------------------- -// rasterVal1 -//--------------------------------------------------------- - -unsigned MidiEditor::rasterVal1(unsigned v) const - { - return AL::sigmap.raster1(v, raster()); - } - -//--------------------------------------------------------- -// rasterVal2 -//--------------------------------------------------------- - -unsigned MidiEditor::rasterVal2(unsigned v) const - { - return AL::sigmap.raster2(v, raster()); - } - -//--------------------------------------------------------- -// quantVal -//--------------------------------------------------------- - -int MidiEditor::quantVal(int v) const - { - int q = quant(); - int val = ((v+q/2)/q)*q; - if (val == 0) - val = q; - return val; - } - -//--------------------------------------------------------- -// xmag -//--------------------------------------------------------- - -double MidiEditor::xmag() const - { - return tcanvas->xmag(); - } - -//--------------------------------------------------------- -// setXmag -//--------------------------------------------------------- - -void MidiEditor::setXmag(double val) - { - if (canvas()) - canvas()->setMag(val, tcanvas->ymag()); - } - -//--------------------------------------------------------- -// tool -//--------------------------------------------------------- - -int MidiEditor::tool() const - { - return tcanvas->tool(); - } - -//--------------------------------------------------------- -// setTool -//--------------------------------------------------------- - -void MidiEditor::setTool(int n) - { - tcanvas->setTool(n); - tools2->set(n); - } - -//--------------------------------------------------------- -// canvasPos -//--------------------------------------------------------- - -QPoint MidiEditor::canvasPos() const - { - return tcanvas->getWPos(); - } - -//--------------------------------------------------------- -// setCanvasPos -//--------------------------------------------------------- - -void MidiEditor::setCanvasPos(const QPoint& p) - { - if (tcanvas) - tcanvas->setWPos(p); - } - -//--------------------------------------------------------- -// clipboardChanged -//--------------------------------------------------------- - -void MidiEditor::clipboardChanged() - { - QString stype("x-muse-eventlist"); - QString s = QApplication::clipboard()->text(stype, QClipboard::Selection); - pasteAction->setEnabled(!s.isEmpty()); - } - -//--------------------------------------------------------- -// selectionChanged -//--------------------------------------------------------- - -void MidiEditor::selectionChanged() - { - bool flag = canvas()->selectionSize() > 0; - cutAction->setEnabled(flag); - copyAction->setEnabled(flag); - } - -//--------------------------------------------------------- -// read -//--------------------------------------------------------- - -void MidiEditor::read(QDomNode node) - { - for (node = node.firstChild(); !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - QString tag(e.tagName()); - if (tag == "CtrlEdit") { - int id = e.attribute("id","0").toInt(); - int h = e.attribute("h","50").toInt(); - canvas()->addController(id, h); - } - else - AL::readProperties(this, node); - } - canvas()->layout1(); - } - -//--------------------------------------------------------- -// write -//--------------------------------------------------------- - -void MidiEditor::write(Xml& xml) const - { - writePartList(xml); - xml.stag(metaObject()->className()); - xml.writeProperties(this); - const CtrlEditList* el = canvas()->getCtrlEditors(); - for (ciCtrlEdit i = el->begin(); i != el->end(); ++i) { - xml.tagE(QString("CtrlEdit h=\"%1\" id=\"%2\"") - .arg((*i)->height()).arg((*i)->ctrl()->id())); - } - xml.etag(metaObject()->className()); - } - -//--------------------------------------------------------- -// initFromPart -//--------------------------------------------------------- - -void MidiEditor::initFromPart() - { - Part* part = canvas()->part(); - CtrlCanvasList* cl = part->getCtrlCanvasList(); - if (!cl->empty()) { -#if 0 - for (iCtrlCanvas i = cl->begin(); i != cl->end(); ++i) { -printf("MidiEditor::initFromPart(): add controller %d %d\n", i->ctrlId, i->height); - canvas()->addController(i->ctrlId, i->height); - } -#endif - canvas()->layout1(); - } - } - diff --git a/muse/muse/midiedit/midieditor.h b/muse/muse/midiedit/midieditor.h deleted file mode 100644 index 3791e017..00000000 --- a/muse/muse/midiedit/midieditor.h +++ /dev/null @@ -1,147 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __MIDIEDITOR_H__ -#define __MIDIEDITOR_H__ - -#include "editor.h" - -namespace AL { - class Xml; - class Pos; - }; -using AL::Xml; - -class EditToolBar; -class NoteInfo; -class Toolbar1; -class Part; -class PartList; -class EventCanvas; -class ScrollScale; -class MTScale; -class WaveView; - -//--------------------------------------------------------- -// MidiEditor -//--------------------------------------------------------- - -class MidiEditor : public Editor { - Q_OBJECT - - Q_PROPERTY(int raster READ raster WRITE setRaster) - Q_PROPERTY(int quant READ quant WRITE setQuant) - Q_PROPERTY(bool stepRec READ stepRec WRITE setStepRec) - Q_PROPERTY(bool midiIn READ midiIn WRITE setMidiIn) - Q_PROPERTY(bool playEvents READ playEvents WRITE setPlayEvents) - Q_PROPERTY(bool followSong READ followSong WRITE setFollowSong) - Q_PROPERTY(double xmag READ xmag WRITE setXmag) - Q_PROPERTY(int applyTo READ applyTo WRITE setApplyTo) - Q_PROPERTY(QPoint canvasPos READ canvasPos WRITE setCanvasPos) - Q_PROPERTY(int tool READ tool WRITE setTool) - - bool _playEvents; - - EventCanvas* canvas() { return (EventCanvas*)tcanvas; } - const EventCanvas* canvas() const { return (EventCanvas*)tcanvas; } - void copy(); - - protected: - int _raster; - int _quant; - int _applyTo; - - PartList* _pl; - Part* selPart; - - QMenu *menuEdit; - QAction* speaker; - QAction* stepRecAction; - QAction* midiInAction; - QAction* followSongAction; - QAction* cutAction; - QAction* copyAction; - QAction* pasteAction; - - EditToolBar* tools2; - NoteInfo* info; - QToolBar* tools; - Toolbar1* toolbar; - - void writePartList(Xml&) const; - void genPartlist(); - void writeStatus(Xml&) const; - void initFromPart(); - - private slots: - void midiCmd(QAction*); - - protected slots: - void clipboardChanged(); // enable/disable "Paste" - void selectionChanged(); // enable/disable "Copy" & "Paste" - virtual void songChanged(int); //add virtual to allow editors that do not use - //ecancav to use there own songChanged slot - //and avoid crashing, like MidiTrackerEditor - void setPos(int, const AL::Pos&); - virtual void cmd(QAction*) = 0; - - public slots: - void setQuant(int val); - void setApplyTo(int val); - void setRaster(int val); - - public: - MidiEditor(PartList*); - virtual ~MidiEditor(); - - void read(QDomNode); - void write(Xml&) const; - void readStatus(QDomNode); - - PartList* parts() { return _pl; } - int rasterStep(unsigned tick) const; - unsigned rasterVal(unsigned v) const; - unsigned rasterVal1(unsigned v) const; - unsigned rasterVal2(unsigned v) const; - int quantVal(int v) const; - int raster() const { return _raster; } - int quant() const { return _quant; } - int applyTo() const { return _applyTo; } - bool playEvents() const { return speaker->isChecked(); } - void setPlayEvents(bool val) { speaker->setChecked(val); } - bool stepRec() const { return stepRecAction->isChecked(); } - void setStepRec(bool val) { stepRecAction->setChecked(val); } - bool midiIn() const { return midiInAction->isChecked(); } - void setMidiIn(bool val) { midiInAction->setChecked(val); } - bool followSong() const { return followSongAction->isChecked(); } - void setFollowSong(bool val) { followSongAction->setChecked(val); } - double xmag() const; - void setXmag(double val); - QPoint canvasPos() const; - void setCanvasPos(const QPoint&); - void setTool(int); - int tool() const; - enum { - CMD_CUT, CMD_COPY, CMD_PASTE - }; - }; - -#endif - diff --git a/muse/muse/midiedit/miditracker.cpp b/muse/muse/midiedit/miditracker.cpp deleted file mode 100644 index e345f454..00000000 --- a/muse/muse/midiedit/miditracker.cpp +++ /dev/null @@ -1,234 +0,0 @@ -//================================================================= -// miditracker -// midi editor a la soundtracker -// miditracker.cpp -// (C) Copyright 2006 Nil Geisweiller (a_lin@user.sourceforge.net) -//================================================================= - -#include "ecanvas.h" -#include "miditracker.h" -#include "trackpattern.h" -#include "song.h" -#include "muse.h" -#include "part.h" - -#define MAX(x,y) (x>y?x:y) - -class TrackPattern; -//class EventCanvas; - -//--------------------------------------------------------- -// MidiTrackerEditor -//--------------------------------------------------------- - -MidiTrackerEditor::MidiTrackerEditor(PartList* pl, bool /*init*/) - : MidiEditor(pl) { - //-------- - //menuView - //-------- - menuView = menuBar()->addMenu(tr("&View")); - - //------- - //ToolBar - //------- - tools = addToolBar(tr("MidiTracker Tools")); - tools->addAction(undoAction); - tools->addAction(redoAction); - tools->addSeparator(); - - tools->addAction(stepRecAction); - stepRecAction->setChecked(INIT_SREC); - - tools->addAction(midiInAction); - midiInAction->setChecked(INIT_MIDIIN); - - tools->addAction(speaker); - speaker->setChecked(INIT_SPEAKER); - - tools->addAction(followSongAction); - followSongAction->setChecked(INIT_FOLLOW); - setFollow(INIT_FOLLOW); - - //panic button - QToolBar* panicToolbar = addToolBar(tr("Panic")); - panicToolbar->addAction(panicAction); - - //Transport Bar - QToolBar* transport = addToolBar(tr("Transport")); - muse->setupTransportToolbar(transport); - - //frame containing the different matrices of time and notes and FX - //QFrame* matricesFrame = new QFrame - - //second bar - addToolBarBreak(); - //row per bar - QToolBar* rowfeatures = addToolBar(tr("row features")); - - QLabel* quantLabel = new QLabel(tr("Quantize")); - quantLabel->setIndent(5); - rowfeatures->addWidget(quantLabel); - _quantCombo = new QuantCombo(rowfeatures); - rowfeatures->addWidget(_quantCombo); - - //QLabel* rpmLabel = new QLabel(tr("Row per bar"), rowfeatures); - //rpmLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter); - //rpmLabel->setIndent(3); - //rowfeatures->addWidget(rpmLabel); - //_rpmSpinBox = new QSpinBox(rowfeatures); - //_rpmSpinBox->setRange(1, 256); - //_rpmSpinBox->setFixedHeight(24); - //rowfeatures->addWidget(_rpmSpinBox); - - //init row per bar - setQuant(96); //corresponds to 16 quant - updateQuant(); - - //number of visible rows - //rowfeatures->addSeparator(); - /*QLabel* nvrLabel = new QLabel(tr("Number of visible rows"), rowfeatures); - nvrLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter); - nvrLabel->setIndent(3); - rowfeatures->addWidget(nvrLabel); - _nvrSpinBox = new QSpinBox(rowfeatures); - _nvrSpinBox->setRange(1, 256); - _nvrSpinBox->setFixedHeight(24); - rowfeatures->addWidget(_nvrSpinBox);*/ - //init number of visible row - /*setNumVisibleRows(20); - updateNumVisibleRows();*/ - - //evaluate fisrtTick and lastTick - unsigned firstTick = _pl->begin()->second->tick(); - unsigned lastTick = 0; - for(ciPart p = _pl->begin(); p != _pl->end(); ++p) { - Part* part = p->second; - lastTick = MAX(lastTick, part->endTick()); - } - - //------------- - //timing matrix - //------------- - _timingPattern = - new TimingPattern(this, "Timing", firstTick, lastTick, _quant); - int nbrRow = _timingPattern->getAbsoluteNbrRow(); - - //--------------- - //tracks matrices - //--------------- - for(ciPart p = _pl->begin(); p != _pl->end(); ++p) { - Part* part = p->second; - Track* track = part->track(); - if(track->isMidiTrack()) { - bool trackNotFound = true; - for(unsigned int i = 0; i < _trackPatterns.size(); i++) - if(_trackPatterns[i]->getTrack()==track) trackNotFound = false; - if(trackNotFound) { - TrackPattern* tp; - tp = new TrackPattern(this, track->name(), firstTick, lastTick, - _quant, pl, (MidiTrack*) track, nbrRow); - _trackPatterns.push_back(tp); - } - } - } - - //signals from TimingPattern and TrackPattern - connect(_timingPattern, SIGNAL(moveCurrentRow(unsigned)), - this, SLOT(updateMoveCurrentRow(unsigned))); - for(unsigned i = 0; i < _trackPatterns.size(); i++) { - connect(_trackPatterns[i], SIGNAL(moveCurrentRow(unsigned)), - this, SLOT(updateMoveCurrentRow(unsigned))); - } - - /* - addToolBarBreak(); - toolbar = new Toolbar1(initRaster, initQuant); - addToolBar(toolbar); - - addToolBarBreak(); - info = new NoteInfo(this); - addToolBar(info); - - setCentralWidget(tcanvas); - tcanvas->setCornerWidget(new QSizeGrip(tcanvas)); - - connect(song, SIGNAL(posChanged(int,const AL::Pos&,bool)), canvas(), - SLOT(setLocatorPos(int,const AL::Pos&,bool))); - connect(canvas(), SIGNAL(posChanged(int,const AL::Pos&)), - SLOT(setPos(int,const AL::Pos&))); - - connect(canvas(), SIGNAL(toolChanged(int)), tools2, SLOT(set(int))); - connect(tools2, SIGNAL(toolChanged(int)), canvas(), SLOT(setTool(int))); - - connect(info, SIGNAL(valueChanged(NoteInfo::ValType, int)), - SLOT(noteinfoChanged(NoteInfo::ValType, int))); - - connect(canvas(), SIGNAL(selectionChanged(int, Event&, Part*)), this, - SLOT(setSelection(int, Event&, Part*))); - - info->setEnabled(false); - - setWindowTitle(canvas()->getCaption()); - int s1, e; - canvas()->range(&s1, &e); - e += AL::sigmap.ticksMeasure(e); // show one more measure - canvas()->setTimeRange(s1, e);*/ - -} - -//--------------------------------------------------------- -// setQuant -//--------------------------------------------------------- -void MidiTrackerEditor::setQuant(int q) { - _quant = q; -} - -//--------------------------------------------------------- -// getQuant -//--------------------------------------------------------- -int MidiTrackerEditor::getQuant() { - return _quant; -} - -//--------------------------------------------------------- -// updateQuant -//--------------------------------------------------------- -void MidiTrackerEditor::updateQuant() { - _quantCombo->blockSignals(true); - _quantCombo->setQuant(_quant); - _quantCombo->blockSignals(false); -} - -//--------------------------------------------------------- -// setFollow -//--------------------------------------------------------- -void MidiTrackerEditor::setFollow(bool f) { - _follow = f; -} - -//--------------------------------------------------------- -// songChanged -//--------------------------------------------------------- -void MidiTrackerEditor::songChanged(int i) { - emit signalSongChanged(i); -} - -//--------------------------------------------------------- -// cmd -// pulldown menu commands -//--------------------------------------------------------- - -void MidiTrackerEditor::cmd(QAction* /*a*/) { - //int cmd = a->data().toInt(); - //canvas()->cmd(cmd, _quantStrength, _quantLimit, _quantLen); -} - -//void MidiTrackerEditor::resizeEvent(QResizeEvent *event) { -// for(int i = 0; i < _trackPatterns.size(); i++) -// _trackPatterns[i]->fillTrackPat(); -// _timingPattern->fillTimmingPat(); -//} - -void MidiTrackerEditor::updateMoveCurrentRow(unsigned index) { - emit signalMoveCurrentRow(index); -} diff --git a/muse/muse/midiedit/miditracker.h b/muse/muse/midiedit/miditracker.h deleted file mode 100644 index 5e6d706a..00000000 --- a/muse/muse/midiedit/miditracker.h +++ /dev/null @@ -1,76 +0,0 @@ -//================================================================= -// miditracker -// midi editor a la soundtracker -// miditracker.h -// (C) Copyright 2006 Nil Geisweiller (a_lin@user.sourceforge.net) -//================================================================= - -#ifndef __MTEDITOR_H__ -#define __MTEDITOR_H__ - -#include "midieditor.h" -#include "trackpattern.h" -#include "quantcombo.h" -#include - - -class QuantCombo; - -namespace AL { - class Xml; - }; -using AL::Xml; - -//--------------------------------------------------------- -// MidiTrackerEditor -//--------------------------------------------------------- - -class MidiTrackerEditor : public MidiEditor { - Q_OBJECT - - private: - int _quant; - QuantCombo* _quantCombo; - //int _numVisibleRows; - //QSpinBox* _nvrSpinBox; - - QMenu* menuView; - bool _follow; - void setFollow(bool); - - std::vector _trackPatterns; - TimingPattern* _timingPattern; - - private slots: - void updateMoveCurrentRow(unsigned); - virtual void cmd(QAction*); - - protected slots: - virtual void songChanged(int); - - public: - MidiTrackerEditor(PartList*, bool); - ~MidiTrackerEditor() {} - - void setQuant(int rpm); - int getQuant(); - void updateQuant(); //update the gui - - void setNumVisibleRows(int nvr); - int getNumVisibleRows(); - void updateNumVisibleRows(); //update the gui - - static const bool INIT_FOLLOW = false; - static const bool INIT_SPEAKER = true; - static const bool INIT_SREC = false; - static const bool INIT_MIDIIN = false; - - protected: - //void resizeEvent(QResizeEvent *event); - - signals: - void signalMoveCurrentRow(unsigned); - void signalSongChanged(int); -}; - -#endif diff --git a/muse/muse/midiedit/pianoroll.cpp b/muse/muse/midiedit/pianoroll.cpp deleted file mode 100644 index c9be06e9..00000000 --- a/muse/muse/midiedit/pianoroll.cpp +++ /dev/null @@ -1,526 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "pianoroll.h" -#include "song.h" -#include "icons.h" -#include "cmd.h" -#include "muse.h" -#include "widgets/tools.h" -#include "quantconfig.h" -#include "shortcuts.h" -#include "audio.h" -#include "part.h" - -static int pianorollTools = PointerTool | PencilTool | RubberTool | DrawTool; -int PianoRoll::initWidth = PianoRoll::INIT_WIDTH; -int PianoRoll::initHeight = PianoRoll::INIT_HEIGHT; -int PianoRoll::initRaster = PianoRoll::INIT_RASTER; -int PianoRoll::initQuant = PianoRoll::INIT_QUANT; -int PianoRoll::initColorMode = PianoRoll::INIT_COLOR_MODE; -bool PianoRoll::initFollow = PianoRoll::INIT_FOLLOW; -bool PianoRoll::initSpeaker = PianoRoll::INIT_SPEAKER; -bool PianoRoll::initMidiin = PianoRoll::INIT_MIDIIN; -double PianoRoll::initXmag = 0.08; // PianoRoll::INIT_XMAG; (compiler problem?) -int PianoRoll::initApplyTo = PianoRoll::INIT_APPLY_TO; -int PianoRoll::initQuantStrength = PianoRoll::INIT_QUANT_STRENGTH; -int PianoRoll::initQuantLimit = PianoRoll::INIT_QUANT_LIMIT; -bool PianoRoll::initQuantLen = PianoRoll::INIT_QUANT_LEN; - -//--------------------------------------------------------- -// PianoRoll -//--------------------------------------------------------- - -PianoRoll::PianoRoll(PartList* pl, bool init) - : MidiEditor(pl) - { - _applyTo = initApplyTo; - _colorMode = initColorMode; - _quantStrength = initQuantStrength; - _quantLimit = initQuantLimit; - _quantLen = initQuantLen; - - deltaMode = false; - quantConfig = 0; - - tcanvas = new PianoCanvas(this); - QMenuBar* mb = menuBar(); - - menu_ids[CMD_EVENT_COLOR] = getAction("change_event_color", this); - menu_ids[CMD_CONFIG_QUANT] = getAction("config_quant", this); - - //---------Menu---------------------------------- - menuEdit->addSeparator(); - - QAction* a = getAction("delete", this); - menuEdit->addAction(a); - - menuEdit->addSeparator(); - - menuSelect = menuEdit->addMenu(QIcon(*selectIcon),tr("&Select")); - - menuSelect->addAction(getAction("sel_all", this)); - menuSelect->addAction(getAction("sel_none", this)); - menuSelect->addAction(getAction("sel_inv", this)); - menuSelect->addAction(getAction("sel_ins_loc", this)); - menuSelect->addAction(getAction("sel_out_loc", this)); - - menuConfig = mb->addMenu(tr("&Config")); - eventColor = menuConfig->addMenu(tr("event color")); - menu_ids[CMD_EVENT_COLOR] = eventColor->menuAction(); - - colorModeAction[0] = eventColor->addAction(tr("blue")); - colorModeAction[0]->setData(0); - colorModeAction[0]->setCheckable(true); - colorModeAction[1] = eventColor->addAction(tr("pitch colors")); - colorModeAction[1]->setData(1); - colorModeAction[1]->setCheckable(true); - colorModeAction[2] = eventColor->addAction(tr("velocity colors")); - colorModeAction[2]->setData(2); - colorModeAction[2]->setCheckable(true); - connect(eventColor, SIGNAL(triggered(QAction*)), SLOT(setEventColorMode(QAction*))); - - menuFunctions = mb->addMenu(tr("&Functions")); - - menuFunctions->addAction(getAction("midi_over_quant", this)); - menuFunctions->addAction(getAction("midi_quant_noteon", this)); - menuFunctions->addAction(getAction("midi_quant_noteoff", this)); - menuFunctions->addAction(getAction("midi_quant_iterative", this)); - - menuFunctions->addSeparator(); - - menu_ids[CMD_CONFIG_QUANT] = menuFunctions->addAction(tr("Config Quant...")); - connect(menu_ids[CMD_CONFIG_QUANT], SIGNAL(triggered()), this, SLOT(configQuant())); - - menuFunctions->addSeparator(); - - menuFunctions->addAction(getAction("midi_mod_gate_time", this)); - menuFunctions->addAction(getAction("midi_mod_velo", this)); - -#if 0 // TODO - menuFunctions->addAction(getAction("midi_crescendo", this)); - menuFunctions->addAction(getAction("midi_transpose", this)); - menuFunctions->addAction(getAction("midi_thin_out", this)); - menuFunctions->addAction(getAction("midi_erase_event", this)); - menuFunctions->addAction(getAction("midi_note_shift", this)); - menuFunctions->addAction(getAction("midi_move_clock", this)); - menuFunctions->addAction(getAction("midi_copy_measure", this)); - menuFunctions->addAction(getAction("midi_erase_measure", this)); - menuFunctions->addAction(getAction("midi_delete_measure", this)); - menuFunctions->addAction(getAction("midi_create_measure", this)); -#endif - - connect(menuSelect, SIGNAL(triggered(QAction*)), SLOT(cmd(QAction*))); - connect(menuFunctions, SIGNAL(triggered(QAction*)), SLOT(cmd(QAction*))); - - //---------ToolBar---------------------------------- - tools = addToolBar(tr("Pianoroll Tools")); - tools->addAction(undoAction); - tools->addAction(redoAction); - tools->addSeparator(); - - tools->addAction(stepRecAction); - stepRecAction->setChecked(INIT_SREC); - - tools->addAction(midiInAction); - midiInAction->setChecked(INIT_MIDIIN); - - tools->addAction(speaker); - speaker->setChecked(INIT_SPEAKER); - - tools->addAction(followSongAction); - followSongAction->setChecked(INIT_FOLLOW); - tcanvas->setFollow(INIT_FOLLOW); - - tools2 = new EditToolBar(this, pianorollTools); - addToolBar(tools2); - - QToolBar* panicToolbar = addToolBar(tr("Panic")); - panicToolbar->addAction(panicAction); - - //------------------------------------------------------------- - // Transport Bar - - QToolBar* transport = addToolBar(tr("Transport")); - muse->setupTransportToolbar(transport); - - addToolBarBreak(); - toolbar = new Toolbar1(initRaster, initQuant); - addToolBar(toolbar); - - addToolBarBreak(); - info = new NoteInfo(this); - addToolBar(info); - - setCentralWidget(tcanvas); - tcanvas->setCornerWidget(new QSizeGrip(tcanvas)); - - connect(song, SIGNAL(posChanged(int,const AL::Pos&,bool)), canvas(), SLOT(setLocatorPos(int,const AL::Pos&,bool))); - connect(canvas(), SIGNAL(posChanged(int,const AL::Pos&)), SLOT(setPos(int,const AL::Pos&))); - - connect(canvas(), SIGNAL(toolChanged(int)), tools2, SLOT(set(int))); - connect(tools2, SIGNAL(toolChanged(int)), canvas(), SLOT(setTool(int))); - - connect(info, SIGNAL(valueChanged(NoteInfo::ValType, int)), SLOT(noteinfoChanged(NoteInfo::ValType, int))); - - connect(canvas(), SIGNAL(selectionChanged(int, Event&, Part*)), this, - SLOT(setSelection(int, Event&, Part*))); - - info->setEnabled(false); - - setWindowTitle(canvas()->getCaption()); - Pos p1(0, AL::TICKS), p2(0, AL::TICKS); - canvas()->range(p1, p2); - p2 += AL::sigmap.ticksMeasure(p2.tick()); // show one more measure - canvas()->setTimeRange(p1, p2); - - // connect to toolbar - connect(canvas(), SIGNAL(pitchChanged(int)), toolbar, SLOT(setPitch(int))); - connect(canvas(), SIGNAL(yChanged(int)), toolbar, SLOT(setInt(int))); - connect(canvas(), SIGNAL(cursorPos(const AL::Pos&,bool)), toolbar, SLOT(setTime(const AL::Pos&,bool))); - connect(toolbar, SIGNAL(quantChanged(int)), SLOT(setQuant(int))); - connect(toolbar, SIGNAL(rasterChanged(int)),SLOT(setRaster(int))); - connect(toolbar, SIGNAL(toChanged(int)), SLOT(setApplyTo(int))); - connect(toolbar, SIGNAL(soloChanged(bool)), SLOT(soloChanged(bool))); - - setEventColorMode(_colorMode); - - clipboardChanged(); // enable/disable "Paste" - selectionChanged(); // enable/disable "Copy" & "Paste" - - // - // install misc shortcuts - // - QShortcut* sc = new QShortcut(Qt::Key_Escape, this); - sc->setContext(Qt::WindowShortcut); - connect(sc, SIGNAL(activated()), SLOT(close())); - - QSignalMapper* cmdMap = new QSignalMapper(this); - static const char* actions[] = { - "curpos_increase", "curpos_decrease", - "midi_insert_at_loc", - "midi_quant_1", "midi_quant_2", "midi_quant_3", "midi_quant_4", - "midi_quant_5", "midi_quant_6", "midi_quant_7", - "midi_quant_punct", "midi_quant_punct2", "midi_quant_triol", - }; - for (unsigned i = 0; i < sizeof(actions)/sizeof(*actions); ++i) { - a = getAction(actions[i], this); - addAction(a); - cmdMap->setMapping(a, a); - connect(a, SIGNAL(triggered()), cmdMap, SLOT(map())); - } - connect(cmdMap, SIGNAL(mapped(QObject*)), SLOT(pianoCmd(QObject*))); - - connect(song, SIGNAL(songChanged(int)), canvas(), SLOT(songChanged(int))); - connect(followSongAction, SIGNAL(toggled(bool)), canvas(), SLOT(setFollow(bool))); - canvas()->selectFirst(); - - Part* part = canvas()->part(); - setRaster(part->raster() != -1 ? part->raster() : initRaster); - setQuant(part->quant() != -1 ? part->quant() : initQuant); - setXmag(part->xmag() != -1.0 ? part->xmag() : initXmag); - - if (init) - initFromPart(); - else { - resize(initWidth, initHeight); - } - } - -//--------------------------------------------------------- -// cmd -// pulldown menu commands -//--------------------------------------------------------- - -void PianoRoll::cmd(QAction* a) - { - canvas()->cmd(a, _quantStrength, _quantLimit, _quantLen); - } - -//--------------------------------------------------------- -// setSelection -// update Info Line -//--------------------------------------------------------- - -void PianoRoll::setSelection(int tick, Event& e, Part* p) - { - int selections = canvas()->selectionSize(); - - selEvent = e; - selPart = p; - - if (selections > 1) { - info->setEnabled(true); - info->setDeltaMode(true); - if (!deltaMode) { - deltaMode = true; - info->setValues(0, 0, 0, 0, 0); - tickOffset = 0; - lenOffset = 0; - pitchOffset = 0; - veloOnOffset = 0; - veloOffOffset = 0; - } - } - else if (selections == 1) { - deltaMode = false; - info->setEnabled(true); - info->setDeltaMode(false); - info->setValues(tick, - selEvent.lenTick(), - selEvent.pitch(), - selEvent.velo(), - selEvent.veloOff()); - } - else { - deltaMode = false; - info->setEnabled(false); - } - selectionChanged(); - } - -//--------------------------------------------------------- -// edit currently selected Event -//--------------------------------------------------------- - -void PianoRoll::noteinfoChanged(NoteInfo::ValType type, int val) - { - int selections = canvas()->selectionSize(); - - if (selections == 0) { - printf("noteinfoChanged while nothing selected\n"); - } - else if (selections == 1) { - Event event = selEvent.clone(); - switch(type) { - case NoteInfo::VAL_TIME: - event.setTick(val - selPart->tick()); - break; - case NoteInfo::VAL_LEN: - event.setLenTick(val); - break; - case NoteInfo::VAL_VELON: - event.setVelo(val); - break; - case NoteInfo::VAL_VELOFF: - event.setVeloOff(val); - break; - case NoteInfo::VAL_PITCH: - event.setPitch(val); - break; - } - audio->msgChangeEvent(selEvent, event, selPart); - } - else { - // multiple events are selected; treat noteinfo values - // as offsets to event values - - int delta = 0; - switch (type) { - case NoteInfo::VAL_TIME: - delta = val - tickOffset; - tickOffset = val; - break; - case NoteInfo::VAL_LEN: - delta = val - lenOffset; - lenOffset = val; - break; - case NoteInfo::VAL_VELON: - delta = val - veloOnOffset; - veloOnOffset = val; - break; - case NoteInfo::VAL_VELOFF: - delta = val - veloOffOffset; - veloOffOffset = val; - break; - case NoteInfo::VAL_PITCH: - delta = val - pitchOffset; - pitchOffset = val; - break; - } - if (delta) - canvas()->modifySelected(type, delta); - } - } - -//--------------------------------------------------------- -// soloChanged -// signal from solo button -//--------------------------------------------------------- - -void PianoRoll::soloChanged(bool flag) - { - song->setSolo(canvas()->track(), flag); - } - -//--------------------------------------------------------- -// pianoCmd -//--------------------------------------------------------- - -void PianoRoll::pianoCmd(QObject* object) - { - QAction* a = (QAction*)object; - QString cmd(a->data().toString()); - - static int rasterTable[] = { - //-9----8- 7 6 5 4 3(1/4) 2 1 - 4, 8, 16, 32, 64, 128, 256, 512, 1024, // triple - 6, 12, 24, 48, 96, 192, 384, 768, 1536, - 9, 18, 36, 72, 144, 288, 576, 1152, 2304 // dot - }; - - int index; - int n = sizeof(rasterTable)/sizeof(*rasterTable); - for (index = 0; index < n; ++index) - if (rasterTable[index] == raster()) - break; - if (index == n) { - index = 0; - // raster 1 is not in table - } - int off = (index / 9) * 9; - index = index % 9; - - int val = 0; - - PianoCanvas* pc = canvas(); - - if (cmd == "curpos_increase") - canvas()->pianoCmd(MCMD_LEFT); - else if (cmd == "curpos_decrease") - canvas()->pianoCmd(MCMD_RIGHT); - else if (cmd == "midi_insert_at_loc") { - pc->pianoCmd(MCMD_INSERT); - return; - } - else if (cmd == "midi_quant_1") - val = rasterTable[8 + off]; - else if (cmd == "midi_quant_2") - val = rasterTable[7 + off]; - else if (cmd == "midi_quant_3") - val = rasterTable[6 + off]; - else if (cmd == "midi_quant_4") - val = rasterTable[5 + off]; - else if (cmd == "midi_quant_5") - val = rasterTable[4 + off]; - else if (cmd == "midi_quant_6") - val = rasterTable[3 + off]; - else if (cmd == "midi_quant_7") - val = rasterTable[2 + off]; - else if (cmd == "midi_quant_triol") - val = rasterTable[index + ((off == 0) ? 9 : 0)]; - else if (cmd == "change_event_color") { - _colorMode = (_colorMode + 1) % 3; - setEventColorMode(_colorMode); - return; - } - else if (cmd == "midi_quant_punct") - val = rasterTable[index + ((off == 18) ? 9 : 18)]; - else if (cmd == "midi_quant_punct2") { - if ((off == 18) && (index > 2)) { - val = rasterTable[index + 9 - 1]; - } - else if ((off == 9) && (index < 8)) { - val = rasterTable[index + 18 + 1]; - } - else - return; - } - else - printf("unknown cmd <%s>\n", cmd.toLatin1().data()); - setQuant(val); - setRaster(val); - toolbar->setQuant(quant()); - toolbar->setRaster(raster()); - } - -//--------------------------------------------------------- -// configQuant -//--------------------------------------------------------- - -void PianoRoll::configQuant() - { - QuantConfig quantConfig(_quantStrength, _quantLimit, _quantLen, this); - if (!quantConfig.exec()) - return; - _quantStrength = quantConfig.quantStrength(); - _quantLimit = quantConfig.quantLimit(); - _quantLen = quantConfig.doQuantLen(); - } - -//--------------------------------------------------------- -// setEventColorMode -//--------------------------------------------------------- - -void PianoRoll::setEventColorMode(QAction* a) - { - setEventColorMode(a->data().toInt()); - } - -void PianoRoll::setEventColorMode(int mode) - { - _colorMode = mode; - for (int i = 0; i < 3; ++i) - colorModeAction[i]->setChecked(mode == i); - canvas()->setColorMode(mode); - } - -//--------------------------------------------------------- -// readConfiguration -// read static init values -//--------------------------------------------------------- - -void PianoRoll::readConfiguration(QDomNode node) - { - for (node = node.firstChild(); !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - QString tag(e.tagName()); - int i = e.text().toInt(); - if (tag == "width") - PianoRoll::initWidth = i; - else if (tag == "height") - PianoRoll::initHeight = i; - else if (tag == "raster") - PianoRoll::initRaster = i; - else if (tag == "quant") - PianoRoll::initQuant = i; - else - printf("MusE:PianoRoll: unknown tag %s\n", tag.toLatin1().data()); - } - } - -//--------------------------------------------------------- -// writeConfiguration -// write static init values -//--------------------------------------------------------- - -void PianoRoll::writeConfiguration(Xml& xml) - { - xml.stag("PianoRoll"); - if (PianoRoll::initWidth != PianoRoll::INIT_WIDTH) - xml.tag("width", PianoRoll::initWidth); - if (PianoRoll::initHeight != PianoRoll::INIT_HEIGHT) - xml.tag("height", PianoRoll::initHeight); - if (PianoRoll::initRaster != PianoRoll::INIT_RASTER) - xml.tag("raster", PianoRoll::initRaster); - if (PianoRoll::initQuant != PianoRoll::INIT_QUANT) - xml.tag("quant", PianoRoll::initQuant); - xml.etag("PianoRoll"); - } diff --git a/muse/muse/midiedit/pianoroll.h b/muse/muse/midiedit/pianoroll.h deleted file mode 100644 index e510408c..00000000 --- a/muse/muse/midiedit/pianoroll.h +++ /dev/null @@ -1,126 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __PIANOROLL_H__ -#define __PIANOROLL_H__ - -#include "midieditor.h" -#include "prcanvas.h" - -namespace AL { - class Xml; - }; -using AL::Xml; - -class PianoCanvas; -class PartList; -class QuantConfig; -class Part; -class TimeCanvas; - -//--------------------------------------------------------- -// PianoRoll -//--------------------------------------------------------- - -class PianoRoll : public MidiEditor { - Q_OBJECT - - Q_PROPERTY(int colorMode READ colorMode WRITE setColorMode) - Q_PROPERTY(int quantStrength READ quantStrength WRITE setQuantStrength) - Q_PROPERTY(int quantLimit READ quantLimit WRITE setQuantLimit) - Q_PROPERTY(bool quantLen READ quantLen WRITE setQuantLen) - - int _quantStrength, _quantLimit; - bool _quantLen; - int _colorMode; - - Event selEvent; - - enum { CMD_EVENT_COLOR, CMD_CONFIG_QUANT, CMD_LAST }; - - QAction* menu_ids[CMD_LAST]; - QMenu *menuFunctions, *menuSelect, *menuConfig; - - int tickOffset; - int lenOffset; - int pitchOffset; - int veloOnOffset; - int veloOffOffset; - bool deltaMode; - - QAction* colorModeAction[3]; - QMenu* eventColor; - QuantConfig* quantConfig; - - QWidget* genToolbar(QWidget* parent); - void setEventColorMode(int); - PianoCanvas* canvas() { return (PianoCanvas*)tcanvas; } - const PianoCanvas* canvas() const { return (PianoCanvas*)tcanvas; } - - private slots: - void setSelection(int, Event&, Part*); - void noteinfoChanged(NoteInfo::ValType, int); - void soloChanged(bool flag); - void configQuant(); - - virtual void cmd(QAction*); - void setEventColorMode(QAction*); - void pianoCmd(QObject*); - - public: - PianoRoll(PartList*, bool); - ~PianoRoll() {} - - int colorMode() const { return _colorMode; } - void setColorMode(int val) { _colorMode = val; } - int quantStrength() const { return _quantStrength; } - int quantLimit() const { return _quantLimit; } - bool quantLen() const { return _quantLen; } - void setQuantStrength(int val) { _quantStrength = val; } - void setQuantLimit(int val) { _quantLimit = val; } - void setQuantLen(bool val) { _quantLen = val; } - - static void readConfiguration(QDomNode); - static void writeConfiguration(Xml&); - static int initRaster, initQuant, initWidth, initHeight; - static bool initFollow, initSpeaker, initMidiin; - static int initColorMode, initApplyTo; - static double initXmag; - static int initQuantStrength, initQuantLimit; - static bool initQuantLen; - - static const int INIT_WIDTH = 650; - static const int INIT_HEIGHT = 450; - static const int INIT_RASTER = 384 / 2; - static const int INIT_QUANT = 384 / 2; - static const bool INIT_FOLLOW = false; - static const bool INIT_SPEAKER = true; - static const bool INIT_MIDIIN = false; - static const bool INIT_SREC = false; - static const bool INIT_COLOR_MODE = 0; - static const double INIT_XMAG = 0.08; - static const int INIT_APPLY_TO = 0; - static const int INIT_QUANT_STRENGTH = 100; - static const int INIT_QUANT_LIMIT = 0; - static const int INIT_QUANT_LEN = false; - }; - -#endif - diff --git a/muse/muse/midiedit/prcanvas.cpp b/muse/muse/midiedit/prcanvas.cpp deleted file mode 100644 index f6890b02..00000000 --- a/muse/muse/midiedit/prcanvas.cpp +++ /dev/null @@ -1,773 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "midieditor.h" -#include "prcanvas.h" -#include "cmd.h" -#include "gatetime.h" -#include "velocity.h" -#include "song.h" -#include "audio.h" -#include "part.h" - -#include "velocity.h" -#include "gatetime.h" - -//--------------------------------------------------------- -// PianoCanvas -//--------------------------------------------------------- - -PianoCanvas::PianoCanvas(MidiEditor* pr) - : EventCanvas(pr, TIME_CANVAS_PIANOROLL) - { - verticalScrollBar()->setSingleStep(keyHeight/2); - playedPitch = -1; - colorMode = 0; - canvasTools = PointerTool | PencilTool | RubberTool | DrawTool; - - // register midi commands - cmdModifyGateTime = new ModifyGateTimeCmd(pr); - cmdModifyVelocity = new ModifyVelocityCmd(pr); - - songChanged(SC_TRACK_INSERTED); - } - -//--------------------------------------------------------- -// addItem -//--------------------------------------------------------- - -void PianoCanvas::addItem(Part* part, const Event& event) - { - CItem* item = new CItem(event, part); - int y = pitch2y(event.pitch()) + keyHeight/4 + (int)(wpos.y()/_ymag); - item->pos = event.pos() + *part; - unsigned time = item->pos.time(timeType()); - item->bbox = QRect(time, y, event.lenTick(), keyHeight/2); - items.add(item); - } - -//--------------------------------------------------------- -// timeTypeChanged -//--------------------------------------------------------- - -void PianoCanvas::timeTypeChanged() - { - // - // recalculate bounding boxes - // - for (iCItem i = items.begin(); i != items.end(); ++i) { - CItem* item = i->second; - unsigned t1 = item->event.pos().time(timeType()); - unsigned t2 = item->event.end().time(timeType()); - item->bbox.setX(t1 + (item->part)->time(timeType())); - item->bbox.setWidth(t2 - t1); - } - } - -//--------------------------------------------------------- -// paint -//--------------------------------------------------------- - -void PianoCanvas::paint(QPainter& p, QRect cr) - { - static QColor color1[12] = { - QColor(0xff, 0x3d, 0x39), - QColor(0x39, 0xff, 0x39), - QColor(0x39, 0x3d, 0xff), - QColor(0xff, 0xff, 0x39), - QColor(0xff, 0x3d, 0xff), - QColor(0x39, 0xff, 0xff), - QColor(0xff, 0x7e, 0x7a), - QColor(0x7a, 0x7e, 0xff), - QColor(0x7a, 0xff, 0x7a), - QColor(0xff, 0x7e, 0xbf), - QColor(0x7a, 0xbf, 0xff), - QColor(0xff, 0xbf, 0x7a) - }; - - QPoint off(MAP_OFFSET - wpos.x(), -wpos.y()); - p.translate(off); - cr.translate(-off); - - int time1 = lrint(cr.x() / _xmag); - int w = lrint(cr.width() / _xmag); - cr.setRect( - time1, - lrint(cr.y() / _ymag), - w, - lrint(cr.height() / _ymag) - ); - p.scale(_xmag, _ymag); - - int time2 = time1 + w; - - //--------------------------------------------------- - // draw Canvas Items - //--------------------------------------------------- - - p.setPen(QPen(Qt::black, 0.0)); - - for (iCItem i = items.begin(); i != items.end(); ++i) { - CItem* item = i->second; - QRect r(item->bbox); - if (r.x() >= time2) - break; - if (!cr.intersects(r)) - continue; - Event event(item->event); - - QColor color; - if (item->part != curPart) - p.setBrush(Qt::lightGray); - else { - if (item->isMoving) { - p.setBrush(Qt::gray); - p.drawRect(r); - p.setBrush(Qt::NoBrush); - int x = item->moving.tick(); - int y = item->my + item->bbox.height()/2; - int w = item->bbox.width(); - int h = item->bbox.height(); - p.drawRect(x, y, w, h); - } - else if (item->isSelected()) { - p.setBrush(Qt::black); - } - else { - if (colorMode == 1) - color = color1[event.pitch() % 12]; - else if (colorMode == 2) { - int velo = event.velo(); - if (velo < 64) - color.setRgb(velo*4, 0, 0xff); - else - color.setRgb(0xff, 0, (127-velo) * 4); - } - else - color.setRgb(0, 0, 255); - p.setBrush(color); - } - } - p.drawRect(r); - } - - //--------------------------------------------------- - // draw lasso - //--------------------------------------------------- - - p.resetMatrix(); - p.translate(rCanvasA.topLeft()); - - if (drag == DRAG_LASSO) { - p.setPen(Qt::blue); - p.setBrush(Qt::NoBrush); - p.drawRect(lasso); - QColor fillColor(Qt::blue); - fillColor.setAlpha(40); - QBrush fillBrush(fillColor); - p.fillRect(lasso,fillBrush); - } - } - -//--------------------------------------------------------- -// viewMouseDoubleClickEvent -//--------------------------------------------------------- - -void PianoCanvas::viewMouseDoubleClickEvent(QMouseEvent* event) - { - if ((_tool != PointerTool) && (event->button() != Qt::LeftButton)) { -// mousePress(event); - return; - } - } - -//--------------------------------------------------------- -// moveItem -// called after moving an object -//--------------------------------------------------------- - -void PianoCanvas::moveItem(CItem* item, DragType dtype) - { - Part* part = item->part; - Event event = item->event; - int npitch = y2pitch((int)((item->my - (int)(wpos.y()/_ymag) - + item->bbox.height())*_ymag)); - if ((curItem==item) //remove this if want to have all selection playing - && event.pitch() != npitch && editor->playEvents()) { - // release note: - MidiEvent ev1(0, 0, 0x90, playedPitch, 0); - track()->playMidiEvent(&ev1); - //remove below because the note is never cut off - //MidiEvent ev2(0, 0, 0x90, npitch + track()->transposition(), event.velo()); - //track()->playMidiEvent(&ev2); - } - - Event newEvent = event.clone(); - newEvent.setPitch(npitch); - newEvent.setPos(item->moving - *part); - - if (dtype == MOVE_COPY) - audio->msgAddEvent(newEvent, part, false); - else - audio->msgChangeEvent(event, newEvent, part, false); - } - -//--------------------------------------------------------- -// newItem(p, state) -//--------------------------------------------------------- - -CItem* PianoCanvas::newItem(const QPoint& p, int) - { - Pos opos(pix2pos(p.x())); - Pos pos(opos); - pos.downSnap(raster()); - - if (pos < partPos1 || pos >= partPos2) - return 0; - - int pitch = y2pitch(p.y()); - - Event e(Note); - e.setPitch(pitch); - e.setVelo(curVelo); - e.setPos(pos - *curPart); - - CItem* i = new CItem(e, curPart); - int l = timeType() == AL::TICKS ? e.lenTick() : e.lenFrame(); - int x = pos.time(timeType()); - int y = pitch2y(pitch) + keyHeight/4 + (int)(wpos.y() / _ymag); - i->bbox = QRect(x, y, l, keyHeight/2); - - return i; - } - -void PianoCanvas::newItem(CItem* item, bool noSnap) - { - Event event = item->event; - Pos p1(item->bbox.x(), timeType()); - Pos p2(item->bbox.x() + item->bbox.width(), timeType()); - int tickLen; - - if (noSnap) - tickLen = p2.tick() - p1.tick(); - else { - p1.downSnap(raster()); - tickLen = editor->quantVal(p2.tick() - p1.tick()); - } - - Part* part = item->part; - event.setPos(p1 - *part); - event.setLenTick(tickLen); - audio->msgAddEvent(event, part); - } - -//--------------------------------------------------------- -// resizeItem -//--------------------------------------------------------- - -void PianoCanvas::resizeItem(CItem* item, bool noSnap) - { - Event event = item->event; - Event newEvent = event.clone(); - int len; - if (noSnap) - len = item->bbox.width(); - else - len = editor->quantVal(item->bbox.width()); - newEvent.setLenTick(len); - audio->msgChangeEvent(event, newEvent, item->part); - } - -//--------------------------------------------------------- -// deleteItem -//--------------------------------------------------------- - -bool PianoCanvas::deleteItem(CItem* item) - { - if (item->part == curPart) { - Event ev = item->event; - audio->msgDeleteEvent(ev, curPart); - return true; - } - return false; - } - -//--------------------------------------------------------- -// pianoCmd -//--------------------------------------------------------- - -void PianoCanvas::pianoCmd(int cmd) - { - switch(cmd) { - case MCMD_LEFT: - { - int frames = pos[0].tick() - editor->rasterStep(pos[0].tick()); - if (frames < 0) - frames = 0; - Pos p(frames, AL::TICKS); - song->setPos(0, p, true, true, true); //CDW - } - break; - case MCMD_RIGHT: - { - Pos p(pos[0].tick() + editor->rasterStep(pos[0].tick()), AL::TICKS); - //if (p > part->tick()) - // p = part->tick(); - song->setPos(0, p, true, true, true); //CDW - } - break; - case MCMD_INSERT: - { - if (pos[0].tick() < startTick || pos[0].tick() >= endTick) - break; - Part* part = curPart; - - if (part == 0) - break; - song->startUndo(); - EventList* el = part->events(); - - std::list elist; - for (iEvent e = el->lower_bound(pos[0].tick() - part->tick()); e != el->end(); ++e) - elist.push_back((Event)e->second); - for (std::list::iterator i = elist.begin(); i != elist.end(); ++i) { - Event event = *i; - Event newEvent = event.clone(); - newEvent.setTick(event.tick() + editor->raster()); - audio->msgChangeEvent(event, newEvent, part, false); - } - song->endUndo(SC_EVENT_MODIFIED); - Pos p(editor->rasterVal(pos[0].tick() + editor->rasterStep(pos[0].tick())), AL::TICKS); - song->setPos(0, p, true, false, true); - } - return; - case MCMD_DELETE: - if (pos[0].tick() < startTick || pos[0].tick() >= endTick) - break; - { - Part* part = curPart; - if (part == 0) - break; - song->startUndo(); - EventList* el = part->events(); - - std::list elist; - for (iEvent e = el->lower_bound(pos[0].tick()); e != el->end(); ++e) - elist.push_back((Event)e->second); - for (std::list::iterator i = elist.begin(); i != elist.end(); ++i) { - Event event = *i; - Event newEvent = event.clone(); - newEvent.setTick(event.tick() - editor->raster() - part->tick()); - audio->msgChangeEvent(event, newEvent, part, false); - } - song->endUndo(SC_EVENT_MODIFIED); - Pos p(editor->rasterVal(pos[0].tick() - editor->rasterStep(pos[0].tick())), AL::TICKS); - song->setPos(0, p, true, false, true); - } - break; - } - } - -//--------------------------------------------------------- -// cmd -// pulldown menu commands -//--------------------------------------------------------- - -void PianoCanvas::cmd(QAction* a, int quantStrength, int quantLimit, bool quantLen) - { - QString cmd(a->data().toString()); - - if (cmd == "paste") - paste(); - else if (cmd == "delete") { - if (selectionSize()) { - song->startUndo(); - for (iCItem i = items.begin(); i != items.end(); ++i) { - if (!i->second->isSelected()) - continue; - Event ev = i->second->event; - audio->msgDeleteEvent(ev, i->second->part, false); - } - song->endUndo(SC_EVENT_REMOVED); - } - return; - } - if (cmd == "midi_over_quant") - quantize(100, 1, quantLen); - else if (cmd == "midi_quant_noteon") - quantize(50, 1, false); - else if (cmd == "midi_quant_noteoff") - quantize(50, 1, true); - else if (cmd == "midi_quant_iterative") - quantize(quantStrength, quantLimit, quantLen); - else if (cmd == "sel_all") { - for (iCItem k = items.begin(); k != items.end(); ++k) { - if (!k->second->isSelected()) - selectItem(k->second, true); - } - } - else if (cmd == "sel_none") - deselectAll(); - else if (cmd == "sel_inv") { - for (iCItem k = items.begin(); k != items.end(); ++k) - selectItem(k->second, !k->second->isSelected()); - } - else if (cmd == "sel_ins_loc") { - for (iCItem k = items.begin(); k != items.end(); ++k) { - CItem* item = k->second; - Event event = item->event; - unsigned tick = event.tick(); - if (tick < song->lpos() || tick >= song->rpos()) - selectItem(k->second, false); - else - selectItem(k->second, true); - } - } - else if (cmd == "sel_out_loc") { - for (iCItem k = items.begin(); k != items.end(); ++k) { - CItem* item = k->second; - Event event = item->event; - unsigned tick = event.tick(); - if (tick < song->lpos() || tick >= song->rpos()) - selectItem(k->second, true); - else - selectItem(k->second, false); - } - } - else if (cmd == "midi_mod_gate_time") - cmdModifyGateTime->processEvents(&items); - else if (cmd == "midi_mod_velo") - cmdModifyVelocity->processEvents(&items); - updateSelection(); - widget()->update(); - } - -//--------------------------------------------------------- -// quantize -//--------------------------------------------------------- - -void PianoCanvas::quantize(int strength, int limit, bool quantLen) - { - song->startUndo(); - for (iCItem k = items.begin(); k != items.end(); ++k) { - CItem* item = k->second; - Event event = item->event; - Part* part = item->part; - if (event.type() != Note) - continue; - - if ((editor->applyTo() & CMD_RANGE_SELECTED) && !k->second->isSelected()) - continue; - - unsigned tick = event.tick() + part->tick(); - - if ((editor->applyTo() & CMD_RANGE_LOOP) - && ((tick < song->lpos() || tick >= song->rpos()))) - continue; - - unsigned len = event.lenTick(); - int tick2 = tick + len; - - // quant start position - int diff = editor->rasterVal(tick) - tick; - if (abs(diff) > limit) - tick += ((diff * strength) / 100); - - // quant len - diff = editor->rasterVal(tick2) - tick2; - if (quantLen && (abs(diff) > limit)) - len += ((diff * strength) / 100); - - // something changed? - if (((event.tick() + part->tick()) != tick) || (event.lenTick() != len)) { - Event newEvent = event.clone(); - newEvent.setTick(tick - part->tick()); - newEvent.setLenTick(len); - audio->msgChangeEvent(event, newEvent, part, false); - } - } - song->endUndo(SC_EVENT_MODIFIED); - } - -//--------------------------------------------------------- -// paste -// paste events -//--------------------------------------------------------- - -void PianoCanvas::paste() - { - QString stype("x-muse-eventlist"); - QString s = QApplication::clipboard()->text(stype, QClipboard::Selection); - pasteAt(s, song->cpos()); - } - -//--------------------------------------------------------- -// startDrag -//--------------------------------------------------------- - -void PianoCanvas::startDrag(CItem* /*item*/, bool /*copymode*/) - { -printf("PianoCanvas: startDrag\n"); - QMimeData* drag = getTextDrag(); - if (drag) { - QApplication::clipboard()->setMimeData(drag); -#if 0 - if (copymode) - drag->dragCopy(); - else - drag->dragMove(); -#endif - } - } - -//--------------------------------------------------------- -// dragEnterEvent -//--------------------------------------------------------- - -void PianoCanvas::dragEnterEvent(QDragEnterEvent*) - { -printf("PianoCanvas: dragEnterEvent\n"); -//TD event->accept(Q3TextDrag::canDecode(event)); - } - -//--------------------------------------------------------- -// dragMoveEvent -//--------------------------------------------------------- - -void PianoCanvas::dragMoveEvent(QDragMoveEvent*) - { - printf("drag move %p\n", this); - } - -//--------------------------------------------------------- -// dragLeaveEvent -//--------------------------------------------------------- - -void PianoCanvas::dragLeaveEvent(QDragLeaveEvent*) - { - printf("drag leave\n"); - } - -//--------------------------------------------------------- -// dropEvent -//--------------------------------------------------------- - -void PianoCanvas::viewDropEvent(QDropEvent*) - { -printf("PianoCanvas: viewDropEvent\n"); -#if 0 //TD - QString text; - if (event->source() == this) { - printf("local DROP\n"); - return; - } - if (Q3TextDrag::decode(event, text)) { - int x = editor->rasterVal(event->pos().x()); - if (x < 0) - x = 0; - pasteAt(text, x); - } - else { - printf("cannot decode drop\n"); - } -#endif - } - - -//--------------------------------------------------------- -// itemPressed -//--------------------------------------------------------- - -void PianoCanvas::itemPressed(const CItem* item) - { - if (!editor->playEvents()) - return; - Event event = item->event; - playedPitch = event.pitch() + track()->transposition(); - //int velo = event.velo(); - - // play note: - //I comment the following code because a note - //is already played in EventCanvas::mousePressCanvasA(QMouseEvent* me) - /*MidiEvent e(0, 0, 0x90, playedPitch, velo); - track()->playMidiEvent(&e);*/ - } - -//--------------------------------------------------------- -// itemReleased -//--------------------------------------------------------- - -void PianoCanvas::itemReleased() - { - if (!editor->playEvents()) - return; - - // release note: - MidiEvent ev(0, 0, 0x90, playedPitch, 0); - track()->playMidiEvent(&ev); - playedPitch = -1; - } - -//--------------------------------------------------------- -// itemMoved -//--------------------------------------------------------- - -void PianoCanvas::itemMoved(const CItem* item) - { - int npitch = y2pitch((int)((item->my - (int)(wpos.y()/_ymag) - + item->bbox.height())*_ymag)); - npitch += track()->transposition(); - if ((curItem==item) //remove this if want to have all selection playing - && (playedPitch != -1) && (playedPitch != npitch) - && editor->playEvents()) { - Event event = item->event; - // release note: - MidiEvent ev1(0, 0, 0x90, playedPitch, 0); - track()->playMidiEvent(&ev1); - // play note: - MidiEvent e2(0, 0, 0x90, npitch, event.velo()); - track()->playMidiEvent(&e2); - playedPitch = npitch; - } - } - -//--------------------------------------------------------- -// modifySelected -//--------------------------------------------------------- - -void PianoCanvas::modifySelected(NoteInfo::ValType type, int delta) - { - audio->msgIdle(true); - song->startUndo(); - for (iCItem i = items.begin(); i != items.end(); ++i) { - if (!(i->second->isSelected())) - continue; - CItem* e = i->second; - Event event = e->event; - if (event.type() != Note) - continue; - - Part* part = e->part; - Event newEvent = event.clone(); - - switch (type) { - case NoteInfo::VAL_TIME: - { - int newTime = event.tick() + delta; - if (newTime < 0) - newTime = 0; - newEvent.setTick(newTime); - } - break; - case NoteInfo::VAL_LEN: - { - int len = event.lenTick() + delta; - if (len < 1) - len = 1; - newEvent.setLenTick(len); - } - break; - case NoteInfo::VAL_VELON: - { - int velo = event.velo() + delta; - if (velo > 127) - velo = 127; - else if (velo < 0) - velo = 0; - newEvent.setVelo(velo); - } - break; - case NoteInfo::VAL_VELOFF: - { - int velo = event.veloOff() + delta; - if (velo > 127) - velo = 127; - else if (velo < 0) - velo = 0; - newEvent.setVeloOff(velo); - } - break; - case NoteInfo::VAL_PITCH: - { - int pitch = event.pitch() + delta; - if (pitch > 127) - pitch = 127; - else if (pitch < 0) - pitch = 0; - newEvent.setPitch(pitch); - } - break; - } - song->changeEvent(event, newEvent, part); - song->undoOp(UndoOp::ModifyEvent, newEvent, event, part); - } - song->endUndo(SC_EVENT_MODIFIED); - audio->msgIdle(false); - } - -//--------------------------------------------------------- -// setColorMode -//--------------------------------------------------------- - -void PianoCanvas::setColorMode(int mode) - { - colorMode = mode; - widget()->update(); - } - -//--------------------------------------------------------- -// searchItem -//--------------------------------------------------------- - -CItem* PianoCanvas::searchItem(const QPoint& pt) const - { - QPoint p( - lrint((pt.x() - MAP_OFFSET + wpos.x()) / _xmag), - lrint((pt.y() + wpos.y()) / _ymag) - ); - return items.find(p); - } - -//--------------------------------------------------------- -// selectLasso -//--------------------------------------------------------- - -void PianoCanvas::selectLasso(bool toggle) - { - QRect r( - lrint((lasso.x() + wpos.x()) / _xmag), - lrint((lasso.y() + wpos.y()) / _ymag), - lrint(lasso.width() / _xmag), - lrint(lasso.height() / _ymag) - ); - - int n = 0; - for (iCItem i = items.begin(); i != items.end(); ++i) { - if (i->second->intersects(r)) { - selectItem(i->second, !(toggle && i->second->isSelected())); - ++n; - } - } - if (n) { - updateSelection(); - widget()->update(); - } - } - diff --git a/muse/muse/midiedit/prcanvas.h b/muse/muse/midiedit/prcanvas.h deleted file mode 100644 index 7f92e95e..00000000 --- a/muse/muse/midiedit/prcanvas.h +++ /dev/null @@ -1,75 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __PRCANVAS_H__ -#define __PRCANVAS_H__ - -#include "ecanvas.h" - -class CItem; -class MidiCmd; - -//--------------------------------------------------------- -// PianoCanvas -//--------------------------------------------------------- - -class PianoCanvas : public EventCanvas { - Q_OBJECT - - int colorMode; - int playedPitch; - - MidiCmd* cmdModifyGateTime; - MidiCmd* cmdModifyVelocity; - - virtual void paint(QPainter&, QRect); - virtual CItem* searchItem(const QPoint& p) const; - virtual void addItem(Part* part, const Event& event); - virtual void viewMouseDoubleClickEvent(QMouseEvent*); - virtual void moveItem(CItem*, DragType); - virtual CItem* newItem(const QPoint&, int); - virtual void resizeItem(CItem*, bool noSnap); - virtual void newItem(CItem*, bool noSnap); - virtual bool deleteItem(CItem*); - virtual void startDrag(CItem* item, bool copymode); - virtual void dragEnterEvent(QDragEnterEvent* event); - virtual void dragMoveEvent(QDragMoveEvent*); - virtual void dragLeaveEvent(QDragLeaveEvent*); - virtual void viewDropEvent(QDropEvent* event); - virtual void selectLasso(bool toggle); - virtual void timeTypeChanged(); - - void quantize(int, int, bool); - void paste(); - virtual void itemPressed(const CItem*); - virtual void itemReleased(); - virtual void itemMoved(const CItem*); - - public slots: - void pianoCmd(int); - - public: - PianoCanvas(MidiEditor*); - void cmd(QAction*, int, int, bool); - void setColorMode(int mode); - virtual void modifySelected(NoteInfo::ValType type, int delta); - }; -#endif - diff --git a/muse/muse/midiedit/quantconfig.cpp b/muse/muse/midiedit/quantconfig.cpp deleted file mode 100644 index 229b8875..00000000 --- a/muse/muse/midiedit/quantconfig.cpp +++ /dev/null @@ -1,68 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "quantconfig.h" - -const char* wtStrengthTxt = QT_TR_NOOP("sets amount of quantization:\n" - "0 - no quantization\n" - "100 - full quantization"); -const char* wtQLimitTxt = QT_TR_NOOP("don't quantize notes above this tick limit"); -const char* wtQLenTxt = QT_TR_NOOP("quantize also note len as default"); - -//--------------------------------------------------------- -// QuantConfig -//--------------------------------------------------------- - -QuantConfig::QuantConfig(int s, int l, bool lenFlag, QWidget* parent) - : QDialog(parent) - { - setupUi(this); - strength->setValue(s); - dontQuantize->setValue(l); - quantLen->setChecked(lenFlag); - } - -//--------------------------------------------------------- -// quantStrength -//--------------------------------------------------------- - -int QuantConfig::quantStrength() const - { - return strength->value(); - } - -//--------------------------------------------------------- -// quantLimit -//--------------------------------------------------------- - -int QuantConfig::quantLimit() const - { - return dontQuantize->value(); - } - -//--------------------------------------------------------- -// doQuantLen -//--------------------------------------------------------- - -bool QuantConfig::doQuantLen() const - { - return quantLen->isChecked(); - } - diff --git a/muse/muse/midiedit/quantconfig.h b/muse/muse/midiedit/quantconfig.h deleted file mode 100644 index 08e75cb2..00000000 --- a/muse/muse/midiedit/quantconfig.h +++ /dev/null @@ -1,42 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __QCONFIG_H__ -#define __QCONFIG_H__ - -#include "ui_quantconfig.h" - -//--------------------------------------------------------- -// QuantConfig -//--------------------------------------------------------- - -class QuantConfig : public QDialog, public Ui::QuantConfigBase { - Q_OBJECT - - public: - QuantConfig(int, int, bool, QWidget* parent = 0); - int quantStrength() const; - int quantLimit() const; - bool doQuantLen() const; - }; - - -#endif - diff --git a/muse/muse/midiedit/quantconfig.ui b/muse/muse/midiedit/quantconfig.ui deleted file mode 100644 index 1da9f790..00000000 --- a/muse/muse/midiedit/quantconfig.ui +++ /dev/null @@ -1,151 +0,0 @@ - - - - - QuantConfigBase - - - - 0 - 0 - 333 - 193 - - - - MusE: Configure Quantize - - - - 9 - - - 6 - - - - - 500 - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - - 131 - 31 - - - - - - - - OK - - - - - - - Cancel - - - - - - - - - Strength: - - - - - - - % - - - 100 - - - - - - - Don't Quantize: - - - - - - - Quant Len - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - okButton - clicked() - QuantConfigBase - accept() - - - 278 - 253 - - - 96 - 254 - - - - - cancelButton - clicked() - QuantConfigBase - reject() - - - 369 - 253 - - - 179 - 282 - - - - - diff --git a/muse/muse/midiedit/trackpattern.cpp b/muse/muse/midiedit/trackpattern.cpp deleted file mode 100644 index d50fffd0..00000000 --- a/muse/muse/midiedit/trackpattern.cpp +++ /dev/null @@ -1,627 +0,0 @@ -#include "trackpattern.h" -#include "event.h" -#include "al/sig.h" - -class EventList; - -#define MAX(x,y) (x>y?x:y) - -#define EMPTYCHAR "-" -#define NONREADCHAR "*" -#define SPACECHAR "-" -#define PLUSCHAR "+" -#define STOPCHAR "=" -#define SEPCHAR " " -//#define FONT "Console" -#define FONT "Monospace" -//#define FONT "MiscFixed" -#define FONT_HEIGHT 14 -#define OFFSET_HEIGHT 3 -#define OFFSET_Y 3 - -//---------------------------------------------------------- -// EventPat -// has to be derived, can be note or control -//---------------------------------------------------------- -EventPat::EventPat(bool e, bool r) {_isEmpty = e; _isReadable = r;} -EventPat::EventPat() {EventPat(true, true);} -EventPat::~EventPat() {} - -void EventPat::setEmpty(bool e) {_isEmpty = e;} -bool EventPat::getEmpty() {return _isEmpty;} -void EventPat::setReadable(bool r) {_isReadable = r;} -bool EventPat::getReadable() {return _isReadable;} - -//---------------------------------------------------------- -// VoiceEventPat -//---------------------------------------------------------- -VoiceEventPat::VoiceEventPat(int n, int v):EventPat(false, true) { - _noteNum = n; - _velocity = v; -} - -VoiceEventPat::VoiceEventPat(bool e, bool r):EventPat(e, r) {} - -VoiceEventPat::VoiceEventPat():EventPat(true, true) {} - -VoiceEventPat::~VoiceEventPat() {} - - -void VoiceEventPat::setNoteNum(int n) { _noteNum = n; } - -int VoiceEventPat::getNoteNum() { return _noteNum; } - -void VoiceEventPat::setVelocity(int n) { _velocity = n; } - -int VoiceEventPat::getVelocity() { return _velocity; } - -QString VoiceEventPat::str() { - if(_isEmpty) { - return QString(EMPTYCHAR EMPTYCHAR EMPTYCHAR EMPTYCHAR) - + QString(SEPCHAR) + QString(EMPTYCHAR EMPTYCHAR EMPTYCHAR); - } - else if(_isReadable) { - if(_velocity==0) { - return QString(STOPCHAR STOPCHAR STOPCHAR STOPCHAR) - + QString(SEPCHAR) + QString(EMPTYCHAR EMPTYCHAR EMPTYCHAR); - } - else { - int octave = _noteNum/12 - 2; - int note = _noteNum%12; - QString sNote; - switch(note) { - case 0: sNote = QString("C") + QString(SPACECHAR); - break; - case 1: sNote = QString("C#"); - break; - case 2: sNote = QString("D") + QString(SPACECHAR); - break; - case 3: sNote = QString("D#"); - break; - case 4: sNote = QString("E") + QString(SPACECHAR); - break; - case 5: sNote = QString("F") + QString(SPACECHAR); - break; - case 6: sNote = QString("F#"); - break; - case 7: sNote = QString("G") + QString(SPACECHAR); - break; - case 8: sNote = QString("G#"); - break; - case 9: sNote = QString("A") + QString(SPACECHAR); - break; - case 10: sNote = QString("A#"); - break; - case 11: sNote = QString("F") + QString(SPACECHAR); - break; - default: - printf("VoiceEventPat::str() Error : case note not treated\n"); - break; - } - QString sOctave; - sOctave.setNum(octave); - if(octave>=0) { - sOctave = QString(PLUSCHAR) + sOctave; - } - QString sVel; - sVel.setNum(_velocity); - if(_velocity<10) { - sVel = QString("00") + sVel; - } - else if(_velocity<100) { - sVel = QString("0") + sVel; - } - return sNote + sOctave + QString(SEPCHAR) + sVel; - } - } - else { - return QString(NONREADCHAR NONREADCHAR NONREADCHAR NONREADCHAR) - + QString(SEPCHAR) + QString(NONREADCHAR NONREADCHAR NONREADCHAR); - } -} - -//---------------------------------------------------------- -// CtrlEventPat -//---------------------------------------------------------- -CtrlEventPat::CtrlEventPat(int c, int v):EventPat(false, true) { - _ctrlNum = c; - _value = v; -} - -CtrlEventPat::CtrlEventPat():EventPat(true, true) {} - -CtrlEventPat::~CtrlEventPat() {} - - -void CtrlEventPat::setCtrlNum(int n) { _ctrlNum = n; } - -int CtrlEventPat::getCtrlNum() { return _ctrlNum; } - -void CtrlEventPat::setValue(int n) { _value = n; } - -int CtrlEventPat::getValue() { return _value; } - -QString CtrlEventPat::str() { - //TODO - if(_isReadable) { - QString sCtrl; - sCtrl.setNum(_ctrlNum); - QString s = " "; - QString sVal; - sVal.setNum(_value); - return sCtrl + s + sVal; - } - else { - QString s = "***"; - return s; - } -} - -//---------------------------------------------------------- -// BasePat -//---------------------------------------------------------- -BasePat::BasePat() { -} -BasePat::BasePat(QString name, unsigned firstTick, - unsigned lastTick, int quant) { - _name = name; - _firstTick = firstTick; - _lastTick = lastTick; - _quant = quant; -} - -BasePat::~BasePat() {} - -QString BasePat::getName() { - return _name; -} - -bool BasePat::isRow(unsigned tick) { - Pos p = AL::sigmap.raster(_firstTick + tick, _quant); - return p.tick() == _firstTick + tick; -} - -unsigned BasePat::tick2row(unsigned tick) { - return (_firstTick + tick) / _quant - (_firstTick / _quant); -} - -//---------------------------------------------------------- -// VoicePat -//---------------------------------------------------------- -VoicePat::VoicePat(QString name, unsigned firstTick, unsigned lastTick, - int quant):BasePat(name, firstTick, lastTick, quant) { - _events = new EventList(); -} - -VoicePat::~VoicePat() { - delete(_events); -} - - -std::vector VoicePat::getEventsCol() { - return _eventsCol; -} - -bool VoicePat::add(const Event* ev, unsigned tick) { - Event* e = new Event(*ev); - if(isFreeSpace(e, tick)) { - //add into the list of events - _events->add(*e, tick); - //add the begin tick into the column - unsigned beginRow = tick2row(tick); - if(beginRow >= _eventsCol.size()) { - for(unsigned i = _eventsCol.size(); i <= beginRow; i++) { - //empty voice event - _eventsCol.push_back(new VoiceEventPat()); - } - } - VoiceEventPat* vbep; - if(isRow(tick)) vbep = new VoiceEventPat(e->pitch(), e->velo()); - else vbep = new VoiceEventPat(false, false); //non-readable - if(_eventsCol[beginRow]) delete(_eventsCol[beginRow]); - _eventsCol[beginRow] = vbep; - - //add the end tick into the column - unsigned endTick = e->lenTick() + tick; - unsigned endRow = tick2row(endTick); - if(endRow >= _eventsCol.size()) { - for(unsigned i = _eventsCol.size(); i <= endRow; i++) { - //empty voice event - _eventsCol.push_back(new VoiceEventPat()); - } - } - VoiceEventPat* veep; - if(isRow(endTick)) veep = new VoiceEventPat(e->pitch(), 0); - else veep = new VoiceEventPat(false, false); //non-readable - if(_eventsCol[endRow] - && - (_eventsCol[endRow]->getEmpty() || tick2row(endTick)==tick2row(tick))) { - delete(_eventsCol[endRow]); - _eventsCol[endRow] = veep; - } - return true; - } - else { - return false; - } -} - -bool VoicePat::isFreeSpace(const Event* e, unsigned tick) { - bool isFree = true; - for(ciEvent ce = _events->begin(); ce != _events->end(); ce++) { - const Event* cevent = &ce->second; - unsigned beginTick = ce->first; - unsigned endTick = ce->first + cevent->lenTick(); - isFree = (endTick <= tick) || (beginTick >= tick + e->lenTick()); - if(!isFree) break; - } - return isFree; -} - -//---------------------------------------------------------- -// CtrlPat -//---------------------------------------------------------- -CtrlPat::CtrlPat(QString /*name*/) { -} - -CtrlPat::~CtrlPat() {} - -//---------------------------------------------------------- -// BaseTrackPat -//---------------------------------------------------------- -BaseTrackPat::BaseTrackPat(QMainWindow* parent, unsigned anr) { - _parent = parent; - _tree = new QTreeWidget(this); - - _absoluteNbrRow = anr; - - _update = false; - - connect(_tree, SIGNAL(itemClicked(QTreeWidgetItem*, int)), - SLOT(currentItemChanged(QTreeWidgetItem*))); - connect(_tree, SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), - SLOT(currentItemChanged(QTreeWidgetItem*))); - connect(_parent, SIGNAL(signalMoveCurrentRow(unsigned)), this, - SLOT(moveRowFromSignal(unsigned))); - //connect signalSongChanged to update the pattern - connect(parent, SIGNAL(signalSongChanged(int)), this, SLOT(updatePattern(int))); -} - -BaseTrackPat::~BaseTrackPat() { -} - -void BaseTrackPat::setRowMag() { - _rowMag = (unsigned) height()/_fontHeight - OFFSET_Y; - _lastRow = _firstRow + _rowMag - 1; -} -void BaseTrackPat::setFirstRow(unsigned f) { - _firstRow = f; - _lastRow = f + _rowMag - 1; -} -void BaseTrackPat::setRelativeCurrentRow(unsigned r) { - _relativeCurrentRow = r; - _absoluteCurrentRow = r + _firstRow; -} -void BaseTrackPat::setAbsoluteCurrentRow(unsigned a) { - _absoluteCurrentRow = a; - _relativeCurrentRow = a - _firstRow; -} - -unsigned BaseTrackPat::getRowMag() { - return _rowMag; -} -unsigned BaseTrackPat::getFirstRow() { - return _firstRow; -} -unsigned BaseTrackPat::getLastRow() { - return _lastRow; -} -unsigned BaseTrackPat::getRelativeCurrentRow() { - return _relativeCurrentRow; -} -unsigned BaseTrackPat::getAbsoluteCurrentRow() { - return _absoluteCurrentRow; -} - -unsigned BaseTrackPat::getAbsoluteNbrRow() { - return _absoluteNbrRow; -} - -void BaseTrackPat::moveRelativeCurrentRow(unsigned newIndex) { - if(newIndex==0 && getFirstRow()>0) { - setFirstRow(getFirstRow() - 1); - setRelativeCurrentRow(newIndex + 1); - _update = true; - } - else if(newIndex==getRowMag()-1 && getLastRow()<_absoluteNbrRow-1) { - setFirstRow(getFirstRow() + 1); - setRelativeCurrentRow(newIndex - 1); - _update = true; - } - else setRelativeCurrentRow(newIndex); -} - -//void BaseTrackPat::itemSelectionChanged() { -void BaseTrackPat::currentItemChanged(QTreeWidgetItem* nitem) { - int index; - if(nitem) { - index = _tree->indexOfTopLevelItem(nitem); - - emit moveCurrentRow(index); - } -} - -void BaseTrackPat::moveRowFromSignal(unsigned index) { - moveRelativeCurrentRow(index); - if(_update==true) { - fillPattern(); - _update = false; - } - selectCurrentRow(); -} - -void BaseTrackPat::resizeEvent(QResizeEvent* /*event*/) { - setRowMag(); - fillPattern(); - selectCurrentRow(); -} - -void BaseTrackPat::selectCurrentRow() { - unsigned rcr = getRelativeCurrentRow(); - if(rcr < getRowMag()) { - QTreeWidgetItem* item = _tree->topLevelItem(getRelativeCurrentRow()); - if(item) { - _tree->blockSignals(true); - item->setSelected(true); - _tree->setCurrentItem(item); - _tree->blockSignals(false); - } - } -} - -void BaseTrackPat::updatePattern(int /*type*/) { - clearMatrix(); - buildMatrix(); - fillPattern(); - selectCurrentRow(); -} - -//---------------------------------------------------------- -// TrackPattern -//---------------------------------------------------------- -TrackPattern::TrackPattern(QMainWindow* parent, QString name, - unsigned firstTick, unsigned lastTick, - int quant, PartList* pl, MidiTrack* t, unsigned anr) - : BaseTrackPat(parent, anr), BasePat(name, firstTick, lastTick, quant) { - - //set attributs - _track = t; - - //build the list of parts belonging to track t - _partList = new PartList; - for(ciPart p = pl->begin(); p != pl->end(); p++) { - Part* part = p->second; - if(t==part->track()) - _partList->add(part); - } - - //build the matrix of events - buildMatrix(); - - //configure and add the dockWidget - setWindowTitle(_track->name()); - setFeatures(QDockWidget::DockWidgetClosable |QDockWidget::DockWidgetMovable); - parent->addDockWidget(Qt::LeftDockWidgetArea, this, Qt::Horizontal); - - //build the treeWidget - _tree->setColumnCount(_voiceColumns.size() + _ctrlColumns.size()); - QStringList headerLabels; - for(unsigned i = 0; i < _voiceColumns.size(); i++) { - headerLabels += QStringList(_voiceColumns[i]->getName()); - } - for(unsigned i = 0; i < _ctrlColumns.size(); i++) { - //TODO CTRL - //headerLabels += QStringList(_ctrlColumns[i]->getName()); - } - _tree->setHeaderLabels(headerLabels); - //set some display properties - _tree->setRootIsDecorated(false); - _tree->setUniformRowHeights(true); - _tree->setAlternatingRowColors(true); - QFont font =_tree->font(); - font.setFamily(FONT); - _tree->setFont(font); - font.setPixelSize(FONT_HEIGHT); - _fontHeight = font.pixelSize() + OFFSET_HEIGHT; - setWidget(_tree); - - //set the range of rows to display - setFirstRow(10); //TODO : choose accordingly to current position of muse song - setAbsoluteCurrentRow(10); //TODO : the same - setRowMag(); - - //fill the treeWidget - fillPattern(); - selectCurrentRow(); - - //Resize the columns - for(unsigned i = 0; i < _voiceColumns.size(); i++) - _tree->resizeColumnToContents(i); -} - -TrackPattern::~TrackPattern() { -} - -void TrackPattern::add(const Event* e, unsigned tick) { - if(e->isNote()) { - bool success = false; - for(unsigned i = 0; i < _voiceColumns.size(); i++) { - success = _voiceColumns[i]->add(e, tick); - if(success) break; - } - if(!success) { - QString voiceName; - voiceName.setNum(_voiceColumns.size()); - voiceName = QString("Voice " + voiceName); - VoicePat* vp = new VoicePat(voiceName, _firstTick, 0, _quant); - _voiceColumns.push_back(vp); - bool success = vp->add(e, tick); - if(!success) printf("Error TrackPattern::add\n"); - } - } - else { - //TODO Ctrl - } -} - -void TrackPattern::setQuant(int /*quant*/) { - //TODO -} - -void TrackPattern::clearMatrix() { - _voiceColumns.clear(); - _ctrlColumns.clear(); -} - -void TrackPattern::buildMatrix() { - for(ciPart p = _partList->begin(); p != _partList->end(); p++) { - Part* part = p->second; - EventList* events = part->events(); - for(ciEvent e = events->begin(); e != events->end(); e++) { - const Event* event = &e->second; - unsigned rescaledTick = part->tick() + event->tick() - _firstTick; - add(event, rescaledTick); - } - } -} - -void TrackPattern::fillPattern() { - _tree->blockSignals(true); - - _tree->clear(); - for(unsigned i = 0; i < _voiceColumns.size(); i++) { - for(unsigned j = getFirstRow(); j <= getLastRow(); j++) { - QTreeWidgetItem* item = _tree->topLevelItem(j - getFirstRow()); - if(!item) item = new QTreeWidgetItem(_tree); - VoiceEventPat* vep = (_voiceColumns[i]->getEventsCol())[j]; - if(vep) item->setText(i, vep->str()); - } - } - for(unsigned i = 0; i < _ctrlColumns.size(); i++) { - //TODO CTRL - } - - _tree->blockSignals(false); -} - -//--------------------------------------------------------------- -// TimingEvent -//--------------------------------------------------------------- -TimingEvent::TimingEvent(unsigned row) { - _row = row; -} -TimingEvent::~TimingEvent() { -} - -void TimingEvent::setBarBeatTick(unsigned tick) { - AL::sigmap.tickValues(tick, &_bar, &_beat, &_tick); -} - -QString TimingEvent::barBeatTickStr() { - QString barS; - barS.setNum(_bar + 1); - if(_bar<10) barS = QString("000") + barS; - else if(_bar<100) barS = QString("00") + barS; - else if(_bar<1000) barS = QString("0") + barS; - QString beatS; - beatS.setNum(_beat + 1); - if(_beat<10) beatS = QString("0") + beatS; - QString tickS; - tickS.setNum(_tick); - if(_tick<10) tickS = QString("00") + tickS; - else if(_tick<100) tickS = QString("0") + tickS; - return barS + QString(":") + beatS + QString(":") + tickS; -} - -QString TimingEvent::rowStr() { - QString r; - r.setNum(_row); - if(_row<10) r = QString("00") + r; - else if(_row<100) r = QString("0") + r; - return r; -} - -//--------------------------------------------------------------- -// TimingPattern -//--------------------------------------------------------------- -TimingPattern::TimingPattern(QMainWindow* parent, QString name, - unsigned firstTick, unsigned lastTick, int quant) - : BasePat(name, firstTick, lastTick, quant), BaseTrackPat(parent) { - //build the timing matrix - buildMatrix(); - - //configure and add the dockWidget - setWindowTitle(name); - setFeatures(QDockWidget::DockWidgetClosable |QDockWidget::DockWidgetMovable); - parent->addDockWidget(Qt::LeftDockWidgetArea, this, Qt::Horizontal); - - //build the treeWidget - QStringList headerLabels; - _tree->setHeaderLabels(QStringList("bar:bt:tick") + QStringList("row")); - _tree->setHeaderLabels(headerLabels); - //set some display properties - _tree->setRootIsDecorated(false); - _tree->setUniformRowHeights(true); - _tree->setAlternatingRowColors(true); - QFont font =_tree->font(); - font.setFamily(FONT); - _tree->setFont(font); - font.setPixelSize(FONT_HEIGHT); - _fontHeight = font.pixelSize() + OFFSET_HEIGHT; - setWidget(_tree); - - //set the range of rows to display - setFirstRow(10); //TODO : choose accordingly to current position of muse song - setAbsoluteCurrentRow(10); //TODO : the same - setRowMag(); - - //fill the treeWidget - fillPattern(); - selectCurrentRow(); - - //resize the columns - for(int i = 0; i < _tree->columnCount(); i++) - _tree->resizeColumnToContents(i); -} - -TimingPattern::~TimingPattern() { -} - -void TimingPattern::clearMatrix() { - _timingEvents.clear(); -} - -void TimingPattern::buildMatrix() { - for(unsigned tick = _firstTick; tick <= _lastTick; tick++) { - if(isRow(tick)) { - TimingEvent* te = new TimingEvent(tick2row(tick) - tick2row(_firstTick)); - te->setBarBeatTick(tick); - _timingEvents.push_back(te); - } - } - _absoluteNbrRow = _timingEvents.size(); -} - -void TimingPattern::fillPattern() { - _tree->blockSignals(true); - - _tree->clear(); - for(unsigned i = getFirstRow(); i <= getLastRow(); i++) { - QTreeWidgetItem* item = new QTreeWidgetItem(_tree); - TimingEvent* te = _timingEvents[i]; - item->setText(0, te->barBeatTickStr()); - item->setText(1, te->rowStr()); - } - - _tree->blockSignals(false); -} diff --git a/muse/muse/midiedit/trackpattern.h b/muse/muse/midiedit/trackpattern.h deleted file mode 100644 index d9d91aee..00000000 --- a/muse/muse/midiedit/trackpattern.h +++ /dev/null @@ -1,261 +0,0 @@ -//================================================================= -// trackpattern.h -// TrackPattern class for miditracker, QDock, QTree, Part, matrix -// miditracker.h -// (C) Copyright 2006 Nil Geisweiller (a_lin@user.sourceforge.net) -//================================================================= - -#ifndef __TRACKERPATTERN_H__ -#define __TRACKERPATTERN_H__ - -#include -#include "miditrack.h" -#include "part.h" - -class PartList; - -//---------------------------------------------------------- -// EventPat -// has to be derived, can be note or control -//---------------------------------------------------------- -class EventPat { - private: - protected: - bool _isReadable; //true iff the time of the event is the exact row time - bool _isEmpty; - public: - EventPat(bool isEmpty, bool isReadable); - EventPat(); //_isEmpty=true and_isReadable=true at the initialization - ~EventPat(); - - void setEmpty(bool); - bool getEmpty(); - void setReadable(bool); - bool getReadable(); -}; - -//---------------------------------------------------------- -// VoiceEventPat -//---------------------------------------------------------- -class VoiceEventPat : public EventPat { - private: - int _noteNum; //absolute note number including octave - int _velocity; //if velocity is 0 note is off - public: - VoiceEventPat(int noteNum, int velocity); // _isReadable is initialized true - VoiceEventPat(bool isEmpty, bool isReadable); - VoiceEventPat(); //_isEmpty = true, _isReadable = true - ~VoiceEventPat(); - - void setNoteNum(int n); - int getNoteNum(); - void setVelocity(int n); - int getVelocity(); - QString str(); //return the string to display on the entry of the pattern -}; - -//---------------------------------------------------------- -// CtrlEventPat -//---------------------------------------------------------- -class CtrlEventPat : public EventPat { - private: - int _ctrlNum; - int _value; //if velocity is 0 note is off - public: - CtrlEventPat(int ctrlNum, int value); // _isReadable is initialized true - CtrlEventPat(); // _isReadable is initialized false - ~CtrlEventPat(); - - void setCtrlNum(int n); - int getCtrlNum(); - void setValue(int n); - int getValue(); - QString str(); //return the string to display on the entry of the pattern -}; - -//---------------------------------------------------------- -// BasePat -//---------------------------------------------------------- -class BasePat { - protected: - QString _name; - unsigned _firstTick; - unsigned _lastTick; - int _quant; - public: - BasePat(); - BasePat(QString name, unsigned firstTick, unsigned lastTick, int quant); - ~BasePat(); - - QString getName(); - - bool isRow(unsigned tick); //return true iff tick coincides with one row - unsigned tick2row(unsigned tick); -}; - -//---------------------------------------------------------- -// VoicePat -//---------------------------------------------------------- -class VoicePat : public BasePat { - private: - std::vector _eventsCol; //column of VoiceEventPat to display - EventList* _events; //actual list of events, only one at a time - public: - VoicePat(QString name, unsigned firstTick, unsigned lastTick, int quant); - ~VoicePat(); - - std::vector getEventsCol(); - - bool add(const Event* e, unsigned tick); //add the Event e into the EventList - //and update properly _events - //return true if success, that is - //there is an empty space of the - //event - bool isFreeSpace(const Event* e, unsigned tick); //return true iff there - //is space to add the - //event e without - //overlapping other events -}; - -//---------------------------------------------------------- -// CtrlPat -//---------------------------------------------------------- -class CtrlPat { - private: - std::vector _events; //column of CtrlEventPat - public: - CtrlPat(QString name); - ~CtrlPat(); -}; - -//------------------------------------------------------ -// BaseTrackPat -//------------------------------------------------------ -class BaseTrackPat : public QDockWidget { - Q_OBJECT - - protected: - QTreeWidget* _tree; - QMainWindow* _parent; - - unsigned _rowMag; //contains the number of rows - unsigned _firstRow; //absolute index of the first row - unsigned _lastRow; //absolute index of the last row, included - unsigned _relativeCurrentRow; //index of the current according to the tree - unsigned _absoluteCurrentRow; //index of the current row according to the - //event matrix - unsigned _absoluteNbrRow; //contains the number of rows of the matrix - - int _fontHeight; - - bool _update; //if true then the tree must updated - - public: - BaseTrackPat(QMainWindow* parent, unsigned anr = 0); - ~BaseTrackPat(); - - void setRowMag(); //set _rowMag with the number of rows to display according - //to the size of the window, adjust _lastRow accordingly, - //assum that first row is set appropriately - void setFirstRow(unsigned f); //set _firstRow with f, that is the absolute index - //of the first row, adjust _lastRow appropriately - void setRelativeCurrentRow(unsigned r); //set _relativeCurrentRow with r - //and _absoluteCurrentRow accordingly - void setAbsoluteCurrentRow(unsigned a); //set _absoluteCurrentRow with a - //and _relativeCurrentRow accordingly - - unsigned getRowMag(); - unsigned getFirstRow(); - unsigned getLastRow(); - unsigned getRelativeCurrentRow(); - unsigned getAbsoluteCurrentRow(); - - unsigned getAbsoluteNbrRow(); - - void moveRelativeCurrentRow(unsigned newIndex); //update _firstRow, _lastrow - //relativeCurrentRow, - //absoluteCurrentRow, considering - //that the new relative index is - //newIndex - - void resizeEvent(QResizeEvent* /*event*/); - - virtual void clearMatrix() {} - virtual void buildMatrix() {} - virtual void fillPattern() {} //fill the treeWidget with the right window of times - //according to _firstRow and _lastRow - - - void selectCurrentRow(); //block the signals and select the current row - - signals: - void moveCurrentRow(unsigned i); //send the signal that the current row is moved - //at the relative index i - private slots: - void currentItemChanged(QTreeWidgetItem* nitem); - void moveRowFromSignal(unsigned index); - void updatePattern(int songChangeType); -}; - -//------------------------------------------------------ -// TrackPattern -//------------------------------------------------------ -class TrackPattern : public BaseTrackPat, public BasePat { - private: - PartList* _partList; //partList concerned by a track - MidiTrack* _track; - std::vector _voiceColumns; //matrix of voice events - std::vector _ctrlColumns; //matrix of ctrl events - public: - TrackPattern(QMainWindow* parent, QString name, - unsigned firstTick, unsigned lastTick, - int quant, PartList* pl, MidiTrack* t, unsigned anr = 0); - ~TrackPattern(); - - void add(const Event* e, unsigned tick); //add the Event e and - //build consequently - //the matrix, - //creating new voices when necessary - MidiTrack* getTrack() {return _track;} - void setQuant(int quant); - - virtual void clearMatrix(); - virtual void buildMatrix(); - virtual void fillPattern(); -}; - -//------------------------------------------------------ -// TimingEvent -//------------------------------------------------------ -class TimingEvent { - private: - int _bar; - int _beat; - unsigned _tick; - unsigned _row; - - public: - TimingEvent(unsigned row); - ~TimingEvent(); - - void setBarBeatTick(unsigned tick); - - QString barBeatTickStr(); - QString rowStr(); -}; - -class TimingPattern : public BasePat, public BaseTrackPat { - private: - //QTreeWidget* _tree; - std::vector _timingEvents; - public: - TimingPattern(QMainWindow* parent, QString name, unsigned firstTick, - unsigned lastTick, int quant); - ~TimingPattern(); - - virtual void clearMatrix(); - virtual void buildMatrix(); - virtual void fillPattern(); -}; - -#endif diff --git a/muse/muse/midiedit/velocity.cpp b/muse/muse/midiedit/velocity.cpp deleted file mode 100644 index f0abd845..00000000 --- a/muse/muse/midiedit/velocity.cpp +++ /dev/null @@ -1,108 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "velocity.h" -#include "song.h" -#include "tb1.h" -#include "audio.h" - -//--------------------------------------------------------- -// Velocity -//--------------------------------------------------------- - -Velocity::Velocity(QWidget*) - : MidiCmdDialog() - { - setWindowTitle(tr("MusE: Modify Velocity")); - QWidget* velocityWidget = new QWidget; - velo.setupUi(velocityWidget); - layout->addWidget(velocityWidget); - layout->addStretch(10); - _rateVal = 0; - _offsetVal = 0; - velo.rate->setValue(_rateVal); - velo.offset->setValue(_offsetVal); - } - -//--------------------------------------------------------- -// accept -//--------------------------------------------------------- - -void Velocity::accept() - { - _rateVal = velo.rate->value(); - _offsetVal = velo.offset->value(); - MidiCmdDialog::accept(); - } - -//--------------------------------------------------------- -// ModifyVelocityCmd -//--------------------------------------------------------- - -ModifyVelocityCmd::ModifyVelocityCmd(MidiEditor* e) - : MidiCmd(e) - { - dialog = 0; - } - -//--------------------------------------------------------- -// guiDialog -//--------------------------------------------------------- - -MidiCmdDialog* ModifyVelocityCmd::guiDialog() - { - if (dialog == 0) - dialog = new Velocity(0); - return dialog; - } - -//--------------------------------------------------------- -// process -//--------------------------------------------------------- - -void ModifyVelocityCmd::process(CItemList* items) - { - int rate = dialog->rateVal(); - int offset = dialog->offsetVal(); - - for (iCItem k = items->begin(); k != items->end(); ++k) { - CItem* item = k->second; - Event event = item->event; - if (event.type() != Note) - continue; - if (itemInRange(item)) { - int velo = event.velo(); - velo = (velo * rate) / 100; - velo += offset; - - if (velo <= 0) - velo = 1; - if (velo > 127) - velo = 127; - if (event.velo() != velo) { - Event newEvent = event.clone(); - newEvent.setVelo(velo); - audio->msgChangeEvent(event, newEvent, item->part, false); - } - } - } - } - - diff --git a/muse/muse/midiedit/velocity.h b/muse/muse/midiedit/velocity.h deleted file mode 100644 index 2ac4e700..00000000 --- a/muse/muse/midiedit/velocity.h +++ /dev/null @@ -1,62 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __VELOCITY_H__ -#define __VELOCITY_H__ - -#include "ui_velocity.h" -#include "midicmd.h" - -//--------------------------------------------------------- -// Velocity -//--------------------------------------------------------- - -class Velocity : public MidiCmdDialog { - Q_OBJECT - - Ui::VelocityBase velo; - int _rateVal; - int _offsetVal; - - protected slots: - void accept(); - - public: - Velocity(QWidget* parent = 0); - int rateVal() const { return _rateVal; } - int offsetVal() const { return _offsetVal; } - }; - -//--------------------------------------------------------- -// ModifyVelocityCmd -//--------------------------------------------------------- - -class ModifyVelocityCmd : public MidiCmd - { - Velocity* dialog; - virtual MidiCmdDialog* guiDialog(); - virtual void process(CItemList* items); - - public: - ModifyVelocityCmd(MidiEditor* e); - }; - -#endif - diff --git a/muse/muse/midiedit/velocity.ui b/muse/muse/midiedit/velocity.ui deleted file mode 100644 index 342611c0..00000000 --- a/muse/muse/midiedit/velocity.ui +++ /dev/null @@ -1,86 +0,0 @@ - - - - - VelocityBase - - - - 0 - 0 - 275 - 335 - - - - MusE: Modify Velocity - - - - 11 - - - 6 - - - - - Values - - - - 6 - - - 3 - - - - - Rate: - - - - - - - Offset: - - - - - - - % - - - 200 - - - 100 - - - - - - - 127 - - - 1 - - - 1 - - - - - - - - - - qPixmapFromMimeSource - - - diff --git a/muse/muse/midievent.cpp b/muse/muse/midievent.cpp deleted file mode 100644 index 80fd30a8..00000000 --- a/muse/muse/midievent.cpp +++ /dev/null @@ -1,129 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "midievent.h" - -#include "helper.h" -#include "event.h" -#include "midictrl.h" -#include "muse/midi.h" - -//--------------------------------------------------------- -// MidiEvent -//--------------------------------------------------------- - -MidiEvent::MidiEvent(unsigned t, int tpe, const unsigned char* data, int len) - { - _time = t; - edata.setData(data, len); - _type = tpe; - } - -MidiEvent::MidiEvent(unsigned tick, int channel, const Event& e) - { - setChannel(channel); - setTime(tick); - switch(e.type()) { - case Note: - setType(ME_NOTEON); - setA(e.dataA()); - setB(e.dataB()); - break; - case Controller: - setType(ME_CONTROLLER); - setA(e.dataA()); // controller number - setB(e.dataB()); // controller value - break; - case PAfter: - setType(ME_POLYAFTER); - setA(e.dataA()); - setB(e.dataB()); - break; - case CAfter: - setType(ME_AFTERTOUCH); - setA(e.dataA()); - setB(0); - break; - case Sysex: - setType(ME_SYSEX); - setData(e.eventData()); - break; - default: - printf("MEvent::MEvent(): event type %d not implemented\n", - type()); - break; - } - } - -//--------------------------------------------------------- -// dump -//--------------------------------------------------------- - -void MidiEvent::dump() const - { - printf("chan:%d ", _channel+1); - if (_type == ME_NOTEON) { - QString s = pitch2string(_a); - printf("NoteOn %3s(0x%02x) %3d\n", s.toLatin1().data(), _a, _b); - } - else if (_type == ME_NOTEOFF) { - QString s = pitch2string(_a); - printf("NoteOff %3s(0x%02x) %3d\n", s.toLatin1().data(), _a, _b); - } - else if (_type == ME_SYSEX) { - printf("SysEx len %d ", len()); - int n = len() < 7 ? len() : 7; - unsigned char* p = data(); - for (int i = 0; i < n; ++i) - printf("%02x ", *p++); - printf("\n"); - } - else if (_type == ME_CONTROLLER) - printf("Ctrl %d(0x%02x) %d(0x%02x)\n", _a, _a, _b, _b); - else if (_type == ME_PROGRAM) - printf("Prog %d(0x%02x)\n", _a, _a); - else if (_type == ME_AFTERTOUCH) - printf("Aftertouch %d\n", _a); - else if (_type == ME_PITCHBEND) - printf("PitchBend %d\n", _a); - else - printf("type:0x%02x a=%d(0x%02x) b=%d(0x%02x)\n", _type, _a, _a, _b, _b); - } - -//--------------------------------------------------------- -// operator < -//--------------------------------------------------------- - -bool MidiEvent::operator<(const MidiEvent& e) const - { - if (time() != e.time()) - return time() < e.time(); - - // play note off events first to prevent overlapping - // notes - - if (channel() == e.channel()) - return type() == ME_NOTEOFF - || (type() == ME_NOTEON && dataB() == 0); - - int map[16] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 10, 11, 12, 13, 14, 15 }; - return map[channel()] < map[e.channel()]; - } - diff --git a/muse/muse/midievent.h b/muse/muse/midievent.h deleted file mode 100644 index 780c7ce6..00000000 --- a/muse/muse/midievent.h +++ /dev/null @@ -1,100 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __MIDIEVENT_H__ -#define __MIDIEVENT_H__ - -#include -#include "evdata.h" - -#include "midi.h" - -class Event; - -//--------------------------------------------------------- -// MidiEvent -//--------------------------------------------------------- - -class MidiEvent { - unsigned _time; - EvData edata; - unsigned char _channel, _type; - int _a, _b; - - public: - MidiEvent() {} - MidiEvent(unsigned tm, int c, int t, int a, int b) - : _time(tm), _channel(c & 0xf), _type(t), _a(a), _b(b) {} - MidiEvent(unsigned t, int type, const unsigned char* data, int len); - MidiEvent(unsigned t, int tpe, EvData d) : _time(t), edata(d), _type(tpe) {} - MidiEvent(unsigned t, int channel, const Event& e); - - ~MidiEvent() {} - - MidiEvent& operator=(const MidiEvent& ed) { - _time = ed._time; - edata = ed.edata; - _channel = ed._channel; - _type = ed._type; - _a = ed._a; - _b = ed._b; - return *this; - } - - int channel() const { return _channel; } - int type() const { return _type; } - int dataA() const { return _a; } - int dataB() const { return _b; } - unsigned time() const { return _time; } - - void setChannel(int val) { _channel = val; } - void setType(int val) { _type = val; } - void setA(int val) { _a = val; } - void setB(int val) { _b = val; } - void setTime(unsigned val) { _time = val; } - - const EvData& eventData() const { return edata; } - unsigned char* data() const { return edata.data; } - int len() const { return edata.dataLen; } - void setData(const EvData& e) { edata = e; } - void setData(const unsigned char* p, int len) { edata.setData(p, len); } - void dump() const; - bool isNote() const { return _type == ME_NOTEON; } - bool isNoteOff() const { return (_type == ME_NOTEOFF)||(_type == ME_NOTEON && _b == 0); } - bool operator<(const MidiEvent&) const; - }; - -//--------------------------------------------------------- -// MidiEventList -//--------------------------------------------------------- - -// typedef std::multiset, -// __gnu_cxx::__mt_alloc > MPEL; - -class MidiEventList : public std::multiset > - { - public: - }; - -typedef MidiEventList::iterator iMidiEvent; -typedef MidiEventList::const_iterator ciMidiEvent; - -#endif - diff --git a/muse/muse/midieventbase.cpp b/muse/muse/midieventbase.cpp deleted file mode 100644 index 2e3f371c..00000000 --- a/muse/muse/midieventbase.cpp +++ /dev/null @@ -1,159 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "event.h" -#include "midieventbase.h" -#include "al/xml.h" -#include "midievent.h" -#include "midictrl.h" -#include "muse.h" - -//--------------------------------------------------------- -// MidiEventBase -//--------------------------------------------------------- - -MidiEventBase::MidiEventBase(EventType t) - : EventBase(t) - { - a = 0; - b = 0; - c = 0; - } - -//--------------------------------------------------------- -// MidiEventBase::mid -//--------------------------------------------------------- - -EventBase* MidiEventBase::mid(unsigned b, unsigned e) - { - if (tick() < b || tick() >= e) - return 0; - return new MidiEventBase(*this); - } - -//--------------------------------------------------------- -// isNoteOff -//--------------------------------------------------------- - -bool MidiEventBase::isNoteOff() const - { - return (type() == Note && (velo() == 0)); - } - -bool MidiEventBase::isNoteOff(const Event& e) const - { - return (e.isNoteOff() && (e.pitch() == a)); - } - -//--------------------------------------------------------- -// dump -//--------------------------------------------------------- - -void MidiEventBase::dump(int n) const - { - EventBase::dump(n); - QString p = eventTypeName(); - QString s; - s.sprintf("%s<%s> a:0x%x(%d) b:0x%x(%d)\n", - QString(n+2, ' ').toLocal8Bit().data(), p.toLocal8Bit().data(), a, a, b, b); - printf("%s\n", s.toLocal8Bit().data()); - } - -//--------------------------------------------------------- -// MidiEventBase::write -//--------------------------------------------------------- - -void MidiEventBase::write(Xml& xml, const Pos& offset) const - { - QString s = QString("event tick=\"%1\"").arg(tick() + offset.tick()); - - switch (type()) { - case Note: - s += QString(" len=\"%1\"").arg(lenTick()); - break; - default: - s += QString(" type=\"%1\"").arg(type()); - break; - } - if (edata.dataLen) { - s += QString(" datalen=\"%1\"").arg(edata.dataLen); - xml.stag(s); - xml.dump(edata.dataLen, edata.data); - xml.etag("event"); - } - else { - if (a) - s += QString(" a=\"%1\"").arg(a); - if (b) - s += QString(" b=\"%1\"").arg(b); - if (c) - s += QString(" b=\"%1\"").arg(c); - xml.tagE(s); - } - } - -//--------------------------------------------------------- -// MidiEventBase::read -//--------------------------------------------------------- - -void MidiEventBase::read(QDomNode node) - { - QDomElement e = node.toElement(); - setTick(e.attribute("tick","0").toInt()); - setType(EventType(e.attribute("type","0").toInt())); - setLenTick(e.attribute("len","0").toInt()); - a = e.attribute("a","0").toInt(); - b = e.attribute("b","0").toInt(); - c = e.attribute("c","0").toInt(); - int dataLen = e.attribute("datalen","0").toInt(); - - if (dataLen) { - QStringList l = e.text().simplified().split(" ", QString::SkipEmptyParts); - if (dataLen != l.size()) { - printf("error converting init string <%s>\n", e.text().toLatin1().data()); - } - edata.data = new unsigned char[dataLen]; - edata.dataLen = dataLen; - unsigned char* d = edata.data; - int numberBase = 16; - for (int i = 0; i < l.size(); ++i) { - bool ok; - *d++ = l.at(i).toInt(&ok, numberBase); - if (!ok) - printf("error converting data val <%s>\n", l.at(i).toLatin1().data()); - } - } - } - -//--------------------------------------------------------- -// MidiEventBase::operator== -//--------------------------------------------------------- - -bool MidiEventBase::operator==(const EventBase& ev) const { - const MidiEventBase* pev = dynamic_cast(&ev); - - if(pev) return operator==(*pev); - else return false; -} - -bool MidiEventBase::operator==(const MidiEventBase& ev) const { - return (ev.a==a && ev.b==b && ev.c==c && ev.edata==edata - && PosLen::operator==((const PosLen&)ev)); -} diff --git a/muse/muse/midieventbase.h b/muse/muse/midieventbase.h deleted file mode 100644 index 64a8269c..00000000 --- a/muse/muse/midieventbase.h +++ /dev/null @@ -1,76 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __MIDI_EVENT_BASE_H__ -#define __MIDI_EVENT_BASE_H__ - -#include "eventbase.h" - -//--------------------------------------------------------- -// MidiEventBase -//--------------------------------------------------------- - -class MidiEventBase : public EventBase { - int a, b, c; // pitch, velo-on, velo-off - EvData edata; - - virtual EventBase* clone() const { return new MidiEventBase(*this); } - - public: - MidiEventBase(EventType t); - virtual ~MidiEventBase() {} - - virtual bool isNote() const { return type() == Note; } - virtual bool isNoteOff() const; - virtual bool isNoteOff(const Event&) const; - virtual int pitch() const { return a; } - virtual int program() const { return a; } - virtual int cntrl() const { return a; } - virtual int dataA() const { return a; } - virtual void setA(int val) { a = val; } - virtual void setPitch(int v) { a = v; } - - virtual int cntrlVal() const { return b; } - virtual int dataB() const { return b; } - virtual int velo() const { return b; } - virtual void setB(int val) { b = val; } - virtual void setVelo(int v) { b = v; } - - virtual int veloOff() const { return c; } - virtual int dataC() const { return c; } - virtual void setC(int val) { c = val; } - virtual void setVeloOff(int v) { c = v; } - - virtual const unsigned char* data() const { return edata.data; } - virtual int dataLen() const { return edata.dataLen; } - virtual void setData(const unsigned char* data, int len) { edata.setData(data, len); } - virtual const EvData eventData() const { return edata; } - - virtual void dump(int n = 0) const; - virtual void read(QDomNode); - virtual void write(Xml&, const Pos& offset) const; - virtual EventBase* mid(unsigned, unsigned); - - virtual bool operator==(const EventBase&) const; - virtual bool operator==(const MidiEventBase&) const; - }; - -#endif - diff --git a/muse/muse/midififo.cpp b/muse/muse/midififo.cpp deleted file mode 100644 index f68afd83..00000000 --- a/muse/muse/midififo.cpp +++ /dev/null @@ -1,103 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "midififo.h" - -//--------------------------------------------------------- -// put -// return true on fifo overflow -//--------------------------------------------------------- - -bool MidiFifo::put(const MidiEvent& event) - { - if (size < MIDI_FIFO_SIZE) { - fifo[wIndex] = event; - wIndex = (wIndex + 1) % MIDI_FIFO_SIZE; - // q_atomic_increment(&size); - ++size; - return false; - } - return true; - } - -//--------------------------------------------------------- -// get -//--------------------------------------------------------- - -MidiEvent MidiFifo::get() - { - MidiEvent event(fifo[rIndex]); - rIndex = (rIndex + 1) % MIDI_FIFO_SIZE; - // q_atomic_decrement(&size); - --size; - return event; - } - -//--------------------------------------------------------- -// peek -//--------------------------------------------------------- - -const MidiEvent& MidiFifo::peek(int n) - { - int idx = (rIndex + n) % MIDI_FIFO_SIZE; - return fifo[idx]; - } - -//--------------------------------------------------------- -// remove -//--------------------------------------------------------- - -void MidiFifo::remove() - { - rIndex = (rIndex + 1) % MIDI_FIFO_SIZE; - // q_atomic_decrement(&size); - --size; - } - -//--------------------------------------------------------- -// put -// return true on fifo overflow -//--------------------------------------------------------- - -bool MidiOutFifo::put(const MidiOutEvent& event) - { - if (size < MIDI_FIFO_SIZE) { - fifo[wIndex] = event; - wIndex = (wIndex + 1) % MIDI_FIFO_SIZE; - // q_atomic_increment(&size); - ++size; - return false; - } - return true; - } - -//--------------------------------------------------------- -// get -//--------------------------------------------------------- - -MidiOutEvent MidiOutFifo::get() - { - MidiOutEvent event(fifo[rIndex]); - rIndex = (rIndex + 1) % MIDI_FIFO_SIZE; - // q_atomic_decrement(&size); - --size; - return event; - } - diff --git a/muse/muse/midififo.h b/muse/muse/midififo.h deleted file mode 100644 index e2342feb..00000000 --- a/muse/muse/midififo.h +++ /dev/null @@ -1,92 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __MIDIFIFO_H__ -#define __MIDIFIFO_H__ - -#include "midievent.h" -#include "port.h" - -#define MIDI_FIFO_SIZE 512 - -//--------------------------------------------------------- -// MidiFifo -//--------------------------------------------------------- - -class MidiFifo { - MidiEvent fifo[MIDI_FIFO_SIZE]; - volatile int size; - int wIndex; - int rIndex; - - public: - MidiFifo() { clear(); } - bool put(const MidiEvent& event); // returns true on fifo overflow - MidiEvent get(); - const MidiEvent& peek(int n = 0); - void remove(); - bool isEmpty() const { return size == 0; } - void clear() { size = 0, wIndex = 0, rIndex = 0; } - int getSize() const { return size; } - }; - -//--------------------------------------------------------- -// MidiOutEvent -//--------------------------------------------------------- - -struct MidiOutEvent { - Port port; - MidiEvent event; - - MidiOutEvent() {} - MidiOutEvent(const Port& p, const MidiEvent& e) - : port(p), event(e) {} - bool operator<(const MidiOutEvent& e) const { - if (port == e.port) - return event < e.event; - return event < e.event; - } - }; - -typedef std::multiset > MidiOutEventList; -typedef MidiOutEventList::iterator iMidiOutEvent; -typedef MidiOutEventList::const_iterator ciMidiOutEvent; - -//--------------------------------------------------------- -// MidiOutFifo -//--------------------------------------------------------- - -class MidiOutFifo { - MidiOutEvent fifo[MIDI_FIFO_SIZE]; - volatile int size; - int wIndex; - int rIndex; - - public: - MidiOutFifo() { clear(); } - bool put(const MidiOutEvent& event); // returns true on fifo overflow - MidiOutEvent get(); - bool isEmpty() const { return size == 0; } - void clear() { size = 0, wIndex = 0, rIndex = 0; } - }; - - -#endif - diff --git a/muse/muse/midifile.cpp b/muse/muse/midifile.cpp deleted file mode 100644 index c45c57d2..00000000 --- a/muse/muse/midifile.cpp +++ /dev/null @@ -1,673 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "song.h" -#include "midi.h" -#include "midifile.h" -#include "midiedit/drummap.h" -#include "event.h" -#include "globals.h" -#include "midictrl.h" -#include "midictrl.h" -#include "midievent.h" -#include "gconfig.h" - -const char* errString[] = { - "no Error", - "unexpected EOF", - "read Error", - "write Error", - "bad midifile: 'MTrk' expected", - "bad midifile: 'MThd' expected", - "bad midi fileformat", - }; - -enum ERROR { - MF_NO_ERROR, - MF_EOF, - MF_READ, - MF_WRITE, - MF_MTRK, - MF_MTHD, - MF_FORMAT, - }; - -//--------------------------------------------------------- -// error -//--------------------------------------------------------- - -QString MidiFile::error() - { - return QString(errString[_error]); - } - -//--------------------------------------------------------- -// MidiFile -//--------------------------------------------------------- - -MidiFile::MidiFile() - { - fp = 0; - curPos = 0; - _error = MF_NO_ERROR; - _tracks = new MidiFileTrackList; - _midiType = MT_GENERIC; - } - -MidiFile::~MidiFile() - { - delete _tracks; - } - -//--------------------------------------------------------- -// read -// return true on error -//--------------------------------------------------------- - -bool MidiFile::read(void* p, size_t len) - { - for (;;) { - curPos += len; - qint64 rv = fp->read((char*)p, len); - if (rv == len) - return false; - if (fp->atEnd()) { - _error = MF_EOF; - return true; - } - _error = MF_READ; - return true; - } - return false; - } - -//--------------------------------------------------------- -// write -// return true on error -//--------------------------------------------------------- - -bool MidiFile::write(const void* p, size_t len) - { - qint64 rv = fp->write((char*)p, len); - if (rv == len) - return false; - _error = MF_WRITE; - return true; - } - -//--------------------------------------------------------- -// writeShort -// return true on error -//--------------------------------------------------------- - -bool MidiFile::writeShort(int i) - { - short format = BE_SHORT(i); - return write(&format, 2); - } - -//--------------------------------------------------------- -// writeLong -// return true on error -//--------------------------------------------------------- - -bool MidiFile::writeLong(int i) - { - int format = BE_LONG(i); - return write(&format, 4); - } - -//--------------------------------------------------------- -// readShort -//--------------------------------------------------------- - -int MidiFile::readShort() - { - short format; - read(&format, 2); - return BE_SHORT(format); - } - -//--------------------------------------------------------- -// readLong -// writeLong -//--------------------------------------------------------- - -int MidiFile::readLong() - { - int format; - read(&format, 4); - return BE_LONG(format); - } - -/*--------------------------------------------------------- - * skip - * This is meant for skipping a few bytes in a - * file or fifo. - *---------------------------------------------------------*/ - -bool MidiFile::skip(size_t len) - { - char tmp[len]; - return read(tmp, len); - } - -/*--------------------------------------------------------- - * getvl - * Read variable-length number (7 bits per byte, MSB first) - *---------------------------------------------------------*/ - -int MidiFile::getvl() - { - int l = 0; - for (int i = 0; i < 16; i++) { - uchar c; - if (read(&c, 1)) - return -1; - l += (c & 0x7f); - if (!(c & 0x80)) - return l; - l <<= 7; - } - return -1; - } - -/*--------------------------------------------------------- - * putvl - * Write variable-length number (7 bits per byte, MSB first) - *---------------------------------------------------------*/ - -void MidiFile::putvl(unsigned val) - { - unsigned long buf = val & 0x7f; - while ((val >>= 7) > 0) { - buf <<= 8; - buf |= 0x80; - buf += (val & 0x7f); - } - for (;;) { - put(buf); - if (buf & 0x80) - buf >>= 8; - else - break; - } - } - -//--------------------------------------------------------- -// readTrack -// return true on error -//--------------------------------------------------------- - -bool MidiFile::readTrack(MidiFileTrack* t) - { - MidiEventList* el = &(t->events); - char tmp[4]; - if (read(tmp, 4)) - return true; - if (memcmp(tmp, "MTrk", 4)) { - _error = MF_MTRK; - return true; - } - int len = readLong(); // len - int endPos = curPos + len; - status = -1; - sstatus = -1; // running status, not reset scanning meta or sysex - click = 0; - - int port = 0; - int channel = 0; - - for (;;) { - MidiEvent event; - lastport = -1; - lastchannel = -1; - - int rv = readEvent(&event, t); - if (lastport != -1) - port = lastport; - if (lastchannel != -1) { - channel = lastchannel; - if (channel >= MIDI_CHANNELS) { - printf("channel %d >= %d, reset to 0\n", port, MIDI_CHANNELS); - channel = 0; - } - } - if (rv == 0) - break; - else if (rv == -1) - continue; - else if (rv == -2) // error - return true; - -//TODO3 event.setPort(port); - if (event.type() == ME_SYSEX || event.type() == ME_META) - event.setChannel(channel); - else - channel = event.channel(); - el->insert(event); - } - int end = curPos; - if (end != endPos) { - printf("MidiFile::readTrack(): TRACKLEN does not fit %d+%d != %d, %d too much\n", - endPos-len, len, end, endPos-end); - if (end < endPos) - skip(endPos - end); - } - return false; - } - -//--------------------------------------------------------- -// readEvent -// returns: -// 0 End of track -// -1 Event filtered -// -2 Error -//--------------------------------------------------------- - -int MidiFile::readEvent(MidiEvent* event, MidiFileTrack* t) - { - uchar me, type, a, b; - - int nclick = getvl(); - if (nclick == -1) { - printf("readEvent: error 1\n"); - return 0; - } - click += nclick; - for (;;) { - if (read(&me, 1)) { - printf("readEvent: error 2\n"); - return 0; - } - if (me >= 0xf8 && me <= 0xfe) - printf("Midi: Real Time Message 0x%02x??\n", me & 0xff); - else - break; - } - - event->setTime(click); - int len; - unsigned char* buffer; - - if ((me & 0xf0) == 0xf0) { - if (me == 0xf0 || me == 0xf7) { - // - // SYSEX - // - status = -1; // no running status - len = getvl(); - if (len == -1) { - printf("readEvent: error 3\n"); - return -2; - } - buffer = new unsigned char[len]; - if (read(buffer, len)) { - printf("readEvent: error 4\n"); - delete[] buffer; - return -2; - } - if (buffer[len-1] != 0xf7) { - printf("SYSEX endet nicht mit 0xf7!\n"); - // Forstsetzung folgt? - } - else - --len; // don't count 0xf7 - event->setType(ME_SYSEX); - event->setData(buffer, len); - - if ((len == (signed)gmOnMsgLen) && memcmp(buffer, gmOnMsg, gmOnMsgLen) == 0) - _midiType = MT_GM; - else if ((len == (signed)gsOnMsgLen) && memcmp(buffer, gsOnMsg, gsOnMsgLen) == 0) - _midiType = MT_GS; - - if (buffer[0] == 0x43) { // Yamaha - _midiType = MT_XG; - int type = buffer[1] & 0xf0; - switch (type) { - case 0x00: // bulk dump - buffer[1] = 0; - break; - case 0x10: - if (buffer[1] != 0x10) { - buffer[1] = 0x10; // fix to Device 1 - } - if (len == 7 && buffer[2] == 0x4c && buffer[3] == 0x08 && buffer[5] == 7) { - // part mode - // 0 - normal - // 1 - DRUM - // 2 - DRUM 1 - // 3 - DRUM 2 - // 4 - DRUM 3 - // 5 - DRUM 4 - printf("xg set part mode channel %d to %d\n", buffer[4]+1, buffer[6]); - if (buffer[6] != 0) - t->isDrumTrack = true; - } - break; - case 0x20: - printf("YAMAHA DUMP REQUEST\n"); - return -1; - case 0x30: - printf("YAMAHA PARAMETER REQUEST\n"); - return -1; - default: - printf("YAMAHA unknown SYSEX: data[2]=%02x\n", buffer[1]); - return -1; - } - } - else if (buffer[0] == 0x43) { - if (_midiType != MT_XG) - _midiType = MT_GS; - } - - return 3; - } - if (me == 0xff) { - // - // META - // - status = -1; // no running status - if (read(&type, 1)) { // read type - printf("readEvent: error 5\n"); - return -2; - } - len = getvl(); // read len - if (len == -1) { - printf("readEvent: error 6\n"); - return -2; - } - buffer = new unsigned char[len+1]; - *buffer = 0; - if (len) { - if (read(buffer, len)) { - printf("readEvent: error 7\n"); - delete[] buffer; - return -2; - } - buffer[len] = 0; - } - event->setType(ME_META); - event->setData(buffer, len+1); - event->setA(type); - buffer[len] = 0; - switch(type) { - case 0x21: // switch port - lastport = buffer[0]; - return 3; - case 0x20: // switch channel - lastchannel = buffer[0]; - return 3; - case 0x2f: // End of Track - delete[] buffer; - return 0; - default: - return 3; - } - } - else { - printf("Midi: unknown Message 0x%02x\n", me & 0xff); - return -1; - } - } - - if (me & 0x80) { // status byte - status = me; - sstatus = status; - if (read(&a, 1)) { - printf("readEvent: error 9\n"); - return -2; - } - a &= 0x7F; - } - else { - if (status == -1) { - // Meta events and sysex events cancel running status. - // There are some midi files which do not send - // status again after this events. Silently assume - // old running status. - - if (debugMsg || sstatus == -1) - printf("readEvent: no running status, read 0x%02x, old status 0x%02x\n", me, sstatus); - if (sstatus == -1) - return -1; - status = sstatus; - } - a = me; - } - b = 0; - switch (status & 0xf0) { - case ME_NOTEOFF: - case ME_NOTEON: - case ME_POLYAFTER: - case ME_CONTROLLER: - case ME_PITCHBEND: - if (read(&b, 1)) { - printf("readEvent: error 15\n"); - return -2; - } - event->setB(b & 0x80 ? 0 : b); - break; - case ME_PROGRAM: - case ME_AFTERTOUCH: - break; - default: // f1 f2 f3 f4 f5 f6 f7 f8 f9 - printf("BAD STATUS 0x%02x, me 0x%02x\n", status, me); - return -2; - } - event->setA(a & 0x7f); - event->setType(status & 0xf0); - event->setChannel(status & 0xf); - if ((a & 0x80) || (b & 0x80)) { - printf("8'tes Bit in Daten(%02x %02x): tick %d read 0x%02x status:0x%02x\n", - a & 0xff, b & 0xff, click, me, status); - printf("readEvent: error 16\n"); - if (b & 0x80) { - // Try to fix: interpret as channel byte - status = b & 0xf0; - sstatus = status; - return 3; - } - return -1; - } - if (event->type() == ME_PITCHBEND) { - int val = (event->dataB() << 7) + event->dataA(); - val -= 8192; - event->setA(val); - } - return 3; - } - -//--------------------------------------------------------- -// writeTrack -//--------------------------------------------------------- - -bool MidiFile::writeTrack(const MidiFileTrack* t) - { - const MidiEventList* events = &(t->events); - write("MTrk", 4); - int lenpos = fp->pos(); - writeLong(0); // dummy len - - status = -1; - int tick = 0; - for (iMidiEvent i = events->begin(); i != events->end(); ++i) { - int ntick = i->time(); - if (ntick < tick) { - printf("MidiFile::writeTrack: ntick %d < tick %d\n", ntick, tick); - ntick = tick; - } - putvl(((ntick - tick) * config.midiDivision + config.division/2)/config.division); - tick = ntick; - writeEvent(&(*i)); - } - - //--------------------------------------------------- - // write "End Of Track" Meta - // write Track Len - // - - putvl(0); - put(0xff); // Meta - put(0x2f); // EOT - putvl(0); // len 0 - int endpos = fp->pos(); - fp->seek(lenpos); - writeLong(endpos-lenpos-4); // tracklen - fp->seek(endpos); - return false; - } - -//--------------------------------------------------------- -// writeEvent -//--------------------------------------------------------- - -void MidiFile::writeEvent(const MidiEvent* event) - { - int c = event->channel(); - int nstat = event->type(); - - // we dont save meta data into smf type 0 files: - - if (config.smfFormat == 0 && nstat == ME_META) - return; - - nstat |= c; - // - // running status; except for Sysex- and Meta Events - // - if (((nstat & 0xf0) != 0xf0) && (nstat != status)) { - status = nstat; - put(nstat); - } - switch (event->type()) { - case ME_NOTEOFF: - case ME_NOTEON: - case ME_POLYAFTER: - case ME_CONTROLLER: - case ME_PITCHBEND: - put(event->dataA()); - put(event->dataB()); - break; - case ME_PROGRAM: // Program Change - case ME_AFTERTOUCH: // Channel Aftertouch - put(event->dataA()); - break; - case ME_SYSEX: - put(0xf0); - putvl(event->len() + 1); // including 0xf7 - write(event->data(), event->len()); - put(0xf7); - status = -1; // invalidate running status - break; - case ME_META: - put(0xff); - put(event->dataA()); - putvl(event->len()); - write(event->data(), event->len()); - status = -1; - break; - } - } - -//--------------------------------------------------------- -// write -// returns true on error -//--------------------------------------------------------- - -bool MidiFile::write(QFile* _fp) - { - fp = _fp; - write("MThd", 4); - writeLong(6); // header len - writeShort(format); - if (format == 0) { - // ?? writeShort(1); - MidiFileTrack dst; - for (iMidiFileTrack i = _tracks->begin(); i != _tracks->end(); ++i) { - MidiEventList* sl = &((*i)->events); - for (iMidiEvent ie = sl->begin(); ie != sl->end(); ++ie) - dst.events.insert(*ie); - } - writeShort(1); - writeShort(_division); - writeTrack(&dst); - } - else { - writeShort(_tracks->size()); - writeShort(_division); - for (ciMidiFileTrack i = _tracks->begin(); i != _tracks->end(); ++i) - writeTrack(*i); - } - return false; // (ferror(fp) != 0); - } - -//--------------------------------------------------------- -// readMidi -// returns true on error -//--------------------------------------------------------- - -bool MidiFile::read(QFile* _fp) - { - fp = _fp; - _error = MF_NO_ERROR; - int i; - char tmp[4]; - - if (read(tmp, 4)) - return true; - int len = readLong(); - if (memcmp(tmp, "MThd", 4) || len < 6) { - _error = MF_MTHD; - return true; - } - format = readShort(); - ntracks = readShort(); - _division = readShort(); - - if (_division < 0) - _division = (-(_division/256)) * (_division & 0xff); - if (len > 6) - skip(len-6); // skip excess bytes - - switch (format) { - case 0: - { - MidiFileTrack* t = new MidiFileTrack; - _tracks->push_back(t); - if (readTrack(t)) - return true; - } - break; - case 1: - for (i = 0; i < ntracks; i++) { - MidiFileTrack* t = new MidiFileTrack; - _tracks->push_back(t); - if (readTrack(t)) - return true; - } - break; - default: - _error = MF_FORMAT; - return true; - } - return false; - } - diff --git a/muse/muse/midifile.h b/muse/muse/midifile.h deleted file mode 100644 index dd51a7d3..00000000 --- a/muse/muse/midifile.h +++ /dev/null @@ -1,121 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __MIDIFILE_H__ -#define __MIDIFILE_H__ - -#include "globaldefs.h" -#include "midievent.h" - -struct MidiEventList; -class MidiEvent; - -//--------------------------------------------------------- -// MidiFileTrack -//--------------------------------------------------------- - -struct MidiFileTrack { - MidiEventList events; - bool isDrumTrack; - MidiFileTrack() { - isDrumTrack = false; - } - }; - -typedef std::list MidiFileTrackList; -typedef MidiFileTrackList::iterator iMidiFileTrack; -typedef MidiFileTrackList::const_iterator ciMidiFileTrack; - -//--------------------------------------------------------- -// MidiFile -//--------------------------------------------------------- - -class MidiFile { - int _error; - int format; // smf file format - int ntracks; // number of midi tracks - int _division; - MidiInstrumentType _midiType; - MidiFileTrackList* _tracks; - - int status, click; - int sstatus; - int lastport, lastchannel; - QFile* fp; - int curPos; - - bool read(void*, size_t); - bool write(const void*, size_t); - void put(unsigned char c) { write(&c, 1); } - bool skip(size_t); - int readShort(); - bool writeShort(int); - int readLong(); - bool writeLong(int); - int getvl(); - void putvl(unsigned); - - bool readTrack(MidiFileTrack*); - bool writeTrack(const MidiFileTrack*); - - int readEvent(MidiEvent*, MidiFileTrack*); - void writeEvent(const MidiEvent*); - - public: - MidiFile(); - ~MidiFile(); - bool read(QFile* f); - bool write(QFile* f); - QString error(); - MidiFileTrackList* trackList() { return _tracks; } - int tracks() const { return ntracks; } - void setTrackList(MidiFileTrackList* tr) { - _tracks = tr; - } - void setDivision(int d) { _division = d; } - int division() const { return _division; } - void setFormat(int val) { format = val; } - MidiInstrumentType midiType() const { return _midiType; } - }; - -#define XCHG_SHORT(x) ((((x)&0xFF)<<8) | (((x)>>8)&0xFF)) -#ifdef __i486__ -#define XCHG_LONG(x) \ - ({ int __value; \ - asm ("bswap %1; movl %1,%0" : "=g" (__value) : "r" (x)); \ - __value; }) -#else -#define XCHG_LONG(x) ((((x)&0xFF)<<24) | \ - (((x)&0xFF00)<<8) | \ - (((x)&0xFF0000)>>8) | \ - (((x)>>24)&0xFF)) -#endif - -#if __BYTE_ORDER == __LITTLE_ENDIAN -#define BE_SHORT(x) XCHG_SHORT(x) -#define BE_LONG(x) XCHG_LONG(x) -#else -#define BE_SHORT(x) x -#define BE_LONG(x) x -#endif - - -#endif - diff --git a/muse/muse/midiinport.cpp b/muse/muse/midiinport.cpp deleted file mode 100644 index afe53876..00000000 --- a/muse/muse/midiinport.cpp +++ /dev/null @@ -1,241 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "song.h" -#include "midiplugin.h" -#include "midi.h" -#include "midictrl.h" -#include "al/xml.h" -#include "audiodev.h" -#include "audio.h" -#include "gconfig.h" -#include "midiinport.h" -#include "jackaudio.h" - -//--------------------------------------------------------- -// MidiInPort -//--------------------------------------------------------- - -MidiInPort::MidiInPort() - : MidiTrackBase() - { - _channels = 1; - for (int i = 0; i < MIDI_CHANNELS; ++i) - activity[i] = 0; - } - -//--------------------------------------------------------- -// MidiInPort -//--------------------------------------------------------- - -MidiInPort::~MidiInPort() - { - } - -//--------------------------------------------------------- -// setName -//--------------------------------------------------------- - -void MidiInPort::setName(const QString& s) - { - Track::setName(s); - if (!jackPort(0).isZero()) - audioDriver->setPortName(jackPort(), s); - } - -//--------------------------------------------------------- -// MidiInPort::write -//--------------------------------------------------------- - -void MidiInPort::write(Xml& xml) const - { - xml.stag("MidiInPort"); - MidiTrackBase::writeProperties(xml); - xml.etag("MidiInPort"); - } - -//--------------------------------------------------------- -// MidiInPort::read -//--------------------------------------------------------- - -void MidiInPort::read(QDomNode node) - { - while (!node.isNull()) { - QDomElement e = node.toElement(); - QString tag(e.tagName()); - if (MidiTrackBase::readProperties(node)) - printf("MusE:MidiInPort: unknown tag %s\n", tag.toLatin1().data()); - node = node.nextSibling(); - } - } - -//--------------------------------------------------------- -// midiReceived -// called from midiSeq context -//--------------------------------------------------------- - -void MidiInPort::eventReceived(jack_midi_event_t* ev) - { - MidiEvent event; - event.setB(0); - - // - // move all events 2*segmentSize into the future to get - // jitterfree playback - // - // cycle n-1 n n+1 - // -+----------+----------+----------+- - // ^ ^ ^ - // catch process play - // - const SeqTime* st = audio->seqTime(); - -// unsigned curFrame = st->startFrame() + segmentSize; - unsigned curFrame = st->lastFrameTime; - event.setTime(curFrame + ev->time); - - event.setChannel(*(ev->buffer) & 0xf); - int type = *(ev->buffer) & 0xf0; - int a = *(ev->buffer + 1) & 0x7f; - int b = *(ev->buffer + 2) & 0x7f; - event.setType(type); - switch(type) { - case ME_NOTEON: - case ME_NOTEOFF: - case ME_CONTROLLER: - event.setA(*(ev->buffer + 1)); - event.setB(*(ev->buffer + 2)); - break; - case ME_PROGRAM: - case ME_AFTERTOUCH: - event.setA(*(ev->buffer + 1)); - break; - - case ME_PITCHBEND: - event.setA(((b << 7) + a) - 8192); - break; - - case ME_SYSEX: - { - int type = *(ev->buffer) & 0xff; - switch(type) { - case ME_SYSEX: - event.setTime(0); // mark as used - event.setType(ME_SYSEX); - event.setData((unsigned char*)(ev->buffer + 1), - ev->size - 2); - break; - case ME_CLOCK: - case ME_SENSE: - break; - default: - printf("unknown event 0x%02x\n", type); - return; - } - } - return; - } - - if (midiInputTrace) { - printf("MidiInput<%s>: ", name().toLatin1().data()); - event.dump(); - } - // - // process midi filter pipeline and add event to - // _recordEvents - // - - MidiEventList il, ol; - il.insert(event); - pipeline()->apply(st->curTickPos, st->nextTickPos, &il, &ol); - - // - // update midi activity - // notify gui of new events - // - - for (iMidiEvent i = ol.begin(); i != ol.end(); ++i) { - triggerActivity(i->channel()); - song->putEvent(*i); - if (recordFifo.put(*i)) - printf("MusE: eventReceived(): fifo overflow\n"); - } - } - -//--------------------------------------------------------- -// afterProcess -// clear all recorded events after a process cycle -//--------------------------------------------------------- - -void MidiInPort::afterProcess() - { - while (tmpRecordCount--) - recordFifo.remove(); - } - -//--------------------------------------------------------- -// beforeProcess -// "freeze" fifo for this process cycle -//--------------------------------------------------------- - -void MidiInPort::beforeProcess() - { - if (!jackPort(0).isZero()) - audioDriver->collectMidiEvents(this, jackPort(0)); - tmpRecordCount = recordFifo.getSize(); - } - -//--------------------------------------------------------- -// getEvents -// called from jack process context -// This method can be called multiple times in a process -// cycle so we have to empty the fifo at -// "afterProcess()". -//--------------------------------------------------------- - -void MidiInPort::getEvents(unsigned, unsigned, int ch, MidiEventList* dst) - { - for (int i = 0; i < tmpRecordCount; ++i) { - const MidiEvent& ev = recordFifo.peek(i); - if (ch == -1 || (ev.channel() == ch)) - dst->insert(ev); - } - } - -//--------------------------------------------------------- -// checkActivity -//--------------------------------------------------------- - -bool MidiInPort::checkActivity(int channel) - { - if (activity[channel]) - --activity[channel]; - return activity[channel] != 0; - } - -//--------------------------------------------------------- -// triggerActivity -//--------------------------------------------------------- - -void MidiInPort::triggerActivity(int channel) - { - activity[channel] = config.guiRefresh / 5 + 1; // hold for >= 1/5 sec - } - diff --git a/muse/muse/midiinport.h b/muse/muse/midiinport.h deleted file mode 100644 index 899ee0a8..00000000 --- a/muse/muse/midiinport.h +++ /dev/null @@ -1,67 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __MIDIINPORT_H__ -#define __MIDIINPORT_H__ - -#include "midififo.h" -#include "miditrackbase.h" -#include "midievent.h" - -static const int RECORD_FIFO_SIZE = 512; - -//--------------------------------------------------------- -// MidiInPort -//--------------------------------------------------------- - -class MidiInPort : public MidiTrackBase { - Q_OBJECT - - MidiFifo recordFifo; - - int tmpRecordCount; - int activity[MIDI_CHANNELS]; - - public: - MidiInPort(); - ~MidiInPort(); - virtual TrackType type() const { return MIDI_IN; } - - virtual void setName(const QString& s); - virtual void write(Xml&) const; - virtual void read(QDomNode); - virtual bool isMute() const { return _mute; } - virtual Part* newPart(Part*, bool) { return 0; } - - void eventReceived(jack_midi_event_t*); - - virtual void getEvents(unsigned from, unsigned to, int channel, MidiEventList* dst); - void beforeProcess(); - void afterProcess(); - bool checkActivity(int channel); - void triggerActivity(int channel); - }; - -typedef QList MidiInPortList; -typedef MidiInPortList::iterator iMidiInPort; -typedef MidiInPortList::const_iterator ciMidiInPort; - -#endif - diff --git a/muse/muse/midiout.cpp b/muse/muse/midiout.cpp deleted file mode 100644 index c35f115f..00000000 --- a/muse/muse/midiout.cpp +++ /dev/null @@ -1,398 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "midiout.h" -#include "midictrl.h" -#include "miditrackbase.h" -#include "al/al.h" -#include "al/tempo.h" -#include "event.h" -#include "sync.h" -#include "audio.h" -#include "gconfig.h" - -static const unsigned char mmcDeferredPlayMsg[] = { 0x7f, 0x7f, 0x06, 0x03 }; -static const unsigned char mmcStopMsg[] = { 0x7f, 0x7f, 0x06, 0x01 }; - -//--------------------------------------------------------- -// MidiOut -//--------------------------------------------------------- - -MidiOut::MidiOut() - { - track = 0; - } - -//--------------------------------------------------------- -// sendGmOn -// send GM-On message to midi device and keep track -// of device state -//--------------------------------------------------------- - -void MidiOut::sendGmOn() - { - sendSysex(gmOnMsg, gmOnMsgLen); - track->setHwCtrlState(CTRL_PROGRAM, 0); - track->setHwCtrlState(CTRL_PITCH, 0); - track->setHwCtrlState(CTRL_VOLUME, 100); - track->setHwCtrlState(CTRL_PANPOT, 64); - track->setHwCtrlState(CTRL_REVERB_SEND, 40); - track->setHwCtrlState(CTRL_CHORUS_SEND, 0); - track->setMeter(0, 0.0); - } - -//--------------------------------------------------------- -// sendGsOn -// send Roland GS-On message to midi device and keep track -// of device state -//--------------------------------------------------------- - -void MidiOut::sendGsOn() - { - static unsigned char data2[] = { 0x41, 0x10, 0x42, 0x12, 0x40, 0x01, 0x33, 0x50, 0x3c }; - static unsigned char data3[] = { 0x41, 0x10, 0x42, 0x12, 0x40, 0x01, 0x34, 0x50, 0x3b }; - - sendSysex(data2, sizeof(data2)); - sendSysex(data3, sizeof(data3)); - } - -//--------------------------------------------------------- -// sendXgOn -// send Yamaha XG-On message to midi device and keep track -// of device state -//--------------------------------------------------------- - -void MidiOut::sendXgOn() - { - sendSysex(xgOnMsg, xgOnMsgLen); - track->setHwCtrlState(CTRL_PROGRAM, 0); - track->setHwCtrlState(CTRL_MODULATION, 0); - track->setHwCtrlState(CTRL_PORTAMENTO_TIME, 0); - track->setHwCtrlState(CTRL_VOLUME, 0x64); - track->setHwCtrlState(CTRL_PANPOT, 0x40); - track->setHwCtrlState(CTRL_EXPRESSION, 0x7f); - track->setHwCtrlState(CTRL_SUSTAIN, 0x0); - track->setHwCtrlState(CTRL_PORTAMENTO, 0x0); - track->setHwCtrlState(CTRL_SOSTENUTO, 0x0); - track->setHwCtrlState(CTRL_SOFT_PEDAL, 0x0); - track->setHwCtrlState(CTRL_HARMONIC_CONTENT, 0x40); - track->setHwCtrlState(CTRL_RELEASE_TIME, 0x40); - track->setHwCtrlState(CTRL_ATTACK_TIME, 0x40); - track->setHwCtrlState(CTRL_BRIGHTNESS, 0x40); - track->setHwCtrlState(CTRL_REVERB_SEND, 0x28); - track->setHwCtrlState(CTRL_CHORUS_SEND, 0x0); - track->setHwCtrlState(CTRL_VARIATION_SEND, 0x0); - track->setMeter(0, 0.0); - } - -//--------------------------------------------------------- -// sendSysex -// send SYSEX message to midi device -//--------------------------------------------------------- - -void MidiOut::sendSysex(const unsigned char* p, int n) - { - MidiEvent event(0, ME_SYSEX, p, n); - track->routeEvent(event); - } - -//--------------------------------------------------------- -// sendStart -//--------------------------------------------------------- - -void MidiOut::sendStart() - { - MidiEvent event(0, 0, ME_START, 0, 0); - track->routeEvent(event); - } - -//--------------------------------------------------------- -// sendStop -//--------------------------------------------------------- - -void MidiOut::sendStop() - { - MidiEvent event(0, 0, ME_STOP, 0, 0); - track->routeEvent(event); - } - -//--------------------------------------------------------- -// sendClock -//--------------------------------------------------------- - -void MidiOut::sendClock() - { - MidiEvent event(0, 0, ME_CLOCK, 0, 0); - track->routeEvent(event); - } - -//--------------------------------------------------------- -// sendContinue -//--------------------------------------------------------- - -void MidiOut::sendContinue() - { - MidiEvent event(0, 0, ME_CONTINUE, 0, 0); - track->routeEvent(event); - } - -//--------------------------------------------------------- -// sendSongpos -//--------------------------------------------------------- - -void MidiOut::sendSongpos(int pos) - { - MidiEvent event(0, 0, ME_SONGPOS, pos, 0); - track->routeEvent(event); - } - -//--------------------------------------------------------- -// playMidiEvent -// called from GUI -//--------------------------------------------------------- - -void MidiOut::playMidiEvent(MidiEvent* ev) - { - if (eventFifo.put(*ev)) - printf("MidiPort::playMidiEvent(): port overflow, drop event\n"); - } - -//--------------------------------------------------------- -// seek -//--------------------------------------------------------- - -void MidiOut::seek(unsigned tickPos, unsigned framePos) - { - if (genMCSync && track->sendSync()) { - int beat = (tickPos * 4) / config.division; - sendStop(); - sendSongpos(beat); - sendContinue(); - } - if (track->mute()) - return; - -// if (pos == 0 && !song->record()) -// audio->initDevices(); - - //--------------------------------------------------- - // stop all notes - //--------------------------------------------------- - - for (iMidiEvent i = _schedEvents.begin(); i != _schedEvents.end(); ++i) { - MidiEvent ev = *i; - if (ev.isNoteOff()) { - ev.setTime(framePos); - track->routeEvent(ev); - } - } - _schedEvents.clear(); - - //--------------------------------------------------- - // set all controller - //--------------------------------------------------- - - if (track->autoRead()) { - CtrlList* cl = track->controller(); - for (iCtrl ic = cl->begin(); ic != cl->end(); ++ic) { - Ctrl* c = ic->second; - int val = c->value(tickPos).i; - if ((val != CTRL_VAL_UNKNOWN) && (c->curVal().i != val)) { - MidiEvent ev(0, -1, ME_CONTROLLER, c->id(), val); - track->routeEvent(ev); - c->setCurVal(val); - } - } - } - foreach (const Route& r, *track->inRoutes()) { - MidiTrackBase* t = (MidiTrackBase*)r.src.track; - int dstChannel = r.dst.channel; - if (t->isMute() || !t->autoRead()) - continue; - CtrlList* cl = t->controller(); - for (iCtrl ic = cl->begin(); ic != cl->end(); ++ic) { - Ctrl* c = ic->second; - int val = c->value(tickPos).i; - if ((val != CTRL_VAL_UNKNOWN) && (c->curVal().i != val)) { - MidiEvent ev(0, dstChannel, ME_CONTROLLER, c->id(), val); - track->routeEvent(ev); - c->setCurVal(val); - } - } - } - } - -//--------------------------------------------------------- -// stop -//--------------------------------------------------------- - -void MidiOut::stop() - { - //--------------------------------------------------- - // stop all notes - //--------------------------------------------------- - - int time = audio->seqTime()->lastFrameTime; - for (iMidiEvent i = _schedEvents.begin(); i != _schedEvents.end(); ++i) { - MidiEvent ev = *i; - if (ev.isNoteOff()) { - ev.setTime(time); - track->routeEvent(ev); - } - } - _schedEvents.clear(); - - //--------------------------------------------------- - // reset sustain - //--------------------------------------------------- - - foreach (const Route& r, *track->inRoutes()) { - MidiTrackBase* t = (MidiTrackBase*)r.src.track; - int dstChannel = r.dst.channel; - if (t->isMute() || !t->autoRead()) - continue; - CtrlList* cl = t->controller(); - for (iCtrl ic = cl->begin(); ic != cl->end(); ++ic) { - Ctrl* c = ic->second; - if (c->id() == CTRL_SUSTAIN) { - if (c->curVal().i > 0) { - MidiEvent ev(time, dstChannel, ME_CONTROLLER, c->id(), 0); - track->routeEvent(ev); - c->setCurVal(0); - } - } - } - } - - if (track->sendSync()) { - if (genMMC) { - unsigned char mmcPos[] = { - 0x7f, 0x7f, 0x06, 0x44, 0x06, 0x01, - 0, 0, 0, 0, 0 - }; - double frame = double(audio->seqTime()->pos.frame()); - MTC mtc(frame / double(AL::sampleRate)); - mmcPos[6] = mtc.h() | (AL::mtcType << 5); - mmcPos[7] = mtc.m(); - mmcPos[8] = mtc.s(); - mmcPos[9] = mtc.f(); - mmcPos[10] = mtc.sf(); - sendSysex(mmcStopMsg, sizeof(mmcStopMsg)); - sendSysex(mmcPos, sizeof(mmcPos)); - } - if (genMCSync) { // Midi Clock - // send STOP and - // "set song position pointer" - sendStop(); - sendSongpos(audio->seqTime()->curTickPos * 4 / config.division); - } - } - } - -//--------------------------------------------------------- -// start -//--------------------------------------------------------- - -void MidiOut::start() - { - // TODO: set sustain to old value? - - if (!(genMMC || genMCSync || track->sendSync())) - return; - if (genMMC) - sendSysex(mmcDeferredPlayMsg, sizeof(mmcDeferredPlayMsg)); - if (genMCSync) { - if (audio->seqTime()->curTickPos) - sendContinue(); - else - sendStart(); - } - } - -//--------------------------------------------------------- -// reset -//--------------------------------------------------------- - -void MidiOut::reset() - { -/* TODO - MidiEvent ev; - ev.setType(0x90); - for (int chan = 0; chan < MIDI_CHANNELS; ++chan) { - ev.setChannel(chan); - for (int pitch = 0; pitch < 128; ++pitch) { - ev.setA(pitch); - ev.setB(0); - mp->putEvent(ev); - } - } -*/ - } - -//------------------------------------------------------------------- -// process -// Collect all midi events for the current process cycle and put -// into _schedEvents queue. For note on events create the proper -// note off events. The note off events maybe played later after the -// current process cycle. -// From _schedEvents queue copy all events for the current cycle -// to all output routes. Events routed to ALSA go into the -// _playEvents queue which is processed by the MidiSeq thread. -//------------------------------------------------------------------- - -void MidiOut::processMidi(MidiEventList& el, const SeqTime* time) - { - while (!eventFifo.isEmpty()) - el.insert(eventFifo.get()); - - // collect port controller - if (track->autoRead() && (time->curTickPos != time->nextTickPos)) { // if rolling - CtrlList* cl = track->controller(); - for (iCtrl ic = cl->begin(); ic != cl->end(); ++ic) { - Ctrl* c = ic->second; - iCtrlVal is = c->lowerBound(time->curTickPos); - iCtrlVal ie = c->lowerBound(time->nextTickPos); - for (iCtrlVal ic = is; ic != ie; ++ic) { - unsigned frame = AL::tempomap.tick2frame(ic.key()); - MidiEvent ev(frame, -1, ME_CONTROLLER, c->id(), ic.value().i); - el.insert(ev); - c->setCurVal(ic.value().i); - } - } - } - foreach (const Route& r, *track->inRoutes()) { - MidiTrackBase* t = (MidiTrackBase*)r.src.track; - int dstChannel = r.dst.channel; - if (t->isMute()) - continue; - MidiEventList ell; - t->getEvents(time->curTickPos, time->nextTickPos, r.src.channel, &ell); - int velo = 0; - for (iMidiEvent i = ell.begin(); i != ell.end(); ++i) { - MidiEvent ev(*i); - ev.setChannel(dstChannel); - el.insert(ev); - if (ev.type() == ME_NOTEON) - velo += ev.dataB(); - } - t->addMidiMeter(velo); - } - } - diff --git a/muse/muse/midiout.h b/muse/muse/midiout.h deleted file mode 100644 index 8bf25261..00000000 --- a/muse/muse/midiout.h +++ /dev/null @@ -1,67 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __MIDIOUT_H__ -#define __MIDIOUT_H__ - -#include "midififo.h" - -class Track; -class MidiInstrument; -class SeqTime; - -//--------------------------------------------------------- -// MidiOut -//--------------------------------------------------------- - -class MidiOut - { - public: - Track* track; - MidiInstrument* _instrument; - MidiEventList _schedEvents; // scheduled events by process() - - // fifo for midi events send from gui - // direct to midi port: - - MidiFifo eventFifo; - - MidiOut(); - void processMidi(MidiEventList&, const SeqTime*); - - void seek(unsigned, unsigned); - void stop(); - void start(); - void reset(); - - void sendSysex(const unsigned char*, int); - void sendSongpos(int); - void sendGmOn(); - void sendGsOn(); - void sendXgOn(); - void sendStart(); - void sendStop(); - void sendContinue(); - void sendClock(); - void playMidiEvent(MidiEvent* ev); - }; - -#endif - diff --git a/muse/muse/midioutport.cpp b/muse/muse/midioutport.cpp deleted file mode 100644 index 695f51a6..00000000 --- a/muse/muse/midioutport.cpp +++ /dev/null @@ -1,262 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "song.h" -#include "midiplugin.h" -#include "midictrl.h" -#include "al/al.h" -#include "al/tempo.h" -#include "al/xml.h" -#include "audiodev.h" -#include "audio.h" -#include "midioutport.h" -#include "sync.h" -#include "gconfig.h" -#include "instruments/minstrument.h" - -//--------------------------------------------------------- -// MidiOutPort -//--------------------------------------------------------- - -MidiOutPort::MidiOutPort() - : MidiTrackBase() - { - track = this; - _instrument = genericMidiInstrument; - setDeviceId(127); // all - addMidiController(_instrument, CTRL_MASTER_VOLUME); - _channels = 1; - } - -//--------------------------------------------------------- -// MidiOutPort -//--------------------------------------------------------- - -MidiOutPort::~MidiOutPort() - { - } - -//--------------------------------------------------------- -// setName -//--------------------------------------------------------- - -void MidiOutPort::setName(const QString& s) - { - Track::setName(s); - if (!jackPort().isZero()) - audioDriver->setPortName(jackPort(), s); - } - -//--------------------------------------------------------- -// MidiOutPort::write -//--------------------------------------------------------- - -void MidiOutPort::write(Xml& xml) const - { - xml.stag("MidiOutPort"); - MidiTrackBase::writeProperties(xml); - if (_instrument) - xml.tag("instrument", _instrument->iname()); - xml.tag("sendSync", sendSync()); - xml.tag("deviceId", deviceId()); - xml.etag("MidiOutPort"); - } - -//--------------------------------------------------------- -// MidiOutPort::read -//--------------------------------------------------------- - -void MidiOutPort::read(QDomNode node) - { - for (; !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - QString tag(e.tagName()); - if (tag == "instrument") { - QString iname = e.text(); - _instrument = registerMidiInstrument(iname); - } - else if (tag == "sendSync") - setSendSync(e.text().toInt()); - else if (tag == "deviceId") - setDeviceId(e.text().toInt()); - else if (MidiTrackBase::readProperties(node)) - printf("MusE:MidiOutPort: unknown tag %s\n", tag.toLatin1().data()); - } - } - -//--------------------------------------------------------- -// routeEvent -//--------------------------------------------------------- - -void MidiOutPort::routeEvent(const MidiEvent& event) - { - for (iRoute r = _outRoutes.begin(); r != _outRoutes.end(); ++r) { - if (r->dst.type == RouteNode::JACKMIDIPORT) - queueJackEvent(event); - else - fprintf(stderr, "MidiOutPort::process(): invalid routetype\n"); - } - } - -//--------------------------------------------------------- -// queueJackEvent -// called from MidiSeq -//--------------------------------------------------------- - -#define JO(e) audioDriver->putEvent(jackPort(0), e); - -void MidiOutPort::queueJackEvent(const MidiEvent& ev) - { - if (ev.type() == ME_CONTROLLER) { - int a = ev.dataA(); - int b = ev.dataB(); - int chn = ev.channel(); - unsigned t = ev.time(); - - if (a == CTRL_PITCH) { - int v = b + 8192; - audioDriver->putEvent(jackPort(0), MidiEvent(t, chn, ME_PITCHBEND, v & 0x7f, (v >> 7) & 0x7f)); - } - else if (a == CTRL_PROGRAM) { - // don't output program changes for GM drum channel -// if (!(song->mtype() == MT_GM && chn == 9)) { - int hb = (b >> 16) & 0xff; - int lb = (b >> 8) & 0xff; - int pr = b & 0x7f; - if (hb != 0xff) - JO(MidiEvent(t, chn, ME_CONTROLLER, CTRL_HBANK, hb)); - if (lb != 0xff) - JO(MidiEvent(t+1, chn, ME_CONTROLLER, CTRL_LBANK, lb)); - JO(MidiEvent(t+2, chn, ME_PROGRAM, pr, 0)); -// } - } - else if (a == CTRL_MASTER_VOLUME) { - unsigned char sysex[] = { - 0x7f, 0x7f, 0x04, 0x01, 0x00, 0x00 - }; - sysex[1] = deviceId(); - sysex[4] = b & 0x7f; - sysex[5] = (b >> 7) & 0x7f; - JO(MidiEvent(t, ME_SYSEX, sysex, 6)); - } - else if (a < CTRL_14_OFFSET) { // 7 Bit Controller - JO(ev); - } - else if (a < CTRL_RPN_OFFSET) { // 14 bit high resolution controller - int ctrlH = (a >> 8) & 0x7f; - int ctrlL = a & 0x7f; - int dataH = (b >> 7) & 0x7f; - int dataL = b & 0x7f; - JO(MidiEvent(t, chn, ME_CONTROLLER, ctrlH, dataH)); - JO(MidiEvent(t+1, chn, ME_CONTROLLER, ctrlL, dataL)); - } - else if (a < CTRL_NRPN_OFFSET) { // RPN 7-Bit Controller - int ctrlH = (a >> 8) & 0x7f; - int ctrlL = a & 0x7f; - JO(MidiEvent(t, chn, ME_CONTROLLER, CTRL_HRPN, ctrlH)); - JO(MidiEvent(t+1, chn, ME_CONTROLLER, CTRL_LRPN, ctrlL)); - JO(MidiEvent(t+2, chn, ME_CONTROLLER, CTRL_HDATA, b)); - } - else if (a < CTRL_RPN14_OFFSET) { // NRPN 7-Bit Controller - int ctrlH = (a >> 8) & 0x7f; - int ctrlL = a & 0x7f; - JO(MidiEvent(t, chn, ME_CONTROLLER, CTRL_HNRPN, ctrlH)); - JO(MidiEvent(t+1, chn, ME_CONTROLLER, CTRL_LNRPN, ctrlL)); - JO(MidiEvent(t+2, chn, ME_CONTROLLER, CTRL_HDATA, b)); - } - else if (a < CTRL_NRPN14_OFFSET) { // RPN14 Controller - int ctrlH = (a >> 8) & 0x7f; - int ctrlL = a & 0x7f; - int dataH = (b >> 7) & 0x7f; - int dataL = b & 0x7f; - JO(MidiEvent(t, chn, ME_CONTROLLER, CTRL_HRPN, ctrlH)); - JO(MidiEvent(t+1, chn, ME_CONTROLLER, CTRL_LRPN, ctrlL)); - JO(MidiEvent(t+2, chn, ME_CONTROLLER, CTRL_HDATA, dataH)); - JO(MidiEvent(t+3, chn, ME_CONTROLLER, CTRL_LDATA, dataL)); - } - else if (a < CTRL_NONE_OFFSET) { // NRPN14 Controller - int ctrlH = (a >> 8) & 0x7f; - int ctrlL = a & 0x7f; - int dataH = (b >> 7) & 0x7f; - int dataL = b & 0x7f; - JO(MidiEvent(t, chn, ME_CONTROLLER, CTRL_HNRPN, ctrlH)); - JO(MidiEvent(t+1, chn, ME_CONTROLLER, CTRL_LNRPN, ctrlL)); - JO(MidiEvent(t+2, chn, ME_CONTROLLER, CTRL_HDATA, dataH)); - JO(MidiEvent(t+3, chn, ME_CONTROLLER, CTRL_LDATA, dataL)); - } - else { - printf("putEvent: unknown controller type 0x%x\n", a); - } - } - else { - JO(ev); - } - } -#undef JO - -//--------------------------------------------------------- -// setInstrument -//--------------------------------------------------------- - -void MidiOutPort::setInstrument(MidiInstrument* i) - { - _instrument = i; - emit instrumentChanged(); - } - -//------------------------------------------------------------------- -// process -// Collect all midi events for the current process cycle and put -// into _schedEvents queue. For note on events create the proper -// note off events. The note off events maybe played after the -// current process cycle. -// From _schedEvents queue copy all events for the current cycle -// to all output routes. -//------------------------------------------------------------------- - -void MidiOutPort::processMidi(const SeqTime* t) - { - if (track->mute()) - return; - - MidiEventList el; - MidiOut::processMidi(el, t); - - pipeline()->apply(t->curTickPos, t->nextTickPos, &el, &_schedEvents); - - // - // route events to destination - // - - int portVelo = 0; - unsigned endFrame = t->lastFrameTime + segmentSize; - iMidiEvent i = _schedEvents.begin(); - - for (; i != _schedEvents.end(); ++i) { - if (i->time() >= endFrame) - break; - routeEvent(*i); - if (i->type() == ME_NOTEON) - portVelo += i->dataB(); - } - _schedEvents.erase(_schedEvents.begin(), i); - addMidiMeter(portVelo); - } - diff --git a/muse/muse/midioutport.h b/muse/muse/midioutport.h deleted file mode 100644 index 31529349..00000000 --- a/muse/muse/midioutport.h +++ /dev/null @@ -1,70 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __MIDIOUTPORT_H__ -#define __MIDIOUTPORT_H__ - -#include "miditrackbase.h" -#include "midiout.h" - -struct SeqTime; - -//--------------------------------------------------------- -// MidiOutPort -//--------------------------------------------------------- - -class MidiOutPort : public MidiTrackBase, public MidiOut { - Q_OBJECT - - MidiInstrument* _instrument; - void routeEvent(const MidiEvent&); - void queueAlsaEvent(const MidiEvent& event); - void queueJackEvent(const MidiEvent& event); - - signals: - void instrumentChanged(); - - public: - MidiOutPort(); - ~MidiOutPort(); - virtual TrackType type() const { return MIDI_OUT; } - - virtual void setName(const QString& s); - virtual void write(Xml&) const; - virtual void read(QDomNode); - virtual bool isMute() const { return _mute; } - virtual Part* newPart(Part*, bool) { return 0; } - - virtual MidiInstrument* instrument() { return _instrument; } - virtual MidiOut* midiOut() { return this; } - void setInstrument(MidiInstrument* i); - - bool guiVisible() const; - bool hasGui() const; - - virtual void processMidi(const SeqTime*); - }; - -typedef QList MidiOutPortList; -typedef MidiOutPortList::iterator iMidiOutPort; -typedef MidiOutPortList::const_iterator ciMidiOutPort; - -#endif - diff --git a/muse/muse/midiplugin.cpp b/muse/muse/midiplugin.cpp deleted file mode 100644 index 1d13828d..00000000 --- a/muse/muse/midiplugin.cpp +++ /dev/null @@ -1,625 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include - -#include "al/al.h" -#include "al/xml.h" -#include "al/tempo.h" -#include "al/sig.h" -#include "midiplugin.h" -#include "ctrl.h" -#include "midiplugins/libmidiplugin/mempi.h" -#include "audio.h" -#include "gconfig.h" - -MidiPluginList midiPlugins; - -MempiHost mempiHost; - -//--------------------------------------------------------- -// division -//--------------------------------------------------------- - -int MempiHost::division() const - { - return config.division; - } - -//--------------------------------------------------------- -// tempo -//--------------------------------------------------------- - -int MempiHost::tempo(unsigned tick) const - { - return AL::tempomap.tempo(tick); - } - -//--------------------------------------------------------- -// tick2frame -//--------------------------------------------------------- - -unsigned MempiHost::tick2frame(unsigned tick) const - { - return AL::tempomap.tick2frame(tick); - } - -//--------------------------------------------------------- -// frame2tick -//--------------------------------------------------------- - -unsigned MempiHost::frame2tick(unsigned frame) const - { - return AL::tempomap.frame2tick(frame); - } - -//--------------------------------------------------------- -// bar -//--------------------------------------------------------- - -void MempiHost::bar(int t, int* bar, int* beat, unsigned* tick) const - { - AL::sigmap.tickValues(t, bar, beat, tick); - } - -//--------------------------------------------------------- -// bar2tick -//--------------------------------------------------------- - -unsigned MempiHost::bar2tick(int bar, int beat, int tick) const - { - return AL::sigmap.bar2tick(bar, beat, tick); - } - -//--------------------------------------------------------- -// MidiPlugin -//--------------------------------------------------------- - -MidiPlugin::MidiPlugin(const QFileInfo* f, const MEMPI_Function mf, - const MEMPI* d) : fi(*f) - { - mempi = mf; - plugin = d; - _instances = 0; - } - -//--------------------------------------------------------- -// instantiate -//--------------------------------------------------------- - -MidiPluginI* MidiPlugin::instantiate(MidiTrackBase* t) - { - if (plugin == 0) { - printf("initMidiPluginInstance: zero plugin\n"); - return 0; - } - ++_instances; - QString inst("-" + QString::number(_instances)); - QString s = name() + inst; - - Mempi* m = plugin->instantiate(s.toLatin1().data(), &mempiHost); - if (m->init()) { - delete m; - return 0; - } - MidiPluginI* mp = new MidiPluginI(this, t, m); - return mp; - } - -bool MidiPlugin::instantiate(MidiPluginI* mp) - { - if (plugin == 0) { - printf("initMidiPluginInstance: zero plugin\n"); - return 0; - } - ++_instances; - QString inst("-" + QString::number(_instances)); - QString s = name() + inst; - - Mempi* m = plugin->instantiate(s.toLatin1().data(), &mempiHost); - if (m->init()) { - delete m; - return true; - } - mp->setMempi(m); - return false; - } - -//--------------------------------------------------------- -// MidiPluginI -//--------------------------------------------------------- - -MidiPluginI::MidiPluginI(MidiPlugin* p, MidiTrackBase* t, Mempi* m) - { - _track = t; - _plugin = p; - mempi = m; - _on = true; - } - -//--------------------------------------------------------- -// MidiPluginI -//--------------------------------------------------------- - -MidiPluginI::MidiPluginI(MidiTrackBase* t) - { - _track = t; - _plugin = 0; - mempi = 0; - _on = true; - } - -//--------------------------------------------------------- -// MidiPluginI -//--------------------------------------------------------- - -MidiPluginI::~MidiPluginI() - { - if (mempi) - delete mempi; - } - -//--------------------------------------------------------- -// loadMidiPlugin -//--------------------------------------------------------- - -static void loadMidiPlugin(QFileInfo* fi) - { - if (debugMsg) - printf(" load midi plugin <%s>\n", fi->filePath().toAscii().data()); - void* handle = dlopen(fi->filePath().toLocal8Bit().data(), RTLD_NOW); - if (handle == 0) { - fprintf(stderr, "loadMidiPlugin::dlopen(%s) failed: %s\n", - fi->filePath().toLatin1().data(), dlerror()); - return; - } - MEMPI_Function mempi = (MEMPI_Function)dlsym(handle, "mempi_descriptor"); - - if (!mempi) { - const char *txt = dlerror(); - if (txt) { - fprintf(stderr, - "Unable to find mempi_descriptor() function in plugin " - "library file \"%s\": %s.\n" - "Are you sure this is a MEMPI plugin file?\n", - fi->filePath().toLatin1().data(), - txt); - return; - } - } - const MEMPI* descr = mempi(); - - if (descr == 0) { - fprintf(stderr, "Mempi::instantiate: no MEMPI descr found\n"); - return; - } - if (descr->majorMempiVersion != MEMPI_MAJOR_VERSION) { - fprintf(stderr, "Mempi::instantiate: bad MEMPI version %d, expected %d\n", - descr->majorMempiVersion, MEMPI_MAJOR_VERSION); - return; - } - midiPlugins.push_back(new MidiPlugin(fi, mempi, descr)); - } - -//--------------------------------------------------------- -// loadMidiPluginDir -//--------------------------------------------------------- - -static void loadMidiPluginDir(const QString& s) - { - if (debugMsg) - printf("scan midi plugin dir <%s>\n", s.toLatin1().data()); -#ifdef __APPLE__ - QDir pluginDir(s, QString("*.dylib"), 0, QDir::Files); -#else - QDir pluginDir(s, QString("*.so"), 0, QDir::Files); -#endif - if (pluginDir.exists()) { - QFileInfoList list = pluginDir.entryInfoList(); - for (int i = 0; i < list.size(); ++i) { - QFileInfo fi = list.at(i); - loadMidiPlugin(&fi); - } - } - } - -//--------------------------------------------------------- -// initMidiPlugins -// search for midi MEPI plugins -//--------------------------------------------------------- - -void initMidiPlugins() - { - loadMidiPluginDir(museGlobalLib + QString("/midiplugins")); - } - -//--------------------------------------------------------- -// find -//--------------------------------------------------------- - -MidiPlugin* MidiPluginList::find(const QString& /*file*/, const QString& name) - { - for (iMidiPlugin i = begin(); i != end(); ++i) { - if (name == (*i)->name()) - return *i; - } - printf("MidiPlugin <%s> not found\n", name.toLatin1().data()); - return 0; - } - -//--------------------------------------------------------- -// Pipeline -//--------------------------------------------------------- - -MidiPipeline::MidiPipeline() - : QList() - { - } - -//--------------------------------------------------------- -// isOn -//--------------------------------------------------------- - -bool MidiPipeline::isOn(int idx) const - { - MidiPluginI* p = (*this)[idx]; - if (p) - return p->on(); - return false; - } - -//--------------------------------------------------------- -// setOn -//--------------------------------------------------------- - -void MidiPipeline::setOn(int idx, bool flag) - { - MidiPluginI* p = (*this)[idx]; - if (p) { - p->setOn(flag); - } - } - -//--------------------------------------------------------- -// name -//--------------------------------------------------------- - -QString MidiPipeline::name(int idx) const - { - MidiPluginI* p = (*this)[idx]; - if (p) - return p->name(); - return QString("empty"); - } - -#if 0 -//--------------------------------------------------------- -// empty -//--------------------------------------------------------- - -bool MidiPipeline::empty(int idx) const - { - MidiPluginI* p = (*this)[idx]; - return p == 0; - } -#endif - -//--------------------------------------------------------- -// move -//--------------------------------------------------------- - -void MidiPipeline::move(int idx, bool up) - { - MidiPluginI* p1 = (*this)[idx]; - if (up) { - (*this)[idx] = (*this)[idx-1]; - (*this)[idx-1] = p1; - } - else { - (*this)[idx] = (*this)[idx+1]; - (*this)[idx+1] = p1; - } - } - -//--------------------------------------------------------- -// showGui -//--------------------------------------------------------- - -void MidiPipeline::showGui(int idx, bool flag) - { - MidiPluginI* p = (*this)[idx]; - if (p) - p->showGui(flag); - } - -//--------------------------------------------------------- -// guiVisible -//--------------------------------------------------------- - -bool MidiPipeline::guiVisible(int idx) const - { - MidiPluginI* p = (*this)[idx]; - if (p) - return p->guiVisible(); - return false; - } - -//--------------------------------------------------------- -// hasGui -//--------------------------------------------------------- - -bool MidiPipeline::hasGui(int idx) const - { - MidiPluginI* p = (*this)[idx]; - if (p) - return p->hasGui(); - return false; - } - -//--------------------------------------------------------- -// apply -//--------------------------------------------------------- - -void MidiPipeline::apply(unsigned from, unsigned to, MidiEventList* il, MidiEventList* ool) - { - MidiEventList oList; - MidiEventList* ol = &oList; - - bool swap = true; - for (iMidiPluginI i = begin(); i != end(); ++i) { - MidiPluginI* p = *i; - if (p == 0 || !p->on()) - continue; - if (swap) { - ol->clear(); - p->apply(from, to, il, ol); - } - else { - il->clear(); - p->apply(from, to, ol, il); - } - swap = !swap; - } - MidiEventList* l = swap ? il : ol; - for (iMidiEvent i = l->begin(); i != l->end(); ++i) - ool->insert(*i); - } - -//--------------------------------------------------------- -// apply -//--------------------------------------------------------- - -void MidiPluginI::apply(unsigned from, unsigned to, MidiEventList* il, MidiEventList* ol) - { - mempi->process(from, to, il, ol); - } - -//--------------------------------------------------------- -// saveConfiguration -//--------------------------------------------------------- - -void MidiPluginI::writeConfiguration(Xml& xml) - { - xml.stag(QString("midiPlugin file=\"%1\" name=\"%2\"") - .arg(_plugin->lib()).arg(_plugin->name())); - if (_on == false) - xml.tag("on", _on); - if (mempi->hasGui()) { - xml.tag("guiVisible", mempi->guiVisible()); - int x, y, w, h; - w = 0; - h = 0; - mempi->getGeometry(&x, &y, &w, &h); - if (h || w) - xml.tag("geometry", QRect(x, y, w, h)); - } - - //--------------------------------------------- - // dump current state of plugin - //--------------------------------------------- - - int len = 0; - const unsigned char* p; - mempi->getInitData(&len, &p); - if (len) { - xml.stag(QString("init len=\"%1\"").arg(len)); - xml.dump(len, p); - xml.etag("init"); - } - xml.etag("midiPlugin"); - } - -//--------------------------------------------------------- -// readConfiguration -// return true on error -//--------------------------------------------------------- - -bool MidiPluginI::readConfiguration(QDomNode node) - { - QDomElement e = node.toElement(); - QString file = e.attribute("file"); - QString label = e.attribute("name"); - - if (_plugin == 0) { - _plugin = midiPlugins.find(file, label); - if (_plugin == 0) - return true; - if (_plugin->instantiate(this)) - return true; - } - node = node.firstChild(); - while (!node.isNull()) { - e = node.toElement(); - int i = e.text().toInt(); - QString tag(e.tagName()); - if (tag == "on") { - bool flag = i; - _on = flag; - } - else if (tag == "guiVisible") { - showGui(i); - } - else if (tag == "geometry") { - QRect r(AL::readGeometry(node)); - mempi->setGeometry(r.x(), r.y(), r.width(), r.height()); - } - else if (tag == "init") { - int len = e.attribute("len","0").toInt(); - if (len) { - const char* s = e.text().toLatin1().data(); - unsigned char data[len]; - unsigned char* d = data; - int numberBase = 16; - for (int i = 0; i < len; ++i) { - char* endp; - *d++ = strtol(s, &endp, numberBase); - s = endp; - if (s == 0) - break; - } - mempi->setInitData(len, data); - } - } - else - printf("MusE:MidiPluginI: unknown tag %s\n", e.tagName().toLatin1().data()); - node = node.nextSibling(); - } - return false; - } - -//--------------------------------------------------------- -// showGui -//--------------------------------------------------------- - -void MidiPluginI::showGui() - { - mempi->showGui(!mempi->guiVisible()); - } - -void MidiPluginI::showGui(bool flag) - { - mempi->showGui(flag); - } - -//--------------------------------------------------------- -// guiVisible -//--------------------------------------------------------- - -bool MidiPluginI::guiVisible() const - { - return mempi->guiVisible(); - } - -//--------------------------------------------------------- -// MidiPluginDialog -//--------------------------------------------------------- - -MidiPluginDialog::MidiPluginDialog(QWidget* parent) - : QDialog(parent) - { - resize(QSize(550, 300)); - setModal(true); - setWindowTitle(tr("MusE: select midi plugin")); - QVBoxLayout* layout = new QVBoxLayout(this); - - pList = new QTreeWidget(this); - pList->setIndentation(0); - pList->setColumnCount(4); - pList->setSortingEnabled(true); - pList->setSelectionBehavior(QAbstractItemView::SelectRows); - pList->setSelectionMode(QAbstractItemView::SingleSelection); - pList->setAlternatingRowColors(true); - - QStringList headerLabels; - - headerLabels << tr("File") << tr("Name") << tr("Version") << tr("Description"); - pList->header()->resizeSection(0, 100); - pList->header()->resizeSection(1, 120); - pList->header()->resizeSection(2, 70); - pList->header()->setResizeMode(3, QHeaderView::Stretch); - pList->setHeaderLabels(headerLabels); - - fillPlugs(); - - layout->addWidget(pList); - - //--------------------------------------------------- - // Ok/Cancel Buttons - //--------------------------------------------------- - - QBoxLayout* w5 = new QHBoxLayout; - layout->addLayout(w5); - - QPushButton* okB = new QPushButton(tr("Ok")); - QPushButton* cancelB = new QPushButton(tr("Cancel")); - okB->setFixedWidth(80); - cancelB->setFixedWidth(80); - okB->setDefault(true); - w5->addStretch(100); - w5->addWidget(okB); - w5->addWidget(cancelB); - - connect(pList, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), SLOT(accept())); - connect(cancelB, SIGNAL(clicked()), SLOT(reject())); - connect(okB, SIGNAL(clicked()), SLOT(accept())); - } - -//--------------------------------------------------------- -// getPlugin -//--------------------------------------------------------- - -MidiPlugin* MidiPluginDialog::getPlugin(QWidget* parent) - { - MidiPluginDialog* dialog = new MidiPluginDialog(parent); - if (dialog->exec()) - return dialog->value(); - return 0; - } - -//--------------------------------------------------------- -// value -//--------------------------------------------------------- - -MidiPlugin* MidiPluginDialog::value() - { - QTreeWidgetItem* item = pList->selectedItems().at(0); - if (item) - return midiPlugins.find(item->text(0), item->text(1)); - return 0; - } - -//--------------------------------------------------------- -// fillPlugs -//--------------------------------------------------------- - -void MidiPluginDialog::fillPlugs() - { - pList->clear(); - for (iMidiPlugin i = midiPlugins.begin(); i != midiPlugins.end(); ++i) { - if ((*i)->type() != MEMPI_FILTER) - continue; - QTreeWidgetItem* item = new QTreeWidgetItem; - item->setText(0, (*i)->lib()); - item->setText(1, (*i)->name()); - item->setText(2, (*i)->version()); - item->setText(3, (*i)->description()); - pList->addTopLevelItem(item); - } - } diff --git a/muse/muse/midiplugin.h b/muse/muse/midiplugin.h deleted file mode 100644 index 87e91953..00000000 --- a/muse/muse/midiplugin.h +++ /dev/null @@ -1,168 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __MIDIPLUGIN_H__ -#define __MIDIPLUGIN_H__ - -#include "globals.h" -#include "midiplugins/libmidiplugin/mempi.h" - -namespace AL { - class Xml; - }; -using AL::Xml; - -class MidiPluginIF; -class MidiPluginGui; -class MidiPluginI; -class MidiTrackBase; -class Ctrl; -class MidiEventList; -class MidiTrackBase; - -typedef const MEMPI* (*MEMPI_Function)(); - -//--------------------------------------------------------- -// MidiPlugin -//--------------------------------------------------------- - -class MidiPlugin { - MEMPI_Function mempi; - const MEMPI* plugin; - - protected: - int _instances; - QFileInfo fi; - - public: - MidiPlugin(const QFileInfo* f, const MEMPI_Function, const MEMPI* d); - virtual ~MidiPlugin() {} - - int instances() const { return _instances; } - virtual void incInstances(int val) { _instances += val; } - - QString lib() const { return fi.baseName(); } - QString path() const { return fi.absolutePath(); } - QString name() const { return QString(plugin->name); } - QString description() const { return QString(plugin->description); } - QString version() const { return QString(plugin->version); } - MempiType type() const { return plugin->type; } - MidiPluginI* instantiate(MidiTrackBase*); - bool instantiate(MidiPluginI*); - }; - -//--------------------------------------------------------- -// MidiPluginList -//--------------------------------------------------------- - -typedef QList::iterator iMidiPlugin; - -class MidiPluginList : public QList { - public: - MidiPlugin* find(const QString&, const QString&); - MidiPluginList() {} - }; - -//--------------------------------------------------------- -// MidiPluginI -// plugin instance -//--------------------------------------------------------- - -class MidiPluginI { - MidiPlugin* _plugin; - Mempi* mempi; - - MidiTrackBase* _track; - bool _on; - - public: - MidiPluginI(MidiPlugin*, MidiTrackBase*, Mempi*); - MidiPluginI(MidiTrackBase*); - ~MidiPluginI(); - - void setMempi(Mempi* m) { mempi = m; } - - MidiPlugin* plugin() const { return _plugin; } - bool on() const { return _on; } - void setOn(bool val) { _on = val; } - void apply(unsigned, unsigned, MidiEventList*, MidiEventList*); - - QString name() const { return QString(mempi->name()); } - QString lib() const { return _plugin->lib(); } - MidiTrackBase* track() const { return _track; } - void getGeometry(int*x, int*y, int* w, int* h) const { mempi->getGeometry(x, y, w, h); } - void setGeometry(int x, int y, int w, int h) { mempi->setGeometry(x, y, w, h); } - void writeConfiguration(Xml& xml); - bool readConfiguration(QDomNode); - - void showGui(); - void showGui(bool); - bool hasGui() const { return mempi->hasGui(); } - bool guiVisible() const; - void getInitData(int* len, const unsigned char** p) { mempi->getInitData(len, p); } - void setInitData(int len, const unsigned char* p) { mempi->setInitData(len, p); } - }; - -//--------------------------------------------------------- -// Pipeline -// chain of connected efx inserts -//--------------------------------------------------------- - -class MidiPipeline : public QList { - public: - MidiPipeline(); - bool isOn(int idx) const; - void setOn(int, bool); - QString name(int idx) const; - void showGui(int, bool); - bool guiVisible(int) const; - bool hasGui(int) const; - void apply(unsigned, unsigned, MidiEventList*, MidiEventList*); - void move(int idx, bool up); - }; - -typedef MidiPipeline::iterator iMidiPluginI; -typedef MidiPipeline::const_iterator ciMidiPluginI; - -//--------------------------------------------------------- -// MidiPluginDialog -//--------------------------------------------------------- - -class MidiPluginDialog : public QDialog { - QTreeWidget* pList; - - Q_OBJECT - - public: - MidiPluginDialog(QWidget* parent=0); - static MidiPlugin* getPlugin(QWidget* parent); - MidiPlugin* value(); - - public slots: - void fillPlugs(); - }; - -static const int MidiPipelineDepth = 4; - -extern void initMidiPlugins(); -extern MidiPluginList midiPlugins; - -#endif - diff --git a/muse/muse/midiportinfo.ui b/muse/muse/midiportinfo.ui deleted file mode 100644 index ad8ae201..00000000 --- a/muse/muse/midiportinfo.ui +++ /dev/null @@ -1,92 +0,0 @@ - - MidiPortInfoBase - - - - 0 - 0 - 142 - 96 - - - - - 0 - 0 - - - - Form - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - - 16777215 - 24 - - - - Midi Instrument - - - - - - - - 16777215 - 24 - - - - 127 - - - 127 - - - - - - - - 16777215 - 24 - - - - Device-Id: - - - - - - - - diff --git a/muse/muse/midirack.cpp b/muse/muse/midirack.cpp deleted file mode 100644 index 0b054729..00000000 --- a/muse/muse/midirack.cpp +++ /dev/null @@ -1,208 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "icons.h" -#include "gconfig.h" -#include "midirack.h" -#include "track.h" -#include "song.h" -#include "midiplugin.h" -#include "audio.h" -#include "muse.h" -#include "gui.h" - -//--------------------------------------------------------- -// MidiRack -//--------------------------------------------------------- - -MidiRack::MidiRack(QWidget* parent, MidiTrackBase* t) - : QListWidget(parent) - { - setUniformItemSizes(true); - setAlternatingRowColors(true); - setAttribute(Qt::WA_DeleteOnClose, true); - verticalScrollBar()->setStyle(smallStyle); - track = t; -// setFont(config.fonts[1]); - - setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - - setSelectionMode(QAbstractItemView::SingleSelection); - songChanged(SC_RACK); // force update - connect(this, SIGNAL(itemDoubleClicked(QListWidgetItem*)), - this, SLOT(doubleClicked(QListWidgetItem*))); - connect(song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); - setToolTip(tr("midi effect rack")); - } - -//--------------------------------------------------------- -// sizeHint -//--------------------------------------------------------- - -QSize MidiRack::sizeHint() const - { - QFontMetrics fm(font()); - int h = fm.lineSpacing() * MidiPipelineDepth + 1; - return QSize(STRIP_WIDTH, h); - } - -//--------------------------------------------------------- -// songChanged -//--------------------------------------------------------- - -void MidiRack::songChanged(int typ) - { - if (typ & (SC_ROUTE | SC_RACK)) { - clear(); - foreach(MidiPluginI* plugin, *(track->pipeline())) { - QListWidgetItem* item = new QListWidgetItem; - item->setText(plugin->name()); - // tooltip should only be set if name does not fit - // (is elided) - item->setToolTip(plugin->name()); - item->setBackgroundColor(plugin->on() ? Qt::white : Qt::gray); - addItem(item); - } - } - } - -//--------------------------------------------------------- -// contextMenuEvent -//--------------------------------------------------------- - -void MidiRack::contextMenuEvent(QContextMenuEvent* ev) - { - QPoint pt(ev->pos()); - QListWidgetItem* item = itemAt(pt); - MidiPipeline* pipe = track->pipeline(); - - QMenu* menu = new QMenu; - QAction* upAction = menu->addAction(QIcon(*upIcon), tr("move up")); - QAction* downAction = menu->addAction(QIcon(*downIcon), tr("move down")); - QAction* removeAction = menu->addAction(tr("remove")); - QAction* bypassAction = menu->addAction(tr("bypass")); - QAction* showAction = menu->addAction(tr("show gui")); - QAction* newAction = menu->addAction(tr("new")); - bypassAction->setCheckable(true); - showAction->setCheckable(true); - - int idx = -1; - if (item == 0) { - upAction->setEnabled(false); - downAction->setEnabled(false); - removeAction->setEnabled(false); - bypassAction->setEnabled(false); - showAction->setEnabled(false); - } - else { - idx = row(item); - upAction->setEnabled(idx != 0); - downAction->setEnabled(idx < (pipe->size() - 1)); - showAction->setEnabled(pipe->hasGui(idx)); - bypassAction->setEnabled(true); - bypassAction->setChecked(!pipe->isOn(idx)); - showAction->setChecked(pipe->guiVisible(idx)); - } - - QAction* sel = menu->exec(mapToGlobal(pt), newAction); - delete menu; - if (sel == 0) - return; - - if (sel == newAction) { - selectNew(); - return; - } - if (sel == removeAction) { - audio->msgAddMidiPlugin(track, idx, 0); - } - else if (sel == bypassAction) { - bool flag = !pipe->isOn(idx); - pipe->setOn(idx, flag); - } - else if (sel == showAction) { - bool flag = !pipe->guiVisible(idx); - pipe->showGui(idx, flag); - } - else if (sel == upAction) { - if (idx > 0) { - setCurrentRow(idx-1); - pipe->move(idx, true); - } - } - else if (sel == downAction) { - if (idx < (pipe->size() - 1)) { - setCurrentRow(idx+1); - pipe->move(idx, false); - } - } - song->update(SC_RACK); - } - -//--------------------------------------------------------- -// doubleClicked -// toggle gui -//--------------------------------------------------------- - -void MidiRack::doubleClicked(QListWidgetItem* it) - { - if (track == 0) - return; - int idx = row(it); - MidiPipeline* pipe = track->pipeline(); - bool flag = !pipe->guiVisible(idx); - pipe->showGui(idx, flag); - song->update(SC_RACK); - } - -//--------------------------------------------------------- -// mouseDoubleClickEvent -//--------------------------------------------------------- - -void MidiRack::mouseDoubleClickEvent(QMouseEvent* event) - { - QListWidgetItem* it = itemAt(event->pos()); - if (it || (track == 0)) { - QListWidget::mouseDoubleClickEvent(event); - return; - } - selectNew(); - } - -//--------------------------------------------------------- -// selectNew -//--------------------------------------------------------- - -void MidiRack::selectNew() - { - MidiPlugin* plugin = MidiPluginDialog::getPlugin(this); - if (plugin) { - MidiPluginI* plugi = plugin->instantiate(track); - if (plugi == 0) { - printf("cannot instantiate plugin <%s>\n", - plugin->name().toLatin1().data()); - delete plugi; - } - else - audio->msgAddMidiPlugin(track, track->pipeline()->size(), plugi); - song->update(SC_RACK); - } - } - diff --git a/muse/muse/midirack.h b/muse/muse/midirack.h deleted file mode 100644 index 7f83ca42..00000000 --- a/muse/muse/midirack.h +++ /dev/null @@ -1,48 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __MIDIRACK_H__ -#define __MIDIRACK_H__ - -class MidiTrackBase; - -//--------------------------------------------------------- -// MidiRack -//--------------------------------------------------------- - -class MidiRack : public QListWidget { - MidiTrackBase* track; - Q_OBJECT - - virtual void contextMenuEvent(QContextMenuEvent*); - virtual void mouseDoubleClickEvent(QMouseEvent*); - void selectNew(); - - private slots: - void doubleClicked(QListWidgetItem*); - void songChanged(int); - - public: - MidiRack(QWidget*, MidiTrackBase* t); - QSize sizeHint() const; - }; - -#endif - diff --git a/muse/muse/midirc.cpp b/muse/muse/midirc.cpp deleted file mode 100644 index 14b69d55..00000000 --- a/muse/muse/midirc.cpp +++ /dev/null @@ -1,180 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "midirc.h" -#include "song.h" -#include "midi.h" - -MidiRCList midiRCList; - -//--------------------------------------------------------- -// isActive -//--------------------------------------------------------- - -bool MidiRCList::isActive(int action) - { - for (iMidiRC i = begin(); i != end(); ++i) { - if (i->action == action) - return true; - } - return false; - } - -//--------------------------------------------------------- -// setAction -//--------------------------------------------------------- - -void MidiRCList::setAction(const MidiEvent& e, int action) - { - // - // TODO: check for already used events - // - for (iMidiRC i = begin(); i != end(); ++i) { - if (i->action == action) { -// printf("replace action %d: ", action); -// i->event.dump(); - i->event = e; - return; - } - } - push_back(MidiRC(e, action)); -// printf("add action %d: ", action); - e.dump(); - } - -//--------------------------------------------------------- -// emitAction -//--------------------------------------------------------- - -void MidiRCList::emitAction(int action) const - { -// printf("emit action %d\n", action); - switch(action) { - case RC_STOP: - song->setStop(true); - break; - case RC_PLAY: - song->setPlay(true); - break; - case RC_RECORD: - song->setRecord(true); - break; - case RC_GOTO_LEFT_MARK: - song->setPos(0, song->lpos(), true, true, true); - break; - } - } - -//--------------------------------------------------------- -// doAction -// emit action associated with event e -// return true if action found -//--------------------------------------------------------- - -bool MidiRCList::doAction(const MidiEvent& e) - { -// printf("MidiRCList::doAction "); -// e.dump(); - for (iMidiRC i = begin(); i != end(); ++i) { - if ((i->event.type()& 0xf0) == (e.type() & 0xf0)) { - // - // for note on events only compare pitch, not velocity - // ignore note off events (note on with velicity zero - // - if ((e.type() == ME_NOTEON) - && i->event.dataA() == e.dataA() - && e.dataB() != 0) { - emitAction(i->action); - return true; - } - // - // compare controller and controller value - // TODO: maybe we need a special option to - // ignore the controller value - // - if ((e.type() == ME_CONTROLLER) - && i->event.dataA() == e.dataA() - && i->event.dataB() == e.dataB()) { - emitAction(i->action); - return true; - } - } - } - return false; - } - -//--------------------------------------------------------- -// read -//--------------------------------------------------------- - -void MidiRCList::read(QDomNode node) - { - int action = 0; - MidiEvent event; - for (node = node.firstChild(); !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - if (e.isNull()) - continue; - if (e.tagName() == "action") { - action = e.attribute("id", "0").toInt(); - for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) { - QDomElement e1 = node.toElement(); - if (e1.isNull()) - continue; - if (e1.tagName() == "noteOn") { - event.setType(ME_NOTEON); - event.setA(e1.attribute("pitch","0").toInt()); - } - else if (e1.tagName() == "controller") { - event.setType(ME_CONTROLLER); - event.setA(e1.attribute("no","0").toInt()); - event.setB(e1.attribute("val","0").toInt()); - } - else - printf("MusE:midiRC:action: unknown tag %s\n", e1.tagName().toLatin1().data()); - } - setAction(event, action); - } - else - printf("MusE:midiRC: unknown tag %s\n", e.tagName().toLatin1().data()); - } - } - -//--------------------------------------------------------- -// write -//--------------------------------------------------------- - -void MidiRCList::write(Xml& xml) - { - xml.stag("midiRC"); - for (iMidiRC i = begin(); i != end(); ++i) { - xml.stag(QString("action id=\"%1\"").arg(i->action)); - if (i->event.type() == ME_NOTEON) - xml.stag(QString("noteOn pitch=\"%1\"").arg(i->event.dataA())); - else if (i->event.type() == ME_CONTROLLER) - xml.stag(QString("controller no=\"%1\" val=\"%2\"") - .arg(i->event.dataA()).arg(i->event.dataB())); - else - printf("remote event type %d not supported\n", i->event.type()); - xml.etag("action"); - } - xml.etag("midiRC"); - } - diff --git a/muse/muse/midirc.h b/muse/muse/midirc.h deleted file mode 100644 index 670fca63..00000000 --- a/muse/muse/midirc.h +++ /dev/null @@ -1,65 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __MIDIRC_H__ -#define __MIDIRC_H__ - -#include "event.h" -#include "midievent.h" - -enum { - RC_STOP, RC_PLAY, RC_RECORD, RC_GOTO_LEFT_MARK - }; - -//--------------------------------------------------------- -// MidiRC -//--------------------------------------------------------- - -struct MidiRC { - MidiEvent event; - int action; - - MidiRC(const MidiEvent& e, int a) - : event(e), action(a) - { - } - }; - -//--------------------------------------------------------- -// MidiRCList -//--------------------------------------------------------- - -class MidiRCList : public std::list { - - void emitAction(int) const; - - public: - MidiRCList() {} - void setAction(const MidiEvent& e, int action); - bool isActive(int action); - bool doAction(const MidiEvent&); - void read(QDomNode); - void write(Xml&); - }; - -typedef MidiRCList::iterator iMidiRC; - -extern MidiRCList midiRCList; -#endif diff --git a/muse/muse/midisynti.cpp b/muse/muse/midisynti.cpp deleted file mode 100644 index b53693af..00000000 --- a/muse/muse/midisynti.cpp +++ /dev/null @@ -1,225 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "song.h" -#include "midi.h" -#include "midisynti.h" -#include "midiplugin.h" -#include "midiplugins/libmidiplugin/mempi.h" -#include "al/tempo.h" - -//--------------------------------------------------------- -// MidiSynti -//--------------------------------------------------------- - -MidiSynti::MidiSynti() - : MidiTrackBase() - { - _synti = 0; - init(); - } - -MidiSynti::~MidiSynti() - { - } - -//--------------------------------------------------------- -// init -//--------------------------------------------------------- - -void MidiSynti::init() - { - } - -//--------------------------------------------------------- -// hasGui -//--------------------------------------------------------- - -bool MidiSynti::hasGui() const - { - return _synti->hasGui(); - } - -//--------------------------------------------------------- -// hasGui -//--------------------------------------------------------- - -void MidiSynti::showGui(bool val) - { - return _synti->showGui(val); - } - -//--------------------------------------------------------- -// guiVisible -//--------------------------------------------------------- - -bool MidiSynti::guiVisible() const - { - return _synti->guiVisible(); - } - -//--------------------------------------------------------- -// initInstance -// return true on error -//--------------------------------------------------------- - -bool MidiSynti::initInstance(MidiPlugin* plugin) - { - _synti = plugin->instantiate(this); - return _synti == 0; - } - -//--------------------------------------------------------- -// MidiSynti::write -//--------------------------------------------------------- - -void MidiSynti::write(Xml& xml) const - { - xml.stag("MidiSynti"); - MidiTrackBase::writeProperties(xml); - xml.tag("class", _synti->plugin()->name()); - if (_synti->hasGui()) { - xml.tag("guiVisible", _synti->guiVisible()); - int x, y, w, h; - w = 0; - h = 0; - _synti->getGeometry(&x, &y, &w, &h); - if (h || w) - xml.tag("geometry", QRect(x, y, w, h)); - } - //--------------------------------------------- - // dump current state of plugin - //--------------------------------------------- - - int len = 0; - const unsigned char* p; - _synti->getInitData(&len, &p); - if (len) { - xml.stag(QString("init len=\"%1\"").arg(len)); - xml.dump(len, p); - xml.etag("init"); - } - xml.etag("MidiSynti"); - } - -//--------------------------------------------------------- -// MidiSynti::read -//--------------------------------------------------------- - -void MidiSynti::read(QDomNode node) - { - bool startGui = false; - QRect r; - QString sclass; - unsigned char* data = 0; - int len = 0; - for (; !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - QString tag(e.tagName()); - if (tag == "class") - sclass = e.text(); - else if (tag == "guiVisible") - startGui = e.text().toInt(); - else if (tag == "geometry") - r = AL::readGeometry(node); - else if (tag == "init") { - len = e.attribute("len", "0").toInt(); - if (len) { - QStringList l = e.text().simplified().split(" ", QString::SkipEmptyParts); - if (len != l.size()) { - printf("error converting init string <%s>\n", e.text().toLatin1().data()); - } - data = new unsigned char[len]; - unsigned char* d = data; - int numberBase = 16; - for (int i = 0; i < l.size(); ++i) { - bool ok; - *d++ = l.at(i).toInt(&ok, numberBase); - if (!ok) - printf("error converting init val <%s>\n", l.at(i).toLatin1().data()); - } - } - } - else if (MidiTrackBase::readProperties(node)) - printf("MusE:MidiSynti: unknown tag %s\n", node.toElement().tagName().toLatin1().data()); - } - iMidiPlugin i; - for (i = midiPlugins.begin(); i != midiPlugins.end(); ++i) { - if ((*i)->type() != MEMPI_GENERATOR) - continue; - if ((*i)->name() == sclass) - break; - } - if (i == midiPlugins.end()) { - fprintf(stderr, "MidiSynti::read: midi plugin not found\n"); - return; - } - MidiPlugin* mp = *i; - if (initInstance(mp)) { - fprintf(stderr, "MidiSynti::read: instantiate failed\n"); - return; - } - if (data) { - _synti->setInitData(len, data); - delete[] data; - } - song->insertTrack0(this, -1); - _synti->showGui(startGui); - _synti->setGeometry(r.x(), r.y(), r.width(), r.height()); - } - -//--------------------------------------------------------- -// getEvents -//--------------------------------------------------------- - -void MidiSynti::getEvents(unsigned from, unsigned to, int, MidiEventList* dst) - { - MidiEventList il; - foreach(const Route& r, *inRoutes()) { - MidiTrackBase* track = (MidiTrackBase*)r.src.track; - if (track->isMute()) - continue; - track->getEvents(from, to, r.src.channel, &il); - } - MidiEventList ol; - _synti->apply(from, to, &il, &ol); - for (iMidiEvent i = ol.begin(); i != ol.end(); ++i) { - MidiEvent ev(*i); - if (ev.type() == ME_NOTEON) { - _meter[0] += ev.dataB()/2; - if (_meter[0] > 127.0f) - _meter[0] = 127.0f; - } - // convert tick-time to sample-time - ev.setTime(AL::tempomap.tick2frame(ev.time())); - dst->insert(ev); - } - } - -bool MidiSynti::isMute() const - { - if (_solo) - return false; - if (song->solo()) - return true; - return _mute; - } - - diff --git a/muse/muse/midisynti.h b/muse/muse/midisynti.h deleted file mode 100644 index 89c77764..00000000 --- a/muse/muse/midisynti.h +++ /dev/null @@ -1,62 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __MIDISYNTH_H__ -#define __MIDISYNTH_H__ - -#include "miditrackbase.h" - -//--------------------------------------------------------- -// MidiSynti -//--------------------------------------------------------- - -class MidiSynti : public MidiTrackBase { - Q_OBJECT - - MidiPluginI* _synti; - - public: - MidiSynti(); - virtual ~MidiSynti(); - virtual TrackType type() const { return MIDI_SYNTI; } - - void init(); - - virtual void read(QDomNode); - virtual void write(Xml&) const; - virtual bool isMute() const; - - virtual Part* newPart(Part*, bool) { return 0; } - - bool initInstance(MidiPlugin*); - virtual void getEvents(unsigned from, unsigned to, int channel, MidiEventList* dst); - - bool hasGui() const; - bool guiVisible() const; - void showGui(bool); - }; - - -typedef QList MidiSyntiList; -typedef MidiSyntiList::iterator iMidiSynti; -typedef MidiSyntiList::const_iterator ciMidiSynti; - -#endif - diff --git a/muse/muse/miditrack.cpp b/muse/muse/miditrack.cpp deleted file mode 100644 index 276eeccb..00000000 --- a/muse/muse/miditrack.cpp +++ /dev/null @@ -1,716 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "miditrack.h" -#include "event.h" -#include "song.h" -#include "midi.h" -#include "midictrl.h" -#include "audio.h" -#include "part.h" -#include "al/tempo.h" -#include "midiedit/drummap.h" - -//--------------------------------------------------------- -// MidiTrack -//--------------------------------------------------------- - -MidiTrack::MidiTrack() - : MidiTrackBase() - { - _transposition = 0; - _velocity = 0; - _delay = 0; - _len = 100; // percent - _compression = 100; // percent - - initMidiController(); - recordPart = 0; - _drumMap = 0; - _useDrumMap = false; - - // - // create minimal set of managed controllers - // to make midi mixer operational - // - MidiInstrument* mi = genericMidiInstrument; - addMidiController(mi, CTRL_PROGRAM); - addMidiController(mi, CTRL_VOLUME); - addMidiController(mi, CTRL_PANPOT); - addMidiController(mi, CTRL_REVERB_SEND); - addMidiController(mi, CTRL_CHORUS_SEND); - addMidiController(mi, CTRL_VARIATION_SEND); - } - -MidiTrack::~MidiTrack() - { - } - -//--------------------------------------------------------- -// newPart -//--------------------------------------------------------- - -Part* MidiTrack::newPart(Part* p, bool clone) - { - Part* part = new Part(this); - if (p) { - if (clone) - part->clone(p->events()); - else - part->ref(); - part->setName(p->name()); - part->setColorIndex(p->colorIndex()); - - *(AL::PosLen*)part = *(AL::PosLen*)p; - part->setMute(p->mute()); - } - else - part->ref(); - return part; - } - -//--------------------------------------------------------- -// MidiTrack::write -//--------------------------------------------------------- - -void MidiTrack::write(Xml& xml) const - { - xml.stag("miditrack"); - MidiTrackBase::writeProperties(xml); - - xml.tag("transposition", _transposition); - xml.tag("velocity", _velocity); - xml.tag("delay", _delay); - xml.tag("len", _len); - xml.tag("compression", _compression); - xml.tag("useDrumMap", _useDrumMap); - - const PartList* pl = parts(); - for (ciPart p = pl->begin(); p != pl->end(); ++p) - p->second->write(xml); - xml.etag("miditrack"); - } - -//--------------------------------------------------------- -// MidiTrack::read -//--------------------------------------------------------- - -void MidiTrack::read(QDomNode node) - { - for (; !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - QString tag(e.tagName()); - QString s(e.text()); - int i = s.toInt(); - if (tag == "transposition") - _transposition = i; - else if (tag == "velocity") - _velocity = i; - else if (tag == "delay") - _delay = i; - else if (tag == "len") - _len = i; - else if (tag == "compression") - _compression = i; - else if (tag == "part") { - Part* p = newPart(); - p->read(node, true); - parts()->add(p); - } - else if (tag == "locked") - _locked = i; - else if (tag == "useDrumMap") - _useDrumMap = e.text().toInt(); - else if (MidiTrackBase::readProperties(node)) - printf("MusE:MidiTrack: unknown tag %s\n", e.tagName().toLatin1().data()); - } - } - -//--------------------------------------------------------- -// playMidiEvent -//--------------------------------------------------------- - -void MidiTrack::playMidiEvent(MidiEvent* ev) - { - foreach (const Route& r, _outRoutes) { - Track* track = r.dst.track; - ev->setChannel(r.dst.channel); - if (track->type() == MIDI_OUT) - ((MidiOutPort*)track)->playMidiEvent(ev); - else if (track->type() == AUDIO_SOFTSYNTH) - ((SynthI*)track)->playMidiEvent(ev); - } - } - -//--------------------------------------------------------- -// startRecording -// gui context -//--------------------------------------------------------- - -void MidiTrack::startRecording() - { - hbank = 0; - lbank = 0; - datah = 0; - datal = 0; - rpnh = 0; - rpnl = 0; - dataType = 0; - recordedEvents = 0; - partCreated = false; - recordPart = 0; - recordFifo.clear(); - keyDown.clear(); - - AL::Pos start = song->punchin() ? song->lPos() : song->cPos(); - - for (iPart ip = parts()->begin(); ip != parts()->end(); ++ip) { - Part* part = ip->second; - unsigned partStart = part->tick(); - unsigned partEnd = partStart + part->lenTick(); - if (start.tick() >= partStart && start.tick() < partEnd) { - recordPart = part; - } - } - if (recordPart == 0) { - // - // create new part for recording - // - recordPart = new Part(this); - recordPart->ref(); - recordPart->setTrack(this); - int startTick = song->roundDownBar(start.tick()); - int endTick = song->roundUpBar(start.tick()); - recordPart->setTick(startTick); - recordPart->setLenTick(endTick - startTick); - recordPart->setName(name()); - song->addPart(recordPart); - partCreated = true; - } - } - -//--------------------------------------------------------- -// recordBeat -// gui context -// update current recording -//--------------------------------------------------------- - -void MidiTrack::recordBeat() - { - int updateFlags = 0; - unsigned cpos = song->cpos(); - unsigned ptick = recordPart->tick(); - - if (song->punchout()) { - if (song->rPos() >= song->cPos()) { - while (!recordFifo.isEmpty()) - recordFifo.get(); - return; - } - } - QList el; - while (!recordFifo.isEmpty()) { - MidiEvent me(recordFifo.get()); - - unsigned time = me.time(); - if (song->punchin() && time < song->lpos()) - continue; - bool isOff = me.isNoteOff(); - - if (song->punchout() && (time >= song->rpos()) && !isOff) - continue; - - if (!partCreated && song->recMode() == Song::REC_REPLACE) { - // TODO: remove old events - } - - time -= ptick; - if (isOff) { - // - // process note off - // - for (std::list::iterator i = keyDown.begin(); i != keyDown.end(); ++i) { - if (i->pitch() == me.dataA()) { - unsigned tl = time - i->tick(); - if (tl != i->lenTick()) { - i->setLenTick(tl); - updateFlags |= SC_EVENT_MODIFIED; - } - keyDown.erase(i); - break; - } - } - } - else if (me.type() == ME_NOTEON && me.dataB() != 0) { - // - // create Note event on "note on" - // - Event event(Note); - event.setTick(time); - event.setLenTick(1); - event.setPitch(me.dataA()); - event.setVelo(me.dataB()); - keyDown.push_front(event); - el.append(event); - } - else if (me.type() == ME_POLYAFTER) { - Event event(PAfter); - event.setTick(time); - event.setA(me.dataA()); - event.setB(me.dataB()); - } - else if (me.type() == ME_CONTROLLER) { - Event event(Controller); - event.setTick(time + ptick); - switch(me.dataA()) { - case CTRL_HBANK: - hbank = me.dataB(); - break; - - case CTRL_LBANK: - lbank = me.dataB(); - break; - - case CTRL_HDATA: - datah = me.dataB(); - event.setA(dataType | (rpnh << 8) | rpnl); - event.setB(datah); - el.append(event); - break; - - case CTRL_LDATA: - datal = me.dataB(); - if (dataType == CTRL_NRPN_OFFSET) - dataType = CTRL_NRPN14_OFFSET; - else if (dataType == CTRL_RPN_OFFSET) - dataType = CTRL_RPN14_OFFSET; - break; - - case CTRL_HNRPN: - rpnh = me.dataB(); - dataType = CTRL_NRPN_OFFSET; - break; - - case CTRL_LNRPN: - rpnl = me.dataB(); - dataType = CTRL_NRPN_OFFSET; - break; - - case CTRL_HRPN: - rpnh = me.dataB(); - dataType = CTRL_RPN_OFFSET; - break; - - case CTRL_LRPN: - rpnl = me.dataB(); - dataType = CTRL_RPN_OFFSET; - break; - - default: - event.setA(me.dataA()); - event.setB(me.dataB()); - el.append(event); - break; - } - } - else if (me.type() == ME_PROGRAM) { - Event event(Controller); - event.setTick(time + ptick); - event.setA(CTRL_PROGRAM); - event.setB((hbank << 16) | (lbank << 8) | me.dataA()); - el.append(event); - } - else if (me.type() == ME_PITCHBEND) { - Event event(Controller); - event.setTick(time + ptick); - event.setA(CTRL_PITCH); - event.setB(me.dataA()); - el.append(event); - } - else if (me.type() == ME_SYSEX) { - Event event(Sysex); - event.setTick(time + ptick); - event.setData(me.data(), me.len()); - el.append(event); - } - else if (me.type() == ME_AFTERTOUCH) { - Event event(CAfter); - event.setTick(time + ptick); - event.setA(me.dataA()); - el.append(event); - } - } - if (!el.isEmpty()) { - for (int i = 0; i < el.size(); ++i) - el[i].setRecorded(true); - audio->msgAddEvents(&el, recordPart); - recordedEvents += el.size(); - updateFlags |= SC_EVENT_INSERTED; - } - - if (partCreated) { - recordPart->setLenTick(cpos - ptick); - updateFlags |= SC_PART_MODIFIED; - } - // - // modify len of all hold keys - // - for (std::list::iterator i = keyDown.begin(); i != keyDown.end(); ++i) { - if (cpos > (i->tick() + ptick)) - i->setLenTick(cpos - (i->tick() + ptick)); - updateFlags |= SC_EVENT_MODIFIED; - } - song->update(updateFlags); - } - -//--------------------------------------------------------- -// stopRecording -// gui context -//--------------------------------------------------------- - -void MidiTrack::stopRecording() - { - for (iEvent e = recordPart->events()->begin(); e != recordPart->events()->end(); ++e) { - e->second.setRecorded(false); - } - if (recordedEvents == 0 && partCreated) { - // TD: remove empty part? - } - // - // modify len of all hold keys - // - unsigned ptick = recordPart->tick(); - unsigned cpos = song->cpos(); - for (std::list::iterator i = keyDown.begin(); i != keyDown.end(); ++i) { - i->setLenTick(cpos - (i->tick() + ptick)); - } - // - // adjust part len && song len - // - if (recordPart->lenTick() < (cpos-ptick)) { - // - // TODO: check for events outside part boundaries - // - int endTick = song->roundUpBar(cpos); - recordPart->setLenTick(endTick - ptick); - } - - unsigned etick = recordPart->endTick(); - if (song->len() < etick) - song->setLen(etick); - } - -//--------------------------------------------------------- -// clone -//--------------------------------------------------------- - -void MidiTrack::clone(MidiTrack* t) - { - QString name; - for (int i = 1; ; ++i) { - name.sprintf("%s-%d", t->name().toLatin1().data(), i); - TrackList* tl = song->tracks(); - bool found = false; - for (iTrack it = tl->begin(); it != tl->end(); ++it) { - if ((*it)->name() == name) { - found = true; - break; - } - } - if (!found) - break; - } - setName(name); - _transposition = t->_transposition; - _velocity = t->_velocity; - _delay = t->_delay; - _len = t->_len; - _compression = t->_compression; - _recordFlag = t->_recordFlag; - _mute = t->_mute; - _solo = t->_solo; - _off = t->_off; - _monitor = t->_monitor; - _channels = t->_channels; - _locked = t->_locked; - _inRoutes = t->_inRoutes; - _outRoutes = t->_outRoutes; - _controller = t->_controller; - _autoRead = t->_autoRead; - _autoWrite = t->_autoWrite; - } - -//--------------------------------------------------------- -// isMute -//--------------------------------------------------------- - -bool MidiTrack::isMute() const - { - if (_solo) - return false; - if (song->solo()) - return true; - return _mute; - } - -//--------------------------------------------------------- -// processMidi -//--------------------------------------------------------- - -void MidiTrack::processMidi(SeqTime* t) - { - schedEvents.clear(); - // - // collect events only when transport is rolling - // - if (t->curTickPos < t->nextTickPos) { - for (iPart p = parts()->begin(); p != parts()->end(); ++p) { - Part* part = p->second; - if (part->mute()) - continue; - DrumMap* dm = drumMap(); - unsigned offset = _delay + part->tick(); - - if (offset > t->nextTickPos) - break; - - EventList* events = part->events(); - - iEvent ie = events->lower_bound((offset > t->curTickPos) ? 0 : t->curTickPos - offset); - iEvent iend = events->lower_bound(t->nextTickPos - offset); - - for (; ie != iend; ++ie) { - Event ev = ie->second; - if (ev.recorded()) - continue; - if (ev.type() == Meta) // ignore meta events - continue; - unsigned tick = ev.tick() + offset; - unsigned frame = t->tick2frame(tick); - if (ev.type() == Note) { - if (dm) { - if (dm->entry(dm->outmap(ev.pitch()))->mute) - continue; - } - // - // maybe we should skip next lines if using a - // drummap - - int pitch = ev.pitch() + _transposition + song->globalPitchShift(); - if (pitch > 127) - pitch = 127; - if (pitch < 0) - pitch = 0; - int velo = ev.velo(); - velo += _velocity; - velo = (velo * _compression) / 100; - if (velo > 127) - velo = 127; - if (velo < 1) // no off event - velo = 1; - int elen = (ev.lenTick() * _len)/100; - if (elen <= 0) // dont allow zero length - elen = 1; - int veloOff = ev.veloOff(); - - unsigned eframe = t->tick2frame(tick+elen); - schedEvents.insert(MidiEvent(frame, 0, ME_NOTEON, pitch, velo)); - schedEvents.insert(MidiEvent(eframe, 0, veloOff ? ME_NOTEOFF : ME_NOTEON, pitch, veloOff)); - _meter[0] += velo/2; - if (_meter[0] > 127.0f) - _meter[0] = 127.0f; - } - else { - schedEvents.insert(MidiEvent(frame, 0, ev)); - } - } - } - // - // collect controller - // - if (autoRead()) { - for (iCtrl ic = controller()->begin(); ic != controller()->end(); ++ic) { - Ctrl* c = ic->second; - iCtrlVal is = c->lowerBound(t->curTickPos); - iCtrlVal ie = c->lowerBound(t->nextTickPos); - for (iCtrlVal ic = is; ic != ie; ++ic) { - unsigned frame = t->tick2frame(ic.key()); - Event ev(Controller); - ev.setA(c->id()); - ev.setB(ic.value().i); - schedEvents.insert(MidiEvent(frame, -1, ev)); - c->setCurVal(ic.value().i); - } - } - } - } - - // - // process input routing - // - - foreach(const Route& r, *inRoutes()) { - MidiTrackBase* track = (MidiTrackBase*)r.src.track; - if (track->isMute()) - continue; - MidiEventList el; - track->getEvents(t->curTickPos, t->nextTickPos, r.src.channel, &el); - - for (iMidiEvent ie = el.begin(); ie != el.end(); ++ie) { - MidiEvent event(*ie); - unsigned eventTime = event.time(); - if (recordFlag() && audio->isRecording()) { - unsigned time = t->frame2tick(eventTime); - event.setTime(time); // set tick time - recordFifo.put(event); - } - if (event.type() == ME_NOTEON && (monitor() || recordFlag())) - addMidiMeter(event.dataB()); - if (monitor()) { - if (event.type() == ME_NOTEON) { - int pitch = event.dataA() + _transposition + song->globalPitchShift(); - if (pitch > 127) - pitch = 127; - if (pitch < 0) - pitch = 0; - event.setA(pitch); - if (!event.isNoteOff()) { - int velo = event.dataB() + _velocity; - velo = (velo * _compression) / 100; - if (velo > 127) - velo = 127; - if (velo < 1) - velo = 1; - event.setB(velo); - } - } - event.setTime(eventTime + segmentSize); - schedEvents.insert(event); - } - } - } - } - -//--------------------------------------------------------- -// getEvents -// from/to - midi ticks -//--------------------------------------------------------- - -void MidiTrack::getEvents(unsigned /*from*/, unsigned /*to*/, int, MidiEventList* dst) - { - for (iMidiEvent i = schedEvents.begin(); i != schedEvents.end(); ++i) { - dst->insert(*i); - } - } - -//--------------------------------------------------------- -// emitControllerChanged -//--------------------------------------------------------- - -void MidiTrack::emitControllerChanged(int id) - { - if (id == CTRL_PROGRAM && _useDrumMap) { - int val = ctrlVal(id).i; - MidiInstrument* mi = instrument(); - DrumMap* dm = mi->getDrumMap(val); - if (dm == 0) - dm = &gmDrumMap; - if (dm != _drumMap) - _drumMap = dm; - emit drumMapChanged(); - } - emit controllerChanged(id); - } - -//--------------------------------------------------------- -// setUseDrumMap -//--------------------------------------------------------- - -void MidiTrack::setUseDrumMap(bool val) - { - if (_useDrumMap != val) { - _useDrumMap = val; - if (_useDrumMap) { - MidiInstrument* mi = instrument(); - DrumMap* dm; - if (mi) { - int val = ctrlVal(CTRL_PROGRAM).i; - dm = mi->getDrumMap(val); - if (dm == 0) - dm = &gmDrumMap; - } - _drumMap = dm; - } - else - _drumMap = &noDrumMap; - emit drumMapChanged(); - emit useDrumMapChanged(_useDrumMap); - } - } - -//--------------------------------------------------------- -// instrument -//--------------------------------------------------------- - -MidiInstrument* MidiTrack::instrument() - { - if (_outRoutes.isEmpty()) - return genericMidiInstrument; - return _outRoutes[0].dst.track->instrument(); - } - -//--------------------------------------------------------- -// channelNo -//--------------------------------------------------------- - -int MidiTrack::channelNo() const - { - if (_outRoutes.isEmpty()) // TODO: better: remember old channel setting - return 0; - return _outRoutes[0].dst.channel; - } - -//--------------------------------------------------------- -// midiOut -//--------------------------------------------------------- - -MidiOut* MidiTrack::midiOut() - { - if (_outRoutes.isEmpty()) - return 0; - return _outRoutes[0].dst.track->midiOut(); - } - -//--------------------------------------------------------- -// setChannel -//--------------------------------------------------------- - -void MidiTrack::setChannel(int n) - { - if (_outRoutes.isEmpty()) - return; - Route r = _outRoutes[0]; - if (r.dst.channel == n) - return; - audio->msgRemoveRoute(r); - r.dst.channel = n; - audio->msgAddRoute(r); - emit channelChanged(n); - } diff --git a/muse/muse/miditrack.h b/muse/muse/miditrack.h deleted file mode 100644 index 994c3c92..00000000 --- a/muse/muse/miditrack.h +++ /dev/null @@ -1,127 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __MIDITRACK_H__ -#define __MIDITRACK_H__ - -#include "miditrackbase.h" -#include "midififo.h" -#include "event.h" - -class Part; -class EventList; -class MidiOut; -class SeqTime; - -//--------------------------------------------------------- -// MidiTrack -//--------------------------------------------------------- - -class MidiTrack : public MidiTrackBase { - Q_OBJECT - - EventList _events; // tmp Events during midi import - - // recording: - MidiFifo recordFifo; // for event transfer from RT-thread to gui thread - std::list keyDown; // keep track of "note on" events - Part* recordPart; // part we are recording into - int recordedEvents; - bool partCreated; - int hbank, lbank; - int datah, datal; - int rpnh, rpnl; - int dataType; - - // channel data: - DrumMap* _drumMap; - bool _useDrumMap; - - // play parameter - int _transposition; - int _velocity; - int _delay; - int _len; - int _compression; - - MidiEventList schedEvents; // scheduled events by process() - - signals: - void drumMapChanged() const; - void useDrumMapChanged(bool); - void channelChanged(int); - - public slots: - void setChannel(int); - - public: - MidiTrack(); - virtual ~MidiTrack(); - virtual TrackType type() const { return MIDI; } - void clone(MidiTrack*); - - int transposition() const { return _transposition; } - int velocity() const { return _velocity; } - int delay() const { return _delay; } - int len() const { return _len; } - int compression() const { return _compression; } - void setTransposition(int val) { _transposition = val; } - void setVelocity(int val) { _velocity = val; } - void setDelay(int val) { _delay = val; } - void setLen(int val) { _len = val; } - void setCompression(int val) { _compression = val; } - - void startRecording(); - void recordBeat(); - void stopRecording(); - - EventList* events() { return &_events; } - - virtual void read(QDomNode); - virtual void write(Xml&) const; - - virtual Part* newPart(Part*p=0, bool clone=false); - - virtual bool isMute() const; - virtual bool canRecord() const { return true; } - void playMidiEvent(MidiEvent*); - - virtual void processMidi(SeqTime*); - virtual void getEvents(unsigned from, unsigned to, int channel, MidiEventList* dst); - - bool useDrumMap() const { return _useDrumMap; } - DrumMap* drumMap() const { return _drumMap; } - void setUseDrumMap(bool val); - - int channelNo() const; - virtual void emitControllerChanged(int id); - - virtual MidiOut* midiOut(); - virtual MidiInstrument* instrument(); - }; - -typedef QList MidiTrackList; -typedef MidiTrackList::iterator iMidiTrack; -typedef MidiTrackList::const_iterator ciMidiTrack; - -Q_DECLARE_METATYPE(class MidiTrack*); - -#endif - diff --git a/muse/muse/miditrackbase.cpp b/muse/muse/miditrackbase.cpp deleted file mode 100644 index 7af53299..00000000 --- a/muse/muse/miditrackbase.cpp +++ /dev/null @@ -1,136 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "miditrackbase.h" -#include "midiplugin.h" - -//--------------------------------------------------------- -// MidiTrackBase -//--------------------------------------------------------- - -MidiTrackBase::MidiTrackBase() - : Track() - { - _pipeline = new MidiPipeline(); - } - -//--------------------------------------------------------- -// MidiTrackBase -//--------------------------------------------------------- - -MidiTrackBase::~MidiTrackBase() - { - foreach(MidiPluginI* plugin, *_pipeline) - delete plugin; - delete _pipeline; - } - -//--------------------------------------------------------- -// MidiTrackBase::writeProperties -//--------------------------------------------------------- - -void MidiTrackBase::writeProperties(Xml& xml) const - { - Track::writeProperties(xml); - for (ciMidiPluginI ip = _pipeline->begin(); ip != _pipeline->end(); ++ip) { - if (*ip) - (*ip)->writeConfiguration(xml); - } - } - -//--------------------------------------------------------- -// MidiTrackBase::readProperties -//--------------------------------------------------------- - -bool MidiTrackBase::readProperties(QDomNode node) - { - QDomElement e = node.toElement(); - QString tag(e.tagName()); - if (tag == "midiPlugin") { - MidiPluginI* pi = new MidiPluginI(this); - if (pi->readConfiguration(node)) - delete pi; - else - addPlugin(pi, -1); - } - else - return Track::readProperties(node); - return false; - } - -//--------------------------------------------------------- -// plugin -//--------------------------------------------------------- - -MidiPluginI* MidiTrackBase::plugin(int idx) const - { - return _pipeline->value(idx); - } - -//--------------------------------------------------------- -// addPlugin -// realtime context -// idx = -1 append -// plugin = 0 remove slot -//--------------------------------------------------------- - -void MidiTrackBase::addPlugin(MidiPluginI* plugin, int idx) - { - if (plugin) { - if (idx == -1) - idx = _pipeline->size(); - _pipeline->insert(idx, plugin); -#if 0 - int ncontroller = plugin->plugin()->parameter(); - for (int i = 0; i < ncontroller; ++i) { - int id = (idx + 1) * 0x1000 + i; - QString name(plugin->getParameterName(i)); - double min, max; - plugin->range(i, &min, &max); - Ctrl* cl = getController(id); - if (cl == 0) { - cl = new Ctrl(id, name); - cl->setRange(min, max); - double defaultValue = plugin->defaultValue(i); - cl->setDefault(defaultValue); - cl->setCurVal(defaultValue); - addController(cl); - } - plugin->setParam(i, cl->schedVal().f); - plugin->setControllerList(cl); - } -#endif - } - else { - MidiPluginI* oldPlugin = _pipeline->takeAt(idx); - if (oldPlugin) { -#if 0 - int controller = oldPlugin->plugin()->parameter(); - for (int i = 0; i < controller; ++i) { - int id = (idx + 1) * 0x1000 + i; - removeController(id); - } -#endif - } - } - } - - - diff --git a/muse/muse/miditrackbase.h b/muse/muse/miditrackbase.h deleted file mode 100644 index d10b2bb3..00000000 --- a/muse/muse/miditrackbase.h +++ /dev/null @@ -1,53 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __MIDITRACKBASE_H__ -#define __MIDITRACKBASE_H__ - -#include "track.h" - -//--------------------------------------------------------- -// MidiTrackBase -//--------------------------------------------------------- - -class MidiTrackBase : public Track { - Q_OBJECT - - MidiPipeline* _pipeline; - - public: - MidiTrackBase(); - virtual ~MidiTrackBase(); - - bool readProperties(QDomNode); - void writeProperties(Xml&) const; - - MidiPipeline* pipeline() { return _pipeline; } - void addPlugin(MidiPluginI* plugin, int idx); - MidiPluginI* plugin(int idx) const; - - virtual void processMidi(unsigned, unsigned, unsigned, unsigned) {} - virtual void getEvents(unsigned /*from*/, unsigned /*to*/, int /*channel*/, MidiEventList* /*dst*/) {} - }; - -#endif - - - diff --git a/muse/muse/miditrackinfo.ui b/muse/muse/miditrackinfo.ui deleted file mode 100644 index c1624188..00000000 --- a/muse/muse/miditrackinfo.ui +++ /dev/null @@ -1,292 +0,0 @@ - - MidiTrackInfoBase - - - - 0 - 0 - 135 - 165 - - - - - 0 - 0 - - - - Form - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - - 16777215 - 24 - - - - Transp. - - - - - - - - 0 - 0 - - - - - 16777215 - 24 - - - - Pitch Transpose - - - -127 - - - 127 - - - - - - - - 0 - 0 - - - - - 16777215 - 24 - - - - Delay - - - - - - - - 0 - 0 - - - - - 16777215 - 24 - - - - Track Delay (ticks) - - - -1000 - - - 1000 - - - - - - - - 0 - 0 - - - - - 16777215 - 24 - - - - Length - - - - - - - - 0 - 0 - - - - - 16777215 - 24 - - - - Modify Note Length - - - % - - - 25 - - - 200 - - - - - - - - 0 - 0 - - - - - 16777215 - 24 - - - - Velocity - - - - - - - - 0 - 0 - - - - - 16777215 - 24 - - - - Modify Note Velocity - - - -127 - - - 127 - - - - - - - - 0 - 0 - - - - - 16777215 - 24 - - - - Compr. - - - - - - - - 0 - 0 - - - - - 16777215 - 24 - - - - Compress Note Velocity - - - % - - - 25 - - - 200 - - - - - - - - 0 - 0 - - - - - 16777215 - 24 - - - - Instrument Patch - - - ??? - - - - - - - - diff --git a/muse/muse/miditransform.cpp b/muse/muse/miditransform.cpp deleted file mode 100644 index f4e85be2..00000000 --- a/muse/muse/miditransform.cpp +++ /dev/null @@ -1,1534 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "helper.h" -#include "event.h" -#include "miditransform.h" -#include "track.h" -#include "song.h" -#include "al/xml.h" -#include "globals.h" -#include "comboQuant.h" -#include "audio.h" -#include "gconfig.h" -#include "al/sig.h" - -static int eventTypeTable[] = { - Note, Controller, Sysex, PAfter, CAfter, Meta - }; - -static int procVal2Map[] = { 0, 1, 2, 3, 4, 5, 6, 7, 10, 11 }; - -//--------------------------------------------------------- -// MidiTransformation -//--------------------------------------------------------- - -class MidiTransformation { - public: - QString name; - QString comment; - - ValOp selEventOp; - EventType selType; - - ValOp selVal1; - int selVal1a, selVal1b; - ValOp selVal2; - int selVal2a, selVal2b; - ValOp selLen; - int selLenA, selLenB; - ValOp selRange; - int selRangeA, selRangeB; - - TransformOperator procEvent; - EventType eventType; - TransformOperator procVal1; - int procVal1a, procVal1b; - TransformOperator procVal2; - int procVal2a, procVal2b; - TransformOperator procLen; - int procLenA; - TransformOperator procPos; - int procPosA; - - TransformFunction funcOp; - int quantVal; - bool selectedTracks; - bool insideLoop; - - MidiTransformation(const QString& s) { - name = s; - selEventOp = All; - selType = Note; - selVal1 = Ignore; - selVal1a = 0; - selVal1b = 0; - selVal2 = Ignore; - selVal2a = 0; - selVal2b = 0; - selLen = Ignore; - selLenA = 0; - selLenB = 0; - selRange = Ignore; - selRangeA = 0; - selRangeB = 0; - procEvent = Keep; - eventType = Note; - procVal1 = Keep; - procVal1a = 0; - procVal1b = 0; - procVal2 = Keep; - procVal2a = 0; - procVal2b = 0; - procLen = Keep; - procLenA = 0; - procPos = Keep; - procPosA = 0; - funcOp = Select; - quantVal = config.division; - selectedTracks = false; - insideLoop = false; - } - void write(Xml& xml); - }; - -class MidiTransformPrivate { - public: - MidiTransformation* cmt; - int cindex; // current index in preset list - }; - -typedef std::list MidiTransformationList; -typedef std::list::iterator iMidiTransformation; -typedef std::list::const_iterator ciMidiTransformation; - -static MidiTransformationList mtlist; - -//--------------------------------------------------------- -// MidiTransformDialog -// Widgets: -// presetList nameEntry commentEntry -// selEventOp selType -// selVal1Op selVal1a selVal1b -// selVal2Op selVal2a selVal2b -// selLenOp selLenA selLenB -// selRangeOp selBarA selBarB -// -// procEventOp procType -// procVal1Op procVal1a procVal1b -// procVal2Op procVal2a procVal2b -// procLenOp procLenA -// procPosOp procPosA -// funcOp funcQuantVal -// processAll selectedTracks insideLoop -// buttonNew buttonDelete buttonApply buttonOk -//--------------------------------------------------------- - -MidiTransformerDialog::MidiTransformerDialog(QWidget* parent, - const char* name, bool modal, Qt::WFlags fl) - : MidiTransformDialogBase(parent, name, modal, fl) - { - data = new MidiTransformPrivate; - data->cmt = 0; - data->cindex = -1; - connect(buttonApply, SIGNAL(clicked()), SLOT(apply())); - connect(buttonNew, SIGNAL(clicked()), SLOT(presetNew())); - connect(buttonDelete, SIGNAL(clicked()), SLOT(presetDelete())); - connect(selEventOp, SIGNAL(activated(int)), SLOT(selEventOpSel(int))); - connect(selType, SIGNAL(activated(int)), SLOT(selTypeSel(int))); - connect(selVal1Op, SIGNAL(activated(int)), SLOT(selVal1OpSel(int))); - connect(selVal2Op, SIGNAL(activated(int)), SLOT(selVal2OpSel(int))); - connect(selLenOp, SIGNAL(activated(int)), SLOT(selLenOpSel(int))); - connect(selRangeOp, SIGNAL(activated(int)), SLOT(selRangeOpSel(int))); - connect(procEventOp, SIGNAL(activated(int)), SLOT(procEventOpSel(int))); - connect(procType, SIGNAL(activated(int)), SLOT(procEventTypeSel(int))); - connect(procVal1Op, SIGNAL(activated(int)), SLOT(procVal1OpSel(int))); - connect(procVal2Op, SIGNAL(activated(int)), SLOT(procVal2OpSel(int))); - connect(procLenOp, SIGNAL(activated(int)), SLOT(procLenOpSel(int))); - connect(procPosOp, SIGNAL(activated(int)), SLOT(procPosOpSel(int))); - connect(funcOp, SIGNAL(activated(int)), SLOT(funcOpSel(int))); - connect(funcQuantVal, SIGNAL(valueChanged(int)), SLOT(funcQuantValSel(int))); - connect(presetList, SIGNAL(highlighted(Q3ListBoxItem*)), - SLOT(presetChanged(Q3ListBoxItem*))); - connect(nameEntry, SIGNAL(textChanged(const QString&)), - SLOT(nameChanged(const QString&))); - connect(commentEntry, SIGNAL(textChanged()), SLOT(commentChanged())); - - connect(selVal1a, SIGNAL(valueChanged(int)), SLOT(selVal1aChanged(int))); - connect(selVal1b, SIGNAL(valueChanged(int)), SLOT(selVal1bChanged(int))); - connect(selVal2a, SIGNAL(valueChanged(int)), SLOT(selVal2aChanged(int))); - connect(selVal2b, SIGNAL(valueChanged(int)), SLOT(selVal2bChanged(int))); - connect(selLenA, SIGNAL(valueChanged(int)), SLOT(selLenAChanged(int))); - connect(selLenB, SIGNAL(valueChanged(int)), SLOT(selLenBChanged(int))); - connect(selBarA, SIGNAL(valueChanged(int)), SLOT(selBarAChanged(int))); - connect(selBarB, SIGNAL(valueChanged(int)), SLOT(selBarBChanged(int))); - connect(procVal1a, SIGNAL(valueChanged(int)), SLOT(procVal1aChanged(int))); - connect(procVal1b, SIGNAL(valueChanged(int)), SLOT(procVal1bChanged(int))); - connect(procVal2a, SIGNAL(valueChanged(int)), SLOT(procVal2aChanged(int))); - connect(procVal2b, SIGNAL(valueChanged(int)), SLOT(procVal2bChanged(int))); - connect(procLenA, SIGNAL(valueChanged(int)), SLOT(procLenAChanged(int))); - connect(procPosA, SIGNAL(valueChanged(int)), SLOT(procPosAChanged(int))); - - connect(processAll, SIGNAL(toggled(bool)), SLOT(processAllChanged(bool))); - connect(selectedTracks, SIGNAL(toggled(bool)), SLOT(selectedTracksChanged(bool))); - connect(insideLoop, SIGNAL(toggled(bool)), SLOT(insideLoopChanged(bool))); - - //--------------------------------------------------- - // populate preset list - //--------------------------------------------------- - - for (iMidiTransformation i = mtlist.begin(); i != mtlist.end(); ++i) { - presetList->insertItem((*i)->name); - if (data->cmt == 0) - data->cmt = *i; - } - if (data->cmt == 0) { - data->cmt = new MidiTransformation(tr("New")); - mtlist.push_back(data->cmt); - presetList->insertItem(tr("New")); - } - data->cindex = 0; - presetList->setCurrentItem(0); - } - -//--------------------------------------------------------- -// ~MidiTransformDialog -//--------------------------------------------------------- - -MidiTransformerDialog::~MidiTransformerDialog() - { - delete data; - } - -//--------------------------------------------------------- -// writeMidiTransforms -//--------------------------------------------------------- - -void writeMidiTransforms(Xml& xml) - { - for (iMidiTransformation i = mtlist.begin(); i != mtlist.end(); ++i) { - (*i)->write(xml); - } - } - -//--------------------------------------------------------- -// write -//--------------------------------------------------------- - -void MidiTransformation::write(Xml& xml) - { - xml.tag("midiTransform"); - xml.strTag("name", name); - xml.strTag("comment", comment); - xml.intTag("function", int(funcOp)); - xml.intTag("selectedTracks", selectedTracks); - xml.intTag("insideLoop", insideLoop); - if (funcOp == Quantize) { - xml.intTag("quantVal", quantVal); - } - if (funcOp == Transform || funcOp == Insert) { - if (procEvent != Keep) { - xml.intTag("procEventOp", int(procEvent)); - xml.intTag("eventType", int(eventType)); - } - if (procVal1 != Keep) { - xml.intTag("procVal1Op", int(procVal1)); - xml.intTag("procVal1a", procVal1a); - xml.intTag("procVal1b", procVal1b); - } - if (procVal2 != Keep) { - xml.intTag("procVal2Op", int(procVal2)); - xml.intTag("procVal2a", procVal2a); - xml.intTag("procVal2b", procVal2b); - } - if (procLen != Keep) { - xml.intTag("procLenOp", int(procLen)); - xml.intTag("procLen", procLenA); - } - if (procPos != Keep) { - xml.intTag("procPosOp", int(procPos)); - xml.intTag("procPos", procPosA); - } - } - if (selEventOp != Ignore) { - xml.intTag("selEventOp", int(selEventOp)); - xml.intTag("selEventType", int(selType)); - } - if (selVal1 != Ignore) { - xml.intTag("selVal1Op", int(selVal1)); - xml.intTag("selVal1a", selVal1a); - xml.intTag("selVal1b", selVal1b); - } - if (selVal2 != Ignore) { - xml.intTag("selVal2Op", int(selVal2)); - xml.intTag("selVal2a", selVal2a); - xml.intTag("selVal2b", selVal2b); - } - if (selLen != Ignore) { - xml.intTag("selLenOp", int(selLen)); - xml.intTag("selLenA", selLenA); - xml.intTag("selLenB", selLenB); - } - if (selRange != Ignore) { - xml.intTag("selRangeOp", int(selRange)); - xml.intTag("selRangeA", selRangeA); - xml.intTag("selRangeB", selRangeB); - } - xml.etag("midiTransform"); - } - -//--------------------------------------------------------- -// readMidiTransform -//--------------------------------------------------------- - -void readMidiTransform(QDomNode node) - { - MidiTransformation trans(QWidget::tr("new")); - - while (!node.isNull()) { - QDomElement e = node.toElement(); - QString tag(e.tagName()); - QString s(e.text()); - int i = s.toInt(); - - if (tag == "name") - trans.name = s; - else if (tag == "comment") - trans.comment = s; - else if (tag == "function") - trans.funcOp = TransformFunction(i); - else if (tag == "selectedTracks") - trans.selectedTracks = i; - else if (tag == "insideLoop") - trans.insideLoop = i; - else if (tag == "quantVal") - trans.quantVal = i; - else if (tag == "procEventOp") - trans.procEvent = TransformOperator(i); - else if (tag == "eventType") - trans.eventType = EventType(i); - else if (tag == "procVal1Op") - trans.procVal1 = TransformOperator(i); - else if (tag == "procVal1a") - trans.procVal1a = i; - else if (tag == "procVal1b") - trans.procVal1b = i; - else if (tag == "procVal2Op") - trans.procVal2 = TransformOperator(i); - else if (tag == "procVal2a") - trans.procVal2a = i; - else if (tag == "procVal2b") - trans.procVal2b = i; - else if (tag == "procLenOp") - trans.procLen = TransformOperator(i); - else if (tag == "procLen") - trans.procLenA = i; - else if (tag == "procPosOp") - trans.procPos = TransformOperator(i); - else if (tag == "procPos") - trans.procPosA = i; - else if (tag == "selEventOp") - trans.selEventOp = ValOp(i); - else if (tag == "selEventType") - trans.selType = EventType(i); - else if (tag == "selVal1Op") - trans.selVal1 = ValOp(i); - else if (tag == "selVal1a") - trans.selVal1a = i; - else if (tag == "selVal1b") - trans.selVal1b = i; - else if (tag == "selVal2Op") - trans.selVal2 = ValOp(i); - else if (tag == "selVal2a") - trans.selVal2a = i; - else if (tag == "selVal2b") - trans.selVal2b = i; - else if (tag == "selLenOp") - trans.selLen = ValOp(i); - else if (tag == "selLenA") - trans.selLenA = i; - else if (tag == "selLenB") - trans.selLenB = i; - else if (tag == "selRangeOp") - trans.selRange = ValOp(i); - else if (tag == "selRangeA") - trans.selRangeA = i; - else if (tag == "selRangeB") - trans.selRangeB = i; - else - printf("MusE:readMidiTransform(): unknown tag %s\n", e.tagName().toLatin1().data()); - node = node.nextSibling(); - } - MidiTransformation* t = new MidiTransformation(trans); - mtlist.push_back(t); - } - -//--------------------------------------------------------- -// accept -//--------------------------------------------------------- - -void MidiTransformerDialog::accept() - { - apply(); - reject(); - } - -//--------------------------------------------------------- -// transformEvent -// subfunction of processEvent() -//--------------------------------------------------------- - -void MidiTransformerDialog::transformEvent(Event& event, MidiPart* part, - MidiPart* newPart) - { - MidiTransformation* cmt = data->cmt; - Event newEvent = event.clone(); - - if (cmt->procEvent != Keep) - newEvent.setType(cmt->eventType); - - //--------------------------------------------------- - // transform value A - //--------------------------------------------------- - - int val = newEvent.dataA(); - switch (cmt->procVal1) { - case Keep: - break; - case Plus: - val += cmt->procVal1a; - break; - case Minus: - val -= cmt->procVal1a; - break; - case Multiply: - val = int(val * (cmt->procVal1a/100.0) + .5); - break; - case Divide: - val = int(val / (cmt->procVal1a/100.0) + .5); - break; - case Fix: - val = cmt->procVal1a; - break; - case Value: - val = cmt->procVal2a; - break; - case Invert: - val = 128 - val; - break; - case ScaleMap: - printf("scale map not implemented\n"); - break; - case Flip: - val = cmt->procVal1a - val; - break; - case Dynamic: // "crescendo" - val = (((cmt->procVal2b-cmt->procVal2a) - * (newEvent.tick() - song->lpos())) - / (song->rpos() - song->lpos())) + cmt->procVal2a; - break; - case Random: - { - int range = cmt->procVal1b - cmt->procVal1a; - if (range > 0) - val = (rand() % range) + cmt->procVal1a; - else if (range < 0) - val = (rand() % -range) + cmt->procVal1b; - else - val = cmt->procVal1a; - } - break; - } - if (val < 0) - val = 0; - if (val > 127) - val = 127; - newEvent.setA(val); - - //--------------------------------------------------- - // transform value B - //--------------------------------------------------- - - val = newEvent.dataB(); - switch (cmt->procVal2) { - case Plus: - val += cmt->procVal2a; - break; - case Minus: - val -= cmt->procVal2a; - break; - case Multiply: - val = int(val * (cmt->procVal2a/100.0) + .5); - break; - case Divide: - val = int(val / (cmt->procVal2a/100.0) + .5); - break; - case Fix: - val = cmt->procVal2a; - break; - case Value: - val = cmt->procVal1a; - break; - case Invert: - val = 128 - val; - break; - case Dynamic: - val = (((cmt->procVal2b-cmt->procVal2a) - * (newEvent.tick() - song->lpos())) - / (song->rpos() - song->lpos())) + cmt->procVal2a; - break; - case Random: - { - int range = cmt->procVal2b - cmt->procVal2a; - if (range > 0) - val = (rand() % range) + cmt->procVal2a; - else if (range < 0) - val = (rand() % -range) + cmt->procVal2b; - else - val = cmt->procVal1a; - } - break; - case ScaleMap: - case Keep: - case Flip: - break; - } - if (val < 0) - val = 0; - if (val > 127) - val = 127; - newEvent.setB(val); - - //--------------------------------------------------- - // transform len - //--------------------------------------------------- - - int len = newEvent.lenTick(); - switch (cmt->procLen) { - case Plus: - len += cmt->procLenA; - break; - case Minus: - len -= cmt->procLenA; - break; - case Multiply: - len = int(val * (cmt->procLenA/100.0) + .5); - break; - case Divide: - len = int(val / (cmt->procLenA/100.0) + .5); - break; - case Fix: - len = cmt->procLenA; - break; - case Invert: - case ScaleMap: - case Dynamic: - case Random: - case Keep: - case Flip: - case Value: - break; - } - if (len < 0) - len = 0; - newEvent.setLenTick(len); - - //--------------------------------------------------- - // transform pos - //--------------------------------------------------- - - int pos = newEvent.tick(); - switch (cmt->procPos) { - case Plus: - pos += cmt->procPosA; - break; - case Minus: - pos -= cmt->procPosA; - break; - case Multiply: - pos = int(val * (cmt->procPosA/100.0) + .5); - break; - case Divide: - pos = int(val / (cmt->procPosA/100.0) + .5); - break; - case Fix: - case Invert: - case ScaleMap: - case Dynamic: - case Random: - case Keep: - case Flip: - case Value: - break; - } - if (pos < 0) - pos = 0; - newEvent.setTick(pos); - - Event dummy; - switch(data->cmt->funcOp) { - case Transform: - song->changeEvent(event, newEvent, part); - song->undoOp(UndoOp::ModifyEvent, newEvent, event, part); - song->addUpdateFlags(SC_EVENT_MODIFIED); - break; - case Insert: - song->undoOp(UndoOp::AddEvent, dummy, newEvent, part); - song->addEvent(newEvent, part); - song->addUpdateFlags(SC_EVENT_INSERTED); - break; - case Extract: - song->undoOp(UndoOp::DeleteEvent, dummy, event, part); - song->deleteEvent(event, part); - song->addUpdateFlags(SC_EVENT_REMOVED); - case Copy: - newPart->addEvent(newEvent); - break; - default: - break; - } - } - -//--------------------------------------------------------- -// processEvent -//--------------------------------------------------------- - -void MidiTransformerDialog::processEvent(Event& event, MidiPart* part, MidiPart* newPart) - { - switch(data->cmt->funcOp) { - case Select: - break; - case Quantize: - { - int tick = event.tick(); - int rt = AL::sigmap.raster(tick, data->cmt->quantVal) - tick; - if (tick != rt) { - Event newEvent = event.clone(); - newEvent.setTick(rt); - song->changeEvent(event, newEvent, part); - song->undoOp(UndoOp::ModifyEvent, newEvent, event, part); - song->addUpdateFlags(SC_EVENT_MODIFIED); - } - } - break; - case Delete: - { - Event ev; - song->undoOp(UndoOp::DeleteEvent, ev, event, part); - song->deleteEvent(event, part); - song->addUpdateFlags(SC_EVENT_REMOVED); - } - break; - case Transform: - case Insert: - case Copy: - case Extract: - transformEvent(event, part, newPart); - break; - } - } - -//--------------------------------------------------------- -// isSelected -// apply Select filter -// return true if event is selected -//--------------------------------------------------------- - -bool MidiTransformerDialog::isSelected(Event& event, MidiPart*) - { - MidiTransformation* cmt = data->cmt; - - switch (cmt->selEventOp) { - case Equal: - if (event.type() != cmt->selType) { - return false; - } - break; - case Unequal: - if (event.type() == cmt->selType) { - return false; - } - break; - default: - break; - } - switch (cmt->selVal1) { - case Ignore: - break; - case Equal: - if (event.dataA() != cmt->selVal1a) - return false; - break; - case Unequal: - if (event.dataA() == cmt->selVal1a) - return false; - break; - case Higher: - if (event.dataA() <= cmt->selVal1a) - return false; - break; - case Lower: - if (event.dataA() >= cmt->selVal1a) - return false; - break; - case Inside: - if ((event.dataA() < cmt->selVal1a) - || (event.dataA() >= cmt->selVal1b)) - return false; - break; - case Outside: - if ((event.dataA() >= cmt->selVal1a) - && (event.dataA() < cmt->selVal1b)) - return false; - break; - } - switch (cmt->selVal2) { - case Ignore: - break; - case Equal: - if (event.dataB() != cmt->selVal2a) - return false; - break; - case Unequal: - if (event.dataB() == cmt->selVal2a) - return false; - break; - case Higher: - if (event.dataB() <= cmt->selVal2a) - return false; - break; - case Lower: - if (event.dataB() >= cmt->selVal2a) - return false; - break; - case Inside: - if ((event.dataB() < cmt->selVal2a) - || (event.dataB() >= cmt->selVal2b)) - return false; - break; - case Outside: - if ((event.dataB() >= cmt->selVal2a) - && (event.dataB() < cmt->selVal2b)) - return false; - break; - } - int len = event.lenTick(); - switch (cmt->selLen) { - case Ignore: - break; - case Equal: - if (len != cmt->selLenA) - return false; - break; - case Unequal: - if (len == cmt->selLenA) - return false; - break; - case Higher: - if (len <= cmt->selLenA) - return false; - break; - case Lower: - if (len >= cmt->selLenA) - return false; - break; - case Inside: - if ((len < cmt->selLenA) || (len >= cmt->selLenB)) - return false; - break; - case Outside: - if ((len >= cmt->selLenA) && (len < cmt->selLenB)) - return false; - break; - } - int bar, beat; - unsigned tick; - AL::sigmap.tickValues(event.tick(), &bar, &beat, &tick); - int beat1 = cmt->selRangeA / 1000; - unsigned tick1 = cmt->selRangeA % 1000; - int beat2 = cmt->selRangeB / 1000; - unsigned tick2 = cmt->selRangeB % 1000; - switch (cmt->selRange) { - case Ignore: - break; - case Equal: - if (beat != beat1 || tick != tick1) - return false; - break; - case Unequal: - if (beat == beat1 && tick == tick1) - return false; - break; - case Higher: - if (beat <= beat1) - return false; - if (beat == beat1 && tick <= tick1) - return false; - break; - case Lower: - if (beat >= beat1) - return false; - if (beat == beat1 && tick >= tick1) - return false; - break; - case Inside: - if ((beat < beat1) || (beat >= beat2)) - return false; - if (beat == beat1 && tick < tick1) - return false; - if (beat == beat2 && tick >= tick2) - return false; - break; - case Outside: - if ((beat >= beat1) || (beat < beat2)) - return false; - if (beat == beat1 && tick >= tick1) - return false; - if (beat == beat2 && tick < tick2) - return false; - break; - } - return true; - } - -//--------------------------------------------------------- -// apply -//--------------------------------------------------------- - -void MidiTransformerDialog::apply() - { - int flags = 0; - song->startUndo(); - audio->msgIdle(true); - bool copyExtract = (data->cmt->funcOp == Copy) - || (data->cmt->funcOp == Extract); - - MidiTrackList* tracks = song->midis(); - MidiTrackList tl; - for (iMidiTrack t = tracks->begin(); t != tracks->end(); ++t) { - if (data->cmt->selectedTracks && !(*t)->selected()) - continue; - MidiTrack* newTrack = 0; - PartList *pl = (*t)->parts(); - if (copyExtract) { - // check wether we must generate a new track - for (iPart p = pl->begin(); p != pl->end(); ++p) { - MidiPart* part = (MidiPart *) p->second; - EventList* el = part->events(); - for (iEvent i = el->begin(); i != el->end(); ++i) { - Event event = i->second; - unsigned tick = event.tick(); - if (data->cmt->insideLoop && (tick < song->lpos() || tick >= song->rpos())) - continue; - if (isSelected(event, part)) { - newTrack = new MidiTrack(); - tl.push_back(newTrack); - break; - } - } - if (newTrack) - break; - } - } - - for (iPart p = pl->begin(); p != pl->end(); ++p) { - MidiPart* part = (MidiPart *) p->second; - MidiPart* newPart = 0; - EventList* el = part->events(); - if (copyExtract) { - // check wether we must generate a new part - for (iEvent i = el->begin(); i != el->end(); ++i) { - Event event = i->second; - unsigned tick = event.tick(); - if (data->cmt->insideLoop && (tick < song->lpos() || tick >= song->rpos())) - continue; - if (isSelected(event, part)) { - newPart = new MidiPart(newTrack); - newPart->setName(part->name()); - newPart->setColorIndex(part->colorIndex()); - newPart->setTick(part->tick()); - newPart->setLenTick(part->lenTick()); - song->addPart(newPart); - flags |= SC_PART_INSERTED; - break; - } - } - } - EventList pel; - for (iEvent i = el->begin(); i != el->end(); ++i) { - Event event = i->second; - unsigned tick = event.tick(); - if (data->cmt->insideLoop && (tick < song->lpos() || tick >= song->rpos())) - continue; - bool flag = isSelected(event, part); - if (data->cmt->funcOp == Select) - event.setSelected(flag); - else if (flag) - pel.add(event); - } - for (iEvent i = pel.begin(); i != pel.end(); ++i) { - Event event = i->second; - processEvent(event, part, newPart); - } - } - } - if (!tl.empty()) { - flags |= SC_TRACK_INSERTED; - for (iTrack t = tl.begin(); t != tl.end(); ++t) { - song->insertTrack0(*t, -1); - } - } - - switch(data->cmt->funcOp) { - case Select: - flags |= SC_SELECTION; - break; - case Quantize: - flags |= SC_EVENT_MODIFIED; - break; - case Delete: - flags |= SC_EVENT_REMOVED; - break; - case Transform: - flags |= SC_EVENT_MODIFIED; - break; - case Insert: - flags |= SC_EVENT_INSERTED; - break; - case Copy: - flags |= SC_EVENT_INSERTED; - case Extract: - break; - } - audio->msgIdle(false); - song->endUndo(flags); - } - -//--------------------------------------------------------- -// setValOp -//--------------------------------------------------------- - -void MidiTransformerDialog::setValOp(QWidget* a, QWidget* b, ValOp op) - { - switch (op) { - case Ignore: - a->setEnabled(false); - b->setEnabled(false); - break; - case Equal: - case Unequal: - case Higher: - case Lower: - a->setEnabled(true); - b->setEnabled(false); - break; - case Inside: - case Outside: - a->setEnabled(true); - b->setEnabled(true); - break; - } - } - -//--------------------------------------------------------- -// selEventOpSel -//--------------------------------------------------------- - -void MidiTransformerDialog::selEventOpSel(int val) - { - selType->setEnabled(val != All); - data->cmt->selEventOp = ValOp(val); - selVal1aChanged(data->cmt->selVal1a); - selVal1bChanged(data->cmt->selVal1b); - } - -//--------------------------------------------------------- -// selTypeSel -//--------------------------------------------------------- - -void MidiTransformerDialog::selTypeSel(int val) - { - data->cmt->selType = EventType(eventTypeTable[val]); - selVal1aChanged(data->cmt->selVal1a); - selVal1bChanged(data->cmt->selVal1b); - } - -//--------------------------------------------------------- -// selVal1OpSel -//--------------------------------------------------------- - -void MidiTransformerDialog::selVal1OpSel(int val) - { - setValOp(selVal1a, selVal1b, ValOp(val)); - data->cmt->selVal1 = ValOp(val); - } - -//--------------------------------------------------------- -// selVal2OpSel -//--------------------------------------------------------- - -void MidiTransformerDialog::selVal2OpSel(int val) - { - setValOp(selVal2a, selVal2b, ValOp(val)); - data->cmt->selVal2 = ValOp(val); - } - -//--------------------------------------------------------- -// selLenOpSel -//--------------------------------------------------------- - -void MidiTransformerDialog::selLenOpSel(int val) - { - setValOp(selLenA, selLenB, ValOp(val)); - data->cmt->selLen = ValOp(val); - } - -//--------------------------------------------------------- -// selRangeOpSel -//--------------------------------------------------------- - -void MidiTransformerDialog::selRangeOpSel(int val) - { - setValOp(selBarA, selBarB, ValOp(val)); - data->cmt->selRange = ValOp(val); - } - -//--------------------------------------------------------- -// procEventOpSel -//--------------------------------------------------------- - -void MidiTransformerDialog::procEventOpSel(int val) - { - TransformOperator op = val == 0 ? Keep : Fix; - procType->setEnabled(op == Fix); - data->cmt->procEvent = op; - } - -//--------------------------------------------------------- -// procEventTypeSel -//--------------------------------------------------------- - -void MidiTransformerDialog::procEventTypeSel(int val) - { - data->cmt->eventType = EventType(eventTypeTable[val]); - } - -//--------------------------------------------------------- -// procVal1OpSel -//--------------------------------------------------------- - -void MidiTransformerDialog::procVal1OpSel(int val) - { - data->cmt->procVal1 = TransformOperator(val); - switch(TransformOperator(val)) { - case Keep: - case Invert: - procVal1a->setEnabled(false); - procVal1b->setEnabled(false); - break; - case Multiply: - case Divide: - procVal1a->setEnabled(true); -// procVal1a->setPrecision(2); - procVal1b->setEnabled(false); - break; - case Plus: - case Minus: - case Fix: - case Value: - case Flip: -// procVal1a->setPrecision(0); - procVal1a->setEnabled(true); - procVal1b->setEnabled(false); - break; - case Random: - case ScaleMap: - case Dynamic: -// procVal1a->setPrecision(0); - procVal1a->setEnabled(true); - procVal1b->setEnabled(true); - break; - } - } - -//--------------------------------------------------------- -// procVal2OpSel -//--------------------------------------------------------- - -void MidiTransformerDialog::procVal2OpSel(int val) - { - TransformOperator op = TransformOperator(procVal2Map[val]); - data->cmt->procVal2 = op; - - switch (op) { - case Keep: - case Invert: - procVal2a->setEnabled(false); - procVal2b->setEnabled(false); - break; - case Multiply: - case Divide: - procVal2a->setEnabled(true); -// procVal2a->setPrecision(2); - procVal2b->setEnabled(false); - break; - case Plus: - case Minus: - case Fix: - case Value: -// procVal2a->setPrecision(0); - procVal2a->setEnabled(true); - procVal2b->setEnabled(false); - break; - case Random: - case Dynamic: -// procVal2a->setPrecision(0); - procVal2a->setEnabled(true); - procVal2b->setEnabled(true); - break; - default: - break; - } - } - -//--------------------------------------------------------- -// procLenOpSel -//--------------------------------------------------------- - -void MidiTransformerDialog::procLenOpSel(int val) - { - TransformOperator op = TransformOperator(val); - data->cmt->procLen = op; - - switch (op) { - case Keep: - case Invert: - procLenA->setEnabled(false); - break; - case Plus: - case Minus: - case Fix: -// procLenA->setPrecision(0); - procLenA->setEnabled(true); - break; - case Multiply: - case Divide: -// procLenA->setPrecision(2); - procLenA->setEnabled(true); - break; - default: - break; - } - } - -//--------------------------------------------------------- -// procPosOpSel -//--------------------------------------------------------- - -void MidiTransformerDialog::procPosOpSel(int val) - { - TransformOperator op = TransformOperator(val); - data->cmt->procPos = op; - - switch (op) { - case Keep: - case Invert: - procPosA->setEnabled(false); - break; - case Multiply: - case Divide: -// procPosA->setPrecision(2); - procPosA->setEnabled(true); - break; - case Plus: - case Minus: -// procPosA->setPrecision(0); - procPosA->setEnabled(true); - break; - default: - break; - } - } - -//--------------------------------------------------------- -// funcOpSel -//--------------------------------------------------------- - -void MidiTransformerDialog::funcOpSel(int val) - { - funcQuantVal->setEnabled(val == Quantize); - bool isFuncOp = val == Transform || val == Insert; - - procEventOp->setEnabled(isFuncOp); - procType->setEnabled(isFuncOp); - procVal1Op->setEnabled(isFuncOp); - procVal1a->setEnabled(isFuncOp); - procVal1b->setEnabled(isFuncOp); - procVal2Op->setEnabled(isFuncOp); - procVal2a->setEnabled(isFuncOp); - procVal2b->setEnabled(isFuncOp); - procLenOp->setEnabled(isFuncOp); - procLenA->setEnabled(isFuncOp); - procPosOp->setEnabled(isFuncOp); - procPosA->setEnabled(isFuncOp); - if (isFuncOp) { - procEventOpSel(data->cmt->procEvent); - procVal1OpSel(data->cmt->procVal1); - procVal2OpSel(data->cmt->procVal2); - procLenOpSel(data->cmt->procLen); - procPosOpSel(data->cmt->procPos); - } - data->cmt->funcOp = TransformFunction(val); - } - -//--------------------------------------------------------- -// presetNew -//--------------------------------------------------------- - -void MidiTransformerDialog::presetNew() - { - QString name; - for (int i = 0;; ++i) { - name.sprintf("New-%d", i); - iMidiTransformation imt; - for (imt = mtlist.begin(); imt != mtlist.end(); ++imt) { - if (name == (*imt)->name) - break; - } - if (imt == mtlist.end()) - break; - } - MidiTransformation* mt = new MidiTransformation(name); - Q3ListBoxText* lbi = new Q3ListBoxText(presetList, name); - mtlist.push_back(mt); - presetList->setCurrentItem(lbi); - } - -//--------------------------------------------------------- -// presetDelete -//--------------------------------------------------------- - -void MidiTransformerDialog::presetDelete() - { - if (data->cindex != -1) { - iMidiTransformation mt = mtlist.begin(); - for (int i = 0; i < data->cindex; ++i, ++mt) { - mtlist.erase(mt); - presetList->removeItem(data->cindex); - break; - } - } - } - -//--------------------------------------------------------- -// presetChanged -//--------------------------------------------------------- - -void MidiTransformerDialog::presetChanged(Q3ListBoxItem* item) - { - data->cindex = presetList->index(item); - iMidiTransformation i; - for (i = mtlist.begin(); i != mtlist.end(); ++i) { - if (item->text() == (*i)->name) { - data->cmt = *i; - break; - } - } - if (i == mtlist.end()) { - printf("MidiTransformerDialog::presetChanged: not found\n"); - return; - } - nameEntry->setText(data->cmt->name); - commentEntry->setText(data->cmt->comment); - - selEventOp->setCurrentItem(data->cmt->selEventOp); - selEventOpSel(data->cmt->selEventOp); - - for (unsigned i = 0; i < sizeof(eventTypeTable)/sizeof(*eventTypeTable); ++i) { - if (eventTypeTable[i] == data->cmt->selType) { - selType->setCurrentItem(i); - break; - } - } - - selVal1Op->setCurrentItem(data->cmt->selVal1); - selVal1OpSel(data->cmt->selVal1); - - selVal2Op->setCurrentItem(data->cmt->selVal2); - selVal2OpSel(data->cmt->selVal2); - - selLenOp->setCurrentItem(data->cmt->selLen); - selLenOpSel(data->cmt->selLen); - - selRangeOp->setCurrentItem(data->cmt->selRange); - selRangeOpSel(data->cmt->selRange); - - funcOp->setCurrentItem(data->cmt->funcOp); - funcOpSel(data->cmt->funcOp); - - // TransformOperator procEvent: Keep, Fix - procEventOp->setCurrentItem(data->cmt->procEvent == Fix); - - procEventOpSel(data->cmt->procEvent); - - procVal1Op->setCurrentItem(data->cmt->procVal1); - procVal1OpSel(data->cmt->procVal1); - - for (unsigned i = 0; i < sizeof(procVal2Map)/sizeof(*procVal2Map); ++i) { - if (procVal2Map[i] == data->cmt->procVal2) { - procVal2Op->setCurrentItem(i); - break; - } - } - procLenOp->setCurrentItem(data->cmt->procLen); - procLenOpSel(data->cmt->procLen); - - procPosOp->setCurrentItem(data->cmt->procPos); - procPosOpSel(data->cmt->procPos); - - selVal1aChanged(data->cmt->selVal1a); - selVal1bChanged(data->cmt->selVal1b); - selVal2a->setValue(data->cmt->selVal2a); - selVal2b->setValue(data->cmt->selVal2b); - selLenA->setValue(data->cmt->selLenA); - selLenB->setValue(data->cmt->selLenB); - selBarA->setValue(data->cmt->selRangeA); - selBarB->setValue(data->cmt->selRangeB); - procVal1a->setValue(data->cmt->procVal1a); - procVal1b->setValue(data->cmt->procVal1b); - procVal2a->setValue(data->cmt->procVal2a); - procVal2b->setValue(data->cmt->procVal2b); - procLenA->setValue(data->cmt->procLenA); - procPosA->setValue(data->cmt->procPosA); - funcQuantVal->setValue(data->cmt->quantVal); - - selectedTracks->setChecked(data->cmt->selectedTracks); - selectedTracksChanged(data->cmt->selectedTracks); - insideLoop->setChecked(data->cmt->insideLoop); - insideLoopChanged(data->cmt->insideLoop); - } - -//--------------------------------------------------------- -// nameChanged -//--------------------------------------------------------- - -void MidiTransformerDialog::nameChanged(const QString& s) - { - data->cmt->name = s; - Q3ListBoxItem* item = presetList->item(data->cindex); - if (s != item->text()) { - disconnect(presetList, SIGNAL(highlighted(Q3ListBoxItem*)), - this, SLOT(presetChanged(Q3ListBoxItem*))); - presetList->changeItem(s, data->cindex); - connect(presetList, SIGNAL(highlighted(Q3ListBoxItem*)), - SLOT(presetChanged(Q3ListBoxItem*))); - } - } - -//--------------------------------------------------------- -// commentChanged -//--------------------------------------------------------- - -void MidiTransformerDialog::commentChanged() - { - data->cmt->comment = commentEntry->text(); - } - -//--------------------------------------------------------- -// selVal1aChanged -//--------------------------------------------------------- - -void MidiTransformerDialog::selVal1aChanged(int val) - { - data->cmt->selVal1a = val; - if ((data->cmt->selEventOp != All) - && (data->cmt->selType == Note)) { - selVal1a->setSuffix(" - " + pitch2string(val)); - } - else - selVal1a->setSuffix(QString("")); - } - -//--------------------------------------------------------- -// selVal1bChanged -//--------------------------------------------------------- - -void MidiTransformerDialog::selVal1bChanged(int val) - { - data->cmt->selVal1b = val; - if ((data->cmt->selEventOp != All) - && (data->cmt->selType == Note)) { - selVal1b->setSuffix(" - " + pitch2string(val)); - } - else - selVal1b->setSuffix(QString("")); - } - -//--------------------------------------------------------- -// selVal2aChanged -//--------------------------------------------------------- - -void MidiTransformerDialog::selVal2aChanged(int val) - { - data->cmt->selVal2a = val; - } - -//--------------------------------------------------------- -// selVal2bChanged -//--------------------------------------------------------- - -void MidiTransformerDialog::selVal2bChanged(int val) - { - data->cmt->selVal2b = val; - } - -//--------------------------------------------------------- -// selLenAChanged -//--------------------------------------------------------- - -void MidiTransformerDialog::selLenAChanged(int val) - { - data->cmt->selLenA = val; - } - -//--------------------------------------------------------- -// selLenBChanged -//--------------------------------------------------------- - -void MidiTransformerDialog::selLenBChanged(int val) - { - data->cmt->selLenB = val; - } - -//--------------------------------------------------------- -// selBarAChanged -//--------------------------------------------------------- - -void MidiTransformerDialog::selBarAChanged(int val) - { - data->cmt->selRangeA = val; - } - -//--------------------------------------------------------- -// selBarBChanged -//--------------------------------------------------------- - -void MidiTransformerDialog::selBarBChanged(int val) - { - data->cmt->selRangeB = val; - } - -//--------------------------------------------------------- -// procVal1aChanged -//--------------------------------------------------------- - -void MidiTransformerDialog::procVal1aChanged(int val) - { - data->cmt->procVal1a = val; - } - -//--------------------------------------------------------- -// procVal1bChanged -//--------------------------------------------------------- - -void MidiTransformerDialog::procVal1bChanged(int val) - { - data->cmt->procVal1b = val; - } - -//--------------------------------------------------------- -// procVal2aChanged -//--------------------------------------------------------- - -void MidiTransformerDialog::procVal2aChanged(int val) - { - data->cmt->procVal2a = val; - } - -//--------------------------------------------------------- -// procVal2bChanged -//--------------------------------------------------------- - -void MidiTransformerDialog::procVal2bChanged(int val) - { - data->cmt->procVal2b = val; - } - -//--------------------------------------------------------- -// procLenAChanged -//--------------------------------------------------------- - -void MidiTransformerDialog::procLenAChanged(int val) - { - data->cmt->procLenA = val; - } - -//--------------------------------------------------------- -// procPosAChanged -//--------------------------------------------------------- - -void MidiTransformerDialog::procPosAChanged(int val) - { - data->cmt->procPosA = val; - } - -//--------------------------------------------------------- -// funcQuantValSel -//--------------------------------------------------------- - -void MidiTransformerDialog::funcQuantValSel(int val) - { - data->cmt->quantVal = val; - } - -//--------------------------------------------------------- -// processAllChanged -//--------------------------------------------------------- - -void MidiTransformerDialog::processAllChanged(bool val) - { - if (val == true) { - selectedTracks->setChecked(false); - insideLoop->setChecked(false); - data->cmt->selectedTracks = false; - data->cmt->insideLoop = false; - } - } - -//--------------------------------------------------------- -// selectedTracksChanged -//--------------------------------------------------------- - -void MidiTransformerDialog::selectedTracksChanged(bool val) - { - data->cmt->selectedTracks = val; - processAll->setChecked(!val && !data->cmt->insideLoop); - } - -//--------------------------------------------------------- -// insideLoopChanged -//--------------------------------------------------------- - -void MidiTransformerDialog::insideLoopChanged(bool val) - { - data->cmt->insideLoop = val; - processAll->setChecked(!data->cmt->selectedTracks && !val); - } - diff --git a/muse/muse/miditransform.h b/muse/muse/miditransform.h deleted file mode 100644 index 1931ce78..00000000 --- a/muse/muse/miditransform.h +++ /dev/null @@ -1,113 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __MIDITRANSFORM_H__ -#define __MIDITRANSFORM_H__ - -#include "widgets/transformbase.h" - -class MidiTransformation; -class MidiTransformPrivate; -class Event; -class Part; - -namespace AL { - class Xml; - }; -using AL::Xml; - -enum ValOp { - All=0, Ignore=0, Equal=1, Unequal=2, Higher=3, Lower=4, - Inside=5, Outside=6 - }; - -enum TransformFunction { - Select, Quantize, Delete, Transform, Insert, Copy, Extract - }; - -enum TransformOperator { - Keep, Plus, Minus, Multiply, Divide, Fix, Value, Invert, - ScaleMap, Flip, Dynamic, Random - }; - -//--------------------------------------------------------- -// MidiTransformDialog -//--------------------------------------------------------- - -class MidiTransformerDialog : public MidiTransformDialogBase { - Q_OBJECT - MidiTransformPrivate* data; - - virtual void accept(); -// virtual void reject(); - void setValOp(QWidget* a, QWidget* b, ValOp op); - void processEvent(Event&, Part*, Part*); - bool isSelected(Event&, Part*); - void transformEvent(Event&, Part*, Part*); - - private slots: - void apply(); - void presetNew(); - void presetDelete(); - - void selEventOpSel(int); - void selTypeSel(int); - void selVal1OpSel(int); - void selVal2OpSel(int); - void selLenOpSel(int); - void selRangeOpSel(int); - void procEventOpSel(int); - void procEventTypeSel(int); - void procVal1OpSel(int); - void procVal2OpSel(int); - void procLenOpSel(int); - void procPosOpSel(int); - void funcOpSel(int); - void presetChanged(QListWidgetItem*); - void nameChanged(const QString&); - void commentChanged(); - void selVal1aChanged(int); - void selVal1bChanged(int); - void selVal2aChanged(int); - void selVal2bChanged(int); - void selLenAChanged(int); - void selLenBChanged(int); - void selBarAChanged(int); - void selBarBChanged(int); - void procVal1aChanged(int); - void procVal1bChanged(int); - void procVal2aChanged(int); - void procVal2bChanged(int); - void procLenAChanged(int); - void procPosAChanged(int); - void funcQuantValSel(int); - void processAllChanged(bool); - void selectedTracksChanged(bool); - void insideLoopChanged(bool); - - public: - MidiTransformerDialog(QWidget* parent = 0, const char* name = 0, - bool modal = false, Qt::WFlags fl = 0); - ~MidiTransformerDialog(); - }; - -extern void writeMidiTransforms(Xml& xml); -extern void readMidiTransform(QDomNode); -#endif diff --git a/muse/muse/mixer.cpp b/muse/muse/mixer.cpp deleted file mode 100644 index b3e5ce06..00000000 --- a/muse/muse/mixer.cpp +++ /dev/null @@ -1,397 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "muse.h" -#include "mixer.h" -#include "song.h" -#include "icons.h" -#include "astrip.h" -#include "mstrip.h" -#include "routedialog.h" -#include "synth.h" -#include "midiinport.h" -#include "midioutport.h" - -extern void populateAddTrack(QMenu* addTrack); - -//--------------------------------------------------------- -// Mixer -// -// inputs | synthis | tracks | groups | master -//--------------------------------------------------------- - -Mixer::Mixer(QWidget* parent, MixerConfig* c) - : QMainWindow(parent) - { - mustUpdateMixer = false; - cfg = c; - routingDialog = 0; - setWindowTitle(tr("MusE: Mixer")); - setWindowIcon(*museIcon); - - QMenu* menuCreate = menuBar()->addMenu(tr("&Create")); - populateAddTrack(menuCreate); - - menuView = menuBar()->addMenu(tr("&View")); - routingAction = menuView->addAction(tr("Routing"), this, SLOT(toggleRouteDialog())); - routingAction->setCheckable(true); - - showMidiTracksId = menuView->addAction(tr("Show Midi Tracks")); - showMidiOutPortId = menuView->addAction(tr("Show Midi Out Ports")); - showMidiInPortId = menuView->addAction(tr("Show Midi In Ports")); - - menuView->addSeparator(); - - showWaveTracksId = menuView->addAction(tr("Show Wave Tracks")); - showOutputTracksId = menuView->addAction(tr("Show Output Tracks")); - showGroupTracksId = menuView->addAction(tr("Show Group Tracks")); - showInputTracksId = menuView->addAction(tr("Show Input Tracks")); - showSyntiTracksId = menuView->addAction(tr("Show Synthesizer")); - connect(menuView, SIGNAL(triggered(QAction*)), SLOT(showTracksChanged(QAction*))); - - showMidiTracksId->setCheckable(true); - showMidiInPortId->setCheckable(true); - showMidiOutPortId->setCheckable(true); - showWaveTracksId->setCheckable(true); - showOutputTracksId->setCheckable(true); - showGroupTracksId->setCheckable(true); - showInputTracksId->setCheckable(true); - showSyntiTracksId->setCheckable(true); - - QScrollArea* view = new QScrollArea; - view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - setCentralWidget(view); - - central = new QWidget; - layout = new QHBoxLayout; - central->setLayout(layout); - layout->setSpacing(0); - layout->setMargin(0); - view->setWidget(central); - view->setWidgetResizable(true); - - connect(song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); - connect(muse, SIGNAL(configChanged()), SLOT(configChanged())); - song->update(); // calls update mixer - } - -//--------------------------------------------------------- -// addStrip -//--------------------------------------------------------- - -void Mixer::addStrip(Track* t, int idx) - { - StripList::iterator si = stripList.begin(); - for (int i = 0; i < idx; ++i) { - if (si != stripList.end()) - ++si; - } - if (si != stripList.end() && (*si)->getTrack() == t) - return; - - StripList::iterator nsi = si; - ++nsi; - if (si != stripList.end() - && nsi != stripList.end() - && (*nsi)->getTrack() == t) { - layout->removeWidget(*si); - delete *si; - stripList.erase(si); - } - else { - Strip* strip; - switch(t->type()) { - case Track::MIDI_IN: - strip = new MidiInPortStrip(this, (MidiInPort*)t, true); - break; - case Track::MIDI_OUT: - strip = new MidiOutPortStrip(this, (MidiOutPort*)t, true); - break; - case Track::MIDI: - strip = new MidiStrip(this, (MidiTrack*)t, true); - break; - case Track::MIDI_SYNTI: - strip = new MidiSyntiStrip(this, (MidiSynti*)t, true); - break; - default: - strip = new AudioStrip(this, (AudioTrack*)t, true); - break; - } - layout->insertWidget(idx, strip); - stripList.insert(si, strip); - strip->show(); - } - } - -//--------------------------------------------------------- -// clear -//--------------------------------------------------------- - -void Mixer::clear() - { - QLayoutItem* i; - while ((i = layout->takeAt(0))) { - if (i->widget()) - delete i->widget(); - delete i; - } - stripList.clear(); - } - -//--------------------------------------------------------- -// updateMixer -//--------------------------------------------------------- - -void Mixer::updateMixer(int action) - { - showMidiTracksId->setChecked(cfg->showMidiTracks); - showMidiInPortId->setChecked(cfg->showMidiInPorts); - showMidiOutPortId->setChecked(cfg->showMidiOutPorts); - showWaveTracksId->setChecked(cfg->showWaveTracks); - showOutputTracksId->setChecked(cfg->showOutputTracks); - showGroupTracksId->setChecked(cfg->showGroupTracks); - showInputTracksId->setChecked(cfg->showInputTracks); - showSyntiTracksId->setChecked(cfg->showSyntiTracks); - - if (action == STRIP_REMOVED) { - foreach(Strip* strip, stripList) { - Track* track = strip->getTrack(); - if (song->trackExists(track)) - continue; - layout->removeWidget(strip); - delete strip; - stripList.removeAt(stripList.indexOf(strip)); - } - int idx = stripList.size(); - setMaximumWidth(STRIP_WIDTH * idx + 4); - central->setFixedWidth(STRIP_WIDTH * idx); - if (idx < 4) - setMinimumWidth(idx * STRIP_WIDTH + 4); - return; - } - - clear(); - - int idx = 0; - //--------------------------------------------------- - // generate Input Strips - //--------------------------------------------------- - - if (cfg->showInputTracks) { - InputList* itl = song->inputs(); - for (iAudioInput i = itl->begin(); i != itl->end(); ++i) - addStrip(*i, idx++); - } - - //--------------------------------------------------- - // Synthesizer Strips - //--------------------------------------------------- - - if (cfg->showSyntiTracks) { - SynthIList* sl = song->syntis(); - for (iSynthI i = sl->begin(); i != sl->end(); ++i) - addStrip(*i, idx++); - } - - //--------------------------------------------------- - // generate Wave Track Strips - //--------------------------------------------------- - - if (cfg->showWaveTracks) { - WaveTrackList* wtl = song->waves(); - for (iWaveTrack i = wtl->begin(); i != wtl->end(); ++i) - addStrip(*i, idx++); - } - - //--------------------------------------------------- - // generate Midi strips - //--------------------------------------------------- - - if (cfg->showMidiInPorts) { - MidiInPortList* mpl = song->midiInPorts(); - for (iMidiInPort i = mpl->begin(); i != mpl->end(); ++i) - addStrip(*i, idx++); - } - - if (cfg->showMidiSyntiPorts) { - MidiSyntiList* mpl = song->midiSyntis(); - for (iMidiSynti i = mpl->begin(); i != mpl->end(); ++i) - addStrip(*i, idx++); - } - - if (cfg->showMidiTracks) { - MidiTrackList* mtl = song->midis(); - for (iMidiTrack i = mtl->begin(); i != mtl->end(); ++i) - addStrip(*i, idx++); - } - - if (cfg->showMidiOutPorts) { - MidiOutPortList* mpl = song->midiOutPorts(); - for (iMidiOutPort i = mpl->begin(); i != mpl->end(); ++i) - addStrip(*i, idx++); - } - - //--------------------------------------------------- - // Groups - //--------------------------------------------------- - - if (cfg->showGroupTracks) { - GroupList* gtl = song->groups(); - for (iAudioGroup i = gtl->begin(); i != gtl->end(); ++i) - addStrip(*i, idx++); - } - - //--------------------------------------------------- - // Master - //--------------------------------------------------- - - if (cfg->showOutputTracks) { - OutputList* otl = song->outputs(); - for (iAudioOutput i = otl->begin(); i != otl->end(); ++i) - addStrip(*i, idx++); - } - setMaximumWidth(STRIP_WIDTH * idx + 4); - central->setFixedWidth(STRIP_WIDTH * idx); - if (idx < 4) - setMinimumWidth(idx * STRIP_WIDTH + 4); - layout->update(); - } - -//--------------------------------------------------------- -// songChanged -//--------------------------------------------------------- - -void Mixer::songChanged(int flags) - { - int action = NO_UPDATE; - if (flags == -1) - action = UPDATE_ALL; - else { - if (flags & SC_TRACK_REMOVED) - action |= STRIP_REMOVED; - if (flags & SC_TRACK_INSERTED) - action |= STRIP_INSERTED; - } - if (action != NO_UPDATE) - updateMixer(action); - } - -//--------------------------------------------------------- -// closeEvent -//--------------------------------------------------------- - -void Mixer::closeEvent(QCloseEvent* e) - { - emit closed(); - e->accept(); - } - -//--------------------------------------------------------- -// toggleRouteDialog -//--------------------------------------------------------- - -void Mixer::toggleRouteDialog() - { - showRouteDialog(routingAction->isChecked()); - } - -//--------------------------------------------------------- -// showRouteDialog -//--------------------------------------------------------- - -void Mixer::showRouteDialog(bool on) - { - if (on && routingDialog == 0) { - routingDialog = new RouteDialog(this); - connect(routingDialog, SIGNAL(closed()), SLOT(routingDialogClosed())); - } - if (routingDialog) - routingDialog->setShown(on); - routingAction->setChecked(on); - } - -//--------------------------------------------------------- -// routingDialogClosed -//--------------------------------------------------------- - -void Mixer::routingDialogClosed() - { - routingAction->setChecked(false); - } - -//--------------------------------------------------------- -// showTracksChanged -//--------------------------------------------------------- - -void Mixer::showTracksChanged(QAction* id) - { - bool val = id->isChecked(); - if (id == showMidiTracksId) - cfg->showMidiTracks = val; - else if (id == showOutputTracksId) - cfg->showOutputTracks = val; - else if (id == showWaveTracksId) - cfg->showWaveTracks = val; - else if (id == showGroupTracksId) - cfg->showGroupTracks = val; - else if (id == showInputTracksId) - cfg->showInputTracks = val; - else if (id == showSyntiTracksId) - cfg->showSyntiTracks = val; - else if (id == showMidiInPortId) - cfg->showMidiInPorts = val; - else if (id == showMidiOutPortId) - cfg->showMidiOutPorts = val; - updateMixer(UPDATE_ALL); - } - -//--------------------------------------------------------- -// write -//--------------------------------------------------------- - -void Mixer::write(Xml& xml, const char* name) - { - xml.stag(QString(name)); - xml.tag("geometry", geometry()); - xml.tag("showMidiTracks", cfg->showMidiTracks); - xml.tag("showOutputTracks", cfg->showOutputTracks); - xml.tag("showWaveTracks", cfg->showWaveTracks); - xml.tag("showGroupTracks", cfg->showGroupTracks); - xml.tag("showInputTracks", cfg->showInputTracks); - xml.tag("showSyntiTracks", cfg->showSyntiTracks); - xml.tag("showMidiInPorts", cfg->showMidiInPorts); - xml.tag("showMidiOutPorts", cfg->showMidiOutPorts); - xml.etag(name); - } - -//--------------------------------------------------------- -// heartBeat -//--------------------------------------------------------- - -void Mixer::heartBeat() - { - if (mustUpdateMixer) { - updateMixer(STRIP_INSERTED | STRIP_REMOVED); - mustUpdateMixer = false; - } - foreach(Strip* s, stripList) - s->heartBeat(); - } - diff --git a/muse/muse/mixer.h b/muse/muse/mixer.h deleted file mode 100644 index 62c526a6..00000000 --- a/muse/muse/mixer.h +++ /dev/null @@ -1,95 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __AMIXER_H__ -#define __AMIXER_H__ - -#include "gconfig.h" - -class Meter; -class Track; -class Slider; -class Knob; -class RouteDialog; -class Strip; - -typedef QList StripList; - -//--------------------------------------------------------- -// Mixer -//--------------------------------------------------------- - -class Mixer : public QMainWindow { - Q_OBJECT - - MixerConfig* cfg; - StripList stripList; - QWidget* central; - QHBoxLayout* lbox; - Strip* master; - QHBoxLayout* layout; - QMenu* menuView; - RouteDialog* routingDialog; - QAction* routingAction; - - QAction* routingId; - QAction* showMidiTracksId; - QAction* showMidiInPortId; - QAction* showMidiOutPortId; - QAction* showOutputTracksId; - QAction* showWaveTracksId; - QAction* showGroupTracksId; - QAction* showInputTracksId; - QAction* showSyntiTracksId; - - bool mustUpdateMixer; - - virtual void closeEvent(QCloseEvent*); - void addStrip(Track*, int); - void showRouteDialog(bool); - - enum { - NO_UPDATE = 0, - STRIP_INSERTED = 1, - STRIP_REMOVED = 2, - UPDATE_ALL = 4 - }; - void updateMixer(int); - - signals: - void closed(); - - private slots: - void songChanged(int); - void configChanged() { songChanged(-1); } - void toggleRouteDialog(); - void routingDialogClosed(); - void showTracksChanged(QAction*); - - public: - Mixer(QWidget* parent, MixerConfig*); - void clear(); - void write(Xml&, const char* name); - void setUpdateMixer() { mustUpdateMixer = true; } - void heartBeat(); - }; - -#endif - diff --git a/muse/muse/mstrip.cpp b/muse/muse/mstrip.cpp deleted file mode 100644 index 64b8132c..00000000 --- a/muse/muse/mstrip.cpp +++ /dev/null @@ -1,1211 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2008 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "midictrl.h" -#include "mstrip.h" -#include "audio.h" -#include "song.h" -#include "mixer.h" -#include "widgets/simplebutton.h" -#include "widgets/utils.h" -#include "audiodev.h" -#include "synth.h" -#include "midirack.h" -#include "midiplugin.h" -#include "midiinport.h" -#include "midioutport.h" - -#include "awl/midimslider.h" -#include "awl/midimeter.h" -#include "awl/midivolentry.h" -#include "awl/midipanentry.h" -#include "awl/midipanknob.h" -#include "awl/knob.h" - -enum { KNOB_PAN, KNOB_CHOR_SEND, KNOB_VAR_SEND, KNOB_REV_SEND }; - -//--------------------------------------------------------- -// addMidiTracks -// input == true -// add routes from all possible midi tracks to input -// route list of track(channel) -// input == false -// add routes to all midi tracks to output route -// list of track(channel) -// -// Note: midi tracks do not have channels -//--------------------------------------------------------- - -void addMidiTracks(QMenu* menu, Track* track, int channel, bool input) - { - RouteList* rl = input ? track->inRoutes() : track->outRoutes(); - RouteNode a(track, channel, RouteNode::TRACK); - - MidiTrackList* tl = song->midis(); - for (iMidiTrack i = tl->begin();i != tl->end(); ++i) { - MidiTrack* track = *i; - QAction* action = menu->addAction(track->name()); - action->setCheckable(true); - RouteNode b(track); - Route r = input ? Route(b, a) : Route(a, b); - action->setData(QVariant::fromValue(r)); - action->setChecked(rl->indexOf(r) != -1); - } - } - -//--------------------------------------------------------- -// addMidiInPorts -// can only be added to input route lists -//--------------------------------------------------------- - -void Strip::addMidiInPorts(QMenu* menu, Track* dtrack, int channel) - { - RouteList* rl = dtrack->inRoutes(); - RouteNode dst(dtrack, channel, RouteNode::TRACK); - - MidiInPortList* tl = song->midiInPorts(); - for (iMidiInPort i = tl->begin();i != tl->end(); ++i) { - MidiInPort* track = *i; - QMenu* m = menu->addMenu(track->name()); - for (int ch = 0; ch < MIDI_CHANNELS; ++ch) { - QAction* a = m->addAction(QString("Channel %1").arg(ch+1)); - a->setCheckable(true); - RouteNode src(track, ch, RouteNode::TRACK); - Route r = Route(src, dst); - a->setData(QVariant::fromValue(r)); - a->setChecked(rl->indexOf(r) != -1); - } - } - } - -//--------------------------------------------------------- -// addMidiOutPorts -// can only be added to output route lists -//--------------------------------------------------------- - -void Strip::addMidiOutPorts(QMenu* menu, Track* strack, int channel) - { - RouteList* rl = strack->outRoutes(); - RouteNode src(strack, channel, RouteNode::TRACK); - - MidiOutPortList* tl = song->midiOutPorts(); - for (iMidiOutPort i = tl->begin();i != tl->end(); ++i) { - MidiOutPort* op = *i; - QMenu* m = menu->addMenu(op->name()); - for (int ch = 0; ch < MIDI_CHANNELS; ++ch) { - QAction* a = m->addAction(QString("Channel %1").arg(ch+1)); - a->setCheckable(true); - RouteNode dst(op, ch, RouteNode::TRACK); - Route r = Route(src, dst); - a->setData(QVariant::fromValue(r)); - a->setChecked(rl->indexOf(r) != -1); - } - } - } - -//--------------------------------------------------------- -// addSyntiPorts -// can only be added to output route lists -//--------------------------------------------------------- - -static void addSyntiPorts(QMenu* menu, Track* strack, int channel) - { - RouteList* rl = strack->outRoutes(); - RouteNode src(strack, channel, RouteNode::TRACK); - - SynthIList* sl = song->syntis(); - for (iSynthI i = sl->begin(); i != sl->end(); ++i) { - SynthI* sy = *i; - QMenu* m = menu->addMenu(sy->name()); - for (int ch = 0; ch < MIDI_CHANNELS; ++ch) { - QAction* a = m->addAction(QString("Channel %1").arg(ch+1)); - a->setCheckable(true); - RouteNode dst(sy, ch, RouteNode::TRACK); - Route r = Route(src, dst); - a->setData(QVariant::fromValue(r)); - a->setChecked(rl->indexOf(r) != -1); - } - } - } - -//--------------------------------------------------------- -// addKnob -//--------------------------------------------------------- - -void MidiStrip::addKnob(int ctrl, int idx, const QString& tt, const QString& label, - const char* slot, bool enabled, int row) - { - Awl::FloatEntry* dl; - Awl::Knob* knob; - - if (idx == KNOB_PAN) { - dl = new Awl::MidiPanEntry(this); - knob = new Awl::MidiPanKnob(this); - } - else { - dl = new Awl::MidiVolEntry(this); - knob = new Awl::Knob(this); - knob->setRange(0.0, 127.0); - } - knob->setId(ctrl); - dl->setId(ctrl); - dl->setFrame(true); - - controller[idx].knob = knob; - knob->setToolTip(tt); - knob->setEnabled(enabled); - - controller[idx].dl = dl; - dl->setFixedSize(entrySize); - dl->setEnabled(enabled); - - QLabel* lb = new QLabel(label, this); - lb->setObjectName("knobLabel"); - controller[idx].lb = lb; - lb->setFixedSize(entrySize); - lb->setAlignment(Qt::AlignCenter); - lb->setEnabled(enabled); - - grid->addWidget(lb, row, 0); - grid->addWidget(dl, row+1, 0); - grid->addWidget(knob, row, 1, 2, 1); - - connect(knob, SIGNAL(valueChanged(double,int)), slot); - connect(dl, SIGNAL(valueChanged(double,int)), slot); - connect(knob, SIGNAL(sliderPressed(int)), SLOT(sliderPressed(int))); - connect(knob, SIGNAL(sliderReleased(int)), SLOT(sliderReleased(int))); - } - -//--------------------------------------------------------- -// MidiStrip -//--------------------------------------------------------- - -MidiStrip::MidiStrip(Mixer* m, MidiTrack* t, bool align) - : Strip(m, t, align) - { - volumeTouched = false; - panTouched = false; - reverbSendTouched = false; - variSendTouched = false; - chorusSendTouched = false; - - addKnob(CTRL_VARIATION_SEND, KNOB_VAR_SEND, tr("VariationSend"), tr("Var"), SLOT(ctrlChanged(double,int)), true, 1); - addKnob(CTRL_REVERB_SEND, KNOB_REV_SEND, tr("ReverbSend"), tr("Rev"), SLOT(ctrlChanged(double,int)), true, 3); - addKnob(CTRL_CHORUS_SEND, KNOB_CHOR_SEND, tr("ChorusSend"), tr("Cho"), SLOT(ctrlChanged(double,int)), true, 5); - - //--------------------------------------------------- - // slider, label, meter - //--------------------------------------------------- - - slider = new Awl::MidiMeterSlider(this); - slider->setId(CTRL_VOLUME); - slider->setFixedWidth(40); - grid->addWidget(slider, 7, 0, 1, 2, Qt::AlignRight); - - sl = new Awl::MidiVolEntry(this); - sl->setId(CTRL_VOLUME); - sl->setFixedHeight(entrySize.height()); - - connect(slider, SIGNAL(valueChanged(double,int)), SLOT(ctrlChanged(double, int))); - connect(slider, SIGNAL(sliderPressed(int)), SLOT(sliderPressed(int))); - connect(slider, SIGNAL(sliderReleased(int)), SLOT(sliderReleased(int))); - connect(sl, SIGNAL(valueChanged(double,int)), SLOT(ctrlChanged(double, int))); - grid->addWidget(sl, 8, 0, 1, 2); - - //--------------------------------------------------- - // pan, balance - //--------------------------------------------------- - - addKnob(CTRL_PANPOT, KNOB_PAN, tr("Pan/Balance"), tr("Pan"), SLOT(ctrlChanged(double,int)), true, 9); - - //--------------------------------------------------- - // --- record - // mute, solo - //--------------------------------------------------- - - SimpleButton* monitor = newMonitorButton(); - monitor->setFixedHeight(BUTTON_HEIGHT); - monitor->setChecked(track->monitor()); - connect(monitor, SIGNAL(clicked(bool)), SLOT(monitorToggled(bool))); - connect(t, SIGNAL(monitorChanged(bool)), monitor, SLOT(setChecked(bool))); - - SimpleButton* record = newRecordButton(); - record->setFixedHeight(BUTTON_HEIGHT); - record->setChecked(track->recordFlag()); - connect(record, SIGNAL(clicked(bool)), SLOT(recordToggled(bool))); - connect(t, SIGNAL(recordChanged(bool)), record, SLOT(setChecked(bool))); - - mute = newMuteButton(); - mute->setChecked(track->isMute()); - mute->setFixedHeight(BUTTON_HEIGHT); - connect(mute, SIGNAL(clicked(bool)), SLOT(muteToggled(bool))); - - solo = newSoloButton(); - solo->setFixedHeight(BUTTON_HEIGHT); - solo->setChecked(track->solo()); - connect(solo, SIGNAL(clicked(bool)), SLOT(soloToggled(bool))); - - grid->addWidget(monitor, 11, 0); - grid->addWidget(record, 11, 1); - grid->addWidget(mute, 12, 0); - grid->addWidget(solo, 12, 1); - - //--------------------------------------------------- - // automation mode - //--------------------------------------------------- - - addAutomationButtons(13); - - //--------------------------------------------------- - // routing - //--------------------------------------------------- - - iR = newInRouteButton(); - grid->addWidget(iR, 14, 0); - connect(iR->menu(), SIGNAL(aboutToShow()), SLOT(iRouteShow())); - connect(iR->menu(), SIGNAL(triggered(QAction*)), song, SLOT(routeChanged(QAction*))); - - oR = newOutRouteButton(); - grid->addWidget(oR, 14, 1); - connect(oR->menu(), SIGNAL(aboutToShow()), SLOT(oRouteShow())); - connect(oR->menu(), SIGNAL(triggered(QAction*)), song, SLOT(routeChanged(QAction*))); - - connect(song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); - connect(track, SIGNAL(muteChanged(bool)), mute, SLOT(setChecked(bool))); - connect(track, SIGNAL(soloChanged(bool)), solo, SLOT(setChecked(bool))); - connect(track, SIGNAL(autoReadChanged(bool)), SLOT(autoChanged())); - connect(track, SIGNAL(autoWriteChanged(bool)), SLOT(autoChanged())); - connect(track, SIGNAL(controllerChanged(int)), SLOT(controllerChanged(int))); - autoChanged(); - controllerChanged(CTRL_VOLUME); - controllerChanged(CTRL_PANPOT); - controllerChanged(CTRL_VARIATION_SEND); - controllerChanged(CTRL_REVERB_SEND); - controllerChanged(CTRL_CHORUS_SEND); - } - -//--------------------------------------------------------- -// songChanged -//--------------------------------------------------------- - -void MidiStrip::songChanged(int val) - { - if (val & SC_TRACK_MODIFIED) - updateLabel(); - } - -//--------------------------------------------------------- -// heartBeat -//--------------------------------------------------------- - -void MidiStrip::heartBeat() - { - double a = track->meter(0); // fast_log10(track->meter(0)) * .2f; - slider->setMeterVal(a * 0.008); - track->setMeter(0, a * 0.8); // hack - } - -//--------------------------------------------------------- -// controllerChanged -//--------------------------------------------------------- - -void MidiStrip::controllerChanged(int id) - { - CVal cv = track->ctrlVal(id); - double val = double(cv.i); - - switch (id) { - case CTRL_VOLUME: - if (!volumeTouched) - slider->setValue(val); - sl->setValue(val); - break; - case CTRL_PANPOT: - if (!panTouched) - controller[KNOB_PAN].knob->setValue(val); - controller[KNOB_PAN].dl->setValue(val); - break; - case CTRL_VARIATION_SEND: - if (!variSendTouched) - controller[KNOB_VAR_SEND].knob->setValue(val); - controller[KNOB_VAR_SEND].dl->setValue(val); - break; - case CTRL_REVERB_SEND: - if (!reverbSendTouched) - controller[KNOB_REV_SEND].knob->setValue(val); - controller[KNOB_REV_SEND].dl->setValue(val); - break; - case CTRL_CHORUS_SEND: - if (!chorusSendTouched) - controller[KNOB_CHOR_SEND].knob->setValue(val); - controller[KNOB_CHOR_SEND].dl->setValue(val); - break; - } - } - -//--------------------------------------------------------- -// ctrlChanged -// called when user changes controller -//--------------------------------------------------------- - -void MidiStrip::ctrlChanged(double val, int num) - { - int ival = int(val); - CVal cval; - cval.i = ival; - song->setControllerVal(track, num, cval); - } - -//--------------------------------------------------------- -// sliderPressed -//--------------------------------------------------------- - -void MidiStrip::sliderPressed(int id) - { - switch (id) { - case CTRL_VOLUME: volumeTouched = true; break; - case CTRL_PANPOT: panTouched = true; break; - case CTRL_VARIATION_SEND: variSendTouched = true; break; - case CTRL_REVERB_SEND: reverbSendTouched = true; break; - case CTRL_CHORUS_SEND: chorusSendTouched = true; break; - } - track->startAutoRecord(id); - } - -//--------------------------------------------------------- -// sliderReleased -//--------------------------------------------------------- - -void MidiStrip::sliderReleased(int id) - { - switch (id) { - case CTRL_VOLUME: volumeTouched = false; break; - case CTRL_PANPOT: panTouched = false; break; - case CTRL_VARIATION_SEND: variSendTouched = false; break; - case CTRL_REVERB_SEND: reverbSendTouched = false; break; - case CTRL_CHORUS_SEND: chorusSendTouched = false; break; - } - track->stopAutoRecord(id); - } - -//--------------------------------------------------------- -// muteToggled -//--------------------------------------------------------- - -void MidiStrip::muteToggled(bool val) - { - song->setMute(track, val); - } - -//--------------------------------------------------------- -// soloToggled -//--------------------------------------------------------- - -void MidiStrip::soloToggled(bool val) - { - song->setSolo(track, val); - } - -//--------------------------------------------------------- -// autoChanged -//--------------------------------------------------------- - -void MidiStrip::autoChanged() - { - bool ar = track->autoRead(); - bool aw = track->autoWrite(); - - // controller are enabled if - // autoRead is off - // autoRead and autoWrite are on (touch mode) - - bool ec = !ar || (ar && aw); - for (unsigned i = 0; i < sizeof(controller)/sizeof(*controller); ++i) { - controller[i].knob->setEnabled(ec); - controller[i].dl->setEnabled(ec); - } - slider->setEnabled(ec); - sl->setEnabled(ec); - } - -//--------------------------------------------------------- -// autoReadToggled -//--------------------------------------------------------- - -void MidiStrip::autoReadToggled(bool val) - { - song->setAutoRead(track, val); - } - -//--------------------------------------------------------- -// autoWriteToggled -//--------------------------------------------------------- - -void MidiStrip::autoWriteToggled(bool val) - { - song->setAutoWrite(track, val); - } - -//--------------------------------------------------------- -// iRouteShow -//--------------------------------------------------------- - -void MidiStrip::iRouteShow() - { - QMenu* pup = iR->menu(); - pup->clear(); - addMidiInPorts(pup, track, -1); // add midi inputs to menu - } - -//--------------------------------------------------------- -// oRouteShow -//--------------------------------------------------------- - -void MidiStrip::oRouteShow() - { - QMenu* pup = oR->menu(); - pup->clear(); - addMidiOutPorts(pup, track, -1); - addSyntiPorts(pup, track, -1); - } - -//--------------------------------------------------------- -// monitorToggled -//--------------------------------------------------------- - -void MidiStrip::monitorToggled(bool val) - { - song->setMonitor(track, val); - } - -//--------------------------------------------------------- -// recordToggled -//--------------------------------------------------------- - -void MidiStrip::recordToggled(bool val) - { - song->setRecordFlag(track, !val); - } - -//--------------------------------------------------------- -// MidiOutPortStrip -//--------------------------------------------------------- - -MidiOutPortStrip::MidiOutPortStrip(Mixer* m, MidiOutPort* t, bool align) - : Strip(m, t, align) - { - //--------------------------------------------------- - // plugin rack - //--------------------------------------------------- - - MidiRack* rack = new MidiRack(this, t); - rack->setFixedHeight(rack->sizeHint().height()+2); - grid->addWidget(rack, 1, 0, 1, 2); - - - if (_align) - grid->setRowMinimumHeight(2, STRIP_WIDTH/2); - - volumeTouched = false; - - //--------------------------------------------------- - // slider, label, meter - //--------------------------------------------------- - - slider = new Awl::MidiMeterSlider(this); - slider->setId(CTRL_MASTER_VOLUME); - slider->setRange(0.0, 1024*16.0); - slider->setFixedWidth(40); - grid->addWidget(slider, 3, 0, 1, 2, Qt::AlignRight); - - sl = new Awl::MidiVolEntry(this); - sl->setId(CTRL_MASTER_VOLUME); - sl->setMax(128 * 128 - 1); -// sl->setFont(config.fonts[1]); - sl->setFixedHeight(entrySize.height()); - - controllerChanged(CTRL_MASTER_VOLUME); - - connect(slider, SIGNAL(valueChanged(double,int)), SLOT(ctrlChanged(double, int))); - connect(slider, SIGNAL(sliderPressed(int)), SLOT(sliderPressed(int))); - connect(slider, SIGNAL(sliderReleased(int)), SLOT(sliderReleased(int))); - connect(sl, SIGNAL(valueChanged(double,int)), SLOT(ctrlChanged(double, int))); - grid->addWidget(sl, 4, 0, 1, 2); - - //--------------------------------------------------- - // pan, balance - //--------------------------------------------------- - - if (_align) - grid->setRowMinimumHeight(5, entrySize.height() * 2); - - //--------------------------------------------------- - // sync - // mute, solo - //--------------------------------------------------- - - sync = newSyncButton(); - sync->setFixedHeight(BUTTON_HEIGHT); - sync->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - sync->setChecked(((MidiOutPort*)track)->sendSync()); - grid->addWidget(sync, 6, 0, 1, 2); - connect(sync, SIGNAL(clicked(bool)), SLOT(syncToggled(bool))); - connect(track, SIGNAL(sendSyncChanged(bool)), sync, SLOT(setChecked(bool))); - - mute = newMuteButton(); - mute->setChecked(track->isMute()); - mute->setFixedHeight(BUTTON_HEIGHT); - connect(mute, SIGNAL(clicked(bool)), SLOT(muteToggled(bool))); - - solo = newSoloButton(); - solo->setFixedHeight(BUTTON_HEIGHT); - solo->setChecked(track->solo()); - connect(solo, SIGNAL(clicked(bool)), SLOT(soloToggled(bool))); - - grid->addWidget(mute, 7, 0); - grid->addWidget(solo, 7, 1); - - //--------------------------------------------------- - // automation mode - //--------------------------------------------------- - - addAutomationButtons(8); - - //--------------------------------------------------- - // output routing - //--------------------------------------------------- - - iR = newInRouteButton(); - grid->addWidget(iR, 9, 0); - connect(iR->menu(), SIGNAL(aboutToShow()), SLOT(iRouteShow())); - connect(iR->menu(), SIGNAL(triggered(QAction*)), song, SLOT(routeChanged(QAction*))); - - oR = newOutRouteButton(); - grid->addWidget(oR, 9, 1); - connect(oR->menu(), SIGNAL(aboutToShow()), SLOT(oRouteShow())); - connect(oR->menu(), SIGNAL(triggered(QAction*)), song, SLOT(routeChanged(QAction*))); - - connect(song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); - connect(track, SIGNAL(muteChanged(bool)), mute, SLOT(setChecked(bool))); - connect(track, SIGNAL(soloChanged(bool)), solo, SLOT(setChecked(bool))); - connect(track, SIGNAL(autoReadChanged(bool)), SLOT(autoChanged())); - connect(track, SIGNAL(autoWriteChanged(bool)), SLOT(autoChanged())); - autoChanged(); - controllerChanged(CTRL_MASTER_VOLUME); - } - -//--------------------------------------------------------- -// songChanged -//--------------------------------------------------------- - -void MidiOutPortStrip::songChanged(int val) - { - if (val & SC_TRACK_MODIFIED) - updateLabel(); - } - -//--------------------------------------------------------- -// heartBeat -//--------------------------------------------------------- - -void MidiOutPortStrip::heartBeat() - { - double a = track->meter(0); // fast_log10(track->meter(0)) * .2f; - slider->setMeterVal(a * 0.008); - track->setMeter(0, a * 0.8); // hack - } - -//--------------------------------------------------------- -// ctrlChanged -//--------------------------------------------------------- - -void MidiOutPortStrip::ctrlChanged(double val, int num) - { - int ival = int(val); - CVal cval; - cval.i = ival; - song->setControllerVal(track, num, cval); - } - -//--------------------------------------------------------- -// sliderPressed -//--------------------------------------------------------- - -void MidiOutPortStrip::sliderPressed(int id) - { - switch (id) { - case CTRL_MASTER_VOLUME: volumeTouched = true; break; - } - track->startAutoRecord(id); - } - -//--------------------------------------------------------- -// sliderReleased -//--------------------------------------------------------- - -void MidiOutPortStrip::sliderReleased(int id) - { - switch (id) { - case CTRL_MASTER_VOLUME: volumeTouched = false; break; - } - track->stopAutoRecord(id); - } - -//--------------------------------------------------------- -// muteToggled -//--------------------------------------------------------- - -void MidiOutPortStrip::muteToggled(bool val) - { - song->setMute(track, val); - } - -//--------------------------------------------------------- -// soloToggled -//--------------------------------------------------------- - -void MidiOutPortStrip::soloToggled(bool val) - { - song->setSolo(track, val); - } - -//--------------------------------------------------------- -// autoChanged -//--------------------------------------------------------- - -void MidiOutPortStrip::autoChanged() - { - bool ar = track->autoRead(); - bool aw = track->autoWrite(); - - // controller are enabled if - // autoRead is off - // autoRead and autoWrite are on (touch mode) - - bool ec = !ar || (ar && aw); - slider->setEnabled(ec); - sl->setEnabled(ec); - } - -//--------------------------------------------------------- -// autoReadToggled -//--------------------------------------------------------- - -void MidiOutPortStrip::autoReadToggled(bool val) - { - song->setAutoRead(track, val); - } - -//--------------------------------------------------------- -// autoWriteToggled -//--------------------------------------------------------- - -void MidiOutPortStrip::autoWriteToggled(bool val) - { - song->setAutoWrite(track, val); - } - -//--------------------------------------------------------- -// controllerChanged -//--------------------------------------------------------- - -void MidiOutPortStrip::controllerChanged(int id) - { - if (id == CTRL_MASTER_VOLUME) { - double val = double(track->ctrlVal(id).i); - if (!volumeTouched) - slider->setValue(val); - sl->setValue(val); - } - } - -//--------------------------------------------------------- -// iRouteShow -//--------------------------------------------------------- - -void MidiOutPortStrip::iRouteShow() - { - QMenu* pup = iR->menu(); - pup->clear(); - - for (int ch = 0; ch < MIDI_CHANNELS; ++ch) { - QMenu* m = pup->addMenu(QString("Channel %1").arg(ch+1)); - addMidiTracks(m, track, ch, true); - addMidiInPorts(m, track, ch); - } - } - -//--------------------------------------------------------- -// oRouteShow -//--------------------------------------------------------- - -void MidiOutPortStrip::oRouteShow() - { - QMenu* pup = oR->menu(); - pup->clear(); - RouteList* orl = track->outRoutes(); - - QList ol; - // - // add JACK midi ports to list - // - ol = audioDriver->inputPorts(true); - foreach (PortName ip, ol) { - QAction* oa = pup->addAction(ip.name); - oa->setCheckable(true); - RouteNode dst(ip.port, RouteNode::JACKMIDIPORT); - Route r = Route(RouteNode(track), dst); - oa->setData(QVariant::fromValue(r)); - oa->setChecked(orl->indexOf(r) != -1); - } - } - -//--------------------------------------------------------- -// syncToggled -//--------------------------------------------------------- - -void MidiOutPortStrip::syncToggled(bool val) const - { - ((MidiOutPort*)track)->setSendSync(val); - } - -//--------------------------------------------------------- -// MidiInPortStrip -//--------------------------------------------------------- - -MidiInPortStrip::MidiInPortStrip(Mixer* m, MidiInPort* t, bool align) - : Strip(m, t, align) - { - //--------------------------------------------------- - // plugin rack - //--------------------------------------------------- - - MidiRack* rack = new MidiRack(this, t); - rack->setFixedHeight(rack->sizeHint().height()+2); - grid->addWidget(rack, 1, 0, 1, 2); - - //--------------------------------------------------- - // input activity - //--------------------------------------------------- - - grid->setRowStretch(2, 100); - - QGridLayout* ag = new QGridLayout; - ag->setMargin(4); - ag->setSpacing(1); - QSvgRenderer sr; - QPainter painter; - - sr.load(QString(":/xpm/activeon.svg")); - QSize aSize(sr.defaultSize()); - activityOn = new QPixmap(aSize); - activityOn->fill(Qt::transparent); - painter.begin(activityOn); - sr.render(&painter); - painter.end(); - - sr.load(QString(":/xpm/activeoff.svg")); - activityOff = new QPixmap(aSize); - activityOff->fill(Qt::transparent); - painter.begin(activityOff); - sr.render(&painter); - painter.end(); - - for (int ch = MIDI_CHANNELS-1; ch >= 0; --ch) { - QLabel* l = new QLabel(QString("%1").arg(ch+1)); - l->setObjectName("midiChannelLabel"); - ag->addWidget(l, ch, 0, Qt::AlignCenter); - channelActivity[ch] = new QLabel; - ag->addWidget(channelActivity[ch], ch, 1, Qt::AlignCenter); - channelActivity[ch]->setPixmap(*activityOff); - activity[ch] = 0; - } - grid->addLayout(ag, 3, 0, 2, Qt::AlignHCenter); - - if (_align) - grid->setRowMinimumHeight(4, BUTTON_HEIGHT); - - //--------------------------------------------------- - // mute, solo - // or - // record, mixdownfile - //--------------------------------------------------- - - mute = newMuteButton(); - mute->setChecked(track->isMute()); - mute->setFixedHeight(BUTTON_HEIGHT); - connect(mute, SIGNAL(clicked(bool)), SLOT(muteToggled(bool))); - - solo = newSoloButton(); - solo->setFixedHeight(BUTTON_HEIGHT); - solo->setChecked(track->solo()); - connect(solo, SIGNAL(clicked(bool)), SLOT(soloToggled(bool))); - - grid->addWidget(mute, 5, 0); - grid->addWidget(solo, 5, 1); - - //--------------------------------------------------- - // output routing - //--------------------------------------------------- - - if (_align) - grid->setRowMinimumHeight(6, BUTTON_HEIGHT); - - iR = newInRouteButton(); - connect(iR->menu(), SIGNAL(aboutToShow()), SLOT(iRouteShow())); - connect(iR->menu(), SIGNAL(triggered(QAction*)), song, SLOT(routeChanged(QAction*))); - - oR = newOutRouteButton(); - connect(oR->menu(), SIGNAL(aboutToShow()), SLOT(oRouteShow())); - connect(oR->menu(), SIGNAL(triggered(QAction*)), song, SLOT(routeChanged(QAction*))); - - grid->addWidget(iR, 7, 0); - grid->addWidget(oR, 7, 1); - - connect(song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); - connect(track, SIGNAL(muteChanged(bool)), mute, SLOT(setChecked(bool))); - connect(track, SIGNAL(soloChanged(bool)), solo, SLOT(setChecked(bool))); - } - -//--------------------------------------------------------- -// songChanged -//--------------------------------------------------------- - -void MidiInPortStrip::songChanged(int val) - { - if (val & SC_TRACK_MODIFIED) - updateLabel(); - } - -//--------------------------------------------------------- -// heartBeat -//--------------------------------------------------------- - -void MidiInPortStrip::heartBeat() - { - for (int i = 0; i < MIDI_CHANNELS; ++i) { - bool isActive = inport()->checkActivity(i); - if (activity[i] != isActive) { - channelActivity[i]->setPixmap(isActive ? *activityOn : *activityOff); - activity[i] = isActive; - } - } - } - -//--------------------------------------------------------- -// muteToggled -//--------------------------------------------------------- - -void MidiInPortStrip::muteToggled(bool val) - { - song->setMute(track, val); - } - -//--------------------------------------------------------- -// soloToggled -//--------------------------------------------------------- - -void MidiInPortStrip::soloToggled(bool val) - { - song->setSolo(track, val); - } - -//--------------------------------------------------------- -// iRouteShow -//--------------------------------------------------------- - -void MidiInPortStrip::iRouteShow() - { - QMenu* pup = iR->menu(); - pup->clear(); - - RouteList* irl = track->inRoutes(); - - QList ol; - // - // add JACK midi ports to list - // - ol = audioDriver->outputPorts(true); - foreach (PortName ip, ol) { - QAction* action = pup->addAction(ip.name); - action->setCheckable(true); - RouteNode src(ip.port, RouteNode::JACKMIDIPORT); - Route r = Route(src, RouteNode(track)); - action->setData(QVariant::fromValue(r)); - action->setChecked(irl->indexOf(r) != -1); - } - } - -//--------------------------------------------------------- -// oRouteShow -//--------------------------------------------------------- - -void MidiInPortStrip::oRouteShow() - { - QMenu* pup = oR->menu(); - pup->clear(); - - for (int ch = 0; ch < MIDI_CHANNELS; ++ch) { - QMenu* m = pup->addMenu(QString("Channel %1").arg(ch+1)); - addMidiTracks(m, track, ch, false); - addSyntiPorts(m, track, ch); - addMidiOutPorts(m, track, ch); - } - } - -//--------------------------------------------------------- -// MidiSyntiStrip -//--------------------------------------------------------- - -MidiSyntiStrip::MidiSyntiStrip(Mixer* m, MidiSynti* t, bool align) - : Strip(m, t, align) - { - if (_align) - grid->setRowMinimumHeight(1, STRIP_WIDTH/2 * 3); - - volumeTouched = false; - - //--------------------------------------------------- - // slider, label, meter - //--------------------------------------------------- - - slider = new Awl::MidiMeterSlider(this); - slider->setId(CTRL_MASTER_VOLUME); - slider->setRange(0.0, 1024*16.0); - slider->setFixedWidth(40); - grid->addWidget(slider, 2, 0, 1, 2, Qt::AlignRight); - - sl = new Awl::MidiVolEntry(this); - sl->setId(CTRL_MASTER_VOLUME); -// sl->setFont(config.fonts[1]); - sl->setFixedHeight(entrySize.height()); - - connect(slider, SIGNAL(valueChanged(double,int)), SLOT(ctrlChanged(double, int))); - connect(slider, SIGNAL(sliderPressed(int)), SLOT(sliderPressed(int))); - connect(slider, SIGNAL(sliderReleased(int)), SLOT(sliderReleased(int))); - connect(sl, SIGNAL(valueChanged(double,int)), SLOT(ctrlChanged(double, int))); - grid->addWidget(sl, 3, 0, 1, 2); - - //--------------------------------------------------- - // pan, balance - //--------------------------------------------------- - - if (_align) - grid->setRowMinimumHeight(4, STRIP_WIDTH); - - //--------------------------------------------------- - // sync - // mute, solo - //--------------------------------------------------- - - mute = newMuteButton(); - mute->setChecked(track->isMute()); - mute->setFixedHeight(BUTTON_HEIGHT); - connect(mute, SIGNAL(clicked(bool)), SLOT(muteToggled(bool))); - - solo = newSoloButton(); - solo->setFixedHeight(BUTTON_HEIGHT); - solo->setChecked(track->solo()); - connect(solo, SIGNAL(clicked(bool)), SLOT(soloToggled(bool))); - - grid->addWidget(mute, 5, 0); - grid->addWidget(solo, 5, 1); - - //--------------------------------------------------- - // automation mode - //--------------------------------------------------- - - addAutomationButtons(6); - - //--------------------------------------------------- - // output routing - //--------------------------------------------------- - - iR = newInRouteButton(); - grid->addWidget(iR, 7, 0); - connect(iR->menu(), SIGNAL(aboutToShow()), SLOT(iRouteShow())); - connect(iR->menu(), SIGNAL(triggered(QAction*)), song, SLOT(routeChanged(QAction*))); - - oR = newOutRouteButton(); - grid->addWidget(oR, 7, 1); - connect(oR->menu(), SIGNAL(aboutToShow()), SLOT(oRouteShow())); - connect(oR->menu(), SIGNAL(triggered(QAction*)), song, SLOT(routeChanged(QAction*))); - - connect(song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); - connect(track, SIGNAL(muteChanged(bool)), mute, SLOT(setChecked(bool))); - connect(track, SIGNAL(soloChanged(bool)), solo, SLOT(setChecked(bool))); - connect(track, SIGNAL(autoReadChanged(bool)), SLOT(autoChanged())); - connect(track, SIGNAL(autoWriteChanged(bool)), SLOT(autoChanged())); - autoChanged(); - } - -//--------------------------------------------------------- -// songChanged -//--------------------------------------------------------- - -void MidiSyntiStrip::songChanged(int val) - { - if (val & SC_TRACK_MODIFIED) - updateLabel(); - } - -//--------------------------------------------------------- -// heartBeat -//--------------------------------------------------------- - -void MidiSyntiStrip::heartBeat() - { - double a = track->meter(0); // fast_log10(track->meter(0)) * .2f; - slider->setMeterVal(a * 0.008); - track->setMeter(0, a * 0.8); // hack - } - -//--------------------------------------------------------- -// ctrlChanged -//--------------------------------------------------------- - -void MidiSyntiStrip::ctrlChanged(double val, int num) - { - int ival = int(val); - CVal cval; - cval.i = ival; - song->setControllerVal(track, num, cval); - } - -//--------------------------------------------------------- -// sliderPressed -//--------------------------------------------------------- - -void MidiSyntiStrip::sliderPressed(int id) - { - switch (id) { - case CTRL_MASTER_VOLUME: volumeTouched = true; break; - } - track->startAutoRecord(id); - } - -//--------------------------------------------------------- -// sliderReleased -//--------------------------------------------------------- - -void MidiSyntiStrip::sliderReleased(int id) - { - switch (id) { - case CTRL_MASTER_VOLUME: volumeTouched = false; break; - } - track->stopAutoRecord(id); - } - -//--------------------------------------------------------- -// muteToggled -//--------------------------------------------------------- - -void MidiSyntiStrip::muteToggled(bool val) - { - song->setMute(track, val); - } - -//--------------------------------------------------------- -// soloToggled -//--------------------------------------------------------- - -void MidiSyntiStrip::soloToggled(bool val) - { - song->setSolo(track, val); - } - -//--------------------------------------------------------- -// autoChanged -//--------------------------------------------------------- - -void MidiSyntiStrip::autoChanged() - { - bool ar = track->autoRead(); - bool aw = track->autoWrite(); - - // controller are enabled if - // autoRead is off - // autoRead and autoWrite are on (touch mode) - - bool ec = !ar || (ar && aw); - slider->setEnabled(ec); - sl->setEnabled(ec); - } - -//--------------------------------------------------------- -// autoReadToggled -//--------------------------------------------------------- - -void MidiSyntiStrip::autoReadToggled(bool val) - { - song->setAutoRead(track, val); - } - -//--------------------------------------------------------- -// autoWriteToggled -//--------------------------------------------------------- - -void MidiSyntiStrip::autoWriteToggled(bool val) - { - song->setAutoWrite(track, val); - } - -//--------------------------------------------------------- -// controllerChanged -//--------------------------------------------------------- - -void MidiSyntiStrip::controllerChanged(int id) - { - if (id == CTRL_MASTER_VOLUME) { - double val = double(track->ctrlVal(id).i); - if (!volumeTouched) - slider->setValue(val); - sl->setValue(val); - } - } - -//--------------------------------------------------------- -// oRouteShow -//--------------------------------------------------------- - -void MidiSyntiStrip::oRouteShow() - { - QMenu* pup = oR->menu(); - pup->clear(); - addMidiOutPorts(pup, track, -1); - } - -//--------------------------------------------------------- -// iRouteShow -//--------------------------------------------------------- - -void MidiSyntiStrip::iRouteShow() - { - QMenu* pup = oR->menu(); - pup->clear(); - - MidiOutPort* t = (MidiOutPort*)track; - - for (int ch = 0; ch < MIDI_CHANNELS; ++ch) { - QMenu* m = pup->addMenu(QString("Channel %1").arg(ch+1)); - addMidiTracks(m, t, ch, false); - addMidiInPorts(m, t, ch); - } - } diff --git a/muse/muse/mstrip.h b/muse/muse/mstrip.h deleted file mode 100644 index 058884db..00000000 --- a/muse/muse/mstrip.h +++ /dev/null @@ -1,191 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __MSTRIP_H__ -#define __MSTRIP_H__ - -#include "strip.h" - -namespace Awl { - class MidiMeterSlider; - class MidiMeter; - class FloatEntry; - class MidiVolEntry; - class Knob; - }; - -class MidiTrack; -class MidiOutPort; -class MidiInPort; -class MidiChannel; -class MidiSynti; - -//--------------------------------------------------------- -// MidiStrip -//--------------------------------------------------------- - -class MidiStrip : public Strip { - Q_OBJECT - - Awl::MidiMeterSlider* slider; - Awl::MidiVolEntry* sl; - QToolButton* iR; - QToolButton* oR; - - struct KNOB { - Awl::Knob* knob; - Awl::FloatEntry* dl; - QLabel* lb; - } controller[4]; // pan variation reverb chorus - - bool volumeTouched; - bool panTouched; - bool reverbSendTouched; - bool variSendTouched; - bool chorusSendTouched; - - void addKnob(int ctrl, int idx, const QString&, const QString&, const char*, bool, int row); - - private slots: - virtual void controllerChanged(int id); - void ctrlChanged(double val, int num); - void muteToggled(bool); - void soloToggled(bool); - void autoChanged(); - void sliderPressed(int); - void sliderReleased(int); - void autoReadToggled(bool); - void autoWriteToggled(bool); - void iRouteShow(); - void oRouteShow(); - void recordToggled(bool); - void monitorToggled(bool); - QMenu* sendMenu() const { return static_cast(sender()); } - - public slots: - virtual void songChanged(int); - - public: - MidiStrip(Mixer*, MidiTrack*, bool align = true); - virtual void heartBeat(); - }; - -//--------------------------------------------------------- -// MidiOutPortStrip -//--------------------------------------------------------- - -class MidiOutPortStrip : public Strip { - Q_OBJECT - - Awl::MidiMeterSlider* slider; - Awl::MidiVolEntry* sl; - QToolButton* oR; - QToolButton* iR; - SimpleButton* sync; - - bool volumeTouched; - - private slots: - virtual void controllerChanged(int id); - void ctrlChanged(double val, int num); - void muteToggled(bool); - void soloToggled(bool); - void autoChanged(); - void sliderPressed(int); - void sliderReleased(int); - void autoReadToggled(bool); - void autoWriteToggled(bool); - void iRouteShow(); - void oRouteShow(); - void syncToggled(bool) const; - - public slots: - virtual void songChanged(int); - - public: - MidiOutPortStrip(Mixer*, MidiOutPort*, bool align = true); - virtual void heartBeat(); - }; - -//--------------------------------------------------------- -// MidiSyntiStrip -//--------------------------------------------------------- - -class MidiSyntiStrip : public Strip { - Q_OBJECT - - Awl::MidiMeterSlider* slider; - Awl::MidiVolEntry* sl; - QToolButton* iR; - QToolButton* oR; - - bool volumeTouched; - - private slots: - virtual void controllerChanged(int id); - void ctrlChanged(double val, int num); - void muteToggled(bool); - void soloToggled(bool); - void autoChanged(); - void sliderPressed(int); - void sliderReleased(int); - void autoReadToggled(bool); - void autoWriteToggled(bool); - void iRouteShow(); - void oRouteShow(); - - public slots: - virtual void songChanged(int); - - public: - MidiSyntiStrip(Mixer*, MidiSynti*, bool align = true); - virtual void heartBeat(); - }; - -//--------------------------------------------------------- -// MidiInPortStrip -//--------------------------------------------------------- - -class MidiInPortStrip : public Strip { - Q_OBJECT - - bool activity[MIDI_CHANNELS]; - QPixmap* activityOn; - QPixmap* activityOff; - QLabel* channelActivity[MIDI_CHANNELS]; - QToolButton* iR; - QToolButton* oR; - MidiInPort* inport() const { return (MidiInPort*)track; } - - private slots: - void muteToggled(bool); - void soloToggled(bool); - void iRouteShow(); - void oRouteShow(); - - public slots: - virtual void songChanged(int); - - public: - MidiInPortStrip(Mixer*, MidiInPort*, bool align = true); - virtual void heartBeat(); - }; - -#endif diff --git a/muse/muse/mtc.cpp b/muse/muse/mtc.cpp deleted file mode 100644 index 54ed5584..00000000 --- a/muse/muse/mtc.cpp +++ /dev/null @@ -1,131 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "al/al.h" -#include "mtc.h" - -//--------------------------------------------------------- -// MTC::time -// converts MTC Time to seconds according to -// global mtcType -//--------------------------------------------------------- - -double MTC::time() const - { - double time = _h * 3600 + _m * 60 + _s; - double ft = 0.0; - switch (AL::mtcType) { - case 0: // 24 frames sec - ft = 1.0/24.0; - break; - case 1: // 25 - ft = 0.04; - break; - case 2: // 30 drop frame TODO - case 3: // 30 non drop frame - ft = 1.0/30.0; - break; - } - return time + ft *_f + 0.01 * ft * _sf; - } - -//--------------------------------------------------------- -// MTC -//--------------------------------------------------------- - -MTC::MTC(double t) - { - _h = int(t/3600); - t -= _h * 3600; - _m = int(t/60); - t -= _m * 60; - _s = int(t); - t -= _s; - double ft = 1.0/24.0; - switch (AL::mtcType) { - case 0: // 24 frames sec - ft = 1.0/24.0; - break; - case 1: // 25 - ft = 0.04; - break; - case 2: // 30 drop frame - case 3: // 30 non drop frame - ft = 1.0/30.0; - break; - } - double frames = t / ft; - _f = int(frames); - frames -= _f; - _sf = int(frames * 100); - } - -//--------------------------------------------------------- -// incQuarter -// increment MTC time one quarter frame time -//--------------------------------------------------------- - -void MTC::incQuarter() - { - int frames = 24; - switch (AL::mtcType) { - case 0: - frames = 24; - break; - case 1: - frames = 25; - break; - case 2: - case 3: - frames = 30; - break; - } - _sf += 25; - if (_sf >= 100) { - ++_f; - _sf -= 100; - } - if (_f == frames) { - ++_s; - _f = 0; - } - if (_s == 60) { - ++_m; - _s = 0; - } - if (_m == 60) { - ++_h; - _m = 0; - } - if (_h == 24) { - _h = 0; - } - } - -//--------------------------------------------------------- -// print -//--------------------------------------------------------- - -void MTC::print() const - { - printf("%02d:%02d:%02d:%02d:%02d", _h, _m, _s, _f, _sf); - } - - diff --git a/muse/muse/mtc.h b/muse/muse/mtc.h deleted file mode 100644 index 862bc5b1..00000000 --- a/muse/muse/mtc.h +++ /dev/null @@ -1,68 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __MTC_H__ -#define __MTC_H__ - -//--------------------------------------------------------- -// MTC -//--------------------------------------------------------- - -class MTC { - unsigned char _h, _m, _s, _f, _sf; - - public: - MTC(int h, int m, int s, int f, int sf=0) { - _h = h; - _m = m; - _s = s; - _f = f; - _sf = sf; - } - MTC() { - _h = _m = _s = _f = _sf = 0; - } - MTC(double); - void set(int h, int m, int s, int f, int sf=0) { - _h = h; - _m = m; - _s = s; - _f = f; - _sf = sf; - } - void incQuarter(); - void setH(int val) { _h = val; } - void setM(int val) { _m = val; } - void setS(int val) { _s = val; } - void setF(int val) { _f = val; } - void setSf(int val) { _sf = val; } - - int h() const { return _h; } - int m() const { return _m; } - int s() const { return _s; } - int f() const { return _f; } - int sf() const { return _sf; } - double time() const; - void print() const; - }; - - -#endif - diff --git a/muse/muse/muse.cpp b/muse/muse/muse.cpp deleted file mode 100644 index 01f0d1c4..00000000 --- a/muse/muse/muse.cpp +++ /dev/null @@ -1,3029 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "config.h" -#include -#include "muse.h" -#include "transport.h" -#include "widgets/bigtime.h" -#include "arranger.h" -#include "midiedit/pianoroll.h" -#include "al/al.h" -#include "al/xml.h" -#include "al/dsp.h" -#include "al/tempo.h" -#include "conf.h" -#include "liste/listedit.h" -#include "master/masteredit.h" -#include "midiedit/drumedit.h" -#include "mixer.h" -#include "audiodev.h" -#include "waveedit/waveedit.h" -#include "icons.h" -#include "widgets/mixdowndialog.h" -#include "midictrl.h" -#include "widgets/filedialog.h" -#include "plugin.h" -#include "marker/markerview.h" -#include "transpose.h" -#include "preferences.h" -#include "audio.h" -#include "audioprefetch.h" -#include "audiowriteback.h" -#include "widgets/shortcutconfig.h" -#include "gconfig.h" -#include "ticksynth.h" -#include "song.h" -#include "awl/poslabel.h" -#include "shortcuts.h" -#include "midiplugin.h" -#include "midiedit/drummap.h" -#include "widgets/utils.h" -#include "instruments/editinstrument.h" -#include "part.h" -#include "projectdialog.h" -#include "templatedialog.h" -#include "midiedit/miditracker.h" -#include "projectpropsdialog.h" -#include "liste/listedit.h" -#include "strip.h" - -extern void initMidiInstruments(); - -#define PROJECT_LIST_LEN 6 -static QString* projectList[PROJECT_LIST_LEN]; - -extern void initIcons(); -extern void initMidiSynth(); -extern bool initDummyAudio(); -extern void initVST(); -extern void initDSSI(); -extern bool initJackAudio(); -extern void exitJackAudio(); - -QStyle* smallStyle; - -pthread_t splashThread; -MusE* muse; - -// -// Arranger Snap values -// - -struct RasterVal { - int val; - QString label; - }; - -static RasterVal rasterTable[] = { - { 1, QT_TR_NOOP("Off") }, - { 0, QT_TR_NOOP("Bar") }, - { 2 * config.division, "1/2" }, - { config.division, "1/4" }, - { config.division/2, "1/8" }, - { config.division/4, "1/16" } - }; - -//--------------------------------------------------------- -// seqStart -//--------------------------------------------------------- - -bool MusE::seqStart() - { - if (audioState != AUDIO_STOP) { - printf("seqStart(): already running\n"); - return true; - } - audioState = AUDIO_START1; - if (!audio->start()) { - QMessageBox::critical( muse, tr("Failed to start audio!"), - tr("Was not able to start audio, check if jack is running.\n")); - return false; - } - // - // wait for jack callback - // - for (int i = 0; i < 60; ++i) { - if (audioState == AUDIO_START2) - break; - sleep(1); - } - if (audioState != AUDIO_START2) { - QMessageBox::critical( muse, tr("Failed to start audio!"), - tr("Was not able to start audio, check if jack is running.\n")); - } - // - // now its safe to ask the driver for realtime - // priority - - realTimePriority = audioDriver->realtimePriority(); - audioState = AUDIO_RUNNING; - if (realTimePriority) { - audioPrefetch->start(realTimePriority - 5); - audioWriteback->start(realTimePriority - 5); - } - else { - audioPrefetch->start(0); - audioWriteback->start(0); - } - // - // do connections - // - TrackList* tl = song->tracks(); - for (iTrack i = tl->begin(); i != tl->end(); ++i) - (*i)->activate2(); - return true; - } - -//--------------------------------------------------------- -// stop -//--------------------------------------------------------- - -void MusE::seqStop() - { - song->setStop(true); - song->setStopPlay(false); - audio->stop(); - audioWriteback->stop(true); - audioPrefetch->stop(true); - audioState = AUDIO_STOP; - } - -//--------------------------------------------------------- -// seqRestart -//--------------------------------------------------------- - -bool MusE::seqRestart() - { - bool restartSequencer = audioState == AUDIO_RUNNING; - if (restartSequencer) { - if (audio->isPlaying()) { - audio->msgPlay(false); - while (audio->isPlaying()) - qApp->processEvents(); - } - seqStop(); - } - - if (!seqStart()) - return false; - - audioDriver->graphChanged(); - return true; - } - -//--------------------------------------------------------- -// addProject -//--------------------------------------------------------- - -void addProject(const QString& name) - { - for (int i = 0; i < PROJECT_LIST_LEN; ++i) { - if (projectList[i] == 0) - break; - if (name == *projectList[i]) { - int dst = i; - int src = i+1; - int n = PROJECT_LIST_LEN - i - 1; - delete projectList[i]; - for (int k = 0; k < n; ++k) - projectList[dst++] = projectList[src++]; - projectList[dst] = 0; - break; - } - } - QString** s = &projectList[PROJECT_LIST_LEN - 2]; - QString** d = &projectList[PROJECT_LIST_LEN - 1]; - if (*d) - delete *d; - for (int i = 0; i < PROJECT_LIST_LEN-1; ++i) - *d-- = *s--; - projectList[0] = new QString(name); - } - -//--------------------------------------------------------- -// populateAddTrack -// this is also used in "mixer" -//--------------------------------------------------------- - -void populateAddTrack(QMenu* m) - { - m->setSeparatorsCollapsible(false); - m->clear(); - QAction* a; - - a = m->addSeparator(); - a->setText(QT_TR_NOOP("Midi")); - QFont f(a->font()); - f.setBold(true); - f.setPointSize(8); - a->setFont(f); - - a = m->addAction(QIcon(*addtrack_addmiditrackIcon), QT_TR_NOOP("Add Midi Track")); - a->setData(Track::MIDI); - - a = m->addAction(QIcon(*addtrack_addmiditrackIcon), QT_TR_NOOP("Add Midi Output")); - a->setData(Track::MIDI_OUT); - - a = m->addAction(QIcon(*addtrack_addmiditrackIcon), QT_TR_NOOP("Add Midi Input")); - a->setData(Track::MIDI_IN); - - QMenu* ps = m->addMenu(QMenu::tr("Add Midi Generator...")); - - int idx = 5000; - for (iMidiPlugin i = midiPlugins.begin(); i != midiPlugins.end(); ++i) { - if ((*i)->type() != MEMPI_GENERATOR) - continue; - a = ps->addAction((*i)->name()); - a->setData(idx); - } - - if (!midiOnly) { - a = m->addSeparator(); - a->setText(QT_TR_NOOP("Audio")); - a->setFont(f); - - a = m->addAction(QIcon(*addtrack_wavetrackIcon), QT_TR_NOOP("Add Wave Track")); - a->setData(Track::WAVE); - a = m->addAction(QIcon(*addtrack_audiooutputIcon), QT_TR_NOOP("Add Audio Output")); - a->setData(Track::AUDIO_OUTPUT); - a = m->addAction(QIcon(*addtrack_audiogroupIcon), QT_TR_NOOP("Add Audio Group")); - a->setData(Track::AUDIO_GROUP); - a = m->addAction(QIcon(*addtrack_audioinputIcon), QT_TR_NOOP("Add Audio Input")); - a->setData(Track::AUDIO_INPUT); - - ps = m->addMenu(QMenu::tr("Add Soft Synth...")); - - int idx = 1000; - for (std::vector::iterator is = synthis.begin(); is != synthis.end(); ++is, ++idx) { - a = ps->addAction((*is)->name()); - a->setData(idx); - } - } - m->connect(m, SIGNAL(triggered(QAction*)), song, SLOT(addTrack(QAction*))); - } - -//--------------------------------------------------------- -// setupTransportToolbar -//--------------------------------------------------------- - -void MusE::setupTransportToolbar(QToolBar* tb) const - { - tb->addAction(loopAction); - tb->addAction(punchinAction); - tb->addAction(punchoutAction); - tb->addAction(startAction); - - // hack to implement auto repeat: - // the action auto repeat does only work for - // shortcuts but not for mouse press: - - QToolButton* rewindTb = new QToolButton; - rewindTb->setDefaultAction(rewindAction); - rewindTb->setAutoRepeat(true); - tb->addWidget(rewindTb); - connect(rewindTb, SIGNAL(clicked()), song, SLOT(rewind())); - - QToolButton* forwardTb = new QToolButton; - forwardTb->setDefaultAction(forwardAction); - forwardTb->setAutoRepeat(true); - tb->addWidget(forwardTb); - connect(forwardTb, SIGNAL(clicked()), song, SLOT(forward())); - - tb->addAction(stopAction); - tb->addAction(playAction); - tb->addAction(recordAction); - } - -//--------------------------------------------------------- -// MusE -//--------------------------------------------------------- - -MusE::MusE() - : QMainWindow() - { - setWindowIcon(*museIcon); - setIconSize(ICON_SIZE); - setFocusPolicy(Qt::WheelFocus); - - muse = this; // hack - midiSyncConfig = 0; - midiRemoteConfig = 0; - midiPortConfig = 0; - metronomeConfig = 0; - audioConfig = 0; - midiFileConfig = 0; - midiFilterConfig = 0; - midiInputTransform = 0; - midiRhythmGenerator = 0; - preferencesDialog = 0; - softSynthesizerConfig = 0; - midiTransformerDialog = 0; - shortcutConfig = 0; - editInstrument = 0; - appName = QString("MusE"); - _raster = 0; - audioState = AUDIO_STOP; - bigtime = 0; - mixer1 = 0; - mixer2 = 0; - markerView = 0; - exportMidiDialog = 0; - projectPropsDialog = 0; - listEditor = 0; - - //--------------------------------------------------- - // Transport - //--------------------------------------------------- - - loopAction = getAction("toggle_loop", this); - loopAction->setCheckable(true); - connect(loopAction, SIGNAL(triggered(bool)), song, SLOT(setLoop(bool))); - - punchinAction = getAction("punchin", this); - punchinAction->setCheckable(true); - connect(punchinAction, SIGNAL(toggled(bool)), song, SLOT(setPunchin(bool))); - - punchoutAction = getAction("punchout", this); - punchoutAction->setCheckable(true); - connect(punchoutAction, SIGNAL(toggled(bool)), song, SLOT(setPunchout(bool))); - - recordAction = getAction("toggle_rec", this); - recordAction->setCheckable(true); - connect(recordAction, SIGNAL(triggered(bool)), song, SLOT(setRecord(bool))); - - panicAction = getAction("panic", this); - connect(panicAction, SIGNAL(triggered()), song, SLOT(panic())); - - startAction = getAction("start", this); - connect(startAction, SIGNAL(triggered()), song, SLOT(rewindStart())); - - playAction = getAction("play", this); - playAction->setCheckable(true); - connect(playAction, SIGNAL(triggered(bool)), song, SLOT(setPlay(bool))); - - QAction* a = getAction("play_toggle", this); - connect(a, SIGNAL(triggered()), SLOT(playToggle())); - addAction(a); - - a = getAction("toggle_metro", this); - connect(a, SIGNAL(triggered()), song, SLOT(toggleClick())); - addAction(a); - - a = getAction("goto_left", this); - connect(a, SIGNAL(triggered()), song, SLOT(gotoLeftMarker())); - addAction(a); - - a = getAction("goto_right", this); - connect(a, SIGNAL(triggered()), song, SLOT(gotoRightMarker())); - addAction(a); - - rewindAction = getAction("rewind", this); - rewindAction->setAutoRepeat(true); - - forwardAction = getAction("forward", this); - forwardAction->setAutoRepeat(true); - - stopAction = getAction("stop", this); - stopAction->setCheckable(true); - connect(stopAction, SIGNAL(triggered(bool)), song, SLOT(setStop(bool))); - - song->blockSignals(true); - heartBeatTimer = new QTimer(this); - connect(heartBeatTimer, SIGNAL(timeout()), SLOT(beat())); - - //--------------------------------------------------- - // undo/redo - //--------------------------------------------------- - - undoAction = getAction("undo", this); - undoAction->setEnabled(false); - connect(undoAction, SIGNAL(triggered()), song, SLOT(undo())); - - redoAction = getAction("redo", this); - redoAction->setEnabled(false); - connect(redoAction, SIGNAL(triggered()), song, SLOT(redo())); - - fileOpenAction = getAction("open_project", this); - connect(fileOpenAction, SIGNAL(triggered()), SLOT(loadProject())); - - fileSaveAction = getAction("save_project", this); - connect(fileSaveAction, SIGNAL(triggered()), SLOT(save())); - - fileSaveAsAction = getAction("save_project_as", this); - connect(fileSaveAsAction, SIGNAL(triggered()), SLOT(saveAs())); - - pianoAction = getAction("open_pianoroll", this); - connect(pianoAction, SIGNAL(triggered()), SLOT(startPianoroll())); - - waveAction = getAction("open_waveedit", this); - connect(waveAction, SIGNAL(triggered()), SLOT(startWaveEditor())); - - trackerAction = getAction("open_miditracker", this); - connect(trackerAction, SIGNAL(triggered()), SLOT(startMidiTrackerEditor())); - - //-------------------------------------------------- - // Toolbar - //-------------------------------------------------- - - tools = new QToolBar(tr("Project Buttons")); - addToolBar(tools); - - tools->addAction(fileOpenAction); - tools->addAction(fileSaveAction); - tools->addAction(QWhatsThis::createAction(this)); - - tools->addSeparator(); - tools->addAction(undoAction); - tools->addAction(redoAction); - - tools1 = new EditToolBar(this, arrangerTools); - addToolBar(tools1); - - QToolBar* transportToolbar = addToolBar(tr("Transport")); - setupTransportToolbar(transportToolbar); - - QToolBar* panicToolbar = new QToolBar(tr("Panic"), this); - addToolBar(panicToolbar); - panicToolbar->addAction(panicAction); - - addToolBarBreak(); - - audio = new Audio(); - audioPrefetch = new AudioPrefetch("Prefetch"); - audioWriteback = new AudioWriteback("Writeback"); - - //--------------------------------------------------- - // MenuBar - //--------------------------------------------------- - - QMenuBar* mb = menuBar(); - - //------------------------------------------------------------- - // File - //------------------------------------------------------------- - - menu_file = mb->addMenu(tr("&Project")); - - menu_file->addAction(fileOpenAction); - - openRecent = new QMenu(tr("Open &Recent"), this); - connect(openRecent, SIGNAL(aboutToShow()), this, SLOT(openRecentMenu())); - connect(openRecent, SIGNAL(triggered(QAction*)), this, SLOT(selectProject(QAction*))); - - menu_file->addMenu(openRecent); - menu_file->addSeparator(); - menu_file->addAction(fileSaveAction); - menu_file->addAction(fileSaveAsAction); - a = getAction("save_as_template", this); - connect(a, SIGNAL(triggered()), SLOT(saveAsTemplate())); - menu_file->addAction(a); - - menu_file->addSeparator(); - a = menu_file->addAction(*openIcon, tr("Import Midifile")); - connect(a, SIGNAL(triggered()), this, SLOT(importMidi())); - a = menu_file->addAction(*saveIcon, tr("Export Midifile")); - connect(a, SIGNAL(triggered()), this, SLOT(exportMidi())); - menu_file->addSeparator(); - - a = menu_file->addAction(*openIcon, tr("Import Wave File")); - connect(a, SIGNAL(triggered()), this, SLOT(importWave())); - a->setEnabled(!midiOnly); - - menu_file->addSeparator(); - a = getAction("quit", this); - menu_file->addAction(a); - connect(a, SIGNAL(triggered()), this, SLOT(quitDoc())); - menu_file->addSeparator(); - - //------------------------------------------------------------- - // Edit - //------------------------------------------------------------- - - menuEdit = mb->addMenu(tr("&Edit")); - - menuEdit->addAction(undoAction); - menuEdit->addAction(redoAction); - menuEdit->addSeparator(); - - cutAction = getAction("cut", this); - menuEdit->addAction(cutAction); - copyAction = getAction("copy", this); - menuEdit->addAction(copyAction); - pasteAction = getAction("paste", this); - menuEdit->addAction(pasteAction); - - menuEdit->addSeparator(); - a = menuEdit->addAction(QIcon(*edit_track_delIcon), tr("Delete Selected Tracks")); - a->setData("delete_track"); - - addTrack = menuEdit->addMenu(*edit_track_addIcon, tr("Add Track")); - // delay creation of menu (at this moment the list of software - // synthesizer is empty): - connect(addTrack, SIGNAL(aboutToShow()), SLOT(aboutToShowAddTrack())); - - menuEdit->addSeparator(); - select = menuEdit->addMenu(QIcon(*selectIcon), tr("Select")); - select->addAction(getAction("sel_all", this)); - select->addAction(getAction("sel_none", this)); - select->addAction(getAction("sel_inv", this)); - select->addAction(getAction("sel_ins_loc", this)); - select->addAction(getAction("sel_out_loc", this)); - select->addAction(getAction("select_parts_on_track", this)); - - menuEdit->addSeparator(); - menuEdit->addAction(pianoAction); - menuEdit->addAction(waveAction); - menuEdit->addAction(trackerAction); - - a = getAction("open_drumedit", this); - menuEdit->addAction(a); - connect(a, SIGNAL(triggered()), SLOT(startDrumEditor())); - - a = getAction("open_master", this); - menuEdit->addAction(a); - connect(a, SIGNAL(triggered()), SLOT(startMasterEditor())); - - a = menuEdit->addAction(*saveIcon, tr("Project Properties")); - connect(a, SIGNAL(triggered()), SLOT(showProjectPropsDialog())); - - menuEdit->addSeparator(); - connect(menuEdit, SIGNAL(triggered(QAction*)), SLOT(cmd(QAction*))); - connect(select, SIGNAL(triggered(QAction*)), SLOT(cmd(QAction*))); - - midiEdit = menuEdit->addMenu(QIcon(*edit_midiIcon), tr("Midi")); - -#if 0 // TODO - midiEdit->insertItem(tr("Modify Gate Time"), this, SLOT(modifyGateTime())); - midiEdit->insertItem(tr("Modify Velocity"), this, SLOT(modifyVelocity())); - midiEdit->insertItem(tr("Crescendo"), this, SLOT(crescendo())); - midiEdit->insertItem(tr("Transpose"), this, SLOT(transpose())); - midiEdit->insertItem(tr("Thin Out"), this, SLOT(thinOut())); - midiEdit->insertItem(tr("Erase Event"), this, SLOT(eraseEvent())); - midiEdit->insertItem(tr("Note Shift"), this, SLOT(noteShift())); - midiEdit->insertItem(tr("Move Clock"), this, SLOT(moveClock())); - midiEdit->insertItem(tr("Copy Measure"), this, SLOT(copyMeasure())); - midiEdit->insertItem(tr("Erase Measure"), this, SLOT(eraseMeasure())); - midiEdit->insertItem(tr("Delete Measure"), this, SLOT(deleteMeasure())); - midiEdit->insertItem(tr("Create Measure"), this, SLOT(createMeasure())); - midiEdit->insertItem(tr("Mix Track"), this, SLOT(mixTrack())); -#endif - a = midiEdit->addAction(QIcon(*midi_transposeIcon), tr("Transpose")); - connect(a, SIGNAL(triggered()), this, SLOT(transpose())); - - //------------------------------------------------------------- - // View - //------------------------------------------------------------- - - menuView = mb->addMenu(tr("&View")); - - tr_id = getAction("toggle_transport", this); - tr_id->setCheckable(true); - menuView->addAction(tr_id); - connect(tr_id, SIGNAL(triggered(bool)), this, SLOT(showTransport(bool))); - - bt_id = getAction("toggle_bigtime", this); - bt_id->setCheckable(true); - menuView->addAction(bt_id); - connect(bt_id, SIGNAL(triggered(bool)), this, SLOT(showBigtime(bool))); - - aid1a = getAction("toggle_mixer1", this); - aid1a->setCheckable(true); - menuView->addAction(aid1a); - connect(aid1a, SIGNAL(triggered(bool)), this, SLOT(showMixer1(bool))); - - aid1b = getAction("toggle_mixer2", this); - aid1b->setCheckable(true); - menuView->addAction(aid1b); - connect(aid1b, SIGNAL(triggered(bool)), this, SLOT(showMixer2(bool))); - - mk_id = getAction("marker_window", this); - mk_id->setCheckable(true); - menuView->addAction(mk_id); - connect(mk_id , SIGNAL(triggered(bool)), this, SLOT(showMarker(bool))); - - //------------------------------------------------------------- - // Structure - //------------------------------------------------------------- - - menuStructure = mb->addMenu(tr("&Structure")); - - a = menuStructure->addAction(tr("Global Cut")); - connect(a, SIGNAL(triggered()), this, SLOT(globalCut())); - - a = menuStructure->addAction(tr("Global Insert")); - connect(a, SIGNAL(triggered()), this, SLOT(globalInsert())); - - a = menuStructure->addAction(tr("Global Split")); - connect(a, SIGNAL(triggered()), this, SLOT(globalSplit())); - - a = menuStructure->addAction(tr("Copy Range")); - connect(a, SIGNAL(triggered()), this, SLOT(copyRange())); - a->setEnabled(false); - - menuStructure->addSeparator(); - - a = menuStructure->addAction(tr("Cut Events")); - connect(a, SIGNAL(triggered()), this, SLOT(cutEvents())); - a->setEnabled(false); - - //------------------------------------------------------------- - // Midi - //------------------------------------------------------------- - - menu_functions = mb->addMenu(tr("&Midi")); - - a = menu_functions->addAction(QIcon(*midi_edit_instrumentIcon), tr("Edit Instrument")); - connect(a, SIGNAL(triggered()), this, SLOT(startEditInstrument())); - - menu_functions->addSeparator(); - a = menu_functions->addAction(QIcon(*midi_reset_instrIcon), tr("Reset Instr.")); - connect(a, SIGNAL(triggered()), this, SLOT(resetMidiDevices())); - a = menu_functions->addAction(QIcon(*midi_init_instrIcon), tr("Init Instr.")); - connect(a, SIGNAL(triggered()), this, SLOT(initMidiDevices())); - a = menu_functions->addAction(QIcon(*midi_local_offIcon), tr("local off")); - connect(a, SIGNAL(triggered()), this, SLOT(localOff())); - - //------------------------------------------------------------- - // Audio - //------------------------------------------------------------- - - menu_audio = mb->addMenu(tr("&Audio")); - - a = menu_audio->addAction(QIcon(*audio_bounce_to_trackIcon), tr("Bounce to Track")); - connect(a, SIGNAL(triggered()), this, SLOT(bounceToTrack())); - - a = menu_audio->addAction(QIcon(*audio_bounce_to_fileIcon), tr("Bounce to File")); - connect(a, SIGNAL(triggered()), this, SLOT(bounceToFile())); - menu_audio->setEnabled(!midiOnly); - a = menu_audio->addAction(QIcon(*audio_restartaudioIcon), tr("Restart Audio")); - connect(a, SIGNAL(triggered()), this, SLOT(seqRestart())); - - //------------------------------------------------------------- - // Settings - //------------------------------------------------------------- - - menuSettings = mb->addMenu(tr("Setti&ngs")); - a = menuSettings->addAction(QIcon(*settings_configureshortcutsIcon), tr("Configure shortcuts")); - connect(a, SIGNAL(triggered()), this, SLOT(configShortCuts())); - - follow = menuSettings->addMenu(QIcon(*settings_follow_songIcon), tr("follow song")); - //follow->menuAction()->setShortcut(Qt::Key_F); - fid0 = follow->addAction(tr("dont follow Song")); - fid0->setData("follow_no"); - fid0->setCheckable(true); - fid1 = follow->addAction(tr("follow page")); - fid1->setData("follow_jump"); - fid1->setCheckable(true); - fid2 = follow->addAction(tr("follow continuous")); - fid2->setData("follow_continuous"); - fid2->setCheckable(true); - fid0->setChecked(TimeCanvas::followMode == FOLLOW_NO); - fid1->setChecked(TimeCanvas::followMode == FOLLOW_JUMP); - fid2->setChecked(TimeCanvas::followMode == FOLLOW_CONTINUOUS); - connect(follow, SIGNAL(triggered(QAction*)), SLOT(cmd(QAction*))); - - menuSettings->addSeparator(); - a = menuSettings->addAction(QIcon(*settings_midisyncIcon), tr("Midi Sync")); - connect(a, SIGNAL(triggered()), this, SLOT(configMidiSync())); - a = menuSettings->addAction(QIcon(*settings_midifileexportIcon), tr("Midi File Export")); - connect(a, SIGNAL(triggered()), this, SLOT(configMidiFile())); - menuSettings->addSeparator(); - QAction* action = menuSettings->addAction(QIcon(*settings_globalsettingsIcon), tr("Preferences")); - connect(action, SIGNAL(triggered()), this, SLOT(preferences())); - - //--------------------------------------------------- - // Help - //--------------------------------------------------- - - mb->addSeparator(); - menu_help = mb->addMenu(tr("&Help")); - - a = menu_help->addAction(tr("&Manual")); - connect(a, SIGNAL(triggered()), this, SLOT(startHelpBrowser())); - a = menu_help->addAction(tr("&MusE homepage")); - connect(a, SIGNAL(triggered()), this, SLOT(startHomepageBrowser())); - menu_help->addSeparator(); - a = menu_help->addAction(tr("&Report Bug...")); - connect(a, SIGNAL(triggered()), this, SLOT(startBugBrowser())); - menu_help->addSeparator(); - a = menu_help->addAction(tr("&About MusE")); - a->setIcon(QIcon(*museIcon)); - connect(a, SIGNAL(triggered()), this, SLOT(about())); - a = menu_help->addAction(tr("About&Qt")); - connect(a, SIGNAL(triggered()), this, SLOT(aboutQt())); - menu_help->addSeparator(); - a = QWhatsThis::createAction(this); - a->setText(tr("What's &This?")); - menu_help->addAction(a); - - //--------------------------------------------------- - // ToolBar - //--------------------------------------------------- - - QToolBar* aToolBar = addToolBar(tr("Arranger")); - - QLabel* label = new QLabel(tr("Cursor")); - label->setAlignment(Qt::AlignRight | Qt::AlignVCenter); - label->setIndent(3); - aToolBar->addWidget(label); - - Awl::PosLabel* cursorPos = new Awl::PosLabel; - aToolBar->addWidget(cursorPos); - cursorPos->setFixedHeight(25); - - label = new QLabel(tr("Snap")); - label->setIndent(5); - aToolBar->addWidget(label); - - rasterCombo = new QComboBox; - rasterCombo->setFixedHeight(24); - aToolBar->addWidget(rasterCombo); - for (unsigned i = 0; i < sizeof(rasterTable)/sizeof(*rasterTable); i++) - rasterCombo->addItem(rasterTable[i].label, i); - rasterCombo->setCurrentIndex(1); - connect(rasterCombo, SIGNAL(activated(int)), SLOT(setRaster(int))); - - // Song len - label = new QLabel(tr("Len")); - label->setIndent(5); - aToolBar->addWidget(label); - - // song length is limited to 10000 bars; the real song len is limited - // by overflows in tick computations - // - QSpinBox* lenEntry = new QSpinBox; - lenEntry->setFixedHeight(24); - lenEntry->setRange(1, 10000); - aToolBar->addWidget(lenEntry); - lenEntry->setValue(song->len()); - connect(lenEntry, SIGNAL(valueChanged(int)), song, SLOT(setMeasureLen(int))); - connect(song, SIGNAL(measureLenChanged(int)), lenEntry, SLOT(setValue(int))); - - label = new QLabel(tr("Pitch")); - label->setIndent(5); - aToolBar->addWidget(label); - - QSpinBox* globalPitchSpinBox = new QSpinBox; - globalPitchSpinBox->setFixedHeight(24); - globalPitchSpinBox->setRange(-127, 127); - aToolBar->addWidget(globalPitchSpinBox); - globalPitchSpinBox->setValue(song->globalPitchShift()); - globalPitchSpinBox->setToolTip(tr("midi pitch")); - globalPitchSpinBox->setWhatsThis(tr("global midi pitch shift")); - connect(globalPitchSpinBox, SIGNAL(valueChanged(int)), SLOT(globalPitchChanged(int))); - - label = new QLabel(tr("Tempo")); - label->setIndent(5); - aToolBar->addWidget(label); - - globalTempoSpinBox = new QSpinBox; - globalTempoSpinBox->setFixedHeight(24); - globalTempoSpinBox->setRange(50, 200); - aToolBar->addWidget(globalTempoSpinBox); - globalTempoSpinBox->setSuffix(QString("%")); - globalTempoSpinBox->setValue(AL::tempomap.globalTempo()); - globalTempoSpinBox->setToolTip(tr("midi tempo")); - globalTempoSpinBox->setWhatsThis(tr("midi tempo")); - connect(globalTempoSpinBox, SIGNAL(valueChanged(int)), SLOT(globalTempoChanged(int))); - - QToolButton* tempo50 = new QToolButton; - tempo50->setFixedHeight(24); - aToolBar->addWidget(tempo50); - tempo50->setText(QString("50%")); - connect(tempo50, SIGNAL(clicked()), SLOT(setTempo50())); - - QToolButton* tempo100 = new QToolButton; - tempo100->setFixedHeight(24); - aToolBar->addWidget(tempo100); - tempo100->setText(tr("N")); - connect(tempo100, SIGNAL(clicked()), SLOT(setTempo100())); - - QToolButton* tempo200 = new QToolButton; - tempo200->setFixedHeight(24); - aToolBar->addWidget(tempo200); - tempo200->setText(QString("200%")); - connect(tempo200, SIGNAL(clicked()), SLOT(setTempo200())); - - //--------------------------------------------------- - // Central Widget - //--------------------------------------------------- - - arranger = new Arranger(this); - setCentralWidget(arranger); - - connect(tools1, SIGNAL(toolChanged(int)), SLOT(setTool(int))); - connect(arranger, SIGNAL(toolChanged(int)), SLOT(setTool(int))); - connect(arranger, SIGNAL(editPart(Part*)), SLOT(startEditor(Part*))); -//TODO1 connect(arranger, SIGNAL(dropSongFile(const QString&)), SLOT(loadProject(const QString&))); -//TODO1 connect(arranger, SIGNAL(dropMidiFile(const QString&)), SLOT(importMidi(const QString&))); - connect(arranger, SIGNAL(cursorPos(const AL::Pos&,bool)), cursorPos, SLOT(setValue(const AL::Pos&,bool))); - - //--------------------------------------------------- - // read list of "Recent Projects" - //--------------------------------------------------- - - QString prjPath(getenv("HOME")); - prjPath += QString("/.musePrj"); - FILE* f = fopen(prjPath.toLatin1().data(), "r"); - if (f == 0) { - if (debugMsg) { - fprintf(stderr, "open projectfile <%s> failed: %s", - prjPath.toLatin1().data(), strerror(errno)); - } - for (int i = 0; i < PROJECT_LIST_LEN; ++i) - projectList[i] = 0; - } - else { - for (int i = 0; i < PROJECT_LIST_LEN; ++i) { - char buffer[256]; - if (fgets(buffer, 256, f)) { - int n = strlen(buffer); - if (n && buffer[n-1] == '\n') - buffer[n-1] = 0; - projectList[i] = *buffer ? new QString(buffer) : 0; - } - else - break; - } - fclose(f); - } - - initMidiSynth(); - - transport = new Transport; - transport->hide(); - connect(transport, SIGNAL(closed()), SLOT(transportClosed())); - - QClipboard* cb = QApplication::clipboard(); - connect(cb, SIGNAL(dataChanged()), SLOT(clipboardChanged())); - connect(cb, SIGNAL(selectionChanged()), SLOT(clipboardChanged())); - song->blockSignals(false); - } - -//--------------------------------------------------------- -// aboutToShowAddTrack -//--------------------------------------------------------- - -void MusE::aboutToShowAddTrack() - { - populateAddTrack(addTrack); - } - -//--------------------------------------------------------- -// setRaster -//--------------------------------------------------------- - -void MusE::setRaster(int val) - { - _raster = rasterTable[val].val; - emit rasterChanged(_raster); - } - -//--------------------------------------------------------- -// initRaster -//--------------------------------------------------------- - -void MusE::initRaster(int val) - { - for (unsigned i = 0; i < sizeof(rasterTable)/sizeof(*rasterTable); ++i) { - if (rasterTable[i].val == val) { - _raster = val; - rasterCombo->setCurrentIndex(i); - return; - } - } - _raster = rasterTable[1].val; - rasterCombo->setCurrentIndex(1); - } - -//--------------------------------------------------------- -// setHeartBeat -//--------------------------------------------------------- - -void MusE::setHeartBeat() - { - heartBeatTimer->start(1000/config.guiRefresh); - } - -//--------------------------------------------------------- -// resetDevices -//--------------------------------------------------------- - -void MusE::resetMidiDevices() - { - audio->msgResetMidiDevices(); - } - -//--------------------------------------------------------- -// initMidiDevices -//--------------------------------------------------------- - -void MusE::initMidiDevices() - { - audio->msgInitMidiDevices(); - } - -//--------------------------------------------------------- -// localOff -//--------------------------------------------------------- - -void MusE::localOff() - { - audio->msgLocalOff(); - } - -//--------------------------------------------------------- -// loadProject -//--------------------------------------------------------- - -void MusE::loadProject(const QString& path) - { - // - // stop audio threads if running - // - bool restartSequencer = audioState == AUDIO_RUNNING; - if (restartSequencer) { - if (audio->isPlaying()) { - audio->msgPlay(false); - while (audio->isPlaying()) - qApp->processEvents(); - } - seqStop(); - } - loadProject1(path); - if (restartSequencer) - seqStart(); - audio->msgSeek(song->cPos()); - } - -//--------------------------------------------------------- -// loadProject1 -//--------------------------------------------------------- - -void MusE::loadProject1(const QString& path) - { - QFileInfo file(path); - QString header = tr("MusE: new project"); - - if (leaveProject()) - return; - - if (mixer1) - mixer1->clear(); - if (mixer2) - mixer2->clear(); - - QString name(file.fileName()); - QDir pd(QDir::homePath() + "/" + config.projectPath + "/" + path); - - addProject(path); // add to history - - bool newProject = false; - if (!pd.exists()) { - newProject = true; - if (!pd.mkdir(pd.path())) { - QString s(tr("Cannot create project folder <%1>")); - QMessageBox::critical(this, header, s.arg(pd.path())); - return; - } - } - // - // close all toplevel windows - // - foreach(QWidget* w, QApplication::topLevelWidgets()) { - if (!w->isVisible()) - continue; - static const char* const top[] = { - "DrumEdit", "PianoRoll", "MasterEdit", "WaveEdit", - "ListEdit", "PluginGui" - }; - for (unsigned i = 0; i < sizeof(top)/sizeof(*top); ++i) { - if (strcmp(top[i], w->metaObject()->className()) == 0) { - w->close(); - break; - } - } - } - emit startLoadSong(); - - song->setProjectPath(path); - song->clear(false); - song->setCreated(newProject); - - QString s = pd.absoluteFilePath(name + ".med"); - - QFile f(s); - - song->blockSignals(true); - - bool rv = true; - if (f.open(QIODevice::ReadOnly)) { - rv = song->read(&f); - f.close(); - } - else { - TemplateDialog templateDialog; - if (templateDialog.exec() == 1) { - s = templateDialog.templatePath(); - if (!s.isEmpty()) { - QFile f(s); - if (f.open(QIODevice::ReadOnly)) { - rv = song->read(&f); - f.close(); - } - else { - QString msg(tr("Cannot open template file\n%1")); - QMessageBox::critical(this, header, msg.arg(s)); - } - } - } - } - if (!rv) { - QString msg(tr("File <%1> read error")); - QMessageBox::critical(this, header, msg.arg(s)); - } - tr_id->setChecked(config.transportVisible); - bt_id->setChecked(config.bigTimeVisible); - - showBigtime(config.bigTimeVisible); - showMixer1(config.mixer1Visible); - showMixer2(config.mixer2Visible); - if (mixer1 && config.mixer1Visible) - mixer1->setUpdateMixer(); - if (mixer2 && config.mixer2Visible) - mixer2->setUpdateMixer(); -// resize(config.geometryMain.size()); -// move(config.geometryMain.topLeft()); - if (config.transportVisible) - transport->show(); - transport->move(config.geometryTransport.topLeft()); - showTransport(config.transportVisible); - song->blockSignals(false); - transport->setMasterFlag(song->masterFlag()); - punchinAction->setChecked(song->punchin()); - punchoutAction->setChecked(song->punchout()); - loopAction->setChecked(song->loop()); - clipboardChanged(); // enable/disable "Paste" - song->setLen(song->len()); // emit song->lenChanged() signal - - selectionChanged(); // enable/disable "Copy" & "Paste" - arranger->endLoadSong(); - song->updatePos(); - song->updateCurrentMarker(); - // - // send "cur" controller values to devices - // - - TrackList* tl = song->tracks(); - for (iTrack i = tl->begin(); i != tl->end(); ++i) { - Track* track = *i; -// track->blockSignals(true); - CtrlList* cl = track->controller(); - for (iCtrl ic = cl->begin(); ic != cl->end(); ++ic) { - Ctrl* ctrl = ic->second; - if (ctrl->type() & Ctrl::INT) { - CVal val; - val = ctrl->curVal(); - if (track->isMidiTrack() && val.i == CTRL_VAL_UNKNOWN) - continue; - ctrl->setCurVal(CTRL_VAL_UNKNOWN); - song->setControllerVal(track, ctrl, val); - } - } -// track->blockSignals(false); - } - setWindowTitle(QString("MusE: Song: ") + name); - } - -//--------------------------------------------------------- -// MusE::loadProject -//--------------------------------------------------------- - -void MusE::loadProject() - { - ProjectDialog projectDialog; - int rv = projectDialog.exec(); - if (rv == 0) - return; - QString path = projectDialog.projectPath(); - if (path.isEmpty()) - return; - loadProject(path); - } - -//--------------------------------------------------------- -// save -//--------------------------------------------------------- - -bool MusE::save() - { - QString backupCommand; - - QString name(song->projectName() + ".med"); - QFileInfo fi(song->absoluteProjectPath() + "/" + name); - - QTemporaryFile tmp(fi.path() + "/MusEXXXXXX"); - tmp.setAutoRemove(false); - - if (!tmp.open()) { - QString s("Creating temp file failed: "); - s += strerror(errno); - QMessageBox::critical(this, - tr("MusE: Create tmp file failed"), s); - return false; - } - Xml xml(&tmp); - write(xml); - if (tmp.error()) { - QString s = QString("Write File\n") + tmp.fileName() + QString("\nfailed: ") - + tmp.errorString(); - QMessageBox::critical(this, tr("MusE: Write File failed"), s); - return false; - } - if (!song->backupWritten()) { - // - // remove old backup file - // - QDir dir(fi.path()); - QString backupName = QString(".") + fi.fileName() + QString(","); - dir.remove(backupName); - - // - // rename old file to backup - // - QString n(fi.filePath()); - dir.rename(n, backupName); - } - // - // rename temp name to file name - // - tmp.rename(fi.filePath()); - - song->dirty = false; - SndFile::updateRecFiles(); - return true; - } - -//--------------------------------------------------------- -// saveAs -//--------------------------------------------------------- - -bool MusE::saveAs() - { - printf("SAVEAS\n"); - ProjectDialog projectDialog; - int rv = projectDialog.exec(); - if (rv == 0) - return false; - QString path = projectDialog.projectPath(); - if (path.isEmpty()) - return false; - - QDir pd(QDir::homePath() + "/" + config.projectPath + "/" + path); - QString header = tr("MusE: new project"); - if (!pd.exists()) { - if (!pd.mkdir(pd.path())) { - QString s(tr("Cannot create project folder <%1>")); - QMessageBox::critical(this, header, s.arg(pd.path())); - return false; - } - } - addProject(path); - song->setProjectPath(path); - QString name = song->projectName(); - setWindowTitle(QString("MusE: Song: ") + name); - return save(); - } - - -//--------------------------------------------------------- -// saveAsTemplate -//--------------------------------------------------------- - -void MusE::saveAsTemplate() - { - printf("Not implemented: save as template\n"); - } - -//--------------------------------------------------------- -// quitDoc -//--------------------------------------------------------- - -void MusE::quitDoc() - { - close(); - } - -//--------------------------------------------------------- -// leaveProject -// return false if user aborts operation -//--------------------------------------------------------- - -bool MusE::leaveProject() - { - if (song->dirty) { - int n = 0; - n = QMessageBox::warning(this, appName, - tr("The current Project contains unsaved data\n" - "Save Current Project?"), - tr("&Save"), tr("&Nosave"), tr("&Abort"), 0, 2); - if (n == 0) - return !save(); - else if (n == 2) - return true; - // - // delete all wave files created in this session and not - // referenced any more - // delete all if we drop the song - // - SndFile::cleanupRecFiles(n == 1); - } - else - SndFile::cleanupRecFiles(true); - // - // if this is a new created project, - // delete project directory - // - if (song->created()) { - // delete project directory - QDir pp; - if (!pp.rmdir(song->absoluteProjectPath())) - printf("cannot remove dir <%s>\n", song->absoluteProjectPath().toLatin1().data()); - } - return false; - } - -//--------------------------------------------------------- -// closeEvent -//--------------------------------------------------------- - -void MusE::closeEvent(QCloseEvent* event) - { - song->setStop(true); - // - // wait for sequencer - // - while (audio->isPlaying()) { - qApp->processEvents(); - } - - if (leaveProject()) { - event->ignore(); - return; - } - - seqStop(); - - // save "Open Recent" list - QString prjPath(getenv("HOME")); - prjPath += "/.musePrj"; - FILE* f = fopen(prjPath.toLatin1().data(), "w"); - if (f) { - for (int i = 0; i < PROJECT_LIST_LEN; ++i) { - fprintf(f, "%s\n", projectList[i] ? projectList[i]->toLatin1().data() : ""); - } - fclose(f); - } - exitJackAudio(); - SynthIList* sl = song->syntis(); - for (iSynthI i = sl->begin(); i != sl->end(); ++i) - delete *i; - - // Cleanup temporary wavefiles + peakfiles used for undo - for (std::list::iterator i = temporaryWavFiles.begin(); i != temporaryWavFiles.end(); i++) { - QString filename = *i; - QFileInfo f(filename); - QDir d = f.dir(); - d.remove(filename); - d.remove(f.baseName() + ".wca"); - } - writeSettings(); - qApp->quit(); - } - -//--------------------------------------------------------- -// showTransport -//--------------------------------------------------------- - -void MusE::showTransport(bool flag) - { - transport->setShown(flag); - tr_id->setChecked(flag); - if (flag) - transport->setValues(); - } - -//--------------------------------------------------------- -// printVersion -//--------------------------------------------------------- - -static void printVersion(const char* prog) - { - fprintf(stderr, "%s: Linux Music Editor; Version %s\n", prog, VERSION); - } - -//--------------------------------------------------------- -// startEditor -//--------------------------------------------------------- - -void MusE::startEditor(PartList* pl, int type) - { - switch (type) { - case 0: startPianoroll(pl); break; - case 1: startListEditor(pl); break; - case 2: startMidiTrackerEditor(pl); break; - case 3: startDrumEditor(pl); break; - case 4: startWaveEditor(pl); break; - } - } - -//--------------------------------------------------------- -// startEditor -//--------------------------------------------------------- - -void MusE::startEditor(Part* part, int type) - { - PartList* pl = new PartList(); - pl->add(part); - startEditor(pl, type); - } - -//--------------------------------------------------------- -// startEditor -//--------------------------------------------------------- - -void MusE::startEditor(Part* part) - { - PartList* pl = new PartList(); - pl->add(part); - Track* track = part->track(); - switch (track->type()) { - case Track::MIDI: - { - MidiTrack* t = (MidiTrack*)track; - if (t->useDrumMap()) - startDrumEditor(pl); - else - startPianoroll(pl); - } - break; - case Track::WAVE: - startWaveEditor(pl); - break; - default: - break; - } - } - -//--------------------------------------------------------- -// getMidiPartsToEdit -//--------------------------------------------------------- - -PartList* MusE::getMidiPartsToEdit() - { - PartList* pl = song->getSelectedMidiParts(); - if (pl->empty()) { - QMessageBox::critical(this, QString("MusE"), tr("Nothing to edit")); - delete pl; - return 0; - } - return pl; - } - -//--------------------------------------------------------- -// startPianoroll -//--------------------------------------------------------- - -void MusE::startPianoroll() - { - PartList* pl = getMidiPartsToEdit(); - if (pl == 0) - return; - startPianoroll(pl); - } - -void MusE::startPianoroll(PartList* pl) - { - PianoRoll* pianoroll = new PianoRoll(pl, false); - pianoroll->show(); -// connect(muse, SIGNAL(configChanged()), pianoroll, SLOT(configChanged())); - } - -//--------------------------------------------------------- -// startListEditor -//--------------------------------------------------------- - -void MusE::startListEditor() - { -// PartList* pl = getMidiPartsToEdit(); -// if (pl == 0) -// return; -// startListEditor(pl); - startListEditor(0); - } - -void MusE::startListEditor(PartList* pl) - { - Part* part = 0; - if (pl && !pl->empty()) { - part = pl->begin()->second; - showListEditor(Pos(), part->track(), part, 0); - } - else - showListEditor(Pos(), 0, 0, 0); - } - -void MusE::showListEditor(const Pos& pos, Track* track, Part* part, Ctrl* ctrl) - { - if (listEditor == 0) - listEditor = new ListEdit(this); - listEditor->selectItem(pos, track, part, ctrl); - listEditor->show(); - } - -//--------------------------------------------------------- -// startMidiTrackerEditor -//--------------------------------------------------------- - -void MusE::startMidiTrackerEditor() - { - PartList* pl = getMidiPartsToEdit(); - if (pl == 0) - return; - startMidiTrackerEditor(pl); - } - -void MusE::startMidiTrackerEditor(PartList* pl) - { - MidiTrackerEditor* miditracker = new MidiTrackerEditor(pl, false); - miditracker->show(); - connect(muse, SIGNAL(configChanged()), miditracker, SLOT(configChanged())); - } - -//--------------------------------------------------------- -// startMasterEditor -//--------------------------------------------------------- - -void MusE::startMasterEditor() - { - MasterEdit* masterEditor = new MasterEdit(); - masterEditor->show(); - } - -//--------------------------------------------------------- -// showProjectPropsDialog -//--------------------------------------------------------- - -void MusE::showProjectPropsDialog() - { - if (projectPropsDialog == 0) - projectPropsDialog = new ProjectPropsDialog(this); - projectPropsDialog->show(); - } - -//--------------------------------------------------------- -// startDrumEditor -//--------------------------------------------------------- - -void MusE::startDrumEditor() - { - PartList* pl = getMidiPartsToEdit(); - if (pl == 0) - return; - startDrumEditor(pl); - } - -void MusE::startDrumEditor(PartList* pl) - { - DrumEdit* drumEditor = new DrumEdit(pl, false); - drumEditor->show(); -// connect(muse, SIGNAL(configChanged()), drumEditor, SLOT(configChanged())); - } - -//--------------------------------------------------------- -// startWaveEditor -//--------------------------------------------------------- - -void MusE::startWaveEditor() - { - PartList* pl = song->getSelectedWaveParts(); - if (pl->empty()) { - QMessageBox::critical(this, QString("MusE"), tr("Nothing to edit")); - delete pl; - return; - } - startWaveEditor(pl); - } - -void MusE::startWaveEditor(PartList* pl) - { - WaveEdit* waveEditor = new WaveEdit(pl, false); - waveEditor->show(); - connect(muse, SIGNAL(configChanged()), waveEditor, SLOT(configChanged())); - } - -//--------------------------------------------------------- -// fileMenu -//--------------------------------------------------------- - -void MusE::openRecentMenu() - { - openRecent->clear(); - for (int i = 0; i < PROJECT_LIST_LEN; ++i) { - if (projectList[i] == 0) - break; - const char* path = projectList[i]->toLatin1().data(); - const char* p = strrchr(path, '/'); - if (p == 0) - p = path; - else - ++p; - QAction* a = openRecent->addAction(QString(p)); - a->setData(i); - } - } - -//--------------------------------------------------------- -// selectProject -//--------------------------------------------------------- - -void MusE::selectProject(QAction* a) - { - if (a == 0) - return; - int id = a->data().toInt(); - if (id < 0) - return; - assert(id < PROJECT_LIST_LEN); - QString* name = projectList[id]; - if (name == 0) - return; - loadProject(*name); - } - -//--------------------------------------------------------- -// playToggle -//--------------------------------------------------------- - -void MusE::playToggle() - { - if (audio->isPlaying()) - song->setStop(true); - else - song->setPlay(true); -// else if (song->cpos() != song->lpos()) -// song->setPos(0, song->lPos()); -// else { -// Pos p(0, AL::TICKS); -// song->setPos(0, p); -// } - } - -//--------------------------------------------------------- -// MuseApplication -//--------------------------------------------------------- - -MuseApplication::MuseApplication(int& argc, char** argv) - : QApplication(argc, argv) - { - muse = 0; - for (unsigned i = 0;; ++i) { - if (sc[i].xml == 0) - break; - shortcuts[sc[i].xml] = &sc[i]; - } - } - -//--------------------------------------------------------- -// usage -//--------------------------------------------------------- - -static void usage(const char* prog, const char* txt) - { - fprintf(stderr, "%s: %s\nusage: %s flags midifile\n Flags:", - prog, txt, prog); - fprintf(stderr, " -v print version\n"); - fprintf(stderr, " -m MIDI only mode\n"); - fprintf(stderr, " -d debug mode: no threads, no RT\n"); - fprintf(stderr, " -D debug mode: enable some debug messages\n"); - fprintf(stderr, " -i debug mode: trace midi Input\n"); - fprintf(stderr, " -o debug mode: trace midi Output\n"); - fprintf(stderr, " -s debug mode: trace sync\n"); - fprintf(stderr, " -p don't load LADSPA plugins\n"); -#ifdef VST_SUPPORT - fprintf(stderr, " -V don't load VST plugins\n"); -#endif -#ifdef DSSI_SUPPORT - fprintf(stderr, " -I don't load DSSI plugins\n"); -#endif - } - -//--------------------------------------------------------- -// catchSignal -// only for debugging -//--------------------------------------------------------- - -#if 0 -static void catchSignal(int sig) - { - if (debugMsg) - fprintf(stderr, "MusE: signal %d catched\n", sig); - if (sig == SIGSEGV) { - fprintf(stderr, "MusE: segmentation fault\n"); - abort(); - } - if (sig == SIGCHLD) { - M_DEBUG("caught SIGCHLD - child died\n"); - int status; - int n = waitpid (-1, &status, WNOHANG); - if (n > 0) { - fprintf(stderr, "SIGCHLD for unknown process %d received\n", n); - } - } - } -#endif - -//--------------------------------------------------------- -// setFollow -//--------------------------------------------------------- - -void MusE::setFollow(FollowMode fm) - { - TimeCanvas::followMode = fm; - fid0->setChecked(fm == FOLLOW_NO); - fid1->setChecked(fm == FOLLOW_JUMP); - fid2->setChecked(fm == FOLLOW_CONTINUOUS); - changeConfig(true); // save settings - } - -//--------------------------------------------------------- -// copyParts -// copy all selected Parts of type MIDI or WAVE to -// clipboard whatever first found -//--------------------------------------------------------- - -void MusE::copyParts(bool cutFlag) - { - QBuffer buffer; - buffer.open(QIODevice::WriteOnly); - AL::Xml xml(&buffer); - - if (cutFlag) - song->startUndo(); - int midiType = -1; - TrackList* tl = song->tracks(); - for (iTrack i = tl->begin(); i != tl->end(); ++i) { - Track* track = *i; - if (midiType == 1 && !track->isMidiTrack()) - continue; - PartList* pl = track->parts(); - for (iPart ip = pl->begin(); ip != pl->end(); ++ip) { - Part* part = ip->second; - if (part->selected()) { - if (midiType == -1) - midiType = track->isMidiTrack(); - part->write(xml); - if (cutFlag) - song->removePart(part); - } - } - } - buffer.close(); - QMimeData* mimeData = new QMimeData; - const char* t = midiType ? "application/muse/part/midi" : "application/muse/part/audio"; - mimeData->setData(t, buffer.buffer()); - QApplication::clipboard()->setMimeData(mimeData); - if (cutFlag) - song->endUndo(0); - } - -//--------------------------------------------------------- -// cmd -// some cmd's from pulldown menu -//--------------------------------------------------------- - -void MusE::cmd(QAction* a) - { - QString cmd = a->data().toString(); - TrackList* tracks = song->tracks(); - int l = song->lpos(); - int r = song->rpos(); - - if (cmd == "cut") - copyParts(true); - else if (cmd == "copy") - copyParts(false); - else if (cmd == "paste") { - const QMimeData* s = QApplication::clipboard()->mimeData(); - int isMidi = -1; - QByteArray data; - if (s->hasFormat("application/muse/part/midi")) { - isMidi = 1; - data = s->data("application/muse/part/midi"); - } - else if (s->hasFormat("application/muse/part/audio")) { - isMidi = 0; - data = s->data("application/muse/part/audio"); - } - // exit if unknown format - if (isMidi == -1) { - printf("paste: unknown format\n"); - return; - } - - // search target track - TrackList* tl = song->tracks(); - Track* track = 0; - for (iTrack i = tl->begin(); i != tl->end(); ++i) { - Track* t = *i; - if ((isMidi == 1 && t->type() == Track::MIDI) - || (isMidi == 0 && t->type() == Track::WAVE)) { - track = t; - break; - } - } - if (track == 0) { - printf("no destination track selected\n"); - return; - } - - QDomDocument doc; - int line, column; - QString err; - PartList pl; - if (!doc.setContent(data, false, &err, &line, &column)) { - QString col, ln, error; - col.setNum(column); - ln.setNum(line); - error = err + "\n at line: " + ln + " col: " + col; - printf("error parsing part: %s\n", error.toLatin1().data()); - return; - } - int tick = -1; - for (QDomNode node = doc.documentElement(); !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - if (e.isNull()) - continue; - if (e.tagName() == "part") { - Part* p = new Part(0); - p->ref(); - p->read(node, true); - pl.add(p); - if (tick == -1 || p->tick() < unsigned(tick)) - tick = int(p->tick()); - } - else - printf("MusE: %s not supported\n", e.tagName().toLatin1().data()); - } - - unsigned cpos = song->cpos(); - song->startUndo(); - for (iPart ip = pl.begin(); ip != pl.end(); ++ip) { - Part* part = ip->second; - part->setTick(part->tick() - tick + cpos); - part->setTrack(track); - song->addPart(part); - cpos += part->lenTick(); - } - song->endUndo(0); - track->partListChanged(); - } - - else if (cmd == "delete") { - TrackList* tl = song->tracks(); - bool partsMarked = false; - for (iTrack it = tl->begin(); it != tl->end(); ++it) { - PartList* pl2 = (*it)->parts(); - for (iPart ip = pl2->begin(); ip != pl2->end(); ++ip) { - if (ip->second->selected()) { - partsMarked = true; - break; - } - } - } - if (partsMarked) - song->cmdRemoveParts(); - else - audio->msgRemoveTracks(); - } - else if (cmd == "delete_track") - audio->msgRemoveTracks(); - else if (cmd == "sel_all" || cmd == "sel_none" || cmd == "sel_inv" - || cmd == "sel_ins_loc" || cmd == "sel_out_loc") { - for (iTrack i = tracks->begin(); i != tracks->end(); ++i) { - PartList* parts = (*i)->parts(); - for (iPart p = parts->begin(); p != parts->end(); ++p) { - bool f = false; - int t1 = p->second->tick(); - int t2 = t1 + p->second->lenTick(); - bool inside = - ((t1 >= l) && (t1 < r)) - || ((t2 > l) && (t2 < r)) - || ((t1 <= l) && (t2 > r)); - if (cmd == "sel_inv") - f = !p->second->selected(); - else if (cmd == "sel_none") - f = false; - else if (cmd == "sel_all") - f = true; - else if (cmd == "sel_ins_loc") - f = inside; - else if (cmd == "sel_out_loc") - f = !inside; - p->second->setSelected(f); - } - (*i)->partListChanged(); // repaints canvaswidget - } - song->update(); - } - else if (cmd == "select_parts_on_track") { - for (iTrack i = tracks->begin(); i != tracks->end(); ++i) { - if (!(*i)->selected()) - continue; - PartList* parts = (*i)->parts(); - for (iPart p = parts->begin(); p != parts->end(); ++p) - p->second->setSelected(true); - } - song->update(); - } - - else if (cmd == "follow_no") - setFollow(FOLLOW_NO); - else if (cmd == "follow_jump") - setFollow(FOLLOW_JUMP); - else if (cmd == "follow_continuous") - setFollow(FOLLOW_CONTINUOUS); - } - -//--------------------------------------------------------- -// clipboardChanged -//--------------------------------------------------------- - -void MusE::clipboardChanged() - { -// QString subtype("partlist"); - const QMimeData* ms = QApplication::clipboard()->mimeData(); - if (ms == 0) - return; - bool flag = ms->hasFormat("application/muse/part/midi") - || ms->hasFormat("application/muse/part/audio"); - pasteAction->setEnabled(flag); - } - -//--------------------------------------------------------- -// selectionChanged -//--------------------------------------------------------- - -void MusE::selectionChanged() - { - int k = 0; - TrackList* tl = song->tracks(); - for (iTrack t = tl->begin(); t != tl->end(); ++t) - k += (*t)->selected(); - cutAction->setEnabled(k == 1); - copyAction->setEnabled(k == 1); - song->updateSelectedTrack(); - } - -//--------------------------------------------------------- -// transpose -//--------------------------------------------------------- - -void MusE::transpose() - { - Transpose *w = new Transpose(); - w->show(); - } - -//--------------------------------------------------------- -// modifyGateTime -//--------------------------------------------------------- - -void MusE::modifyGateTime() - { -//TODO GateTime* w = new GateTime(this); -// w->show(); - } - -//--------------------------------------------------------- -// modifyVelocity -//--------------------------------------------------------- - -void MusE::modifyVelocity() - { - printf("not implemented\n"); - } - -//--------------------------------------------------------- -// crescendo -//--------------------------------------------------------- - -void MusE::crescendo() - { - printf("not implemented\n"); - } - -//--------------------------------------------------------- -// thinOut -//--------------------------------------------------------- - -void MusE::thinOut() - { - printf("not implemented\n"); - } - -//--------------------------------------------------------- -// eraseEvent -//--------------------------------------------------------- - -void MusE::eraseEvent() - { - printf("not implemented\n"); - } - -//--------------------------------------------------------- -// noteShift -//--------------------------------------------------------- - -void MusE::noteShift() - { - printf("not implemented\n"); - } - -//--------------------------------------------------------- -// moveClock -//--------------------------------------------------------- - -void MusE::moveClock() - { - printf("not implemented\n"); - } - -//--------------------------------------------------------- -// copyMeasure -//--------------------------------------------------------- - -void MusE::copyMeasure() - { - printf("not implemented\n"); - } - -//--------------------------------------------------------- -// eraseMeasure -//--------------------------------------------------------- - -void MusE::eraseMeasure() - { - printf("not implemented\n"); - } - -//--------------------------------------------------------- -// deleteMeasure -//--------------------------------------------------------- - -void MusE::deleteMeasure() - { - printf("not implemented\n"); - } - -//--------------------------------------------------------- -// createMeasure -//--------------------------------------------------------- - -void MusE::createMeasure() - { - printf("not implemented\n"); - } - -//--------------------------------------------------------- -// mixTrack -//--------------------------------------------------------- - -void MusE::mixTrack() - { - printf("not implemented\n"); - } - -//--------------------------------------------------------- -// configAppearance -//--------------------------------------------------------- -// -//void MusE::configAppearance() -// { -// if (!appearance) -// appearance = new Appearance(arranger); -// appearance->resetValues(); -// appearance->show(); -// } - -//--------------------------------------------------------- -// preferences -//--------------------------------------------------------- - -void MusE::preferences() - { - if (!preferencesDialog) - preferencesDialog = new PreferencesDialog(arranger); - preferencesDialog->resetValues(); - preferencesDialog->show(); - } - -//--------------------------------------------------------- -// configChanged -// - called whenever configuration has changed -// - when configuration has changed by user, call with -// writeFlag=true to save configuration in ~/.MusE -//--------------------------------------------------------- - -void MusE::changeConfig(bool writeFlag) - { - if (writeFlag) - writeGlobalConfiguration(); - updateConfiguration(); - emit configChanged(); - } - -//--------------------------------------------------------- -// configShortCuts -//--------------------------------------------------------- - -void MusE::configShortCuts() - { - if (!shortcutConfig) - shortcutConfig = new ShortcutConfig(this); - shortcutConfig->_config_changed = false; - if (shortcutConfig->exec()) - changeConfig(true); - } - -//--------------------------------------------------------- -// globalCut -// - remove area between left and right locator -// - do not touch muted track -// - cut master track -//--------------------------------------------------------- - -void MusE::globalCut() - { - int lpos = song->lpos(); - int rpos = song->rpos(); - if ((lpos - rpos) >= 0) - return; - - song->startUndo(); - MidiTrackList* tracks = song->midis(); - for (iMidiTrack it = tracks->begin(); it != tracks->end(); ++it) { - MidiTrack* track = *it; - if (track->mute()) - continue; - PartList* pl = track->parts(); - for (iPart p = pl->begin(); p != pl->end(); ++p) { - Part* part = p->second; - int t = part->tick(); - int l = part->lenTick(); - if (t + l <= lpos) - continue; - if ((t >= lpos) && ((t+l) <= rpos)) { - song->removePart(part); - } - else if ((t < lpos) && ((t+l) > lpos) && ((t+l) <= rpos)) { - // remove part tail - int len = lpos - t; - Part* nPart = new Part(*part); - nPart->setLenTick(len); - // - // cut Events in nPart - EventList* el = nPart->events(); - iEvent ie = el->lower_bound(t + len); - for (; ie != el->end();) { - iEvent i = ie; - ++ie; - audio->msgDeleteEvent(i->second, nPart, false); - } - song->changePart(part, nPart); - } - else if ((t < lpos) && ((t+l) > lpos) && ((t+l) > rpos)) { - //---------------------- - // remove part middle - //---------------------- - - Part* nPart = new Part(*part); - EventList* el = nPart->events(); - iEvent is = el->lower_bound(lpos); - iEvent ie = el->upper_bound(rpos); - for (iEvent i = is; i != ie;) { - iEvent ii = i; - ++i; - audio->msgDeleteEvent(ii->second, nPart, false); - } - - ie = el->lower_bound(rpos); - for (; ie != el->end();) { - iEvent i = ie; - ++ie; - Event event = i->second; - Event nEvent = event.clone(); - nEvent.setTick(nEvent.tick() - (rpos-lpos)); - audio->msgChangeEvent(event, nEvent, nPart, false); - } - nPart->setLenTick(l - (rpos-lpos)); - song->changePart(part, nPart); - } - else if ((t >= lpos) && (t < rpos) && (t+l) > rpos) { - // TODO: remove part head - } - else if (t >= rpos) { - Part* nPart = new Part(*part); - int nt = part->tick(); - nPart->setTick(nt - (rpos -lpos)); - song->changePart(part, nPart); - } - } - } - // TODO: cut tempo track - // TODO: process marker - song->endUndo(SC_TRACK_MODIFIED | SC_PART_MODIFIED | SC_PART_REMOVED); - } - -//--------------------------------------------------------- -// globalInsert -// - insert empty space at left locator position upto -// right locator -// - do not touch muted track -// - insert in master track -//--------------------------------------------------------- - -void MusE::globalInsert() - { - unsigned lpos = song->lpos(); - unsigned rpos = song->rpos(); - if (lpos >= rpos) - return; - - song->startUndo(); - MidiTrackList* tracks = song->midis(); - for (iMidiTrack it = tracks->begin(); it != tracks->end(); ++it) { - MidiTrack* track = *it; - // - // process only non muted midi tracks - // - if (track->mute()) - continue; - PartList* pl = track->parts(); - for (iPart p = pl->begin(); p != pl->end(); ++p) { - Part* part = p->second; - unsigned t = part->tick(); - int l = part->lenTick(); - if (t + l <= lpos) - continue; - if (lpos >= t && lpos < (t+l)) { - Part* nPart = new Part(*part); - nPart->setLenTick(l + (rpos-lpos)); - EventList* el = nPart->events(); - - iEvent i = el->end(); - while (i != el->begin()) { - --i; - if (i->first < lpos) - break; - Event event = i->second; - Event nEvent = i->second.clone(); - nEvent.setTick(nEvent.tick() + (rpos-lpos)); - audio->msgChangeEvent(event, nEvent, nPart, false); - } - song->changePart(part, nPart); - } - else if (t > lpos) { - Part* nPart = new Part(*part); - nPart->setTick(t + (rpos -lpos)); - song->changePart(part, nPart); - } - } - } - // TODO: process tempo track - // TODO: process marker - song->endUndo(SC_TRACK_MODIFIED | SC_PART_MODIFIED | SC_PART_REMOVED); - } - -//--------------------------------------------------------- -// globalSplit -// - split all parts at the song position pointer -// - do not touch muted track -//--------------------------------------------------------- - -void MusE::globalSplit() - { - int pos = song->cpos(); - song->startUndo(); - TrackList* tracks = song->tracks(); - for (iTrack it = tracks->begin(); it != tracks->end(); ++it) { - Track* track = *it; - PartList* pl = track->parts(); - for (iPart p = pl->begin(); p != pl->end(); ++p) { - Part* part = p->second; - int p1 = part->tick(); - int l0 = part->lenTick(); - if (pos > p1 && pos < (p1+l0)) { - Part* p1; - Part* p2; - track->splitPart(part, pos, p1, p2); - song->changePart(part, p1); - song->addPart(p2); - break; - } - } - } - song->endUndo(SC_TRACK_MODIFIED | SC_PART_MODIFIED | SC_PART_INSERTED); - } - -//--------------------------------------------------------- -// copyRange -// - copy space between left and right locator position -// to song position pointer -// - dont process muted tracks -// - create a new part for every track containing the -// copied events -//--------------------------------------------------------- - -void MusE::copyRange() - { - QMessageBox::critical(this, - tr("MusE: Copy Range"), - tr("not implemented") - ); - } - -//--------------------------------------------------------- -// cutEvents -// - make sure that all events in a part end where the -// part ends -// - process only marked parts -//--------------------------------------------------------- - -void MusE::cutEvents() - { - QMessageBox::critical(this, - tr("MusE: Cut Events"), - tr("not implemented") - ); - } - -//--------------------------------------------------------- -// checkRegionNotNull -// return true if (rPos - lPos) <= 0 -//--------------------------------------------------------- - -bool MusE::checkRegionNotNull() - { - int start = song->lPos().frame(); - int end = song->rPos().frame(); - if (end - start <= 0) { - QMessageBox::critical(this, - tr("MusE: Bounce"), - tr("set left/right marker for bounce range") - ); - return true; - } - return false; - } - -//--------------------------------------------------------- -// resetAllRecordFlags -//--------------------------------------------------------- - -static void resetAllRecordFlags() - { - WaveTrackList* wtl = song->waves(); - for (iWaveTrack i = wtl->begin(); i != wtl->end(); ++i) { - if((*i)->recordFlag()) - song->setRecordFlag(*i, false); - } - MidiTrackList* mtl = song->midis(); - for (iMidiTrack i = mtl->begin(); i != mtl->end(); ++i) { - if((*i)->recordFlag()) - song->setRecordFlag(*i, false); - } - } - -//--------------------------------------------------------- -// bounceToTrack -//--------------------------------------------------------- - -void MusE::bounceToTrack() - { - if (checkRegionNotNull()) - return; - // search target track - TrackList* tl = song->tracks(); - WaveTrack* track = 0; - for (iTrack it = tl->begin(); it != tl->end(); ++it) { - Track* t = *it; - if (t->selected()) { - if (track) { - QMessageBox::critical(this, - tr("MusE: Bounce to Track"), - tr("more than one target track selected") - ); - return; - } - if (t->type() != Track::WAVE) { - QMessageBox::critical(this, - tr("MusE: Bounce to Track"), - tr("wrong target track type,\nselect wave track as target") - ); - return; - } - track = (WaveTrack*)t; - } - } - if (track == 0) { - QMessageBox::critical(this, - tr("MusE: Bounce to Track"), - tr("no target track selected") - ); - return; - } - song->bounceTrack = track; - song->setRecord(true); - resetAllRecordFlags(); - song->setRecordFlag(track, true); - audio->msgBounce(); - } - -//--------------------------------------------------------- -// bounceToFile -//--------------------------------------------------------- - -void MusE::bounceToFile() - { - if (checkRegionNotNull()) - return; - SndFile* sf = getSndFile(0, this); - if (sf == 0) - return; - OutputList* ol = song->outputs(); - AudioOutput* ao = ol->front(); - if (ao == 0) { - QMessageBox::critical(this, - tr("MusE: Bounce to File"), - tr("no output track found") - ); - return; - } - ao->setRecFile(sf); - song->setRecord(true); - resetAllRecordFlags(); - song->setRecordFlag(ao, true); - audio->msgBounce(); - } - -//--------------------------------------------------------- -// startEditInstrument -//--------------------------------------------------------- - -void MusE::startEditInstrument() - { - if (editInstrument == 0) - editInstrument = new EditInstrument(this); - editInstrument->show(); - } - -//--------------------------------------------------------- -// updateConfiguration -// called whenever the configuration has changed -//--------------------------------------------------------- - -void MusE::updateConfiguration() - { - } - -//--------------------------------------------------------- -// showBigtime -//--------------------------------------------------------- - -void MusE::showBigtime(bool on) - { - if (on && bigtime == 0) { - bigtime = new BigTime(0); - bigtime->setPos(0, song->cpos(), false); - connect(song, SIGNAL(posChanged(int,const AL::Pos&, bool)), bigtime, SLOT(setPos(int,const AL::Pos&, bool))); - connect(muse, SIGNAL(configChanged()), bigtime, SLOT(configChanged())); - connect(bigtime, SIGNAL(closed()), SLOT(bigtimeClosed())); - bigtime->resize(config.geometryBigTime.size()); - bigtime->move(config.geometryBigTime.topLeft()); - } - if (bigtime) - bigtime->setShown(on); - bt_id->setChecked(on); - } - -//--------------------------------------------------------- -// showMarker -//--------------------------------------------------------- - -void MusE::showMarker(bool on) - { - if (on && markerView == 0) { - markerView = new MarkerView; - connect(markerView, SIGNAL(closed()), SLOT(markerClosed())); - } - if (markerView) - markerView->setShown(on); - mk_id->setChecked(on); - } - -//--------------------------------------------------------- -// markerClosed -//--------------------------------------------------------- - -void MusE::markerClosed() - { - mk_id->setChecked(false); - markerView = 0; - } - -//--------------------------------------------------------- -// bigtimeClosed -//--------------------------------------------------------- - -void MusE::bigtimeClosed() - { - bt_id->setChecked(false); - } - -//--------------------------------------------------------- -// transportClosed -//--------------------------------------------------------- - -void MusE::transportClosed() - { - tr_id->setChecked(false); - } - -//--------------------------------------------------------- -// showMixer1 -//--------------------------------------------------------- - -void MusE::showMixer1(bool on) - { - if (on && mixer1 == 0) { - mixer1 = new Mixer(this, &(config.mixer1)); - connect(mixer1, SIGNAL(closed()), SLOT(mixer1Closed())); - mixer1->resize(config.mixer1.geometry.size()); - mixer1->move(config.mixer1.geometry.topLeft()); - } - if (mixer1) - mixer1->setShown(on); - aid1a->setChecked(on); - } - -//--------------------------------------------------------- -// showMixer2 -//--------------------------------------------------------- - -void MusE::showMixer2(bool on) - { - if (on && mixer2 == 0) { - mixer2 = new Mixer(this, &(config.mixer2)); - connect(mixer2, SIGNAL(closed()), SLOT(mixer2Closed())); - mixer2->resize(config.mixer2.geometry.size()); - mixer2->move(config.mixer2.geometry.topLeft()); - } - if (mixer2) - mixer2->setShown(on); - aid1b->setChecked(on); - } - -//--------------------------------------------------------- -// mixer1Closed -//--------------------------------------------------------- - -void MusE::mixer1Closed() - { - aid1a->setChecked(false); - } - -//--------------------------------------------------------- -// mixer2Closed -//--------------------------------------------------------- - -void MusE::mixer2Closed() - { - aid1b->setChecked(false); - } - -//--------------------------------------------------------- -// transportWindow -//--------------------------------------------------------- - -QWidget* MusE::transportWindow() - { - return transport; - } - -//--------------------------------------------------------- -// bigtimeWindow -//--------------------------------------------------------- - -QWidget* MusE::bigtimeWindow() - { - return bigtime; - } - -//--------------------------------------------------------- -// mixer1Window -//--------------------------------------------------------- - -QWidget* MusE::mixer1Window() - { - return mixer1; - } - -//--------------------------------------------------------- -// mixer2Window -//--------------------------------------------------------- - -QWidget* MusE::mixer2Window() - { - return mixer2; - } - -//--------------------------------------------------------- -// focusInEvent -//--------------------------------------------------------- - -void MusE::focusInEvent(QFocusEvent* ev) - { - if (mixer1) - mixer1->raise(); - if (mixer2) - mixer2->raise(); - raise(); - QMainWindow::focusInEvent(ev); - } - -//--------------------------------------------------------- -// setTool -//--------------------------------------------------------- - -void MusE::setTool(int tool) - { - tools1->set(tool); - arranger->setTool(tool); - } - -void MusE::setTool(const QString& s) - { - int id = 0; - for (int i = 0; i < TOOLS; ++i) { - if (toolList[i] == s) { - id = i; - break; - } - } - id = 1 << id; - tools1->set(id); - arranger->setTool(id); - } - -//--------------------------------------------------------- -// globalPitchChanged -//--------------------------------------------------------- - -void MusE::globalPitchChanged(int val) - { - song->setGlobalPitchShift(val); - } - -//--------------------------------------------------------- -// globalTempoChanged -//--------------------------------------------------------- - -void MusE::globalTempoChanged(int val) - { - audio->msgSetGlobalTempo(val); - song->update(SC_TEMPO); - } - -//--------------------------------------------------------- -// setTempo50 -//--------------------------------------------------------- - -void MusE::setTempo50() - { - setGlobalTempo(50); - } - -//--------------------------------------------------------- -// setTempo100 -//--------------------------------------------------------- - -void MusE::setTempo100() - { - setGlobalTempo(100); - } - -//--------------------------------------------------------- -// setTempo200 -//--------------------------------------------------------- - -void MusE::setTempo200() - { - setGlobalTempo(200); - } - -//--------------------------------------------------------- -// setGlobalTempo -//--------------------------------------------------------- - -void MusE::setGlobalTempo(int val) - { - globalTempoSpinBox->setValue(val); - } - -//--------------------------------------------------------- -// main -//--------------------------------------------------------- - -int main(int argc, char* argv[]) - { - char c; - QString opts("mvdDiosP:p"); - -#ifdef VST_SUPPORT - opts += "V"; -#endif -#ifdef DSSI_SUPPORT - opts += "I"; -#endif - while ((c = getopt(argc, argv, opts.toLatin1().data())) != EOF) { - switch (c) { - case 'v': printVersion(argv[0]); return 0; - case 'd': - debugMode = true; - realTimePriority = false; - break; - case 'm': midiOnly = true; break; - case 'D': debugMsg = true; break; - case 'i': midiInputTrace = true; break; - case 'o': midiOutputTrace = true; break; - case 's': debugSync = true; break; - case 'p': loadPlugins = false; break; - case 'V': loadVST = false; break; - case 'I': loadDSSI = false; break; - default: usage(argv[0], "bad argument"); return -1; - } - } - AL::debugMsg = debugMsg; - if (midiOnly) { - loadDSSI = false; - loadPlugins = false; - loadVST = false; - } - AL::initDsp(); - - museUser = QString(getenv("MUSEHOME")); - if (museUser.isEmpty()) - museUser = QDir::homePath(); - QString museGlobal; - const char* p = getenv("MUSE"); - museGlobal = p ? p : INSTPREFIX; - - museGlobalLib = museGlobal + "/lib/" INSTALL_NAME; - museGlobalShare = museGlobal + "/share/" INSTALL_NAME; - configName = museUser + QString("/." INSTALL_NAME); - lastMidiPath = museUser + "/" + ::config.importMidiPath; - lastWavePath = museUser + "/" + ::config.importWavePath; - - srand(time(0)); // initialize random number generator - initMidiController(); - initMidiInstruments(); - MuseApplication app(argc, argv); - QCoreApplication::setOrganizationName("MusE"); - QCoreApplication::setOrganizationDomain("muse.org"); - QCoreApplication::setApplicationName("MusE"); - - gmDrumMap.initGm(); // init default drum map - readConfiguration(); - - // this style is used for scrollbars in mixer plugin racks: - smallStyle = new QWindowsStyle(); - - // SHOW MUSE SPLASH SCREEN - if (config.showSplashScreen) { - QPixmap splsh(":/xpm/splash.png"); - - if (!splsh.isNull()) { - QSplashScreen* muse_splash = new QSplashScreen(splsh, - Qt::WindowStaysOnTopHint); - muse_splash->show(); - QTimer* stimer = new QTimer(0); - muse_splash->connect(stimer, SIGNAL(timeout()), muse_splash, SLOT(close())); - stimer->start(6000); - } - } - - QFile cf(config.styleSheetFile); - if (cf.open(QIODevice::ReadOnly)) { - QByteArray ss = cf.readAll(); - QString sheet(QString::fromUtf8(ss.data())); - app.setStyleSheet(sheet); - cf.close(); - } - else - printf("loading style sheet <%s> failed\n", qPrintable(config.styleSheetFile)); - - bool useJACK = !(debugMode || midiOnly); - if (useJACK) { - if (initJackAudio()) { - if (!debugMode) - { - QMessageBox::critical(NULL, "MusE fatal error", - "MusE failed to find a Jack audio server.\n" - "Check that Jack was started.\n" - "If Jack was started check that it was\n" - "started as the same user as MusE."); - // fatalError("cannot start JACK"); - } - else - { - fprintf(stderr, "fatal error: no JACK audio server found\n"); - fprintf(stderr, "no audio functions available\n"); - fprintf(stderr, "*** experimental mode -- no play possible ***\n"); - } - useJACK = false; - debugMode = true; - } - } - if (!useJACK) - initDummyAudio(); - - argc -= optind; - ++argc; - - if (debugMsg) { - printf("global lib: <%s>\n", museGlobalLib.toLatin1().data()); - printf("global share: <%s>\n", museGlobalShare.toLatin1().data()); - printf("muse home: <%s>\n", museUser.toLatin1().data()); - printf("project dir: <%s>\n", config.projectPath.toLatin1().data()); - printf("config file: <%s>\n", configName.toLatin1().data()); - } - - static QTranslator translator; - QFile f(":/muse.qm"); - if (f.exists()) { - if (debugMsg) - printf("locale file found\n"); - if (translator.load(":/muse.qm")) { - if (debugMsg) - printf("locale file loaded\n"); - } - qApp->installTranslator(&translator); - } - else { - if (debugMsg) { - printf("locale file not found for locale <%s>\n", - QLocale::system().name().toLatin1().data()); - } - } - - if (loadPlugins) { - initPlugins(); - initMidiPlugins(); - } - if (loadVST) - initVST(); - - if (loadDSSI) - initDSSI(); - - initIcons(); - if (!midiOnly) - initMetronome(); - - if (debugMsg) { - QStringList list = app.libraryPaths(); - QStringList::Iterator it = list.begin(); - printf("QtLibraryPath:\n"); - while(it != list.end()) { - printf(" <%s>\n", (*it).toLatin1().data()); - ++it; - } - } - - song = new Song(); - muse = new MusE(); - muse->readSettings(); - app.setMuse(muse); - - //--------------------------------------------------- - // load project - //--------------------------------------------------- - - // check for project directory: - - QDir pd(QDir::homePath() + "/" + config.projectPath); - if (!pd.exists()) { - // ask user to create a new project directory - QString title(QT_TR_NOOP("MusE: create project directory")); - - QString s; - s = "The MusE project directory\n%1\ndoes not exists"; - s = s.arg(pd.path()); - - int rv = QMessageBox::question(0, - title, - s, - "Create", - "Abort", - QString(), - 0, 1); - if (rv == 1) - exit(0); - if (!pd.mkpath(pd.path())) { - // TODO: tell user why this has happened - QMessageBox::critical(0, - title, - "Creating project directory failed"); - exit(-1); - } - } - - // check for template directory: - - pd.setPath(QDir::homePath() + "/" + config.templatePath); - if (!pd.exists()) { - // ask user to create a new template directory - QString title(QT_TR_NOOP("MusE: create template directory")); - - QString s; - s = "The MusE template directory\n%1\ndoes not exists"; - s = s.arg(pd.path()); - - int rv = QMessageBox::question(0, - title, - s, - "Create", - "Abort", - QString(), - 0, 1); - if (rv == 0) { - if (!pd.mkpath(pd.path())) { - // TODO: tell user why this has happened - QMessageBox::critical(0, - title, - "Creating template directory failed"); - } - } - } - - // check for instruments directory: - - pd.setPath(QDir::homePath() + "/" + config.instrumentPath); - if (!pd.exists()) { - // ask user to create a new instruments directory - QString title(QT_TR_NOOP("MusE: create instruments directory")); - - QString s; - s = "The MusE instruments directory\n%1\ndoes not exists"; - s = s.arg(pd.path()); - - int rv = QMessageBox::question(0, - title, - s, - "Create", - "Abort", - QString(), - 0, 1); - if (rv == 0) { - if (!pd.mkpath(pd.path())) { - // TODO: tell user why this has happened - QMessageBox::critical(0, - title, - "Creating instruments directory failed"); - } - } - } - - QString path; // project path relativ to config.projectPath - if (argc >= 2) - path = argv[optind]; // start with first name on command line - else if (config.startMode == START_LAST_PROJECT) { - if (projectList[0]) - path = *projectList[0]; - } - else if (config.startMode == START_START_PROJECT) - path = config.startProject; - - QString name = path.split("/").last(); - if (!path.isEmpty()) { - QFile f(QDir::homePath() +"/"+config.projectPath+"/"+path+"/"+name+".med"); - if (!f.exists()) { - QString s(QT_TR_NOOP("Cannot find project <%1>")); - QString header(QT_TR_NOOP("MusE: load Project")); - QMessageBox::critical(0, header, s.arg(f.fileName())); - path = ""; - } - } - if (path.isEmpty()) { - // - // ask user for a project - // - for (;;) { - ProjectDialog projectDialog; - projectDialog.setProjectName(name); - int rv = projectDialog.exec(); - if (rv == 1) { - path = projectDialog.projectPath(); - if (!path.isEmpty()) - break; - } - // the user did not select/create a project - rv = QMessageBox::question(0, - "MusE: create/select project", - "before MusE starts, you must select a project\n" - "or create a new one", - "Go Back", - "Abort", - QString(), - 0, 1); - if (rv == 1) - exit(0); - } - } - - muse->loadProject(path); - muse->changeConfig(false); - if (!debugMode) { - if (mlockall(MCL_CURRENT | MCL_FUTURE)) - perror("WARNING: Cannot lock memory:"); - } - muse->show(); - muse->seqStart(); - int n = app.exec(); - if (n) - fprintf(stderr, "app end %d\n", n); - return n; - } - -//--------------------------------------------------------- -// beat -// heart beat -//--------------------------------------------------------- - -void MusE::beat() - { - song->beat(); - if (mixer1 && mixer1->isVisible()) - mixer1->heartBeat(); - if (mixer2 && mixer2->isVisible()) - mixer2->heartBeat(); - if (arranger && arranger->getStrip() && arranger->getStrip()->isVisible()) - arranger->getStrip()->heartBeat(); - } - -//--------------------------------------------------------- -// writeSettings -//--------------------------------------------------------- - -void MusE::writeSettings() - { - QSettings settings; - settings.beginGroup("MainWindow"); - settings.setValue("size", size()); - settings.setValue("pos", pos()); - settings.endGroup(); - } - -//--------------------------------------------------------- -// readSettings -//--------------------------------------------------------- - -void MusE::readSettings() - { - QSettings settings; - settings.beginGroup("MainWindow"); - resize(settings.value("size", QSize(950, 500)).toSize()); - move(settings.value("pos", QPoint(10, 10)).toPoint()); - settings.endGroup(); - } - - diff --git a/muse/muse/muse.h b/muse/muse/muse.h deleted file mode 100644 index 8a9d4f68..00000000 --- a/muse/muse/muse.h +++ /dev/null @@ -1,318 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __APP_H__ -#define __APP_H__ - -#include "shortcuts.h" -#include "cobject.h" -#include "widgets/tools.h" - -namespace AL { - class Xml; - class Pos; - }; -using AL::Xml; -using AL::Pos; - -class Part; -class PartList; -class Transport; -class BigTime; -class Arranger; -class Track; -class MidiSyncConfig; -class MRConfig; -class MetronomeConfig; -class AudioConf; -class MidiFileConfig; -class MidiFilterConfig; -class MarkerView; -class MidiInputTransformDialog; -class MidiTransformerDialog; -class RhythmGen; -class MidiTrack; -class ShortcutConfig; -class PreferencesDialog; -class EditInstrument; -class Mixer; -class ExportMidiDialog; -class ListEdit; -class Ctrl; - -extern void configMidiController(); - -//--------------------------------------------------------- -// MusE -//--------------------------------------------------------- - -class MusE : public QMainWindow // , public Ui::MuseBase - { - Q_OBJECT - - QAction* fileSaveAction; - QAction* fileSaveAsAction; - QAction* fileOpenAction; - QAction* pianoAction; - QAction* waveAction; - QAction* trackerAction; - QAction* fileNewAction; - - QString appName; - - QToolBar *tools; - EditToolBar *tools1; - int _raster; - - Transport* transport; - QAction* tr_id; - BigTime* bigtime; - QAction* bt_id; - MarkerView* markerView; - QAction* mk_id; - Mixer* mixer1; - QAction* aid1a; - Mixer* mixer2; - QAction* aid1b; - ListEdit* listEditor; - - EditInstrument* editInstrument; - - QMenu *menu_file, *menuView, *menuSettings, *menu_help; - QMenu *menuEdit, *menuStructure; - QMenu* menu_audio; - QMenu* menu_functions; - QMenu* select, *master, *midiEdit, *addTrack; - QMenu* follow; - QMenu* midiInputPlugins; - - QAction* aid2; - QAction* aid3; - QAction* fid0; - QAction* fid1; - QAction* fid2; - QAction* cutAction; - QAction* copyAction; - QAction* pasteAction; - - QWidget* midiPortConfig; - QWidget* softSynthesizerConfig; - MidiSyncConfig* midiSyncConfig; - MRConfig* midiRemoteConfig; - RhythmGen* midiRhythmGenerator; - MetronomeConfig* metronomeConfig; - AudioConf* audioConfig; - MidiFileConfig* midiFileConfig; - MidiFilterConfig* midiFilterConfig; - MidiInputTransformDialog* midiInputTransform; - ShortcutConfig* shortcutConfig; - PreferencesDialog* preferencesDialog; - ExportMidiDialog* exportMidiDialog; - - MidiTransformerDialog* midiTransformerDialog; - QMenu* openRecent; - QSpinBox* globalTempoSpinBox; - QComboBox* rasterCombo; - - QDialog* projectPropsDialog; - - //------------------------------------------ - - bool readMidi(FILE*); - void processTrack(MidiTrack* track); - - void write(Xml& xml) const; - - void setFollow(FollowMode); - void readConfigParts(QDomNode); - void readCtrl(QDomNode, int port, int channel); - PartList* getMidiPartsToEdit(); - Part* readPart(QDomNode); - bool checkRegionNotNull(); - void loadProject1(const QString&); - void writeGlobalConfiguration(Xml&) const; - void writeConfiguration(Xml&) const; - void updateConfiguration(); - - bool leaveProject(); - - virtual void focusInEvent(QFocusEvent*); - void addMidiFile(const QString name); - void copyParts(bool); - void writeSettings(); - - signals: - void configChanged(); - void rasterChanged(int); - void startLoadSong(); - - private slots: - void beat(); - void loadProject(); - void quitDoc(); - void about(); - void aboutQt(); - void startHelpBrowser(); - void startHomepageBrowser(); - void startBugBrowser(); - void importMidi(); - void importWave(); - bool importWave(const QString&); - void exportMidi(); - - void configMidiSync(); - void configMidiFile(); - void configShortCuts(); - - void startMasterEditor(); - - void startDrumEditor(); - void startDrumEditor(PartList* pl); - void startEditor(Part*); - void startEditor(PartList*, int); - void startPianoroll(); - void startPianoroll(PartList* pl); - void startMidiTrackerEditor(); - void startMidiTrackerEditor(PartList* pl); - void startWaveEditor(); - void startWaveEditor(PartList*); - void writeGlobalConfiguration() const; - void startEditInstrument(); - - void startListEditor(); - void startListEditor(PartList*); - - void showProjectPropsDialog(); - - void openRecentMenu(); - void selectProject(QAction*); - void cmd(QAction*); - void clipboardChanged(); - void transpose(); - void modifyGateTime(); - void modifyVelocity(); - void crescendo(); - void thinOut(); - void eraseEvent(); - void noteShift(); - void moveClock(); - void copyMeasure(); - void eraseMeasure(); - void deleteMeasure(); - void createMeasure(); - void mixTrack(); - void globalCut(); - void globalInsert(); - void globalSplit(); - void copyRange(); - void cutEvents(); - void bounceToTrack(); - void resetMidiDevices(); - void initMidiDevices(); - void localOff(); - void bigtimeClosed(); - void transportClosed(); - void markerClosed(); - void mixer1Closed(); - void mixer2Closed(); - void syncChanged(); - void preferences(); - void aboutToShowAddTrack(); - void setRaster(int); - void playToggle(); - void saveAsTemplate(); - - public slots: - void bounceToFile(); - void closeEvent(QCloseEvent*e); - void loadProject(const QString&); - bool seqStart(); - void showTransport(bool flag); - void showBigtime(bool); - void showMixer1(bool); - void showMixer2(bool); - void showMarker(bool on); - void importMidi(const QString &file); - void globalPitchChanged(int val); - void globalTempoChanged(int val); - bool seqRestart(); - void setTempo50(); - void setTempo100(); - void setTempo200(); - void setGlobalTempo(int val); - void setTool(int); - void setTool(const QString&); - void startEditor(Part*, int); - bool save(); - bool saveAs(); - - public: - MusE(); - Arranger* arranger; - QRect configGeometryMain; - void kbAccel(int); - void changeConfig(bool writeFlag); - - void seqStop(); - void setHeartBeat(); - QWidget* transportWindow(); - QWidget* bigtimeWindow(); - QWidget* mixer1Window(); - QWidget* mixer2Window(); - bool importWaveToTrack(const QString& name, Track* track, const Pos&); - - void selectionChanged(); - - int version; // last *.med file version - // 0xaabb aa - major version, bb minor version - int raster() const { return _raster; } - void setupTransportToolbar(QToolBar* tb) const; - void readToplevels(QDomNode); - void initRaster(int); - - QAction* startAction; - QAction* rewindAction; - QAction* forwardAction; - QAction* stopAction; - QAction* playAction; - - void showListEditor(const Pos&, Track*, Part*, Ctrl*); - void readSettings(); - }; - -//--------------------------------------------------------- -// MuseApplication -//--------------------------------------------------------- - -class MuseApplication : public QApplication { - MusE* muse; - - public: - MuseApplication(int& argc, char** argv); - void setMuse(MusE* m) { muse = m; } - static Shortcut sc[]; - }; - -extern MusE* muse; -extern QStyle* smallStyle; -extern void addProject(const QString& name); - -#endif - diff --git a/muse/muse/muse.qrc b/muse/muse/muse.qrc deleted file mode 100644 index b15b64da..00000000 --- a/muse/muse/muse.qrc +++ /dev/null @@ -1,85 +0,0 @@ - - - - style.qss - xpm/muse_icon_64x64.png - xpm/splash.png - xpm/filenew.png - xpm/fileopen.png - xpm/filesave.png - xpm/punchin.xpm - xpm/punchout.xpm - xpm/loop.xpm - xpm/start.xpm - xpm/stop.xpm - xpm/play.xpm - xpm/frewind.xpm - xpm/fforward.xpm - xpm/folder_new.png - xpm/recordOn.svg - xpm/recordOff.svg - xpm/greendot.svg - xpm/darkgreendot.svg - xpm/activeon.svg - xpm/activeoff.svg - xpm/on.svg - xpm/off.svg - xpm/mono.svg - xpm/stereo.svg - xpm/loop.xpm - xpm/punchin.xpm - xpm/punchout.xpm - xpm/undo.xpm - xpm/redo.xpm - xpm/panic.xpm - xpm/piano.xpm - xpm/view_transport_window.xpm - xpm/view_bigtime_window.xpm - xpm/view_cliplist.xpm - xpm/view_marker.xpm - xpm/view_mixer.xpm - xpm/pointer.xpm - xpm/pencil.xpm - xpm/delete.xpm - xpm/cut.xpm - xpm/glue.xpm - xpm/quant.xpm - xpm/draw.xpm - xpm/editmute.xpm - - xpm/select_all.xpm - xpm/select_deselect_all.xpm - xpm/select_invert_selection.xpm - xpm/select_inside_loop.xpm - xpm/select_outside_loop.xpm - xpm/editcut.xpm - xpm/editcopy.xpm - xpm/editpaste.xpm - xpm/edit_drumms.xpm - xpm/edit_mastertrack.xpm - xpm/edit_list.xpm - xpm/wave.xpm - - - - - ../share/locale/muse_de.qm - - - - ../share/locale/muse_es.qm - - - - ../share/locale/muse_fr.qm - - - - ../share/locale/muse_ru.qm - - - - ../share/locale/muse_sv_SE.qm - - - diff --git a/muse/muse/part.cpp b/muse/muse/part.cpp deleted file mode 100644 index 61ba561d..00000000 --- a/muse/muse/part.cpp +++ /dev/null @@ -1,361 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "song.h" -#include "part.h" -#include "track.h" -#include "globals.h" -#include "event.h" -#include "audio.h" -#include "al/tempo.h" - -const char* partColorNames[] = { - QT_TR_NOOP("Default"), - QT_TR_NOOP("Refrain"), - QT_TR_NOOP("Bridge"), - QT_TR_NOOP("Intro"), - QT_TR_NOOP("Coda"), - QT_TR_NOOP("Chorus"), - QT_TR_NOOP("Solo"), - QT_TR_NOOP("Brass"), - QT_TR_NOOP("Percussion"), - QT_TR_NOOP("Drums"), - QT_TR_NOOP("Guitar"), - QT_TR_NOOP("Bass"), - QT_TR_NOOP("Flute"), - QT_TR_NOOP("Strings"), - QT_TR_NOOP("Keyboard"), - QT_TR_NOOP("Piano"), - QT_TR_NOOP("Saxophon"), - }; - -CloneList cloneList; - -//--------------------------------------------------------- -// Part -//--------------------------------------------------------- - -Part::Part(Track* t) - { - _selected = false; - _mute = false; - _colorIndex = 0; - _raster = -1; // invalid - _quant = -1; - _xmag = -1.0; - _fillLen = 0; - _track = t; - _events = 0; - if (_track && _track->type() == Track::WAVE) - setType(AL::FRAMES); - } - -//--------------------------------------------------------- -// clone -//--------------------------------------------------------- - -void Part::clone(EventList* e) - { - _events = e; - ref(); - } - -//--------------------------------------------------------- -// addEvent -//--------------------------------------------------------- - -iEvent Part::addEvent(Event& p) - { - return _events->add(p); - } - -iEvent Part::addEvent(Event& p, unsigned t) - { - return _events->add(p, t); - } - -//--------------------------------------------------------- -// index -//--------------------------------------------------------- - -int PartList::index(Part* part) - { - int index = 0; - for (iPart i = begin(); i != end(); ++i, ++index) - if (i->second == part) { - return index; - } - printf("PartList::index(): not found!\n"); - abort(); -// return 0; - } - -//--------------------------------------------------------- -// find -//--------------------------------------------------------- - -Part* PartList::find(int idx) - { - int index = 0; - for (iPart i = begin(); i != end(); ++i, ++index) - if (index == idx) - return i->second; - return 0; - } - -//--------------------------------------------------------- -// findPart -// search for part which contains tick -//--------------------------------------------------------- - -Part* PartList::findPart(unsigned tick) - { - iPart i = lower_bound(tick); - if (i != begin()) - --i; - for (; i != end(); ++i) { - unsigned tick1 = i->second->tick(); - unsigned tick2 = tick1 + i->second->lenTick(); - - if (tick >= tick2) - continue; - if (tick >= tick1) - return i->second; - if (tick < tick1) - break; - } - return 0; - } - -//--------------------------------------------------------- -// add -//--------------------------------------------------------- - -iPart PartList::add(Part* part) - { - return insert(std::pair (part->tick(), part)); - } - -//--------------------------------------------------------- -// remove -//--------------------------------------------------------- - -void PartList::remove(Part* part) - { - iPart i; - for (i = begin(); i != end(); ++i) { - if (i->second == part) { - erase(i); - return; - } - } -printf("remove part: not found\n"); - assert(i != end()); - } - -//--------------------------------------------------------- -// dump -//--------------------------------------------------------- - -void Part::dump(int n) const - { - for (int i = 0; i < n; ++i) - putchar(' '); - printf("Part: <%s> ", _name.toLatin1().data()); - for (int i = 0; i < n; ++i) - putchar(' '); - PosLen::dump(); - } - -//--------------------------------------------------------- -// Part::write -//--------------------------------------------------------- - -void Part::write(Xml& xml) - { - int id = -1; - bool dumpEvents = true; - - - if (isClone()) { - // we have to dump the event list only on first - // incarnation of clone - - for (iClone i = cloneList.begin(); i != cloneList.end(); ++i) { - if (i->el == _events) { - id = i->id; - dumpEvents = false; - break; - } - } - if (id == -1) - cloneList.push_back(ClonePart(_events, cloneList.size())); - } - - if (id != -1) - xml.stag(QString("part cloneId=\"%1\"").arg(id)); - else - xml.stag("part"); - if (!_name.isEmpty()) - xml.tag("name", _name); - - PosLen::write(xml, "poslen"); - if (_selected) - xml.tag("selected", _selected); - xml.tag("color", _colorIndex); - if (_raster != -1) - xml.tag("raster", _raster); - if (_quant != -1) - xml.tag("quant", _quant); - if (_xmag != -1.0) - xml.tag("xmag", _xmag); - for (ciCtrlCanvas i = ctrlCanvasList.begin(); i != ctrlCanvasList.end(); ++i) - xml.tagE(QString("CtrlCanvas h=\"%1\" id=\"%2\"").arg(i->height).arg(i->ctrlId)); - if (_fillLen) - xml.tag("fillLen", _fillLen); - if (_mute) - xml.tag("mute", _mute); - if (dumpEvents) { - for (ciEvent e = _events->begin(); e != _events->end(); ++e) - e->second.write(xml, *this); - } - xml.etag("part"); - } - -//--------------------------------------------------------- -// Part::read -//--------------------------------------------------------- - -void Part::read(QDomNode node, bool isMidiPart) - { - QDomElement e = node.toElement(); - int id = e.attribute("cloneId", "-1").toInt(); - - ctrlCanvasList.clear(); - for (node = node.firstChild(); !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - QString tag(e.tagName()); - QString s(e.text()); - int i = s.toInt(); - if (tag == "name") - _name = s; - else if (tag == "poslen") - PosLen::read(node); - else if (tag == "selected") - _selected = i; - else if (tag == "color") - _colorIndex = i; - else if (tag == "raster") - _raster = i; - else if (tag == "quant") - _quant = i; - else if (tag == "xmag") - _xmag = s.toDouble(); - else if (tag == "CtrlCanvas") { - CtrlCanvas c; - c.ctrlId = e.attribute("id","0").toInt(); - c.height = e.attribute("h","50").toInt(); - ctrlCanvasList.push_back(c); - } - else if (tag == "mute") - _mute = i; - else if (tag == "fillLen") - _fillLen = i; - else if (tag == "event") { - EventType type = isMidiPart ? Note : Wave; - Event e(type); - e.read(node); - // tickpos is relative to start of part - // TODO: better handling for wave event - e.move(-tick()); - int tick = e.tick(); - if ((tick < 0) || (tick >= int(lenTick()))) { - printf("ReadEvent: warning: event not in part: %d - %d - %d, discarded\n", - 0, tick, lenTick()); - } - else { -#if 0 - if (e.type() == Controller) { - MidiChannel* mc = ((MidiTrack*)_track)->channel(); - if (mc) { - CVal v; - v.i = e.dataB(); - mc->addControllerVal(e.dataA(), tick, v); - } - else - _events.add(e); - } - else -#endif - _events->add(e); - } - } - else - printf("MusE:read: unknown tag %s\n", e.tagName().toLatin1().data()); - } - - if (id != -1) { - bool found = false; - for (iClone i = cloneList.begin(); i != cloneList.end(); ++i) { - if (i->id == id) { - if (_events->size()) - printf("MusE::internal error: clone part contains events\n"); - clone(i->el); - found = true; - break; - } - } - if (!found) { - // add to cloneList: - ClonePart cp(_events, id); - cloneList.push_back(cp); - } - } - } - -//--------------------------------------------------------- -// isClone -//--------------------------------------------------------- - -bool Part::isClone() const - { - return _events->cloneCount > 1; - } - -//--------------------------------------------------------- -// ref -//--------------------------------------------------------- - -void Part::ref() - { - if (_events == 0) - _events = new EventList; - ++(_events->cloneCount); - } - -//--------------------------------------------------------- -// deref -//--------------------------------------------------------- - -void Part::deref() - { - --(_events->cloneCount); - } - diff --git a/muse/muse/part.h b/muse/muse/part.h deleted file mode 100644 index fd5fdd52..00000000 --- a/muse/muse/part.h +++ /dev/null @@ -1,151 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __PART_H__ -#define __PART_H__ - -#include "event.h" - -class Track; -class MidiTrack; -class WaveTrack; - -namespace AL { - class Xml; - }; - -using AL::Xml; - -//--------------------------------------------------------- -// ClonePart -//--------------------------------------------------------- - -struct ClonePart { - EventList* el; - int id; - ClonePart(EventList* e, int i) : el(e), id(i) {} - }; - -typedef std::list CloneList; -typedef CloneList::iterator iClone; -extern CloneList cloneList; - -//--------------------------------------------------------- -// CtrlCanvas -//--------------------------------------------------------- - -struct CtrlCanvas { - int ctrlId; - int height; - }; - -typedef std::list CtrlCanvasList; -typedef CtrlCanvasList::iterator iCtrlCanvas; -typedef CtrlCanvasList::const_iterator ciCtrlCanvas; - -//--------------------------------------------------------- -// Part -//--------------------------------------------------------- - -class Part : public AL::PosLen { - QString _name; - bool _selected; - bool _mute; - int _colorIndex; - - // editor presets: - int _raster, _quant; - double _xmag; - CtrlCanvasList ctrlCanvasList; - - // auto fill: - int _fillLen; // = 0 if no auto fill - - protected: - Track* _track; - EventList* _events; - - public: - Part(Track*); - - CtrlCanvasList* getCtrlCanvasList() { return &ctrlCanvasList; } - - const QString& name() const { return _name; } - void setName(const QString& s) { _name = s; } - - bool selected() const { return _selected; } - void setSelected(bool f) { _selected = f; } - - bool mute() const { return _mute; } - void setMute(bool b) { _mute = b; } - - Track* track() const { return _track; } - void setTrack(Track*t) { _track = t; } - - int colorIndex() const { return _colorIndex; } - void setColorIndex(int idx) { _colorIndex = idx; } - - int raster() const { return _raster; } - void setRaster(int val) { _raster = val; } - - int quant() const { return _quant; } - void setQuant(int val) { _quant = val; } - - double xmag() const { return _xmag; } - void setXmag(double val) { _xmag = val; } - - EventList* events() const { return _events; } - - void clone(EventList* e); - iEvent addEvent(Event& p); - iEvent addEvent(Event& p, unsigned); - - int fillLen() const { return _fillLen; } - void setFillLen(int val) { _fillLen = val; } - - void read(QDomNode, bool isMidiPart); - void write(Xml&); - void dump(int n = 0) const; - - bool isClone() const; - void deref(); - void ref(); - }; - -//--------------------------------------------------------- -// PartList -//--------------------------------------------------------- - -typedef std::multimap > PL; -typedef PL::iterator iPart; -typedef PL::const_iterator ciPart; - -class PartList : public PL { - public: - Part* findPart(unsigned tick); - iPart add(Part*); - void remove(Part* part); - int index(Part*); - Part* find(int idx); - }; - -extern const char* partColorNames[]; -#endif - diff --git a/muse/muse/partdrag.cpp b/muse/muse/partdrag.cpp deleted file mode 100644 index c47d3c11..00000000 --- a/muse/muse/partdrag.cpp +++ /dev/null @@ -1,199 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "partdrag.h" -#include "al/xml.h" -#include "part.h" - -const char MidiPartDrag::type[] = "application/muse/part/midi"; -const char AudioPartDrag::type[] = "application/muse/part/audio"; -const char WavUriDrag::type[] = "text/uri-list"; - -//--------------------------------------------------------- -// MidiPartDrag -//--------------------------------------------------------- - -MidiPartDrag::MidiPartDrag(Part* part, QWidget* src) - : QDrag(src) - { - QBuffer buffer; - buffer.open(QIODevice::WriteOnly); - AL::Xml xml(&buffer); - part->write(xml); - buffer.close(); - QMimeData* mimeData = new QMimeData; - mimeData->setData(type, buffer.buffer()); - setMimeData(mimeData); - } - -//--------------------------------------------------------- -// canDecode -//--------------------------------------------------------- - -bool MidiPartDrag::canDecode(const QMimeData* s) - { - return s->hasFormat(type); - } - -//--------------------------------------------------------- -// decode -//--------------------------------------------------------- - -bool MidiPartDrag::decode(const QMimeData* s, Part*& p) - { - p = 0; - QDomDocument doc; - int line, column; - QString err; - if (!doc.setContent(s->data(type), false, &err, &line, &column)) { - QString col, ln, error; - col.setNum(column); - ln.setNum(line); - error = err + "\n at line: " + ln + " col: " + col; - printf("error parsing part: %s\n", error.toLatin1().data()); - return false; - } - for (QDomNode node = doc.documentElement(); !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - if (e.isNull()) - continue; - if (e.tagName() == "part") { - p = new Part(0); - p->ref(); - p->read(node, true); - } - else - printf("MusE: %s not supported\n", e.tagName().toLatin1().data()); - } - return (p != 0); - } - -//--------------------------------------------------------- -// PartDrag -// does only transfer reference to part, this does -// not allow for transfers between different apps -// TODO: transfer content (xml representation) -//--------------------------------------------------------- - -AudioPartDrag::AudioPartDrag(Part* part, QWidget* src) - : QDrag(src) - { - QBuffer buffer; - buffer.open(QIODevice::WriteOnly); - Xml xml(&buffer); - part->write(xml); - buffer.close(); - - QMimeData* mimeData = new QMimeData; - mimeData->setData(type, buffer.buffer()); - setMimeData(mimeData); - } - -//--------------------------------------------------------- -// canDecode -//--------------------------------------------------------- - -bool AudioPartDrag::canDecode(const QMimeData* s) - { - return s->hasFormat(type); - } - -//--------------------------------------------------------- -// decode -//--------------------------------------------------------- - -bool AudioPartDrag::decode(const QMimeData* s, Part*& p) - { - p = 0; - QDomDocument doc; - int line, column; - QString err; - if (!doc.setContent(s->data(type), false, &err, &line, &column)) { - QString col, ln, error; - col.setNum(column); - ln.setNum(line); - error = err + "\n at line: " + ln + " col: " + col; - printf("error parsing part: %s\n", error.toLatin1().data()); - return false; - } - for (QDomNode node = doc.documentElement(); !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - if (e.isNull()) - continue; - if (e.tagName() == "part") { - p = new Part(0); - p->ref(); - p->read(node, false); - } - else - printf("MusE: %s not supported\n", e.tagName().toLatin1().data()); - } - return (p != 0); - } - -//--------------------------------------------------------- -// WavUriDrag -//--------------------------------------------------------- - -WavUriDrag::WavUriDrag(const QString& s, QWidget* src) - : QDrag(src) - { - QByteArray a(s.toAscii()); - QMimeData* mimeData = new QMimeData; - mimeData->setData(type, a); - setMimeData(mimeData); - } - -//--------------------------------------------------------- -// canDecode -//--------------------------------------------------------- - -bool WavUriDrag::canDecode(const QMimeData* s) - { - if (!s->hasFormat(type)) - return false; - QByteArray data = s->data(type); - QUrl url(data); - if (url.scheme() != "file") - return false; - QFileInfo fi(url.toLocalFile().trimmed()); - if (!fi.exists()) { - printf("drag file <%s> does not exist\n", fi.filePath().toLatin1().data()); - return false; - } - if (fi.suffix() != "wav") { - printf("drag file <%s> has no wav suffix\n", fi.filePath().toLatin1().data()); - return false; - } - return true; - } - -//--------------------------------------------------------- -// decode -//--------------------------------------------------------- - -bool WavUriDrag::decode(const QMimeData* s, QString* uri) - { - QByteArray data = s->data(type); - QUrl url(data); - *uri = url.toLocalFile().trimmed(); - return true; - } - diff --git a/muse/muse/partdrag.h b/muse/muse/partdrag.h deleted file mode 100644 index d8c2e978..00000000 --- a/muse/muse/partdrag.h +++ /dev/null @@ -1,69 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __PARTDRAG_H__ -#define __PARTDRAG_H__ - -class Part; - -//--------------------------------------------------------- -// MidiPartDrag -//--------------------------------------------------------- - -class MidiPartDrag : public QDrag { - Q_OBJECT - - public: - static const char type[]; - MidiPartDrag(Part*, QWidget* src); - static bool canDecode(const QMimeData*); - static bool decode(const QMimeData* s, Part*& p); - }; - -//--------------------------------------------------------- -// AudioPartDrag -//--------------------------------------------------------- - -class AudioPartDrag : public QDrag { - Q_OBJECT - - public: - static const char type[]; - AudioPartDrag(Part*, QWidget* src); - static bool canDecode(const QMimeData*); - static bool decode(const QMimeData* s, Part*& p); - }; - -//--------------------------------------------------------- -// WavUriDrag -//--------------------------------------------------------- - -class WavUriDrag : public QDrag { - Q_OBJECT - - public: - static const char type[]; - WavUriDrag(const QString&, QWidget* src); - static bool canDecode(const QMimeData*); - static bool decode(const QMimeData* s, QString* p); - }; - -#endif - diff --git a/muse/muse/pipeline.cpp b/muse/muse/pipeline.cpp deleted file mode 100644 index ae5b9d25..00000000 --- a/muse/muse/pipeline.cpp +++ /dev/null @@ -1,221 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "pipeline.h" -#include "plugin.h" -#include "plugingui.h" -#include "al/dsp.h" - -//--------------------------------------------------------- -// Pipeline -//--------------------------------------------------------- - -Pipeline::Pipeline() - { - for (int i = 0; i < MAX_CHANNELS; ++i) - posix_memalign((void**)(buffer + i), 16, sizeof(float) * segmentSize); - } - -Pipeline::Pipeline(const Pipeline& p) - : QList(p) - { - for (int i = 0; i < MAX_CHANNELS; ++i) - posix_memalign((void**)(buffer + i), 16, sizeof(float) * segmentSize); - } - -//--------------------------------------------------------- -// Pipeline -//--------------------------------------------------------- - -Pipeline::~Pipeline() - { - for (int i = 0; i < MAX_CHANNELS; ++i) - ::free(buffer[i]); - } - -//--------------------------------------------------------- -// setChannels -//--------------------------------------------------------- - -void Pipeline::setChannels(int n) - { - foreach(PluginI* plugin, *this) - plugin->setChannels(n); - } - -//--------------------------------------------------------- -// isOn -//--------------------------------------------------------- - -bool Pipeline::isOn(int idx) const - { - PluginI* p = value(idx); - if (p) - return p->on(); - return false; - } - -//--------------------------------------------------------- -// setOn -//--------------------------------------------------------- - -void Pipeline::setOn(int idx, bool flag) - { - PluginI* p = value(idx); - if (p) { - p->setOn(flag); - if (p->gui()) - p->gui()->setOn(flag); - } - } - -//--------------------------------------------------------- -// label -//--------------------------------------------------------- - -QString Pipeline::label(int idx) const - { - PluginI* p = value(idx); - if (p) - return p->label(); - return QString(""); - } - -//--------------------------------------------------------- -// name -//--------------------------------------------------------- - -QString Pipeline::name(int idx) const - { - PluginI* p = value(idx); - if (p) - return p->name(); - return QString("empty"); - } - -//--------------------------------------------------------- -// hasNativeGui -//--------------------------------------------------------- - -bool Pipeline::hasNativeGui(int idx) const - { - PluginI* p = value(idx); - if (p) - return p->hasNativeGui(); - return false; - } - -//--------------------------------------------------------- -// move -//--------------------------------------------------------- - -void Pipeline::move(int idx, bool up) - { - PluginI* p1 = (*this)[idx]; - if (up) { - (*this)[idx] = (*this)[idx-1]; - (*this)[idx-1] = p1; - } - else { - (*this)[idx] = (*this)[idx+1]; - (*this)[idx+1] = p1; - } - } - -//--------------------------------------------------------- -// showGui -//--------------------------------------------------------- - -void Pipeline::showGui(int idx, bool flag) - { - PluginI* p = (*this)[idx]; - if (p) - p->showGui(flag); - } - -//--------------------------------------------------------- -// showNativeGui -//--------------------------------------------------------- - -void Pipeline::showNativeGui(int idx, bool flag) - { - PluginI* p = (*this)[idx]; - if (p) - p->showNativeGui(flag); - } - -//--------------------------------------------------------- -// guiVisible -//--------------------------------------------------------- - -bool Pipeline::guiVisible(int idx) - { - PluginI* p = (*this)[idx]; - if (p) - return p->guiVisible(); - return false; - } - -//--------------------------------------------------------- -// nativeGuiVisible -//--------------------------------------------------------- - -bool Pipeline::nativeGuiVisible(int idx) - { - PluginI* p = (*this)[idx]; - if (p) - return p->nativeGuiVisible(); - return false; - } - -//--------------------------------------------------------- -// apply -//--------------------------------------------------------- - -void Pipeline::apply(int ports, unsigned long nframes, float** buffer1) - { - // prepare a second set of buffers in case a plugin is not - // capable of inPlace processing - - bool swap = false; - - foreach (PluginI* p, *this) { - if (p->on()) { - if (p->inPlaceCapable()) { - if (swap) - p->apply(nframes, ports, buffer, buffer); - else - p->apply(nframes, ports, buffer1, buffer1); - } - else { - if (swap) - p->apply(nframes, ports, buffer, buffer1); - else - p->apply(nframes, ports, buffer1, buffer); - swap = !swap; - } - } - } - if (swap) { - for (int i = 0; i < ports; ++i) - AL::dsp->cpy(buffer1[i], buffer[i], nframes); - } - } - diff --git a/muse/muse/pipeline.h b/muse/muse/pipeline.h deleted file mode 100644 index a6e34678..00000000 --- a/muse/muse/pipeline.h +++ /dev/null @@ -1,59 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __PIPELINE_H__ -#define __PIPELINE_H__ - -#include "globaldefs.h" - -class PluginI; - -//--------------------------------------------------------- -// Pipeline -// chain of connected efx inserts -//--------------------------------------------------------- - -class Pipeline : public QList { - float* buffer[MAX_CHANNELS]; - - public: - Pipeline(); - ~Pipeline(); - - Pipeline(const Pipeline&); - Pipeline& operator=(const Pipeline&); // disable copies - - bool isOn(int idx) const; - void setOn(int, bool); - QString label(int idx) const; - QString name(int idx) const; - bool hasNativeGui(int idx) const; - void showGui(int, bool); - bool guiVisible(int); - bool nativeGuiVisible(int); - void showNativeGui(int, bool); - void apply(int ports, unsigned long nframes, float** buffer); - void move(int idx, bool up); - void setChannels(int); - PluginI* plugin(int idx) { return value(idx); } - }; - -#endif - diff --git a/muse/muse/plugin.cpp b/muse/muse/plugin.cpp deleted file mode 100644 index a661b08e..00000000 --- a/muse/muse/plugin.cpp +++ /dev/null @@ -1,466 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include - -#include "al/al.h" -#include "plugin.h" -#include "ladspaplugin.h" -#include "auxplugin.h" -#include "plugingui.h" -#include "al/xml.h" -#include "fastlog.h" -#include "ctrl.h" - -PluginList plugins; - -//--------------------------------------------------------- -// Plugin -//--------------------------------------------------------- - -Plugin::Plugin(const QFileInfo* f) - : fi(*f) - { - _instances = 0; - } - -//--------------------------------------------------------- -// loadPluginLib -//--------------------------------------------------------- - -static void loadPluginLib(QFileInfo* fi) - { - void* handle = dlopen(fi->filePath().toLatin1().data(), RTLD_NOW); - if (handle == 0) { - fprintf(stderr, "dlopen(%s) failed: %s\n", - fi->filePath().toLatin1().data(), dlerror()); - return; - } - LADSPA_Descriptor_Function ladspa = (LADSPA_Descriptor_Function)dlsym(handle, "ladspa_descriptor"); - - if (!ladspa) { - const char *txt = dlerror(); - if (txt) { - fprintf(stderr, - "Unable to find ladspa_descriptor() function in plugin " - "library file \"%s\": %s.\n" - "Are you sure this is a LADSPA plugin file?\n", - fi->filePath().toLatin1().data(), - txt); - return; - } - } - const LADSPA_Descriptor* descr; - for (int i = 0;; ++i) { - descr = ladspa(i); - if (descr == NULL) - break; - plugins.push_back(new LadspaPlugin(fi, ladspa, descr)); - } - } - -//--------------------------------------------------------- -// loadPluginDir -//--------------------------------------------------------- - -static void loadPluginDir(const QString& s) - { - if (debugMsg) - printf("scan ladspa plugin dir <%s>\n", s.toLatin1().data()); -#ifdef __APPLE__ - QDir pluginDir(s, QString("*.dylib"), 0, QDir::Files); -#else - QDir pluginDir(s, QString("*.so"), 0, QDir::Files); -#endif - if (pluginDir.exists()) { - QFileInfoList list = pluginDir.entryInfoList(); - for (int i = 0; i < list.size(); ++i) { - QFileInfo fi = list.at(i); - loadPluginLib(&fi); - } - } - } - -//--------------------------------------------------------- -// initPlugins -// search for LADSPA plugins -//--------------------------------------------------------- - -void initPlugins() - { - loadPluginDir(museGlobalLib + QString("/plugins")); - - const char* ladspaPath = getenv("LADSPA_PATH"); - if (ladspaPath == 0) - ladspaPath = "/usr/lib/ladspa:/usr/local/lib/ladspa"; - - const char* p = ladspaPath; - while (*p != '\0') { - const char* pe = p; - while (*pe != ':' && *pe != '\0') - pe++; - - int n = pe - p; - if (n) { - char* buffer = new char[n + 1]; - strncpy(buffer, p, n); - buffer[n] = '\0'; - loadPluginDir(QString(buffer)); - delete[] buffer; - } - p = pe; - if (*p == ':') - p++; - } - auxPlugin = new AuxPlugin; - } - -//--------------------------------------------------------- -// find -//--------------------------------------------------------- - -Plugin* PluginList::find(const QString& file, const QString& name) - { - for (iPlugin i = begin(); i != end(); ++i) { - if ((file == (*i)->lib()) && (name == (*i)->label())) - return *i; - } - printf("MusE: Plugin <%s> not found\n", name.toAscii().data()); - return 0; - } - -//--------------------------------------------------------- -// PluginI -//--------------------------------------------------------- - -PluginI::PluginI(AudioTrack* t) - { - _track = t; - _plugin = 0; - instances = 0; - _gui = 0; - _on = true; - pif = 0; - initControlValues = false; - } - -//--------------------------------------------------------- -// PluginI -//--------------------------------------------------------- - -PluginI::~PluginI() - { - if (_plugin) { - deactivate(); - _plugin->incInstances(-1); - } - if (_gui) - delete _gui; - if (pif) { - for (int i = 0; i < instances; ++i) { - delete pif[i]; - } - delete[] pif; - } - } - -//--------------------------------------------------------- -// apply -//--------------------------------------------------------- - -void PluginI::apply(unsigned nframes, int ports, float** src, float** dst) - { - int oports = _plugin->outports(); - int iports = _plugin->inports(); - - float* sp[iports * instances]; - float* dp[oports * instances]; - - for (int i = 0; i < iports * instances; ++i) - sp[i] = src[i % ports]; - for (int i = 0; i < oports * instances; ++i) - dp[i] = dst[i % ports]; - - float** spp = sp; - float** dpp = dp; - for (int i = 0; i < instances; ++i) { - pif[i]->apply(nframes, spp, dpp); - spp += iports; - dpp += oports; - } - } - -//--------------------------------------------------------- -// setChannel -//--------------------------------------------------------- - -void PluginI::setChannels(int c) - { - if (_channel == c) - return; - int ni = c / _plugin->outports(); - if (ni == 0) - ni = 1; - _channel = c; - if (ni == instances) - return; - _channel = c; - - // remove old instances: - deactivate(); - for (int i = 0; i < instances; ++i) - delete pif[i]; - delete pif; - - instances = ni; - pif = new PluginIF*[instances]; - for (int i = 0; i < instances; ++i) { - pif[i] = _plugin->createPIF(this); - if (pif[i] == 0) - return; - } - activate(); - } - -//--------------------------------------------------------- -// initPluginInstance -// return true on error -//--------------------------------------------------------- - -bool PluginI::initPluginInstance(Plugin* plug, int c) - { - if (plug == 0) { - printf("initPluginInstance: zero plugin\n"); - return true; - } - _channel = c; - _plugin = plug; - _plugin->incInstances(1); - QString inst("-" + QString::number(_plugin->instances())); - _name = _plugin->name() + inst; - _label = _plugin->label() + inst; - - instances = _channel / plug->outports(); - if (instances < 1) - instances = 1; - pif = new PluginIF*[instances]; - for (int i = 0; i < instances; ++i) { - pif[i] = _plugin->createPIF(this); - if (pif[i] == 0) - return true; - } - activate(); - return false; - } - -//--------------------------------------------------------- -// setParameter -// set plugin instance controller value by name -// return true on error -//--------------------------------------------------------- - -bool PluginI::setParameter(const QString& s, double val) - { - if (_plugin == 0) - return true; - int n = _plugin->parameter(); - for (int i = 0; i < n; ++i) { - if (getParameterName(i) == s) { - setParam(i, val); - return false; - } - } - printf("PluginI:setControl(%s, %f) controller not found\n", - s.toLatin1().data(), val); - return true; - } - -//--------------------------------------------------------- -// saveConfiguration -//--------------------------------------------------------- - -void PluginI::writeConfiguration(Xml& xml, bool prefader) - { - writeConfiguration1(xml, prefader); - xml.etag("plugin"); // append endtag - } - -//--------------------------------------------------------- -// saveConfiguration -//--------------------------------------------------------- - -void PluginI::writeConfiguration1(Xml& xml, bool prefader) - { - xml.stag(QString("plugin pre=\"%1\" file=\"%2\" label=\"%3\" channel=\"%4\"") - .arg(prefader) - .arg(_plugin->lib()) - .arg(_plugin->label()) - .arg(_channel)); -// instances * _plugin->inports()); - if (_on == false) - xml.tag("on", _on); - if (guiVisible()) { - xml.tag("gui", 1); - xml.tag("geometry", _gui); - } - if (hasNativeGui() && nativeGuiVisible()) - xml.tag("nativeGui", 1); - } - -//--------------------------------------------------------- -// readConfiguration -// return true on error -//--------------------------------------------------------- - -bool PluginI::readConfiguration(QDomNode node, bool* prefader) - { - QDomElement e = node.toElement(); - QString file = e.attribute("file"); - QString label = e.attribute("label"); - _channel = e.attribute("channel").toInt(); - *prefader = e.attribute("pre", "1").toInt(); - - if (_plugin == 0) { - // special case: internal plugin Aux - if (file.isEmpty() && label == "Aux") - _plugin = auxPlugin; - else - _plugin = plugins.find(file, label); - if (_plugin == 0) - return true; - if (initPluginInstance(_plugin, _channel)) - return true; - } - node = node.firstChild(); - while (!node.isNull()) { - e = node.toElement(); - int i = e.text().toInt(); - QString tag(e.tagName()); - if (tag == "on") { - bool flag = i; - _on = flag; - } - else if (tag == "gui") { - bool flag = i; - showGui(flag); - } - else if (tag == "nativeGui") { - bool flag = i; - showNativeGui(flag); - } - else if (tag == "geometry") { - QRect r(AL::readGeometry(node)); - if (_gui) { - _gui->resize(r.size()); - _gui->move(r.topLeft()); - } - } - else - printf("MusE:PluginI: unknown tag %s\n", e.tagName().toLatin1().data()); - node = node.nextSibling(); - } - if (_gui) - _gui->updateValues(); - return false; - } - -//--------------------------------------------------------- -// showGui -//--------------------------------------------------------- - -void PluginI::showGui() - { - if (_plugin) { - if (_gui == 0) - makeGui(); - if (_gui->isVisible()) - _gui->hide(); - else - _gui->show(); - } - } - -void PluginI::showGui(bool flag) - { - if (_plugin) { - if (flag) { - if (_gui == 0) - makeGui(); - _gui->show(); - } - else { - if (_gui) - _gui->hide(); - } - } - } - -//--------------------------------------------------------- -// guiVisible -//--------------------------------------------------------- - -bool PluginI::guiVisible() const - { - return _gui && _gui->isVisible(); - } - -//--------------------------------------------------------- -// makeGui -//--------------------------------------------------------- - -void PluginI::makeGui() - { - _gui = new PluginGui(this); - } - -//--------------------------------------------------------- -// deactivate -//--------------------------------------------------------- - -void PluginI::deactivate() - { - for (int i = 0; i < instances; ++i) { - pif[i]->deactivate(); - pif[i]->cleanup(); - } - } - -//--------------------------------------------------------- -// setParam -//--------------------------------------------------------- - -void PluginI::setParam(int idx, double val) - { - if (_gui) - _gui->updateValue(idx, val); - for (int i = 0; i < instances; ++i) - pif[i]->setParam(idx, val); - } - -//--------------------------------------------------------- -// activate -//--------------------------------------------------------- - -void PluginI::activate() - { - for (int i = 0; i < instances; ++i) - pif[i]->activate(); - } - diff --git a/muse/muse/plugin.h b/muse/muse/plugin.h deleted file mode 100644 index c01a1f18..00000000 --- a/muse/muse/plugin.h +++ /dev/null @@ -1,218 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __PLUGIN_H__ -#define __PLUGIN_H__ - -#include "ladspa.h" -#include "globals.h" - -namespace AL { - class Xml; - }; -using AL::Xml; - -class PluginIF; -class PluginGui; -class PluginI; -class LadspaPluginIF; -class AudioTrack; -class Ctrl; - -#define AUDIO_IN (LADSPA_PORT_AUDIO | LADSPA_PORT_INPUT) -#define AUDIO_OUT (LADSPA_PORT_AUDIO | LADSPA_PORT_OUTPUT) - -//--------------------------------------------------------- -// Plugin -//--------------------------------------------------------- - -class Plugin { - - protected: - int _instances; - QFileInfo fi; - - public: - Plugin(const QFileInfo* f); - virtual ~Plugin() {} - - int instances() const { return _instances; } - virtual void incInstances(int val) { _instances += val; } - - QString lib() const { return fi.baseName(); } - QString path() const { return fi.absolutePath(); } - - virtual QString label() const { return QString(); } - virtual QString name() const { return QString(); } - virtual unsigned long id() const { return 0; } - virtual QString maker() const { return QString(); } - virtual QString copyright() const { return QString(); } - - virtual PluginIF* createPIF(PluginI*) = 0; - - virtual void range(int, double* min, double* max) const { - *min = 0.0f; - *max = 1.0f; - } - - virtual int parameter() const { return 0; } - virtual int inports() const { return 0; } - virtual int outports() const { return 0; } - - virtual bool inPlaceCapable() const { return false; } - - virtual bool isLog(int) const { return false; } - virtual bool isBool(int) const { return false; } - virtual bool isInt(int) const { return false; } - virtual double defaultValue(int) const { return 0.0f; } - }; - -//--------------------------------------------------------- -// PluginList -//--------------------------------------------------------- - -typedef std::list::iterator iPlugin; - -class PluginList : public std::list { - public: - Plugin* find(const QString&, const QString&); - PluginList() {} - }; - -//--------------------------------------------------------- -// PluginIF -// plugin instance interface -//--------------------------------------------------------- - -class PluginIF { - protected: - PluginI* pluginI; - - public: - PluginIF(PluginI* pi) { pluginI = pi; } - virtual ~PluginIF() {} - - PluginI* pluginInstance() { return pluginI; } - const PluginI* pluginInstance() const { return pluginI; } - - virtual void apply(unsigned nframes, float** src, float** dst) = 0; - virtual void activate() = 0; - virtual void deactivate() = 0; - virtual void cleanup() = 0; - virtual void setParam(int i, double val) = 0; - virtual float param(int i) const = 0; - virtual const char* getParameterName(int) const { return ""; } - virtual const char* getParameterLabel(int) const { return 0; } - virtual const char* getParameterDisplay(int, float) const { return 0; } - virtual bool hasGui() const { return false; } - virtual bool guiVisible() const { return false; } - virtual void showGui(bool) {} - }; - -//--------------------------------------------------------- -// PluginI -// plugin instance -//--------------------------------------------------------- - -class PluginI { - Plugin* _plugin; - AudioTrack* _track; - - int instances; - PluginIF** pif; - - int _channel; - - PluginGui* _gui; - bool _on; - - QString _name; - QString _label; - - std::vector controllerList; - - void makeGui(); - - protected: - bool initControlValues; - friend class LadspaPluginIF; - - public: - PluginI(AudioTrack*); - ~PluginI(); - - Plugin* plugin() const { return _plugin; } - bool on() const { return _on; } - void setOn(bool val) { _on = val; } - PluginGui* gui() const { return _gui; } - - bool initPluginInstance(Plugin*, int channels); - void setChannels(int); - int channel() const { return _channel; } - void apply(unsigned nframes, int ports, float** b1, float** b2); - - void activate(); - void deactivate(); - QString label() const { return _label; } - QString name() const { return _name; } - QString lib() const { return _plugin->lib(); } - - AudioTrack* track() const { return _track; } - - void writeConfiguration(Xml&, bool); - void writeConfiguration1(Xml&, bool); // without end tag! - bool readConfiguration(QDomNode, bool*); - - void showGui(); - void showGui(bool); - bool guiVisible() const; - - bool hasNativeGui() const { return pif[0]->hasGui(); } - void showNativeGui(bool f) { return pif[0]->showGui(f); } - bool nativeGuiVisible() const { return pif[0]->guiVisible(); } - - void setControllerList(Ctrl* cl) { controllerList.push_back(cl); } - Ctrl* controller(int idx) const { return controllerList[idx]; } - bool setParameter(const QString& s, double val); - void setParam(int i, double val); - double param(int i) const { return pif[0]->param(i); } - - const char* getParameterName(int i) const { return pif[0]->getParameterName(i); } - const char* getParameterLabel(int i) const { return pif[0]->getParameterLabel(i); } - const char* getParameterDisplay(int i, float v) const { return pif[0]->getParameterDisplay(i, v); } - - void range(int i, double* min, double* max) const { - _plugin->range(i, min, max); - } - double defaultValue(int i) const { return _plugin->defaultValue(i); } - bool inPlaceCapable() const { return _plugin->inPlaceCapable(); } - - bool isLog(int k) const { return _plugin->isLog(k); } - bool isBool(int k) const { return _plugin->isBool(k); } - bool isInt(int k) const { return _plugin->isInt(k); } - - PluginIF* pluginIF(int idx) { return pif[idx]; } - }; - -extern void initPlugins(); -extern PluginList plugins; - -#endif - diff --git a/muse/muse/plugingui.cpp b/muse/muse/plugingui.cpp deleted file mode 100644 index 9f0d1d32..00000000 --- a/muse/muse/plugingui.cpp +++ /dev/null @@ -1,770 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "song.h" -#include "fastlog.h" -#include "widgets/filedialog.h" -#include "plugin.h" -#include "plugingui.h" -#include "icons.h" -#include "al/xml.h" -#include "gui.h" - -#include "awl/floatentry.h" -#include "awl/slider.h" -#include "awl/checkbox.h" -#include "awl/combobox.h" - -using Awl::FloatEntry; -using Awl::Slider; -using Awl::CheckBox; -using Awl::ComboBox; - -static const char* preset_file_pattern[] = { - QT_TR_NOOP("presets (*.pre *.pre.gz *.pre.bz2)"), - QT_TR_NOOP("All Files (*)"), - 0 - }; - -int PluginDialog::selectedPlugType = SEL_SM; -QStringList PluginDialog::sortItems = QStringList(); - -//--------------------------------------------------------- -// PluginDialog -// select Plugin dialog -//--------------------------------------------------------- - -PluginDialog::PluginDialog(QWidget* parent) - : QDialog(parent) - { - setWindowTitle(tr("MusE: select plugin")); - QVBoxLayout* layout = new QVBoxLayout(this); - - pList = new QTreeWidget(this); - pList->setColumnCount(11); - pList->setSortingEnabled(true); - QStringList headerLabels; - headerLabels << tr("Lib"); - headerLabels << tr("Label"); - headerLabels << tr("Name"); - headerLabels << tr("AI"); - headerLabels << tr("AO"); - headerLabels << tr("CI"); - headerLabels << tr("CO"); - headerLabels << tr("IP"); - headerLabels << tr("id"); - headerLabels << tr("Maker"); - headerLabels << tr("Copyright"); - - int sizes[] = { 110, 110, 0, 30, 30, 30, 30, 30, 40, 110, 110 }; - for (int i = 0; i < 11; ++i) { - if (sizes[i] == 0) { - pList->header()->setResizeMode(i, QHeaderView::Stretch); - } - else { - if (sizes[i] <= 40) // hack alert! - pList->header()->setResizeMode(i, QHeaderView::Custom); - pList->header()->resizeSection(i, sizes[i]); - } - } - - pList->setHeaderLabels(headerLabels); - - pList->setSelectionBehavior(QAbstractItemView::SelectRows); - pList->setSelectionMode(QAbstractItemView::SingleSelection); - pList->setAlternatingRowColors(true); - - fillPlugs(selectedPlugType); - layout->addWidget(pList); - - //--------------------------------------------------- - // Ok/Cancel Buttons - //--------------------------------------------------- - - QBoxLayout* w5 = new QHBoxLayout; - layout->addLayout(w5); - - QPushButton* okB = new QPushButton(tr("Ok"), this); - okB->setDefault(true); - QPushButton* cancelB = new QPushButton(tr("Cancel"), this); - okB->setFixedWidth(80); - cancelB->setFixedWidth(80); - w5->addWidget(okB); - w5->addSpacing(12); - w5->addWidget(cancelB); - - QGroupBox* plugSelGroup = new QGroupBox; - plugSelGroup->setTitle("Show plugs:"); - QHBoxLayout* psl = new QHBoxLayout; - plugSelGroup->setLayout(psl); - - QButtonGroup* plugSel = new QButtonGroup(plugSelGroup); - onlySM = new QRadioButton; - onlySM->setText(tr("Mono and Stereo")); - onlySM->setCheckable(true); - plugSel->addButton(onlySM); - psl->addWidget(onlySM); - onlyS = new QRadioButton; - onlyS->setText(tr("Stereo")); - onlyS->setCheckable(true); - plugSel->addButton(onlyS); - psl->addWidget(onlyS); - onlyM = new QRadioButton; - onlyM->setText(tr("Mono")); - onlyM->setCheckable(true); - plugSel->addButton(onlyM); - psl->addWidget(onlyM); - allPlug = new QRadioButton; - allPlug->setText(tr("Show All")); - allPlug->setCheckable(true); - plugSel->addButton(allPlug); - psl->addWidget(allPlug); - plugSel->setExclusive(true); - - switch(selectedPlugType) { - case SEL_SM: onlySM->setChecked(true); break; - case SEL_S: onlyS->setChecked(true); break; - case SEL_M: onlyM->setChecked(true); break; - case SEL_ALL: allPlug->setChecked(true); break; - } - - plugSelGroup->setToolTip(tr("Select which types of plugins should be visible in the list.
" - "Note that using mono plugins on stereo tracks is not a problem, two will be used in parallell.
" - "Also beware that the 'all' alternative includes plugins that probably not are usable by MusE.")); - - w5->addSpacing(12); - w5->addWidget(plugSelGroup); - w5->addSpacing(12); - - QLabel *sortLabel = new QLabel; - sortLabel->setText(tr("Search in 'Label' and 'Name':")); - w5->addWidget(sortLabel); - w5->addSpacing(2); - - sortBox = new QComboBox(this); - sortBox->setEditable(true); - if (!sortItems.empty()) - sortBox->addItems(sortItems); - - sortBox->setMinimumSize(100, 10); - w5->addWidget(sortBox); - w5->addStretch(-1); - - if (!sortBox->currentText().isEmpty()) - fillPlugs(sortBox->currentText()); - else - fillPlugs(selectedPlugType); - - - connect(pList, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), SLOT(accept())); - connect(cancelB, SIGNAL(clicked()), SLOT(reject())); - connect(okB, SIGNAL(clicked()), SLOT(accept())); - connect(plugSel, SIGNAL(buttonClicked(QAbstractButton*)), SLOT(fillPlugs(QAbstractButton*))); - connect(sortBox, SIGNAL(editTextChanged(const QString&)),SLOT(fillPlugs(const QString&))); - } - -//--------------------------------------------------------- -// accept -//--------------------------------------------------------- - -void PluginDialog::accept() - { - if (!sortBox->currentText().isEmpty()) { - foreach (QString item, sortItems) - if(item == sortBox->currentText()) { - QDialog::accept(); - return; - } - sortItems.push_front(sortBox->currentText()); - } - QDialog::accept(); - } - -//--------------------------------------------------------- -// value -//--------------------------------------------------------- - -Plugin* PluginDialog::value() - { - QTreeWidgetItem* item = pList->selectedItems().at(0); - if (item) - return plugins.find(item->text(0), item->text(1)); -printf("plugin not found\n"); - return 0; - } - -//--------------------------------------------------------- -// fillPlugs -//--------------------------------------------------------- - -void PluginDialog::fillPlugs(QAbstractButton* ab) - { - if (ab == allPlug) - fillPlugs(SEL_ALL); - else if (ab == onlyM) - fillPlugs(SEL_M); - else if (ab == onlyS) - fillPlugs(SEL_S); - else if (ab == onlySM) - fillPlugs(SEL_SM); - } - -//--------------------------------------------------------- -// fillPlugs int -//--------------------------------------------------------- - -void PluginDialog::fillPlugs(int nbr) - { - pList->clear(); - for (iPlugin i = plugins.begin(); i != plugins.end(); ++i) { - int ai = (*i)->inports(); - int ao = (*i)->outports(); - int ci = (*i)->parameter(); - int co = 0; - bool addFlag = false; - switch (nbr) { - case SEL_SM: // stereo & mono - if ((ai == 1 || ai == 2) && (ao == 1 || ao ==2)) { - addFlag = true; - } - break; - case SEL_S: // stereo - if ((ai == 1 || ai == 2) && ao ==2) { - addFlag = true; - } - break; - case SEL_M: // mono - if (ai == 1 && ao == 1) { - addFlag = true; - } - break; - case SEL_ALL: // all - addFlag = true; - break; - } - if (addFlag) { - QTreeWidgetItem* item = new QTreeWidgetItem; - item->setText(0, (*i)->lib()); - item->setText(1, (*i)->label()); - item->setText(2, (*i)->name()); - item->setText(3, QString().setNum(ai)); - item->setText(4, QString().setNum(ao)); - item->setText(5, QString().setNum(ci)); - item->setText(6, QString().setNum(co)); - item->setText(7, QString().setNum((*i)->inPlaceCapable())); - item->setText(8, QString().setNum((*i)->id())); - item->setText(9, (*i)->maker()); - item->setText(10, (*i)->copyright()); - pList->addTopLevelItem(item); - } - } - selectedPlugType = nbr; - } - -//--------------------------------------------------------- -// fillPlugs QString -//--------------------------------------------------------- - -void PluginDialog::fillPlugs(const QString &sortValue) - { - pList->clear(); - for (iPlugin i = plugins.begin(); i != plugins.end(); ++i) { - int ai = (*i)->inports(); - int ao = (*i)->outports(); - int ci = (*i)->parameter(); - int co = 0; - - bool addFlag = false; - - if ((*i)->label().toLower().contains(sortValue.toLower())) - addFlag = true; - else if ((*i)->name().toLower().contains(sortValue.toLower())) - addFlag = true; - if (addFlag) { - QTreeWidgetItem* item = new QTreeWidgetItem; - item->setText(0, (*i)->lib()); - item->setText(1, (*i)->label()); - item->setText(2, (*i)->name()); - item->setText(3, QString().setNum(ai)); - item->setText(4, QString().setNum(ao)); - item->setText(5, QString().setNum(ci)); - item->setText(6, QString().setNum(co)); - item->setText(7, QString().setNum((*i)->inPlaceCapable())); - item->setText(8, QString().setNum((*i)->id())); - item->setText(9, (*i)->maker()); - item->setText(10, (*i)->copyright()); - pList->addTopLevelItem(item); - } - } - } - -//--------------------------------------------------------- -// getPlugin -//--------------------------------------------------------- - -Plugin* PluginDialog::getPlugin(QWidget* parent) - { - PluginDialog* dialog = new PluginDialog(parent); - if (dialog->exec()) - return dialog->value(); - return 0; - } - -static const char* presetOpenText = " " - "Click this button to load a saved preset."; -static const char* presetSaveText = "Click this button to save curent parameter " - "settings as a preset. You will be prompted for a file name."; -static const char* presetBypassText = "Click this button to bypass effect unit"; - -//--------------------------------------------------------- -// PluginGui -//--------------------------------------------------------- - -PluginGui::PluginGui(PluginI* p) - : QMainWindow(0) - { - setIconSize(ICON_SIZE); - plugin = p; - setWindowTitle(plugin->name()); - - QToolBar* tools = addToolBar(tr("File Buttons")); - - QAction* fileOpen = tools->addAction(QIcon(*openIcon), tr("Load Preset"), - this, SLOT(load())); - fileOpen->setWhatsThis(tr(presetOpenText)); - QAction* fileSave = tools->addAction(QIcon(*saveIcon), tr("Save Preset"), - this, SLOT(save())); - fileSave->setWhatsThis(tr(presetSaveText)); - - tools->addAction(QWhatsThis::createAction(this)); - - onOff = tools->addAction(*onOffIcon, tr("bypass plugin")); - onOff->setCheckable(true); - onOff->setChecked(plugin->on()); - onOff->setWhatsThis(tr(presetBypassText)); - connect(onOff, SIGNAL(triggered(bool)), SLOT(bypassToggled(bool))); - - QString id; - id.setNum(plugin->plugin()->id()); - QString name(museGlobalShare + QString("/plugins/") + id + QString(".ui")); - - QWidget* mw; // main widget - QFile uifile(name); - if (uifile.exists()) { - // - // construct GUI from *.ui file - // - QFormBuilder builder; - // - // HACK: - // - QString path(museGlobalLib + "/designer"); -printf("build gui from ui <%s>\n", path.toLatin1().data()); - builder.addPluginPath(path); - - uifile.open(QFile::ReadOnly); - mw = builder.load(&uifile, this); - uifile.close(); - - setCentralWidget(mw); - connectPrebuiltGui(mw); - } - else { - mw = new QWidget(this); - setCentralWidget(mw); - QGridLayout* grid = new QGridLayout; - mw->setLayout(grid); - grid->setSpacing(2); - - int n = plugin->plugin()->parameter(); - resize(280, n*20+30); - - QFontMetrics fm = fontMetrics(); - int h = fm.height() + 4; - - for (int i = 0; i < n; ++i) { - double lower; - double upper; - double dlower; - double dupper; - double val = plugin->param(i); - double dval = val; - - plugin->range(i, &lower, &upper); - dlower = lower; - dupper = upper; - - if (plugin->isLog(i)) { - if (lower == 0.0) - lower = 0.001; - dlower = fast_log10(lower)*20.0; - dupper = fast_log10(upper)*20.0; - if (val == 0.0f) - dval = dlower; - else - dval = fast_log10(val) * 20.0; - } - if (plugin->isBool(i)) { - CheckBox* cb = new CheckBox(mw); - cb->setId(i); - cb->setText(QString(plugin->getParameterName(i))); - cb->setChecked(plugin->param(i) > 0.0); - cb->setFixedHeight(h); - cb->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Maximum)); - - GuiWidget w; - w.widget = cb; - w.parameter = i; - w.type = GuiWidget::CHECKBOX; - gw.push_back(w); - grid->addWidget(cb, i, 0, 1, 3); - connect(cb, SIGNAL(valueChanged(double,int)), SLOT(setController(double, int))); - } - else { - QLabel* label = new QLabel(QString(plugin->getParameterName(i)), mw); - label->setFixedHeight(20); - label->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Maximum)); - FloatEntry* e = new FloatEntry(mw); - e->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Maximum)); - e->setRange(lower, upper); - e->setId(i); - e->setFixedHeight(h); - e->setFrame(true); - GuiWidget w; - w.widget = e; - w.parameter = i; - w.type = GuiWidget::FLOAT_ENTRY; - gw.push_back(w); - - Slider* s = new Slider(mw); - s->setId(i); - s->setLog(plugin->isLog(i)); - s->setOrientation(Qt::Horizontal); - s->setFixedHeight(h); - s->setRange(dlower, dupper); - s->setLineStep((dupper-dlower)/100.0); - s->setPageStep((dupper-dlower)/10.0); - s->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Maximum)); - w.widget = s; - w.parameter = i; - w.type = GuiWidget::SLIDER; - gw.push_back(w); - grid->addWidget(label, i, 0); - grid->addWidget(e, i, 1); - const char* p = plugin->getParameterLabel(i); - if (p) { - QLabel* l = new QLabel(mw); - l->setFixedHeight(h); - l->setText(p); - grid->addWidget(l, i, 2); - } - grid->addWidget(s, i, 3); - connect(s, SIGNAL(valueChanged(double,int)), SLOT(setController(double,int))); - connect(e, SIGNAL(valueChanged(double,int)), SLOT(setController(double,int))); - } - updateValue(i, val); - } - grid->setColumnStretch(3, 10); - } - connect(plugin->track(), SIGNAL(autoReadChanged(bool)), SLOT(autoChanged())); - connect(plugin->track(), SIGNAL(autoWriteChanged(bool)), SLOT(autoChanged())); - connect(plugin->track(), SIGNAL(controllerChanged(int)), SLOT(controllerChanged(int))); - autoChanged(); - } - - - -void PluginGui::connectPrebuiltGui(QWidget* wContainer) - { - QObjectList l = wContainer->children(); - for (int i = 0; i < l.size(); ++i) { - - QObject* obj = l.at(i); - - const char* name = obj->objectName().toLatin1().data(); - - if (strcmp(obj->metaObject()->className(), "QFrame") == 0) { - connectPrebuiltGui((QWidget *)obj); - } - if (*name !='P') - continue; - GuiWidget w; - w.widget = (QWidget*)obj; - if (strcmp(obj->metaObject()->className(), "Awl::Slider") == 0) { - connect((Slider*)obj, SIGNAL(valueChanged(double,int)), SLOT(setController(double,int))); - w.type = GuiWidget::SLIDER; - w.parameter = ((Slider*)obj)->id(); - } - else if (strcmp(obj->metaObject()->className(), "Awl::FloatEntry") == 0) { - connect((FloatEntry*)obj, SIGNAL(valueChanged(double,int)), SLOT(setController(double,int))); - w.type = GuiWidget::FLOAT_ENTRY; - w.parameter = ((FloatEntry*)obj)->id(); - } - else if (strcmp(obj->metaObject()->className(), "Awl::CheckBox") == 0) { - w.type = GuiWidget::CHECKBOX; - w.parameter = ((CheckBox*)obj)->id(); - connect(obj, SIGNAL(valueChanged(double, int)), SLOT(setController(double, int))); - } - else if (strcmp(obj->metaObject()->className(), "Awl::ComboBox") == 0) { - w.type = GuiWidget::COMBOBOX; - w.parameter = ((ComboBox*)obj)->id(); - connect(obj, SIGNAL(valueChanged(double, int)), SLOT(setController(double,int))); - } - else { - printf("PluginGui::unknown widget class %s\n", obj->metaObject()->className()); - continue; - } - gw.push_back(w); - } -} - - -//--------------------------------------------------------- -// PluginGui -//--------------------------------------------------------- - -PluginGui::~PluginGui() - { - } - -//--------------------------------------------------------- -// setController -//--------------------------------------------------------- - -void PluginGui::setController(double val, int param) - { - if (plugin->isInt(param)) - val = rint(val); - CVal cval; - cval.f = val; - song->setControllerVal(plugin->track(), plugin->controller(param), cval); - } - -//--------------------------------------------------------- -// load -//--------------------------------------------------------- - -void PluginGui::load() - { - QString s("presets/plugins/"); - s += plugin->plugin()->label(); - s += "/"; - - QStringList pattern; - const char** p = preset_file_pattern; - while (*p) - pattern << *p++; - QString fn = getOpenFileName(s, pattern, this, tr("MusE: load preset")); - if (fn.isEmpty()) - return; - QFile* qf = fileOpen(this, fn, QString(".pre"), QIODevice::ReadOnly, true); - if (qf == 0) - return; - - QDomDocument doc; - int line, column; - QString err; - if (!doc.setContent(qf, false, &err, &line, &column)) { - QString col, ln, error; - col.setNum(column); - ln.setNum(line); - error = err + "\n at line: " + ln + " col: " + col; - printf("error reading med file: %s\n", error.toLatin1().data()); - delete qf; - return; - } - QDomNode node = doc.documentElement(); - - while (!node.isNull()) { - QDomElement e = node.toElement(); - if (e.isNull()) - continue; - if (e.tagName() == "muse") { - // QString version = e.attribute(QString("version")); - node = node.firstChild(); - while (!node.isNull()) { - QDomElement e = node.toElement(); - bool prefader; - if (e.tagName() == "plugin") - plugin->readConfiguration(node.firstChild(), &prefader); - else - printf("MusE:PluginGui: unknown tag %s\n", e.tagName().toLatin1().data()); - node = node.nextSibling(); - } - } - else - printf("MusE: %s not supported\n", e.tagName().toLatin1().data()); - node = node.nextSibling(); - } - qf->close(); - delete qf; - } - -//--------------------------------------------------------- -// save -//--------------------------------------------------------- - -void PluginGui::save() - { - QString s("presets/plugins/"); - s += plugin->plugin()->label(); - s += "/"; - - QStringList pattern; - const char** p = preset_file_pattern; - while (*p) - pattern << *p++; - QString fn = getSaveFileName(s, pattern, this, - tr("MusE: save preset")); - if (fn.isEmpty()) - return; - QFile* f = fileOpen(this, fn, QString(".pre"), QIODevice::WriteOnly, true); - if (f == 0) - return; - Xml xml(f); - xml.header(); - xml.stag("muse version=\"1.0\""); - plugin->writeConfiguration(xml, true); - xml.etag("muse"); - f->close(); - delete f; - } - -//--------------------------------------------------------- -// bypassToggled -//--------------------------------------------------------- - -void PluginGui::bypassToggled(bool val) - { - plugin->setOn(val); - song->update(SC_ROUTE); - } - -//--------------------------------------------------------- -// setOn -//--------------------------------------------------------- - -void PluginGui::setOn(bool val) - { -// onOff->blockSignals(true); - onOff->setChecked(val); -// onOff->blockSignals(false); - } - -//--------------------------------------------------------- -// updateValue -//--------------------------------------------------------- - -void PluginGui::updateValue(int parameter, double value) - { - for (std::vector::iterator i = gw.begin(); i != gw.end(); ++i) { - int idx = i->parameter; - if (idx != parameter) - continue; - switch (i->type) { - case GuiWidget::SLIDER: - ((Slider*)(i->widget))->setValue(value); - break; - case GuiWidget::FLOAT_ENTRY: - { - const char* p = plugin->getParameterDisplay(idx, value); - if (p) - ((FloatEntry*)(i->widget))->setText(QString(p)); - else - ((FloatEntry*)(i->widget))->setValue(value); - } - break; - case GuiWidget::CHECKBOX: - ((CheckBox*)(i->widget))->setValue(value); - break; - case GuiWidget::COMBOBOX: - ((ComboBox*)(i->widget))->setValue(value); - break; - } - } - } - -//--------------------------------------------------------- -// updateValues -//--------------------------------------------------------- - -void PluginGui::updateValues() - { - int n = plugin->plugin()->parameter(); - for (int i = 0; i < n; ++i) { - double val = plugin->param(i); - updateValue(i, val); - } - } - -//--------------------------------------------------------- -// controllerChanged -//--------------------------------------------------------- - -void PluginGui::controllerChanged(int id) - { - double value = plugin->track()->ctrlVal(id).f; - for (std::vector::iterator i = gw.begin(); i != gw.end(); ++i) { - int idx = i->parameter; - if (plugin->controller(idx)->id() != id) - continue; - switch (i->type) { - case GuiWidget::SLIDER: - ((Slider*)(i->widget))->setValue(value); - break; - case GuiWidget::FLOAT_ENTRY: - { - const char* p = plugin->getParameterDisplay(idx, value); - if (p) - ((FloatEntry*)(i->widget))->setText(QString(p)); - else - ((FloatEntry*)(i->widget))->setValue(value); - } - break; - case GuiWidget::CHECKBOX: - ((CheckBox*)(i->widget))->setValue(value); - break; - case GuiWidget::COMBOBOX: - ((ComboBox*)(i->widget))->setValue(value); - break; - } - } - } - -//--------------------------------------------------------- -// autoChanged -//--------------------------------------------------------- - -void PluginGui::autoChanged() - { - bool ar = plugin->track()->autoRead(); - bool aw = plugin->track()->autoWrite(); - - // controller are enabled if - // autoRead is off - // autoRead and autoWrite are on (touch mode) - - bool ec = !ar || (ar && aw); - - for (std::vector::iterator i = gw.begin(); i != gw.end(); ++i) - i->widget->setEnabled(ec); - } - - diff --git a/muse/muse/plugingui.h b/muse/muse/plugingui.h deleted file mode 100644 index e54e683a..00000000 --- a/muse/muse/plugingui.h +++ /dev/null @@ -1,122 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __PLUGINGUI_H__ -#define __PLUGINGUI_H__ - -namespace Awl { - class FloatEntry; - }; -using Awl::FloatEntry; - -class Plugin; -class PluginI; - -//--------------------------------------------------------- -// GuiParam -//--------------------------------------------------------- - -struct GuiParam { - enum { - GUI_SLIDER, GUI_SWITCH - }; - int type; - FloatEntry* label; - QWidget* actuator; // Slider or Toggle Button (SWITCH) - }; - -//--------------------------------------------------------- -// GuiWidget -//--------------------------------------------------------- - -struct GuiWidget { - enum { - SLIDER, FLOAT_ENTRY, CHECKBOX, COMBOBOX - } type; - QWidget* widget; - int parameter; - }; - -//--------------------------------------------------------- -// PluginGui -//--------------------------------------------------------- - -class PluginGui : public QMainWindow { - Q_OBJECT - - PluginI* plugin; // plugin instance - std::vector gw; - - QAction* onOff; - void connectPrebuiltGui(QWidget* wContainer); - - private slots: - void load(); - void save(); - void bypassToggled(bool); - - void setController(double, int); - void autoChanged(); - - public: - PluginGui(PluginI*); - ~PluginGui(); - void setOn(bool); - void updateValue(int, double); - void updateValues(); - - public slots: - void controllerChanged(int id); - }; - -//--------------------------------------------------------- -// PluginDialog -//--------------------------------------------------------- - -enum { SEL_SM, SEL_S, SEL_M, SEL_ALL }; - -class PluginDialog : public QDialog { - QTreeWidget* pList; - QRadioButton* allPlug; - QRadioButton* onlyM; - QRadioButton* onlyS; - QRadioButton* onlySM; - - Q_OBJECT - - public: - PluginDialog(QWidget* parent=0); - static Plugin* getPlugin(QWidget* parent); - Plugin* value(); - void accept(); - - public slots: - void fillPlugs(QAbstractButton*); - void fillPlugs(int i); - void fillPlugs(const QString& sortValue); - - private: - QComboBox *sortBox; - static int selectedPlugType; - static QStringList sortItems; - }; - -#endif - diff --git a/muse/muse/port.h b/muse/muse/port.h deleted file mode 100644 index d2f83de9..00000000 --- a/muse/muse/port.h +++ /dev/null @@ -1,76 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __PORT_H__ -#define __PORT_H__ - -#include - -//--------------------------------------------------------- -// Port -//--------------------------------------------------------- - -class Port { - enum { JACK_TYPE, ALSA_TYPE, ZERO_TYPE } type; - union { - jack_port_t* _jackPort; - struct { - unsigned char _alsaPort; - unsigned char _alsaClient; - }; - }; - public: - Port() { - type = ZERO_TYPE; - } - Port(jack_port_t* p) { - _jackPort = p; - type = JACK_TYPE; - } - Port(unsigned char client, unsigned char port) { - _alsaPort = port; - _alsaClient = client; - type = ALSA_TYPE; - } - void setZero() { type = ZERO_TYPE; } - bool isZero() const { return type == ZERO_TYPE; } - bool operator==(const Port& p) const { - if (type == JACK_TYPE) - return _jackPort == p._jackPort; - else if (type == ALSA_TYPE) - return _alsaPort == p._alsaPort && _alsaClient == p._alsaClient; - else - return true; - } - bool operator<(const Port& p) const { - if (type == ALSA_TYPE) { - if (_alsaPort != p._alsaPort) - return _alsaPort < p._alsaPort; - return _alsaClient < p._alsaClient; - } - return false; - } - unsigned char alsaPort() const { return _alsaPort; } - unsigned char alsaClient() const { return _alsaClient; } - jack_port_t* jackPort() const { return _jackPort; } - }; - -#endif - diff --git a/muse/muse/preferences.cpp b/muse/muse/preferences.cpp deleted file mode 100644 index 022a24da..00000000 --- a/muse/muse/preferences.cpp +++ /dev/null @@ -1,932 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "icons.h" -#include "preferences.h" -#include "track.h" -#include "muse.h" -#include "song.h" -#include "event.h" -#include "arranger.h" -#include "widgets/filedialog.h" -#include "waveedit/waveedit.h" -#include "globals.h" -#include "conf.h" -#include "gconfig.h" - -#include "audio.h" -#include "mixer.h" -#include "midirc.h" -#include "instruments/minstrument.h" -#include "midiedit/pianoroll.h" -#include "midiedit/drumedit.h" - -static int rtcResolutions[] = { - 1024, 2048, 4096, 8192 - }; -static int divisions[] = { - 48, 96, 192, 384, 768, 1536, 3072, 6144, 12288 - }; - -//--------------------------------------------------------- -// twi -//--------------------------------------------------------- - -static QTreeWidgetItem* twi(QTreeWidget* tw, const char* txt, int data) - { - QTreeWidgetItem* i = new QTreeWidgetItem(tw); - i->setText(0, txt); - i->setData(0, 1, data); - return i; - } - -static QTreeWidgetItem* twi(QTreeWidgetItem* tw, const char* txt, int data) - { - QTreeWidgetItem* i = new QTreeWidgetItem(tw); - i->setText(0, txt); - i->setData(0, 1, data); - return i; - } - -//--------------------------------------------------------- -// PreferencesDialog -//--------------------------------------------------------- - -PreferencesDialog::PreferencesDialog(Arranger* a, QWidget* parent) - : QDialog(parent) - { - setupUi(this); - colorframe->setAutoFillBackground(true); - palette0->setAutoFillBackground(true); - palette1->setAutoFillBackground(true); - palette2->setAutoFillBackground(true); - palette3->setAutoFillBackground(true); - arr = a; - color = 0; - config = new GlobalConfigValues; - resetValues(); - - // ARRANGER - - usePixmap->setChecked(config->canvasUseBgPixmap); - useColor->setChecked(!config->canvasUseBgPixmap); - connect(usePixmap, SIGNAL(toggled(bool)), SLOT(usePixmapToggled(bool))); - connect(useColor, SIGNAL(toggled(bool)), SLOT(useColorToggled(bool))); - - - styleSheetPath->setText(config->styleSheetFile); - currentBg = config->canvasBgPixmap; - if (currentBg.isEmpty()) - currentBg = ""; - else { - QBrush b; - b.setTexture(QPixmap(currentBg)); - QPalette p; - p.setBrush(QPalette::Window, b); - currentBgLabel->setPalette(p); - } - QPalette p; - canvasBackgroundColor->setAutoFillBackground(true); - p.setColor(QPalette::Window, config->canvasBgColor); - canvasBackgroundColor->setPalette(p); - - currentBgLabel->setAutoFillBackground(true); - currentBgLabel->setText(currentBg); - - partShownames->setChecked(config->canvasShowPartType & 1); - partShowevents->setChecked(config->canvasShowPartType & 2); - partShowCakes->setChecked(!(config->canvasShowPartType & 2)); - - eventNoteon->setChecked(config->canvasShowPartEvent & (1 << 0)); - eventPolypressure->setChecked(config->canvasShowPartEvent & (1 << 1)); - eventController->setChecked(config->canvasShowPartEvent & (1 << 2)); - eventProgramchange->setChecked(config->canvasShowPartEvent & (1 << 3)); - eventAftertouch->setChecked(config->canvasShowPartEvent & (1 << 4)); - eventPitchbend->setChecked(config->canvasShowPartEvent & (1 << 5)); - eventSpecial->setChecked(config->canvasShowPartEvent & (1 << 6)); - eventButtonGroup->setEnabled(config->canvasShowPartType == 2); - arrGrid->setChecked(config->canvasShowGrid); - - // COLORS - QTreeWidgetItem* id; - QTreeWidgetItem* aid; - itemList->setSortingEnabled(false); - itemList->clear(); - - aid = twi(itemList, "Arranger", 0); - id = twi(aid, "PartColors", 0); - twi(id, "Selected", 0x41d); - - twi(id, "Default", 0x400); - twi(id, "Refrain", 0x401); - twi(id, "Bridge", 0x402); - twi(id, "Intro", 0x403); - twi(id, "Coda", 0x404); - twi(id, "Chorus", 0x405); - twi(id, "Solo", 0x406); - twi(id, "Brass", 0x407); - twi(id, "Percussion", 0x408); - twi(id, "Drums", 0x409); - twi(id, "Guitar", 0x40a); - twi(id, "Bass", 0x40b); - twi(id, "Flute", 0x40c); - twi(id, "Strings", 0x40d); - twi(id, "Keyboard", 0x40e); - twi(id, "Piano", 0x40f); - twi(id, "Saxophon", 0x410); - - twi(id, "part canvas background", 0x41c); - - id = twi(aid, "Track List", 0); - twi(id, "Audio Output", 0x500 + Track::AUDIO_OUTPUT); - twi(id, "Audio Group", 0x500 + Track::AUDIO_GROUP); - twi(id, "Wave Track", 0x500 + Track::WAVE); - twi(id, "Audio Input", 0x500 + Track::AUDIO_INPUT); - twi(id, "Synthesizer", 0x500 + Track::AUDIO_SOFTSYNTH); - twi(id, "Midi Track", 0x500 + Track::MIDI); - twi(id, "Midi Output", 0x500 + Track::MIDI_OUT); - twi(id, "Midi Input", 0x500 + Track::MIDI_IN); -// twi(id, "Midi Channel", 0x500 + Track::MIDI_CHANNEL); - twi(id, "Midi Synti", 0x500 + Track::MIDI_SYNTI); - - id = twi(itemList, "BigTime", 0); - twi(id, "background", 0x100); - twi(id, "foreground", 0x101); - - id = twi(itemList, "Transport", 0); - twi(id, "handle", 0x200); - - id = twi(itemList, "Editor", 0); - twi(id, "background", 0x300); - - colorGroup = new QButtonGroup(this); - colorGroup->setExclusive(true); - colorGroup->addButton(palette0, 0); - colorGroup->addButton(palette1, 1); - colorGroup->addButton(palette2, 2); - colorGroup->addButton(palette3, 3); - colorGroup->addButton(palette4, 4); - colorGroup->addButton(palette5, 5); - colorGroup->addButton(palette6, 6); - colorGroup->addButton(palette7, 7); - colorGroup->addButton(palette8, 8); - colorGroup->addButton(palette9, 9); - colorGroup->addButton(palette10, 10); - colorGroup->addButton(palette11, 11); - colorGroup->addButton(palette12, 12); - colorGroup->addButton(palette13, 13); - colorGroup->addButton(palette14, 14); - colorGroup->addButton(palette15, 15); - connect(itemList, SIGNAL(itemSelectionChanged()), SLOT(colorItemSelectionChanged())); - connect(colorGroup, SIGNAL(buttonClicked(QAbstractButton*)), SLOT(paletteClicked(QAbstractButton*))); - connect(hslider, SIGNAL(valueChanged(int)), SLOT(hsliderChanged(int))); - connect(sslider, SIGNAL(valueChanged(int)), SLOT(ssliderChanged(int))); - connect(vslider, SIGNAL(valueChanged(int)), SLOT(vsliderChanged(int))); - - connect(addToPalette, SIGNAL(clicked()), SLOT(addToPaletteClicked())); - - connect(applyButton, SIGNAL(clicked()), SLOT(apply())); - connect(okButton, SIGNAL(clicked()), SLOT(ok())); - connect(cancelButton, SIGNAL(clicked()), SLOT(cancel())); - connect(selectCanvasBgPixmap, SIGNAL(clicked()), SLOT(configCanvasBgPixmap())); - connect(selectCanvasBgColor, SIGNAL(clicked()), SLOT(configCanvasBgColor())); - connect(partShowevents, SIGNAL(toggled(bool)), eventButtonGroup, SLOT(setEnabled(bool))); - updateColor(); - - for (unsigned i = 0; i < sizeof(rtcResolutions)/sizeof(*rtcResolutions); ++i) { - if (rtcResolutions[i] == config->rtcTicks) { - rtcResolutionSelect->setCurrentIndex(i); - break; - } - } - for (unsigned i = 0; i < sizeof(divisions)/sizeof(*divisions); ++i) { - if (divisions[i] == config->division) { - midiDivisionSelect->setCurrentIndex(i); - break; - } - } - int i = 0; - for (iMidiInstrument mi = midiInstruments.begin(); mi != midiInstruments.end(); ++mi, ++i) { - preferredInstrument->addItem((*mi)->iname()); - if ((*mi)->iname() == config->defaultMidiInstrument) - preferredInstrument->setCurrentIndex(i); - } - - connectToAllDevices->setChecked(config->connectToAllMidiDevices); - connectToAllTracks->setChecked(config->connectToAllMidiTracks); - createDefaultInput->setChecked(config->createDefaultMidiInput); - - guiRefreshSelect->setValue(config->guiRefresh); - minSliderSelect->setValue(int(config->minSlider)); - maxSliderSelect->setValue(int(config->maxSlider)); - minMeterSelect->setValue(int(config->minMeter)); - maxMeterSelect->setValue(int(config->maxMeter)); - peakHoldTime->setValue(config->peakHoldTime); - helpBrowser->setText(config->helpBrowser); - startProjectEntry->setText(config->startProject); - - startProjectGroup = new QButtonGroup(this); - startProjectGroup->addButton(alwaysAsk); - startProjectGroup->addButton(startWithLastProject); - startProjectGroup->addButton(startWithProject); - - switch(config->startMode) { - case START_ASK_FOR_PROJECT: - alwaysAsk->setChecked(true); - break; - case START_LAST_PROJECT: - startWithLastProject->setChecked(true); - break; - case START_START_PROJECT: - startWithProject->setChecked(true); - break; - } - - showTransport->setChecked(config->transportVisible); - showBigtime->setChecked(config->bigTimeVisible); - showMixer1->setChecked(config->mixer1Visible); - showMixer2->setChecked(config->mixer2Visible); - - transportX->setValue(config->geometryTransport.x()); - transportY->setValue(config->geometryTransport.y()); - - bigtimeX->setValue(config->geometryBigTime.x()); - bigtimeY->setValue(config->geometryBigTime.y()); - bigtimeW->setValue(config->geometryBigTime.width()); - bigtimeH->setValue(config->geometryBigTime.height()); - - mixerX1->setValue(config->mixer1.geometry.x()); - mixerY1->setValue(config->mixer1.geometry.y()); - mixerW1->setValue(config->mixer1.geometry.width()); - mixerH1->setValue(config->mixer1.geometry.height()); - - mixerX2->setValue(config->mixer2.geometry.x()); - mixerY2->setValue(config->mixer2.geometry.y()); - mixerW2->setValue(config->mixer2.geometry.width()); - mixerH2->setValue(config->mixer2.geometry.height()); - - setMixerCurrent1->setEnabled(muse->mixer1Window()); - setMixerCurrent1->setEnabled(muse->mixer2Window()); - - setBigtimeCurrent->setEnabled(muse->bigtimeWindow()); - setTransportCurrent->setEnabled(muse->transportWindow()); - freewheelMode->setChecked(config->useJackFreewheelMode); - showSplash->setChecked(config->showSplashScreen); - projectPath->setText(config->projectPath); - templatePath->setText(config->templatePath); - instrumentPath->setText(config->instrumentPath); - midiImportPath->setText(config->importMidiPath); - waveImportPath->setText(config->importWavePath); - - stopActive->setChecked(midiRCList.isActive(RC_STOP)); - playActive->setChecked(midiRCList.isActive(RC_PLAY)); - gotoLeftMarkActive->setChecked(midiRCList.isActive(RC_GOTO_LEFT_MARK)); - recordActive->setChecked(midiRCList.isActive(RC_RECORD)); - - connect(applyButton, SIGNAL(clicked()), SLOT(apply())); - connect(okButton, SIGNAL(clicked()), SLOT(ok())); - connect(cancelButton, SIGNAL(clicked()), SLOT(cancel())); - connect(setMixerCurrent1, SIGNAL(clicked()), SLOT(mixerCurrent1())); - connect(setMixerCurrent2, SIGNAL(clicked()), SLOT(mixerCurrent2())); - connect(setBigtimeCurrent, SIGNAL(clicked()), SLOT(bigtimeCurrent())); - connect(setArrangerCurrent, SIGNAL(clicked()), SLOT(arrangerCurrent())); - connect(setTransportCurrent, SIGNAL(clicked()), SLOT(transportCurrent())); - - recordStop->setChecked(false); - recordRecord->setChecked(false); - recordGotoLeftMark->setChecked(false); - recordPlay->setChecked(false); - rcGroup->setChecked(rcEnable); - - pianorollWidth->setValue(PianoRoll::initWidth); - pianorollHeight->setValue(PianoRoll::initHeight); - pianorollRaster->setRaster(PianoRoll::initRaster); - pianorollQuant->setQuant(PianoRoll::initQuant); - - drumEditorWidth->setValue(DrumEdit::initWidth); - drumEditorHeight->setValue(DrumEdit::initHeight); - - waveEditorWidth->setValue(WaveEdit::initWidth); - waveEditorHeight->setValue(WaveEdit::initHeight); - - connect(recordStop, SIGNAL(clicked(bool)), SLOT(recordStopToggled(bool))); - connect(recordRecord, SIGNAL(clicked(bool)), SLOT(recordRecordToggled(bool))); - connect(recordGotoLeftMark, SIGNAL(clicked(bool)), SLOT(recordGotoLeftMarkToggled(bool))); - connect(recordPlay, SIGNAL(clicked(bool)), SLOT(recordPlayToggled(bool))); - - } - -//--------------------------------------------------------- -// setButtonColor -//--------------------------------------------------------- - -static void setButtonColor(QAbstractButton* b, const QRgb c) - { - QPalette p(b->palette()); - p.setColor(QPalette::Button, QColor(c)); - p.setColor(b->backgroundRole(), QColor(c)); - b->setPalette(p); - } - -//--------------------------------------------------------- -// resetValues -//--------------------------------------------------------- - -void PreferencesDialog::resetValues() - { - *config = ::config; // init with global config values - - setButtonColor(palette0, QColorDialog::customColor(0)); - setButtonColor(palette1, QColorDialog::customColor(1)); - setButtonColor(palette2, QColorDialog::customColor(2)); - setButtonColor(palette3, QColorDialog::customColor(3)); - setButtonColor(palette4, QColorDialog::customColor(4)); - setButtonColor(palette5, QColorDialog::customColor(5)); - setButtonColor(palette6, QColorDialog::customColor(6)); - setButtonColor(palette7, QColorDialog::customColor(7)); - setButtonColor(palette8, QColorDialog::customColor(8)); - setButtonColor(palette9, QColorDialog::customColor(9)); - setButtonColor(palette10, QColorDialog::customColor(10)); - setButtonColor(palette11, QColorDialog::customColor(11)); - setButtonColor(palette12, QColorDialog::customColor(12)); - setButtonColor(palette13, QColorDialog::customColor(13)); - setButtonColor(palette14, QColorDialog::customColor(14)); - } - -//--------------------------------------------------------- -// PreferencesDialog -//--------------------------------------------------------- - -PreferencesDialog::~PreferencesDialog() - { - delete config; - } - -//--------------------------------------------------------- -// apply -//--------------------------------------------------------- - -void PreferencesDialog::apply() - { - ::config.styleSheetFile = styleSheetPath->text(); - int showPartEvent = 0; - int showPartType = 0; - - if (partShownames->isChecked()) - showPartType |= 1; - if (partShowevents->isChecked()) - showPartType |= 2; - if (partShowCakes->isChecked()) - showPartType |= 4; - - if (eventNoteon->isChecked()) - showPartEvent |= (1 << 0); - if (eventPolypressure->isChecked()) - showPartEvent |= (1 << 1); - if (eventController->isChecked()) - showPartEvent |= (1 << 2); - if (eventProgramchange->isChecked()) - showPartEvent |= (1 << 3); - if (eventAftertouch->isChecked()) - showPartEvent |= (1 << 4); - if (eventPitchbend->isChecked()) - showPartEvent |= (1 << 5); - if (eventSpecial->isChecked()) - showPartEvent |= (1 << 6); - - config->canvasUseBgPixmap = usePixmap->isChecked(); - if (currentBg != "") - config->canvasBgPixmap = currentBg; - - config->canvasShowGrid = arrGrid->isChecked(); - // set colors... - ::config = *config; - - rcEnable = rcGroup->isChecked(); - int rtcticks = rtcResolutionSelect->currentIndex(); - int div = midiDivisionSelect->currentIndex(); - - ::config.connectToAllMidiDevices = connectToAllDevices->isChecked(); - ::config.connectToAllMidiTracks = connectToAllTracks->isChecked(); - ::config.createDefaultMidiInput = createDefaultInput->isChecked(); - ::config.defaultMidiInputDevice = preferredInput->currentText(); - ::config.defaultMidiOutputDevice = preferredOutput->currentText(); - ::config.defaultMidiInstrument = preferredInstrument->currentText(); - - ::config.guiRefresh = guiRefreshSelect->value(); - ::config.minSlider = minSliderSelect->value(); - ::config.maxSlider = maxSliderSelect->value(); - ::config.minMeter = minMeterSelect->value(); - ::config.maxMeter = maxMeterSelect->value(); - ::config.peakHoldTime = peakHoldTime->value(); - ::config.rtcTicks = rtcResolutions[rtcticks]; - ::config.guiDivision = divisions[div]; - ::config.helpBrowser = helpBrowser->text(); - ::config.startProject = startProjectEntry->text(); - - if (alwaysAsk->isChecked()) - ::config.startMode = START_ASK_FOR_PROJECT; - else if (startWithLastProject->isChecked()) - ::config.startMode = START_LAST_PROJECT; - else if (startWithProject->isChecked()) - ::config.startMode = START_START_PROJECT; - - ::config.transportVisible = showTransport->isChecked(); - ::config.bigTimeVisible = showBigtime->isChecked(); - ::config.mixer1Visible = showMixer1->isChecked(); - ::config.mixer2Visible = showMixer2->isChecked(); - - ::config.geometryTransport.setX(transportX->value()); - ::config.geometryTransport.setY(transportY->value()); - ::config.geometryTransport.setWidth(0); - ::config.geometryTransport.setHeight(0); - - ::config.geometryBigTime.setX(bigtimeX->value()); - ::config.geometryBigTime.setY(bigtimeY->value()); - ::config.geometryBigTime.setWidth(bigtimeW->value()); - ::config.geometryBigTime.setHeight(bigtimeH->value()); - - ::config.mixer1.geometry.setX(mixerX1->value()); - ::config.mixer1.geometry.setY(mixerY1->value()); - ::config.mixer1.geometry.setWidth(mixerW1->value()); - ::config.mixer1.geometry.setHeight(mixerH1->value()); - - ::config.mixer2.geometry.setX(mixerX2->value()); - ::config.mixer2.geometry.setY(mixerY2->value()); - ::config.mixer2.geometry.setWidth(mixerW2->value()); - ::config.mixer2.geometry.setHeight(mixerH2->value()); - - ::config.useJackFreewheelMode = freewheelMode->isChecked(); - ::config.showSplashScreen = showSplash->isChecked(); - - ::config.projectPath = projectPath->text(); - ::config.templatePath = templatePath->text(); - ::config.instrumentPath = instrumentPath->text(); - ::config.importMidiPath = midiImportPath->text(); - ::config.importWavePath = waveImportPath->text(); - - lastMidiPath = museUser + "/" + ::config.importMidiPath; - lastWavePath = museUser + "/" + ::config.importWavePath; - - PianoRoll::initWidth = pianorollWidth->value(); - PianoRoll::initHeight = pianorollHeight->value(); - PianoRoll::initRaster = pianorollRaster->raster(); - PianoRoll::initQuant = pianorollQuant->quant(); - - DrumEdit::initWidth = drumEditorWidth->value(); - DrumEdit::initHeight = drumEditorHeight->value(); - - muse->showMixer1(::config.mixer1Visible); - muse->showMixer2(::config.mixer2Visible); - muse->showBigtime(::config.bigTimeVisible); - muse->showTransport(::config.transportVisible); - QWidget* w = muse->transportWindow(); - if (w) { - w->resize(::config.geometryTransport.size()); - w->move(::config.geometryTransport.topLeft()); - } - w = muse->mixer1Window(); - if (w) { - w->resize(::config.mixer1.geometry.size()); - w->move(::config.mixer1.geometry.topLeft()); - } - w = muse->mixer2Window(); - if (w) { - w->resize(::config.mixer2.geometry.size()); - w->move(::config.mixer2.geometry.topLeft()); - } - w = muse->bigtimeWindow(); - if (w) { - w->resize(::config.geometryBigTime.size()); - w->move(::config.geometryBigTime.topLeft()); - } - - muse->setHeartBeat(); // set guiRefresh - audio->msgSetRtc(); // set midi tick rate - muse->changeConfig(true); // save settings - } - -//--------------------------------------------------------- -// ok -//--------------------------------------------------------- - -void PreferencesDialog::ok() - { - apply(); - close(); - } - -//--------------------------------------------------------- -// cancel -//--------------------------------------------------------- - -void PreferencesDialog::cancel() - { - close(); - } - -//--------------------------------------------------------- -// configCanvasBgPixmap -//--------------------------------------------------------- - -void PreferencesDialog::configCanvasBgPixmap() - { - QString cur(currentBg); - if (cur == "") - cur = museGlobalShare + "/wallpapers"; - - QStringList pattern; - const char** p = image_file_pattern; - while(*p) - pattern << *p++; - QString s = getImageFileName(cur, pattern, this, tr("MusE: load image")); - if (!s.isEmpty()) { - QBrush b; - currentBg = s; - b.setTexture(QPixmap(s)); - QPalette p; - p.setBrush(QPalette::Window, b); - currentBgLabel->setPalette(p); - currentBgLabel->setText(currentBg); - } - } - -//--------------------------------------------------------- -// configCanvasBgColor -//--------------------------------------------------------- - -void PreferencesDialog::configCanvasBgColor() - { - QColor color = QColorDialog::getColor(config->canvasBgColor, this); - if (color.isValid()) { - config->canvasBgColor = color; - QPalette p; - p.setColor(QPalette::Window, color); - canvasBackgroundColor->setPalette(p); - } - } - -//--------------------------------------------------------- -// selectionChanged -//--------------------------------------------------------- - -void PreferencesDialog::colorItemSelectionChanged() - { - QTreeWidgetItem* item = (QTreeWidgetItem*)itemList->selectedItems().at(0); - QString txt = item->text(0); - int id = item->data(0, 1).toInt(); - if (id == 0) { - color = 0; - return; - } - switch(id) { - case 0x400 ... 0x410: // "Default" - color = &config->partColors[id & 0xff]; - break; - case 0x100: - color = &config->bigTimeBackgroundColor; - break; - case 0x101: - color = &config->bigTimeForegroundColor; - break; - case 0x200: - color = &config->transportHandleColor; - break; - case 0x300: - color = &config->waveEditBackgroundColor; - break; - case 0x500 ... 0x5ff: - color = &config->trackBg[id & 0xff]; - break; - case 0x41c: - color = &config->selectPartBg; - break; - default: - color = 0; - break; - } - updateColor(); - } - -//--------------------------------------------------------- -// updateColor -//--------------------------------------------------------- - -void PreferencesDialog::updateColor() - { - hslider->setEnabled(color); - sslider->setEnabled(color); - vslider->setEnabled(color); - if (color == 0) - return; - QPalette p(colorframe->palette()); - p.setColor(QPalette::Window, *color); - colorframe->setPalette(p); - int r, g, b, h, s, v; - color->getRgb(&r, &g, &b); - color->getHsv(&h, &s, &v); - - hslider->blockSignals(true); - sslider->blockSignals(true); - vslider->blockSignals(true); - - hslider->setValue(h); - sslider->setValue(s); - vslider->setValue(v); - - hslider->blockSignals(false); - sslider->blockSignals(false); - vslider->blockSignals(false); - } - -void PreferencesDialog::hsliderChanged(int val) - { - int h, s, v; - if (color) { - color->getHsv(&h, &s, &v); - color->setHsv(val, s, v); - } - updateColor(); - } - -void PreferencesDialog::ssliderChanged(int val) - { - int h, s, v; - if (color) { - color->getHsv(&h, &s, &v); - color->setHsv(h, val, v); - } - updateColor(); - } - -void PreferencesDialog::vsliderChanged(int val) - { - int h, s, v; - if (color) { - color->getHsv(&h, &s, &v); - color->setHsv(h, s, val); - } - updateColor(); - } - -//--------------------------------------------------------- -// addToPaletteClicked -//--------------------------------------------------------- - -void PreferencesDialog::addToPaletteClicked() - { - if (!color) - return; - QAbstractButton* button = colorGroup->checkedButton(); - int r, g, b; - QColor c; - if (button) { - c = button->palette().color(QPalette::Button); - c.getRgb(&r, &g, &b); - } - if (button == 0 || r != 0xff || g != 0xff || b != 0xff) { - for (int i = 0; i < 16; ++i) { - button = colorGroup->button(i); - c = button->palette().color(QPalette::Button); - c.getRgb(&r, &g, &b); - if (r == 0xff && g == 0xff && b == 0xff) { - // found empty slot - button->setChecked(true); - break; - } - } - } - if (button) { - int id = colorGroup->checkedId(); - QColorDialog::setCustomColor(id, color->rgb()); - setButtonColor(button, color->rgb()); - } - } - -//--------------------------------------------------------- -// paletteClicked -//--------------------------------------------------------- - -void PreferencesDialog::paletteClicked(QAbstractButton* button) - { - if (color == 0) - return; - QColor c = button->palette().color(QPalette::Button); - int r, g, b; - c.getRgb(&r, &g, &b); - if (r == 0xff && g == 0xff && b == 0xff) - return; // interpret palette slot as empty - *color = c; - updateColor(); - } - -//--------------------------------------------------------- -// usePixmapToggled -//--------------------------------------------------------- - -void PreferencesDialog::usePixmapToggled(bool val) - { - useColor->setChecked(!val); - } - -//--------------------------------------------------------- -// useColorToggled -//--------------------------------------------------------- - -void PreferencesDialog::useColorToggled(bool val) - { - usePixmap->setChecked(!val); - } - -//--------------------------------------------------------- -// mixerCurrent1 -//--------------------------------------------------------- - -void PreferencesDialog::mixerCurrent1() - { - QWidget* w = muse->mixer1Window(); - if (!w) - return; - QRect r(w->frameGeometry()); - mixerX1->setValue(r.x()); - mixerY1->setValue(r.y()); - mixerW1->setValue(r.width()); - mixerH1->setValue(r.height()); - } - -//--------------------------------------------------------- -// mixerCurrent2 -//--------------------------------------------------------- - -void PreferencesDialog::mixerCurrent2() - { - QWidget* w = muse->mixer2Window(); - if (!w) - return; - QRect r(w->frameGeometry()); - mixerX2->setValue(r.x()); - mixerY2->setValue(r.y()); - mixerW2->setValue(r.width()); - mixerH2->setValue(r.height()); - } - -//--------------------------------------------------------- -// bigtimeCurrent -//--------------------------------------------------------- - -void PreferencesDialog::bigtimeCurrent() - { - QWidget* w = muse->bigtimeWindow(); - if (!w) - return; - QRect r(w->frameGeometry()); - bigtimeX->setValue(r.x()); - bigtimeY->setValue(r.y()); - bigtimeW->setValue(r.width()); - bigtimeH->setValue(r.height()); - } - -//--------------------------------------------------------- -// arrangerCurrent -//--------------------------------------------------------- - -void PreferencesDialog::arrangerCurrent() - { - QRect r(muse->frameGeometry()); - arrangerX->setValue(r.x()); - arrangerY->setValue(r.y()); - arrangerW->setValue(r.width()); - arrangerH->setValue(r.height()); - } - -//--------------------------------------------------------- -// transportCurrent -//--------------------------------------------------------- - -void PreferencesDialog::transportCurrent() - { - QWidget* w = muse->transportWindow(); - if (!w) - return; - QRect r(w->frameGeometry()); - transportX->setValue(r.x()); - transportY->setValue(r.y()); - } - -//--------------------------------------------------------- -// recordStopToggled -//--------------------------------------------------------- - -void PreferencesDialog::recordStopToggled(bool f) - { - recordStop->setChecked(!f); - if (!f) { - recordRecord->setChecked(false); - recordGotoLeftMark->setChecked(false); - recordPlay->setChecked(false); - connect(song, SIGNAL(midiEvent(MidiEvent)), SLOT(midiEventReceived(MidiEvent))); - } - else - disconnect(song, SIGNAL(midiEvent(MidiEvent)), this, SLOT(midiEventReceived(MidiEvent))); - } - -//--------------------------------------------------------- -// recordRecordToggled -//--------------------------------------------------------- - -void PreferencesDialog::recordRecordToggled(bool f) - { - recordRecord->setChecked(!f); - if (!f) { - recordStop->setChecked(false); - recordGotoLeftMark->setChecked(false); - recordPlay->setChecked(false); - connect(song, SIGNAL(midiEvent(MidiEvent)), SLOT(midiEventReceived(MidiEvent))); - } - else - disconnect(song, SIGNAL(midiEvent(MidiEvent)), this, SLOT(midiEventReceived(MidiEvent))); - } - -//--------------------------------------------------------- -// recordGotoLeftMarkToggled -//--------------------------------------------------------- - -void PreferencesDialog::recordGotoLeftMarkToggled(bool f) - { - recordGotoLeftMark->setChecked(!f); - if (!f) { - recordStop->setChecked(false); - recordRecord->setChecked(false); - recordPlay->setChecked(false); - connect(song, SIGNAL(midiEvent(MidiEvent)), SLOT(midiEventReceived(MidiEvent))); - } - else - disconnect(song, SIGNAL(midiEvent(MidiEvent)), this, SLOT(midiEventReceived(MidiEvent))); - } - -//--------------------------------------------------------- -// recordPlayToggled -//--------------------------------------------------------- - -void PreferencesDialog::recordPlayToggled(bool f) - { - recordPlay->setChecked(!f); - if (!f) { - recordStop->setChecked(false); - recordRecord->setChecked(false); - recordGotoLeftMark->setChecked(false); - connect(song, SIGNAL(midiEvent(MidiEvent)), SLOT(midiEventReceived(MidiEvent))); - } - else - disconnect(song, SIGNAL(midiEvent(MidiEvent)), this, SLOT(midiEventReceived(MidiEvent))); - } - -//--------------------------------------------------------- -// midiEventReceived -//--------------------------------------------------------- - -void PreferencesDialog::midiEventReceived(MidiEvent event) - { - printf("event received\n"); - if (recordPlay->isChecked()) { - recordPlay->setChecked(false); - playActive->setChecked(true); - midiRCList.setAction(event, RC_PLAY); - } - else if (recordStop->isChecked()) { - recordStop->setChecked(false); - stopActive->setChecked(true); - midiRCList.setAction(event, RC_STOP); - } - else if (recordRecord->isChecked()) { - recordRecord->setChecked(false); - recordActive->setChecked(true); - midiRCList.setAction(event, RC_RECORD); - } - else if (recordGotoLeftMark->isChecked()) { - recordGotoLeftMark->setChecked(false); - gotoLeftMarkActive->setChecked(true); - midiRCList.setAction(event, RC_GOTO_LEFT_MARK); - } - // only one shot - disconnect(song, SIGNAL(midiEvent(MidiEvent)), this, SLOT(midiEventReceived(MidiEvent))); - } - - diff --git a/muse/muse/preferences.h b/muse/muse/preferences.h deleted file mode 100644 index 75cb5754..00000000 --- a/muse/muse/preferences.h +++ /dev/null @@ -1,79 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __PREFERENCES_H__ -#define __PREFERENCES_H__ - -#include "ui_preferences.h" -#include "midievent.h" - -class MusE; -class Arranger; -class GlobalConfigValues; - -//--------------------------------------------------------- -// PreferencesDialog -//--------------------------------------------------------- - -class PreferencesDialog : public QDialog, public Ui::PreferencesDialogBase { - Q_OBJECT - - Arranger* arr; - QColor* color; - QString currentBg; - GlobalConfigValues* config; - QButtonGroup* colorGroup; - QButtonGroup* startProjectGroup; - - void updateColor(); - - private slots: - void apply(); - void ok(); - void cancel(); - void configCanvasBgColor(); - void configCanvasBgPixmap(); - void colorItemSelectionChanged(); - void hsliderChanged(int); - void ssliderChanged(int); - void vsliderChanged(int); - void addToPaletteClicked(); - void paletteClicked(QAbstractButton*); - void useColorToggled(bool); - void usePixmapToggled(bool); - - void mixerCurrent1(); - void mixerCurrent2(); - void bigtimeCurrent(); - void arrangerCurrent(); - void transportCurrent(); - void recordStopToggled(bool); - void recordRecordToggled(bool); - void recordGotoLeftMarkToggled(bool); - void recordPlayToggled(bool); - void midiEventReceived(MidiEvent); - - public: - PreferencesDialog(Arranger*, QWidget* parent=0); - ~PreferencesDialog(); - void resetValues(); - }; - -#endif diff --git a/muse/muse/preferences.ui b/muse/muse/preferences.ui deleted file mode 100644 index 5417c33c..00000000 --- a/muse/muse/preferences.ui +++ /dev/null @@ -1,2400 +0,0 @@ - - PreferencesDialogBase - - - - 0 - 0 - 665 - 631 - - - - Dialog - - - - 6 - - - 9 - - - 9 - - - 9 - - - 9 - - - - - 0 - - - - Application - - - - 6 - - - 9 - - - 9 - - - 9 - - - 9 - - - - - Style - - - - - - Style Sheet: - - - - - - - - - - ... - - - :/xpm/fileopen.png - - - - - - - - - - Start MusE - - - true - - - - 3 - - - 9 - - - 9 - - - 9 - - - 9 - - - - - 3 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - always ask - - - - - - - start with last project - - - - - - - start with project: - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - 6 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - show splash screen - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - Local Paths - - - true - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - - 0 - 0 - - - - Projects - - - - - - - - - - - 0 - 0 - - - - Midi Import - - - - - - - - - - - 0 - 0 - - - - Templates - - - - - - - - - - Wave Import - - - - - - - - - - - 0 - 0 - - - - Instruments - - - - - - - - - - - - - Views - - - true - - - - 9 - - - 9 - - - 9 - - - 9 - - - 3 - - - 3 - - - - - Cur - - - - - - - show - - - - - - - Mixer 1 - - - - - - - Big Time - - - - - - - Cur - - - - - - - Cur - - - - - - - Cur - - - - - - - 9999 - - - - - - - 9999 - - - 0 - - - - - - - 9999 - - - - - - - 9999 - - - - - - - 9999 - - - - - - - 9999 - - - - - - - 9999 - - - - - - - 9999 - - - - - - - 9999 - - - - - - - 9999 - - - - - - - 9999 - - - - - - - 9999 - - - - - - - 9999 - - - - - - - 9999 - - - - - - - 9999 - - - - - - - 9999 - - - - - - - 9999 - - - - - - - 9999 - - - - - - - show - - - - - - - show - - - - - - - Mixer 2 - - - - - - - Transport - - - - - - - Arranger - - - - - - - show - - - - - - - Cur - - - - - - - - - - - Editors - - - - 6 - - - 9 - - - 9 - - - 9 - - - 9 - - - - - 4 - - - - Arranger - - - - 6 - - - 9 - - - 9 - - - 9 - - - 9 - - - - - Parts - - - true - - - - 6 - - - 11 - - - 11 - - - 11 - - - 11 - - - - - show names - - - - - - - show events - - - - - - - show Cakewalk Style - - - - - - - - - - Events - - - true - - - - 11 - - - 11 - - - 11 - - - 11 - - - 6 - - - 6 - - - - - note on - - - - - - - poly pressure - - - - - - - controller - - - - - - - aftertouch - - - - - - - pitch bend - - - - - - - program change - - - - - - - special - - - - - - - - - - Background - - - true - - - false - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - - 0 - 0 - - - - bg - - - Qt::AlignCenter - - - -1 - - - - - - - Pixmap - - - - - - - Color - - - Qt::AlignCenter - - - - - - - Color - - - - - - - select... - - - - - - - select... - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - show snap grid - - - - - - - - Pianoroll - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - Qt::Vertical - - - - 20 - 211 - - - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-size:10pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;">Quant</p></body></html> - - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-size:10pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;">Raster</p></body></html> - - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-size:10pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;">Geometry</p></body></html> - - - - - - - height: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - width: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - 50 - - - 9999 - - - - - - - 50 - - - 9999 - - - - - - - - - - - - - - DrumEditor - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - Qt::Vertical - - - - 20 - 351 - - - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-size:10pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;">Geometry</p></body></html> - - - - - - - 50 - - - 9999 - - - - - - - width: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - 50 - - - 9999 - - - - - - - height: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - MasterEditor - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - Qt::Vertical - - - - 20 - 331 - - - - - - - - 50 - - - 9999 - - - - - - - height: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - 50 - - - 9999 - - - - - - - width: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-size:10pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;">Geometry</p></body></html> - - - - - - - - WaveEditor - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - 50 - - - 9999 - - - - - - - height: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - width: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-size:10pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;">Geometry</p></body></html> - - - - - - - 50 - - - 9999 - - - - - - - Qt::Vertical - - - - 20 - 351 - - - - - - - - - - - - - Audio - - - - 6 - - - 9 - - - 9 - - - 9 - - - 9 - - - - - Mixer - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - Slider Val, Min: - - - - - - - - 0 - 0 - - - - dB - - - -100 - - - 0 - - - -60 - - - - - - - Max: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - dB - - - 10 - - - - - - - Peak Hold Time: - - - - - - - ms - - - 20 - - - 5000 - - - - - - - Meter Val, Min: - - - - - - - - 0 - 0 - - - - dB - - - -100 - - - 0 - - - 10 - - - -60 - - - - - - - Max: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - dB - - - 40 - - - 10 - - - - - - - - - - use JACK freewheel mode if possible - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - Midi - - - - 6 - - - 8 - - - 8 - - - 8 - - - 8 - - - - - Ticks - - - true - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - Displayed Resolution -(Ticks/Quarternote) - - - - - - - RTC Resolution -(Ticks/Sec) - - - - - - - - 1024 - - - - - 2048 - - - - - 4096 - - - - - 8172 - - - - - - - - 3 - - - - 48 - - - - - 96 - - - - - 192 - - - - - 384 - - - - - 768 - - - - - 1536 - - - - - 3072 - - - - - 6144 - - - - - 12288 - - - - - - - - - - - Input Routing - - - true - - - - 8 - - - 8 - - - 8 - - - 8 - - - 6 - - - 6 - - - - - Connect to all Tracks - - - - - - - Connect to all Input Devices - - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Preferred Input Device:</p></body></html> - - - - - - - - - - Create Default Input Strip - - - - - - - - - - Output Routing - - - true - - - - 8 - - - 8 - - - 8 - - - 8 - - - 8 - - - 8 - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Preferred Output Device:</p></body></html> - - - - - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Preferred Instrument:</p></body></html> - - - - - - - - - - - - - Qt::Vertical - - - - 20 - 20 - - - - - - - - - GUI - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Help Browser - - - - - - - /sec - - - 2 - - - 100 - - - 20 - - - - - - - GUI Refresh Rate: - - - - - - - - RemoteControl - - - - 6 - - - 9 - - - 9 - - - 9 - - - 9 - - - - - enable midi remote control - - - Midi Remote Control - - - true - - - true - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - Record - - - - - - - Goto Left Mark - - - - - - - Stop - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Play - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - Colors - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - Qt::NoFocus - - - Palette - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - true - - - - - - - - - - true - - - - - - - - - - true - - - - - - - - - - true - - - - - - - - - - true - - - - - - - - - - true - - - - - - - - - - true - - - - - - - - - - true - - - - - - - - - - true - - - - - - - - - - true - - - - - - - - - - true - - - - - - - - - - true - - - - - - - - - - true - - - - - - - - - - true - - - - - - - - - - true - - - - - - - - - - true - - - - - - - - - - 6 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - V - - - Qt::AlignCenter - - - - - - - 255 - - - Qt::Horizontal - - - - - - - - - - 0 - 0 - - - - true - - - - Items - - - - - - - - add to palette - - - - - - - - 0 - 0 - - - - QFrame::StyledPanel - - - QFrame::Sunken - - - - - - - 6 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - H - - - Qt::AlignCenter - - - - - - - 255 - - - Qt::Horizontal - - - - - - - - - 6 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - S - - - Qt::AlignCenter - - - - - - - 255 - - - Qt::Horizontal - - - - - - - - - - - - - 6 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Qt::Horizontal - - - - 131 - 31 - - - - - - - - Apply - - - - - - - OK - - - - - - - Cancel - - - - - - - - - - RecordButton - QToolButton -
recordbutton.h
-
- - RasterCombo - QComboBox -
rastercombo.h
-
- - QuantCombo - QComboBox -
quantcombo.h
-
- - GreendotButton - QToolButton -
greendotbutton.h
-
-
- - - - - - okButton - clicked() - PreferencesDialogBase - accept() - - - 278 - 253 - - - 96 - 254 - - - - - cancelButton - clicked() - PreferencesDialogBase - reject() - - - 369 - 253 - - - 179 - 282 - - - - -
diff --git a/muse/muse/projectdialog.cpp b/muse/muse/projectdialog.cpp deleted file mode 100644 index c85b3446..00000000 --- a/muse/muse/projectdialog.cpp +++ /dev/null @@ -1,471 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "projectdialog.h" -#include "gconfig.h" -#include "song.h" -#include "icons.h" - -// -// entry types for projectTree tree widget: -// -enum { DIR_TYPE, PROJECT_TYPE }; - -//--------------------------------------------------------- -// ProjectTree -//--------------------------------------------------------- - -ProjectTree::ProjectTree(QWidget* parent) - : QTreeWidget(parent) - { - setAcceptDrops(true); - } - -//--------------------------------------------------------- -// itemPath -//--------------------------------------------------------- - -QString ProjectTree::itemPath(QTreeWidgetItem* item) const - { - QString path; - QTreeWidgetItem* ti = item; - QStringList dirComponent; - do { - dirComponent.prepend(ti->text(0)); - ti = ti->parent(); - } while (ti); - foreach (QString s, dirComponent) { - if (!path.isEmpty()) - path += "/"; - path += s; - } - return path; - } - -//--------------------------------------------------------- -// mousePressEvent -//--------------------------------------------------------- - -void ProjectTree::mousePressEvent(QMouseEvent* event) - { - dragStartPosition = event->pos(); - QTreeWidget::mousePressEvent(event); - } - -//--------------------------------------------------------- -// mouseMoveEvent -//--------------------------------------------------------- - -void ProjectTree::mouseMoveEvent(QMouseEvent* ev) - { - QTreeWidgetItem* item = itemAt(ev->pos()); - if (item == 0 || item->type() != PROJECT_TYPE) // || ev->button() != Qt::LeftButton) - return; - if ((ev->pos() - dragStartPosition).manhattanLength() - < QApplication::startDragDistance()) - return; - QDrag* drag = new QDrag(this); - QMimeData* mimeData = new QMimeData; - mimeData->setText(itemPath(item)); - drag->setMimeData(mimeData); - drag->setPixmap(style()->standardPixmap(QStyle::SP_FileIcon)); - Qt::DropAction dropAction = drag->start(Qt::MoveAction); - if (dropAction == Qt::IgnoreAction) - return; - printf("drop action\n"); - if (dropAction == Qt::MoveAction) { - printf("move action\n"); - } - } - -//--------------------------------------------------------- -// dragEnterEvent -//--------------------------------------------------------- - -void ProjectTree::dragEnterEvent(QDragEnterEvent* event) - { - if (event->mimeData()->hasFormat("text/plain")) { - event->acceptProposedAction(); - } - } - -//--------------------------------------------------------- -// dragMoveEvent -//--------------------------------------------------------- - -void ProjectTree::dragMoveEvent(QDragMoveEvent* event) - { - QTreeWidgetItem* item = itemAt(event->pos()); - event->setAccepted(item && item->type() == DIR_TYPE); - } - -//--------------------------------------------------------- -// searchItem -//--------------------------------------------------------- - -QTreeWidgetItem* ProjectTree::searchItem(const QString& s, QTreeWidgetItem* p) - { - int n = p->childCount(); - for (int i = 0; i < n; ++i) { - QTreeWidgetItem* item = p->child(i); - if (s == itemPath(item)) - return p->takeChild(i); - item = searchItem(s, item); - if (item) - return item; - } - return 0; - } - -//--------------------------------------------------------- -// dropEvent -//--------------------------------------------------------- - -void ProjectTree::dropEvent(QDropEvent* event) - { - QTreeWidgetItem* dstItem = itemAt(event->pos()); - if (dstItem && dstItem->type() == DIR_TYPE) { - QString src = event->mimeData()->text(); - QTreeWidgetItem* srcItem = 0; - int n = topLevelItemCount(); - for (int i = 0; i < n; ++i) { - QTreeWidgetItem* item = topLevelItem(i); - if (src == itemPath(item)) { - srcItem = takeTopLevelItem(i); - break; - } - srcItem = searchItem(src, item); - if (srcItem) - break; - } - if (srcItem == 0) { - printf("src item not found\n"); - return; - } - QString dst = itemPath(dstItem); - dstItem->addChild(srcItem); - // - // TODO: - actual move project - // - look for name conflicts - // - do nothing if src==dst - // - src = QDir::homePath() + "/" + config.projectPath + "/" + src; - dst = QDir::homePath() + "/" + config.projectPath + "/" + dst - + "/" + srcItem->text(0); - if (src != dst) { - QDir dir; - if (!dir.rename(src, dst)) { -printf("Rename <%s> -> <%s> failed\n", src.toLatin1().data(), dst.toLatin1().data()); - event->acceptProposedAction(); - } - } - } - } - -//--------------------------------------------------------- -// processSubdirectories -//--------------------------------------------------------- - -void ProjectDialog::processSubdir(QTreeWidgetItem* item, const QString& p, - const QString& subdir, QTreeWidgetItem** current) - { - QString path(p + "/" + subdir); - QFile pf(path + "/" + subdir + ".med"); - if (pf.exists()) { - QTreeWidgetItem* pi = new QTreeWidgetItem(item, PROJECT_TYPE); - pi->setText(0, subdir); - pi->setIcon(0, style()->standardIcon(QStyle::SP_FileIcon)); - if (path == song->absoluteProjectPath()) - *current = pi; - } - else { - QDir sd(path); - QStringList dl = sd.entryList(QDir::AllDirs | QDir::NoDotAndDotDot); - QTreeWidgetItem* pi = new QTreeWidgetItem(item, DIR_TYPE); - pi->setText(0, subdir); - itemCollapsed(pi); - foreach (QString s, dl) - processSubdir(pi, path, s, current); - } - } - -//--------------------------------------------------------- -// ProjectDialog -//--------------------------------------------------------- - -ProjectDialog::ProjectDialog(QWidget* parent) - : QDialog(parent) - { - setupUi(this); - projectTree->setSelectionBehavior(QAbstractItemView::SelectRows); - projectTree->setSelectionMode(QAbstractItemView::SingleSelection); - QDir pd(QDir::homePath() + "/" + config.projectPath); - QStringList el = pd.entryList(QDir::AllDirs | QDir::NoDotAndDotDot); - QTreeWidgetItem* current = 0; - foreach (QString s, el) { - QString path(QDir::homePath() + "/" + config.projectPath + "/" + s); - QFile pf(path + "/" + s + ".med"); - if (pf.exists()) { - QTreeWidgetItem* pi = new QTreeWidgetItem(projectTree, PROJECT_TYPE); - pi->setText(0, s); - pi->setIcon(0, style()->standardIcon(QStyle::SP_FileIcon)); - if (path == song->absoluteProjectPath()) - current = pi; - } - else { - QDir sd(path); - QStringList dl = sd.entryList(QDir::AllDirs | QDir::NoDotAndDotDot); - if (!dl.isEmpty()) { - QTreeWidgetItem* pi = new QTreeWidgetItem(projectTree, DIR_TYPE); - pi->setText(0, s); - itemCollapsed(pi); - foreach (QString s, dl) { - processSubdir(pi, path, s, ¤t); - } - } - } - } - connect(projectTree, - SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), - SLOT(currentChanged(QTreeWidgetItem*, QTreeWidgetItem*))); - connect(projectTree, - SIGNAL(itemDoubleClicked(QTreeWidgetItem*, int)), - SLOT(itemDoubleClicked(QTreeWidgetItem*, int))); - connect(projectTree, - SIGNAL(itemCollapsed(QTreeWidgetItem*)), - SLOT(itemCollapsed(QTreeWidgetItem*))); - connect(projectTree, - SIGNAL(itemExpanded(QTreeWidgetItem*)), - SLOT(itemExpanded(QTreeWidgetItem*))); - connect(projectNameEntry, - SIGNAL(textEdited(const QString&)), - SLOT(projectNameEdited(const QString&))); - connect(newFolder, - SIGNAL(clicked()), - SLOT(newFolderClicked())); - - if (current) - projectTree->setCurrentItem(current); - else - currentChanged(0, 0); - } - -//--------------------------------------------------------- -// itemCollapsed -//--------------------------------------------------------- - -void ProjectDialog::itemCollapsed(QTreeWidgetItem* item) - { - item->setIcon(0, style()->standardIcon(QStyle::SP_DirClosedIcon)); - } - -//--------------------------------------------------------- -// itemExpanded -//--------------------------------------------------------- - -void ProjectDialog::itemExpanded(QTreeWidgetItem* item) - { - item->setIcon(0, style()->standardIcon(QStyle::SP_DirOpenIcon)); - } - -//--------------------------------------------------------- -// currentChanged -//--------------------------------------------------------- - -void ProjectDialog::currentChanged(QTreeWidgetItem* item, QTreeWidgetItem*) - { - bool enable = (item != 0) && (item->type() == PROJECT_TYPE); - createdDate->setEnabled(enable); - modifiedDate->setEnabled(enable); - comment->setEnabled(enable); - length->setEnabled(enable); - - // newFolder->setEnabled(item == 0 || item->type() == DIR_TYPE); - if (!enable) - return; - - projectNameEntry->setText(item->text(0)); - QString pd(QDir::homePath() + "/" + config.projectPath + "/"); - - pd += "/" + projectTree->itemPath(item); - - QFileInfo pf(pd + "/" + item->text(0) + ".med"); - modifiedDate->setDateTime(pf.lastModified()); - - QTime time(0, 0, 0); - QDateTime date; - - QFile f(pf.filePath()); - QDomDocument doc; - int line, column; - QString err; - if (!doc.setContent(&f, false, &err, &line, &column)) { - QString col, ln, error; - col.setNum(column); - ln.setNum(line); - error = err + "\n at line: " + ln + " col: " + col; - printf("error reading med file: %s\n", error.toLatin1().data()); - return; - } - for (QDomNode node = doc.documentElement(); !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - if (e.isNull()) - continue; - if (e.tagName() == "muse") { - QString sversion = e.attribute("version", "1.0"); - int major=0, minor=0; - sscanf(sversion.toLatin1().data(), "%d.%d", &major, &minor); - int version = major << 8 + minor; - if (version >= 0x200) { - for (QDomNode n1 = node.firstChild(); !n1.isNull(); n1 = n1.nextSibling()) { - QDomElement e = n1.toElement(); - if (e.tagName() == "song") { - for (QDomNode n2 = n1.firstChild(); !n2.isNull(); n2 = n2.nextSibling()) { - QDomElement e = n2.toElement(); - QString tag(e.tagName()); - QString s(e.text()); - if (tag == "comment") - comment->setPlainText(s); - else if (tag == "createDate") - date = QDateTime::fromString(e.text(), Qt::ISODate); - else if (tag == "LenInSec") { - int sec = s.toInt(); - time = time.addSecs(sec); - break; - } - } - } - } - } - break; - } - } - length->setTime(time); - createdDate->setDateTime(date); - } - -//--------------------------------------------------------- -// projectNameEdited -//--------------------------------------------------------- - -void ProjectDialog::projectNameEdited(const QString&) - { - QTreeWidgetItem* item = projectTree->currentItem(); - if (item && item->type() == PROJECT_TYPE) { - projectTree->setItemSelected(item, false); - projectTree->setCurrentItem(0); - } - } - -//--------------------------------------------------------- -// projectPath -//--------------------------------------------------------- - -QString ProjectDialog::projectPath() const - { - QTreeWidgetItem* item = projectTree->currentItem(); - QString s; - if (item) { - if (item->type() == PROJECT_TYPE) - s = projectTree->itemPath(item); - else - s = projectTree->itemPath(item) + "/" + projectNameEntry->text(); - } - else - s = projectNameEntry->text(); - return s; - } - -//--------------------------------------------------------- -// projectName -//--------------------------------------------------------- - -QString ProjectDialog::projectName() const - { - return projectNameEntry->text(); - } - -//--------------------------------------------------------- -// setProjectName -//--------------------------------------------------------- - -void ProjectDialog::setProjectName(const QString& name) - { - projectNameEntry->setText(name); - } - -//--------------------------------------------------------- -// newFolderClicked -//--------------------------------------------------------- - -void ProjectDialog::newFolderClicked() - { - QString title(tr("MusE: create new folder")); - QString folder = QInputDialog::getText(this, title, tr("new folder:")); - if (folder.isEmpty()) - return; - QString path; - QTreeWidgetItem* item = projectTree->currentItem(); - if (item) { - QStringList sl = projectTree->itemPath(item).split("/"); - int n = sl.size() - 1; - for (int i = 0; i < n; ++i) { - if (!path.isEmpty()) - path += "/"; - path += sl[i]; - } - if (!path.isEmpty()) - path += "/"; - } - path += folder; - - QDir d; - if (!d.mkpath(QDir::homePath() + "/" + config.projectPath + "/" + path)) { - QString s("Creating new project folder <%1> failed"); - QMessageBox::critical(this, title, s.arg(path)); - } - else { - if (item) - item = item->parent(); - QStringList pathElements = folder.split("/"); - foreach(QString s, pathElements) { - QTreeWidgetItem* pi; - if (item == 0) - pi = new QTreeWidgetItem(projectTree, DIR_TYPE); - else - pi = new QTreeWidgetItem(item, DIR_TYPE); - pi->setText(0, s); - itemCollapsed(pi); - item = pi; - } - projectTree->setCurrentItem(item); - } - } - -//--------------------------------------------------------- -// itemDoubleClicked -//--------------------------------------------------------- - -void ProjectDialog::itemDoubleClicked(QTreeWidgetItem* item, int) - { - if (item->type() == PROJECT_TYPE) - accept(); - } - diff --git a/muse/muse/projectdialog.h b/muse/muse/projectdialog.h deleted file mode 100644 index 867ae385..00000000 --- a/muse/muse/projectdialog.h +++ /dev/null @@ -1,73 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __PROJECT_DIALOG_H__ -#define __PROJECT_DIALOG_H__ - -//--------------------------------------------------------- -// ProjectTree -//--------------------------------------------------------- - -class ProjectTree : public QTreeWidget { - Q_OBJECT - - QPoint dragStartPosition; - virtual void mousePressEvent(QMouseEvent*); - virtual void mouseMoveEvent(QMouseEvent*); - virtual void dragEnterEvent(QDragEnterEvent*); - virtual void dragMoveEvent(QDragMoveEvent*); - virtual void dropEvent(QDropEvent*); - - QTreeWidgetItem* searchItem(const QString&, QTreeWidgetItem*); - - public: - ProjectTree(QWidget* parent = 0); - QString itemPath(QTreeWidgetItem*) const; - }; - -#include "ui_projectdialog.h" - -//--------------------------------------------------------- -// ProjectDialog -//--------------------------------------------------------- - -class ProjectDialog : public QDialog, public Ui_ProjectDialogBase { - Q_OBJECT - - void processSubdir(QTreeWidgetItem*, const QString&, - const QString&, QTreeWidgetItem**); - - private slots: - void currentChanged(QTreeWidgetItem*, QTreeWidgetItem*); - void projectNameEdited(const QString&); - void itemCollapsed(QTreeWidgetItem*); - void itemExpanded(QTreeWidgetItem*); - void newFolderClicked(); - void itemDoubleClicked(QTreeWidgetItem*, int); - - public: - ProjectDialog(QWidget* parent = 0); - QString projectPath() const; - QString projectName() const; - void setProjectName(const QString&); - }; - -#endif - diff --git a/muse/muse/projectdialog.ui b/muse/muse/projectdialog.ui deleted file mode 100644 index 37c08f28..00000000 --- a/muse/muse/projectdialog.ui +++ /dev/null @@ -1,269 +0,0 @@ - - ProjectDialogBase - - - - 0 - 0 - 574 - 385 - - - - MusE: Select Project - - - - 9 - - - 6 - - - - - Qt::Horizontal - - - - 221 - 20 - - - - - - - - create new project folder - - - ... - - - :/xpm/folder_new.png - - - - - - - Properties - - - - 9 - - - 3 - - - - - Qt::NoFocus - - - true - - - - - - - Qt::NoFocus - - - true - - - - - - - Qt::NoFocus - - - true - - - - - - - Length: - - - - - - - Comment: - - - - - - - Modified: - - - - - - - Created: - - - - - - - Qt::NoFocus - - - true - - - - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - - 131 - 31 - - - - - - - - OK - - - true - - - - - - - Cancel - - - - - - - - - 0 - - - 6 - - - - - Project: - - - - - - - project name - - - - - - - - - false - - - true - - - true - - - 1 - - - - Projectlist - - - - - - - - - ProjectTree - QTreeWidget -
projectdialog.h
-
-
- - projectNameEntry - okButton - cancelButton - newFolder - projectTree - - - - - - - okButton - clicked() - ProjectDialogBase - accept() - - - 278 - 253 - - - 96 - 254 - - - - - cancelButton - clicked() - ProjectDialogBase - reject() - - - 369 - 253 - - - 179 - 282 - - - - -
diff --git a/muse/muse/projectpropsdialog.cpp b/muse/muse/projectpropsdialog.cpp deleted file mode 100644 index eb983801..00000000 --- a/muse/muse/projectpropsdialog.cpp +++ /dev/null @@ -1,64 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "projectpropsdialog.h" -#include "song.h" - -#include "al/al.h" -#include "al/tempo.h" - -//--------------------------------------------------------- -// ProjectPropsDialog -//--------------------------------------------------------- - -ProjectPropsDialog::ProjectPropsDialog(QWidget* parent) - : QDialog(parent) - { - setupUi(this); - comment->setPlainText(song->comment()); - projectName->setText(song->projectName()); - createdDate->setDateTime(song->createDate()); - int n = AL::tempomap.tick2frame(song->len()) / AL::sampleRate; - QTime time; - time = time.addSecs(n); - length->setTime(time); - } - -//--------------------------------------------------------- -// accept -//--------------------------------------------------------- - -void ProjectPropsDialog::accept() - { - song->setComment(comment->toPlainText()); - song->dirty = true; - QDialog::accept(); - } - -//--------------------------------------------------------- -// reject -//--------------------------------------------------------- - -void ProjectPropsDialog::reject() - { - comment->setPlainText(song->comment()); - QDialog::reject(); - } - diff --git a/muse/muse/projectpropsdialog.h b/muse/muse/projectpropsdialog.h deleted file mode 100644 index 83b7a511..00000000 --- a/muse/muse/projectpropsdialog.h +++ /dev/null @@ -1,46 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __PROJECTPROPS_DIALOG_H__ -#define __PROJECTPROPS_DIALOG_H__ - -#include "ui_projectpropsdialog.h" - -//--------------------------------------------------------- -// ProjectPropsDialog -//--------------------------------------------------------- - -class ProjectPropsDialog : public QDialog, public Ui_ProjectPropsDialogBase { - Q_OBJECT - - QString projectComment; - - public slots: - virtual void accept(); - virtual void reject(); - - public: - ProjectPropsDialog(QWidget* parent = 0); - }; - -#endif - - - diff --git a/muse/muse/projectpropsdialog.ui b/muse/muse/projectpropsdialog.ui deleted file mode 100644 index f431b602..00000000 --- a/muse/muse/projectpropsdialog.ui +++ /dev/null @@ -1,188 +0,0 @@ - - - - - ProjectPropsDialogBase - - - - 0 - 0 - 456 - 382 - - - - MusE: Project Properties - - - - 9 - - - 6 - - - - - - - - Comment: - - - - - - - true - - - Hz - - - 100000 - - - 48000 - - - - - - - Samplerate: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Length: - - - - - - - Qt::NoFocus - - - true - - - - - - - Qt::NoFocus - - - true - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - - 131 - 31 - - - - - - - - OK - - - - - - - Cancel - - - - - - - - - Created: - - - - - - - - 0 - 0 - 0 - 0 - - - - Project: - - - - - - - - - - - - - okButton - clicked() - ProjectPropsDialogBase - accept() - - - 278 - 253 - - - 96 - 254 - - - - - cancelButton - clicked() - ProjectPropsDialogBase - reject() - - - 369 - 253 - - - 179 - 282 - - - - - diff --git a/muse/muse/rack.cpp b/muse/muse/rack.cpp deleted file mode 100644 index dbd76804..00000000 --- a/muse/muse/rack.cpp +++ /dev/null @@ -1,445 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "rack.h" -#include "song.h" -#include "audio.h" -#include "icons.h" -#include "gconfig.h" -#include "pipeline.h" -#include "auxplugin.h" -#include "plugingui.h" -#include "widgets/filedialog.h" -#include "muse.h" -#include "gui.h" - -static const int PipelineDepth = 4; - -//--------------------------------------------------------- -// EffectRack -//--------------------------------------------------------- - -EffectRack::EffectRack(QWidget* parent, AudioTrack* t, bool flag) - : QListWidget(parent) - { - setUniformItemSizes(true); - setAlternatingRowColors(true); - prefader = flag; - setAttribute(Qt::WA_DeleteOnClose, true); - verticalScrollBar()->setStyle(smallStyle); - - track = t; -// setFont(config.fonts[1]); - - setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - - setSelectionMode(QAbstractItemView::SingleSelection); - songChanged(SC_RACK); // force update - connect(this, SIGNAL(itemDoubleClicked(QListWidgetItem*)), - this, SLOT(doubleClicked(QListWidgetItem*))); - connect(song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); - setToolTip(tr("effect rack")); - setAcceptDrops(true); - } - -//--------------------------------------------------------- -// sizeHint -//--------------------------------------------------------- - -QSize EffectRack::sizeHint() const - { - QFontMetrics fm(font()); - int h = fm.lineSpacing() * PipelineDepth + 1; - return QSize(STRIP_WIDTH, h); - } - -//--------------------------------------------------------- -// songChanged -//--------------------------------------------------------- - -void EffectRack::songChanged(int typ) - { - if (!(typ & (SC_ROUTE | SC_RACK))) - return; - - clear(); - Pipeline* pipe = prefader ? track->prePipe() : track->postPipe(); - foreach (PluginI* plugin, *pipe) { - QListWidgetItem* item = new QListWidgetItem(this); - item->setText(plugin->name()); - // tooltip should only be set if name does not fit - // (is elided) - item->setToolTip(plugin->name()); - item->setBackgroundColor(plugin->on() ? Qt::white : Qt::gray); - } - } - -//--------------------------------------------------------- -// menuRequested -//--------------------------------------------------------- - -void EffectRack::contextMenuEvent(QContextMenuEvent* ev) - { - QPoint pt(ev->pos()); - QListWidgetItem* item = itemAt(pt); - - int idx = -1; - QString name; - Pipeline* pipe = prefader ? track->prePipe() : track->postPipe(); - - QMenu* menu = new QMenu; - QAction* upAction = menu->addAction(QIcon(*upIcon), tr("move up")); - QAction* downAction = menu->addAction(QIcon(*downIcon), tr("move down")); - QAction* removeAction = menu->addAction(tr("remove")); - menu->addSeparator(); - QAction* bypassAction = menu->addAction(tr("bypass")); - QAction* showAction = menu->addAction(tr("show gui")); - QAction* showCustomAction = menu->addAction(tr("show native gui")); - menu->addSeparator(); - QAction* newAction = menu->addAction(tr("New Plugin")); - QAction* auxAction = menu->addAction(tr("New Aux Send")); - - bypassAction->setCheckable(true); - showAction->setCheckable(true); - showCustomAction->setCheckable(true); - - if (!item) { - upAction->setEnabled(false); - downAction->setEnabled(false); - removeAction->setEnabled(false); - bypassAction->setEnabled(false); - showAction->setEnabled(false); - showCustomAction->setEnabled(false); - } - else { - idx = row(item); - upAction->setEnabled(idx != 0); - downAction->setEnabled(idx < pipe->size()-1); - idx = item->type(); - showCustomAction->setEnabled(pipe->hasNativeGui(idx)); - bypassAction->setEnabled(true); - showAction->setEnabled(true); - - bypassAction->setChecked(!pipe->isOn(idx)); - showAction->setChecked(pipe->guiVisible(idx)); - showCustomAction->setChecked(pipe->nativeGuiVisible(idx)); - } - if (track->type() != Track::WAVE && track->type() != Track::AUDIO_INPUT) - auxAction->setEnabled(false); - - QAction* sel = menu->exec(mapToGlobal(pt), newAction); - delete menu; - if (sel == 0) - return; - - if (sel == newAction) { - selectNew(); - return; - } - if (sel == removeAction) { - audio->msgAddPlugin(track, idx, 0, prefader); - } - else if (sel == bypassAction) { - bool flag = !pipe->isOn(idx); - pipe->setOn(idx, flag); - } - else if (sel == showAction) { - bool flag = !pipe->guiVisible(idx); - pipe->showGui(idx, flag); - } - else if (sel == showCustomAction) { - bool flag = !pipe->nativeGuiVisible(idx); - pipe->showNativeGui(idx, flag); - } - else if (sel == upAction) { - if (idx > 0) { - setCurrentRow(idx-1); - pipe->move(idx, true); - } - } - else if (sel == downAction) { - if (idx < (PipelineDepth-1)) { - setCurrentRow(idx+1); - pipe->move(idx, false); - } - } - else if (sel == auxAction) - addPlugin(auxPlugin); - song->update(SC_RACK); - } - -//--------------------------------------------------------- -// doubleClicked -// toggle gui and open requester if needed. -//--------------------------------------------------------- - -void EffectRack::doubleClicked(QListWidgetItem* it) - { - if (track == 0) - return; - int idx = row(it); - Pipeline* pipe = prefader ? track->prePipe() : track->postPipe(); - bool flag = !pipe->guiVisible(idx); - pipe->showGui(idx, flag); - } - -//--------------------------------------------------------- -// startDrag -//--------------------------------------------------------- - -void EffectRack::startDrag(int idx) - { - QString buffer; - AL::Xml xml(NULL); - xml.setString(&buffer); - Pipeline* pipe = prefader ? track->prePipe() : track->postPipe(); - if (pipe) { - if ((*pipe)[idx] != NULL) { - PluginI *plug = (*pipe)[idx]; - xml.header(); - xml.stag("muse version=\"1.0\""); - // header info - plug->writeConfiguration1(xml, prefader); // wC1 does not append endtag - // parameters - int noParams = plug->plugin()->parameter(); - for (int i=0;igetParameterName(i)); - fval.setNum(plug->param(i)); // wierd stuff to avoid localization - QString str=""; - xml.put(str.toLatin1().data()); - printf("%s\n",str.toLatin1().data()); - } - xml.etag("plugin"); - - xml.etag("muse"); - } - else { - //printf("no plugin!\n"); - return; - } - } - else { - //printf("no pipe!\n"); - return; - } - //printf("and i wish you were here: %s\n", xml.readAll().toLatin1().data()); - QByteArray xmldump = xml.readAll().toLatin1(); - //printf("xmldump=%s\n",xmldump.data()); - QDrag *drag = new QDrag(this); - QMimeData *mime = new QMimeData(); - mime->setData("text/x-muse-plugin", xmldump); - drag->setMimeData(mime); -/* Qt::DropAction dropAction =*/ drag->start(); - } - -//--------------------------------------------------------- -// startDrag -//--------------------------------------------------------- - -void EffectRack::dropEvent(QDropEvent *event) - { - // printf("drop!\n"); - QString text; - QListWidgetItem* i = itemAt( (event->pos()) ); - int idx = -1; - if (i) - idx = row(i); - - Pipeline* pipe = prefader ? track->prePipe() : track->postPipe(); - if (pipe) { - if (i) { - if(!QMessageBox::question(this, tr("Replace effect"),tr("Do you really want to replace the effect %1?").arg(pipe->name(idx)), - tr("&Yes"), tr("&No"), - QString::null, 0, 1 )) - { - audio->msgAddPlugin(track, idx, 0, prefader); - song->update(SC_RACK); - } - else { - printf("nothing here\n"); - return; - } - } - if(event->mimeData()->hasText()) - { - //printf("has text\n"); - text = event->mimeData()->text().trimmed(); - if (QString(text).endsWith(".pre")) - { - QUrl url(text); - QString newPath = url.path(); - - QFile xmlfile(newPath); - xmlfile.open(QIODevice::ReadOnly); - QDomDocument doc; - doc.setContent(&xmlfile); - QDomNode node = doc.documentElement().firstChild(); - initPlugin(node, idx); - } - } - else if (event->mimeData()->hasFormat("text/x-muse-plugin")) - { - QByteArray outxml = event->mimeData()->data("text/x-muse-plugin"); - //printf("DATA:%s\n",outxml.data()); - QDomDocument doc; - doc.setContent(outxml); - QDomNode node = doc.documentElement().firstChild(); - - initPlugin(node, idx); - } - } - } - -//--------------------------------------------------------- -// dragEnterEvent -//--------------------------------------------------------- -void EffectRack::dragEnterEvent(QDragEnterEvent *event) - { - //printf("dragEnterEvent\n"); - //if (event->mimeData()->hasFormat("text/x-muse-plugin")) - event->acceptProposedAction(); - } - -//--------------------------------------------------------- -// dragMoveEvent -//--------------------------------------------------------- -void EffectRack::dragMoveEvent(QDragMoveEvent *event) - { - //printf("dragMoveEvent\n"); - //if (event->mimeData()->hasFormat("text/x-muse-plugin")) - event->acceptProposedAction(); - } - -//--------------------------------------------------------- -// contentsMousePressEvent -//--------------------------------------------------------- -void EffectRack::mousePressEvent(QMouseEvent *event) - { - //printf("mousePressEvent\n"); - if(event->button() & Qt::LeftButton) { - dragPos = event->pos(); - } - QListWidget::mousePressEvent(event); - } - -//--------------------------------------------------------- -// contentsMouseMoveEvent -//--------------------------------------------------------- -void EffectRack::mouseMoveEvent(QMouseEvent *event) - { - if (event->buttons() & Qt::LeftButton) { - int distance = (dragPos-event->pos()).manhattanLength(); - if (distance > QApplication::startDragDistance()) { - QListWidgetItem *i = itemAt( event->pos() ); - int idx = row(i); - startDrag(idx); - } - } - QListWidget::mouseMoveEvent(event); - } - - -//--------------------------------------------------------- -// initPlugin -//--------------------------------------------------------- - -void EffectRack::initPlugin(QDomNode &node, int idx) - { - QDomElement e = node.toElement(); - //QString version = e.attribute("version"); - QString file = e.attribute("file"); - QString label = e.attribute("label"); - - //printf("version=%s file=%s label=%s channel=%d\n",version.toLatin1().data(),file.toLatin1().data(), label.toLatin1().data(), channel); - - //Plugin* plugin = PluginDialog::getPlugin(this); - Plugin* plugin = plugins.find(file, label); - if (plugin) { - PluginI* plugi = new PluginI(track); - if (plugi->initPluginInstance(plugin, track->channels())) { - printf("cannot instantiate plugin <%s>\n", - plugin->name().toLatin1().data()); - delete plugi; - } - else { - audio->msgAddPlugin(track, idx, plugi, prefader); - song->update(SC_RACK); - int i = 0; - for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) { - QDomElement e = n.toElement(); - if (e.nodeName() == "control") { - //QString name = e.attribute("name"); // currently this value is just thrown. - QString value = e.attribute("val"); - QLocale::setDefault(QLocale::C); - double val = value.toFloat(); - CVal cval; - cval.f = val; - song->setControllerVal(plugi->track(), plugi->controller(i), cval); - i++; - } - } - } - } - } - -//--------------------------------------------------------- -// mouseDoubleClickEvent -//--------------------------------------------------------- - -void EffectRack::mouseDoubleClickEvent(QMouseEvent* event) - { - QListWidgetItem* it = itemAt(event->pos()); - if (it || (track == 0)) { - QListWidget::mouseDoubleClickEvent(event); - return; - } - selectNew(); - } - -//--------------------------------------------------------- -// selectNew -//--------------------------------------------------------- - -void EffectRack::selectNew() - { - Plugin* plugin = PluginDialog::getPlugin(this); - addPlugin(plugin); - song->update(SC_RACK); - } - -//--------------------------------------------------------- -// addPlugin -//--------------------------------------------------------- - -void EffectRack::addPlugin(Plugin* plugin) - { - if (plugin == 0) - return; - PluginI* plugi = new PluginI(track); - if (plugi->initPluginInstance(plugin, track->channels())) { - printf("cannot instantiate plugin <%s>\n", - plugin->name().toLatin1().data()); - delete plugi; - } - else - audio->msgAddPlugin(track, -1, plugi, prefader); - } - diff --git a/muse/muse/rack.h b/muse/muse/rack.h deleted file mode 100644 index c468d8b9..00000000 --- a/muse/muse/rack.h +++ /dev/null @@ -1,66 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __RACK_H__ -#define __RACK_H__ - -#include - -class AudioTrack; -class Plugin; - -//--------------------------------------------------------- -// EffectRack -//--------------------------------------------------------- - -class EffectRack : public QListWidget { - Q_OBJECT - - bool prefader; - AudioTrack* track; - - QPoint dragPos; - - virtual void contextMenuEvent(QContextMenuEvent*); - virtual void mouseDoubleClickEvent(QMouseEvent*); - void selectNew(); - - void startDrag(int idx); - void initPlugin(QDomNode &node, int idx); - void addPlugin(Plugin* plugin); - - private slots: - void doubleClicked(QListWidgetItem*); - void songChanged(int); - - protected: - void dropEvent(QDropEvent *event); - void dragEnterEvent(QDragEnterEvent *event); - void mousePressEvent(QMouseEvent *event); - void mouseMoveEvent(QMouseEvent *event); - void dragMoveEvent(QDragMoveEvent *event); - - public: - EffectRack(QWidget*, AudioTrack*, bool); - QSize sizeHint() const; - }; - -#endif - diff --git a/muse/muse/revision.cpp b/muse/muse/revision.cpp deleted file mode 100644 index a1a32dca..00000000 --- a/muse/muse/revision.cpp +++ /dev/null @@ -1,27 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2008 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - - -int revision = - -#include "revision.h" - -; - diff --git a/muse/muse/revision.h b/muse/muse/revision.h deleted file mode 100644 index 51b40081..00000000 --- a/muse/muse/revision.h +++ /dev/null @@ -1 +0,0 @@ -345 diff --git a/muse/muse/route.cpp b/muse/muse/route.cpp deleted file mode 100644 index a529eb9c..00000000 --- a/muse/muse/route.cpp +++ /dev/null @@ -1,417 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "song.h" -#include "route.h" -#include "audio.h" -#include "track.h" -#include "synth.h" -#include "audiodev.h" -#include "al/xml.h" -#include "auxplugin.h" - -//--------------------------------------------------------- -// RouteNode -//--------------------------------------------------------- - -RouteNode::RouteNode() - { - track = 0; - channel = -1; - type = TRACK; - } - -RouteNode::RouteNode(Port p, int ch, RouteNodeType t) - { - port = p; - channel = ch; - type = t; - } - -RouteNode::RouteNode(Port p, RouteNodeType t) - { - port = p; - channel = -1; - type = t; - } - -RouteNode::RouteNode(Track* tr) - { - track = tr; - channel = -1; - type = TRACK; - } - -RouteNode::RouteNode(AuxPluginIF* p) - { - plugin = p; - channel = -1; - type = AUXPLUGIN; - } - -RouteNode::RouteNode(Track* tr, int ch, RouteNodeType t) - { - track = tr; - channel = ch; - type = t; - } - -//--------------------------------------------------------- -// addRoute -// return false, if route invalid or cannot be found -//--------------------------------------------------------- - -bool addRoute(const Route& r) - { -// printf("addRoute %s.%d:<%s> %s.%d:<%s>\n", -// r.src.tname(), r.src.channel, r.src.name().toLatin1().data(), -// r.dst.tname(), r.dst.channel, r.dst.name().toLatin1().data()); - - if (r.src.type == RouteNode::AUDIOPORT || r.src.type == RouteNode::JACKMIDIPORT) { - if (r.dst.type != RouteNode::TRACK) { - fprintf(stderr, "addRoute: bad route 1\n"); - return false; - } - if (r.dst.track->type() != Track::AUDIO_INPUT && r.dst.track->type() != Track::MIDI_IN) { - fprintf(stderr, "addRoute: bad route 2\n"); - return false; - } - RouteList* inRoutes = r.dst.track->inRoutes(); - if (inRoutes->indexOf(r) != -1) { - printf(" route already there 1\n"); - return true; - } - inRoutes->push_back(r); - } - else if (r.dst.type == RouteNode::AUDIOPORT || r.dst.type == RouteNode::JACKMIDIPORT) { - if (r.src.type != RouteNode::TRACK) { - fprintf(stderr, "addRoute: bad route 3\n"); - return false; - } - if (r.src.track->type() != Track::AUDIO_OUTPUT && r.src.track->type() != Track::MIDI_OUT) { - fprintf(stderr, "addRoute: bad route 4, tracktype %s\n", r.src.track->cname().toLatin1().data()); - return false; - } - RouteList* outRoutes = r.src.track->outRoutes(); - if (outRoutes->indexOf(r) != -1) { - printf(" route already there 2\n"); - return true; - } - outRoutes->push_back(r); - } - else if (r.src.type == RouteNode::AUXPLUGIN) { - RouteList* inRoutes = r.dst.track->inRoutes(); - inRoutes->insert(inRoutes->begin(), r); - } - else { - if (r.src.track->outRoutes()->indexOf(r) != -1) { - printf(" route already there 3\n"); - return true; - } - r.src.track->outRoutes()->push_back(r); - r.dst.track->inRoutes()->push_back(r); - } - return true; - } - -//--------------------------------------------------------- -// removeRoute -//--------------------------------------------------------- - -void removeRoute(const Route& r) - { -// printf("removeRoute %s.%d:<%s> %s.%d:<%s>\n", -// r.src.tname(), r.src.channel, r.src.name().toLatin1().data(), -// r.dst.tname(), r.dst.channel, r.dst.name().toLatin1().data()); - if (r.src.type == RouteNode::AUDIOPORT || r.src.type == RouteNode::JACKMIDIPORT) { - if (r.dst.type != RouteNode::TRACK) { - fprintf(stderr, "removeRoute: bad route 1\n"); - goto error; - } - if (r.dst.track->type() != Track::AUDIO_INPUT - && r.dst.track->type() != Track::AUDIO_SOFTSYNTH - && r.dst.track->type() != Track::MIDI_IN) { - fprintf(stderr, "removeRoute: bad route 2\n"); - goto error; - } - RouteList* inRoutes = r.dst.track->inRoutes(); - iRoute i; - for (i = inRoutes->begin(); i != inRoutes->end(); ++i) { - if (*i == r) { - inRoutes->erase(i); - break; - } - } - } - else if (r.dst.type == RouteNode::AUDIOPORT || r.dst.type == RouteNode::JACKMIDIPORT) { - if (r.src.type != RouteNode::TRACK) { - fprintf(stderr, "removeRoute: bad route 3\n"); - goto error; - } - if (r.src.track->type() != Track::AUDIO_OUTPUT && r.src.track->type() != Track::MIDI_OUT) { - fprintf(stderr, "removeRoute: bad route 4\n"); - goto error; - } - RouteList* outRoutes = r.src.track->outRoutes(); - iRoute i; - for (i = outRoutes->begin(); i != outRoutes->end(); ++i) { - if (*i == r) { - outRoutes->erase(i); - break; - } - } - } - else if (r.src.type == RouteNode::AUXPLUGIN) { - if (r.dst.type != RouteNode::TRACK) { - fprintf(stderr, "removeRoute: bad route 5\n"); - goto error; - } - RouteList* inRoutes = r.dst.track->inRoutes(); - for (iRoute i = inRoutes->begin(); i != inRoutes->end(); ++i) { - if (*i == r) { - inRoutes->erase(i); - break; - } - } - } - else { - RouteList* outRoutes = r.src.track->outRoutes(); - for (iRoute i = outRoutes->begin(); i != outRoutes->end(); ++i) { - if (*i == r) { - outRoutes->erase(i); - break; - } - } - RouteList* inRoutes = r.dst.track->inRoutes(); - for (iRoute i = inRoutes->begin(); i != inRoutes->end(); ++i) { - if (*i == r) { - inRoutes->erase(i); - break; - } - } - } - return; -error: - printf("removeRoute %s.%d:<%s> %s.%d:<%s>\n", - r.src.tname(), r.src.channel, r.src.name().toLatin1().data(), - r.dst.tname(), r.dst.channel, r.dst.name().toLatin1().data()); - abort(); - } - -//--------------------------------------------------------- -// track2name -// create string name representation for audio node -//--------------------------------------------------------- - -static QString track2name(const Track* n) - { - return n ? n->name() : "None"; - } - -//--------------------------------------------------------- -// name -// create string name representation for audio node -//--------------------------------------------------------- - -QString RouteNode::name() const - { - switch (type) { - case TRACK: - return track2name(track); - case AUDIOPORT: - case JACKMIDIPORT: - if (port.isZero()) - return QString("0"); - return audioDriver->portName(port); - case AUXPLUGIN: - return plugin->pluginInstance()->name(); - } - return QString("?"); - } - -//--------------------------------------------------------- -// read -//--------------------------------------------------------- - -void Song::readRoute(QDomNode n) - { - RouteNode s, d; - for (QDomNode node = n.firstChild(); !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - if (e.tagName() == "src") - s.read(node); - else if (e.tagName() == "dst") - d.read(node); - else - printf("MusE:readRoute: unknown tag %s\n", e.tagName().toLatin1().data()); - } - if (!s.isValid()) { // source port not found? - printf("Song::readRoute(): invalid source port: %s.%d:<%s> - %s.%d:<%s>\n", - s.tname(), s.channel, s.name().toLatin1().data(), - d.tname(), d.channel, d.name().toLatin1().data()); - return; - } - if (!d.isValid()) { // destination port not found? - printf("Song::readRoute(): invalid destination port: %s.%d:<%s> - %s.%d:<%s>\n", - s.tname(), s.channel, s.name().toLatin1().data(), - d.tname(), d.channel, d.name().toLatin1().data()); - return; - } - Route r(s, d); - r.disconnected = true; - addRoute(r); - } - -//--------------------------------------------------------- -// dump -//--------------------------------------------------------- - -void RouteNode::dump() const - { - printf("RouteNode %p dump: <%s> channel %d, type %s\n", - track, name().toLatin1().data(), channel, tname()); - } - -//--------------------------------------------------------- -// operator== -//--------------------------------------------------------- - -bool RouteNode::operator==(const RouteNode& a) const - { - if (type != a.type) - return false; - switch(type) { - case TRACK: - return (channel == a.channel) && (track == a.track); - case JACKMIDIPORT: - case AUDIOPORT: - return port == a.port; - case AUXPLUGIN: - return plugin == a.plugin; - } - return false; - } - -//--------------------------------------------------------- -// tname -//--------------------------------------------------------- - -const char* RouteNode::tname(RouteNodeType t) - { - static const char* names[] = { - "TRACK", "AUDIOPORT", "JACKMIDIPORT", "AUX" - }; - if (t > (int)(sizeof(names)/sizeof(*names))) - return "???"; - return names[t]; - } - -const char* RouteNode::tname() const - { - return tname(type); - } - -//--------------------------------------------------------- -// write -//--------------------------------------------------------- - -void RouteNode::write(Xml& xml, const char* label) const - { - if (channel != -1) - xml.tagE(QString("%1 type=\"%2\" channel=\"%3\" name=\"%4\"") - .arg(label).arg(tname()).arg(channel + 1).arg(name())); - else - xml.tagE(QString("%1 type=\"%2\" name=\"%3\"") - .arg(label).arg(tname()).arg(name())); - } - -//--------------------------------------------------------- -// read -//--------------------------------------------------------- - -void RouteNode::read(QDomNode node) - { - QDomElement e = node.toElement(); - channel = e.attribute("channel","0").toInt() - 1; - QString s = e.attribute("name"); - QString st = e.attribute("type", "TRACK"); - - if (st == "TRACK") { - type = RouteNode::TRACK; - track = 0; - TrackList* tl = song->tracks(); - for (iTrack i = tl->begin(); i != tl->end(); ++i) { - Track* t = *i; - if (t->name() == s) { - track = t; - break; - } - } - if (track == 0) - printf("Route::read(): track <%s> not found\n", s.toLatin1().data()); - } - else if (st == "AUDIOPORT") { - type = RouteNode::AUDIOPORT; - port = audioDriver->findPort(s); - if (port.isZero()) - printf("Route::read(): audioport <%s> not found\n", s.toLatin1().data()); - } - else if (st == "JACKMIDIPORT") { - type = RouteNode::JACKMIDIPORT; - port = audioDriver->findPort(s); - if (port.isZero()) - printf("Route::read(): jack midiport <%s> not found\n", s.toLatin1().data()); - } - else if (st == "AUX") { - type = RouteNode::AUXPLUGIN; - plugin = 0; - TrackList* tl = song->tracks(); - for (iTrack i = tl->begin(); i != tl->end(); ++i) { - if ((*i)->type() == Track::WAVE || (*i)->type() == Track::AUDIO_INPUT) { - AudioTrack* t = (AudioTrack*)*i; - QList pl = t->preAux(); - foreach(AuxPluginIF* p, pl) { - if (p->pluginInstance()->name() == s) { - plugin = p; - break; - } - } - if (plugin) - break; - pl = t->postAux(); - foreach(AuxPluginIF* p, pl) { - if (p->pluginInstance()->name() == s) { - plugin = p; - break; - } - } - if (plugin) - break; - } - } - if (plugin == 0) - printf("Route::read(): plugin <%s> not found\n", s.toLatin1().data()); - } - else { - printf("Route::read(): unknown type <%s>\n", st.toLatin1().data()); - type = RouteNode::TRACK; - } - } - diff --git a/muse/muse/route.h b/muse/muse/route.h deleted file mode 100644 index 386ea636..00000000 --- a/muse/muse/route.h +++ /dev/null @@ -1,108 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __ROUTE_H__ -#define __ROUTE_H__ - -class Track; -class AuxPluginIF; - -namespace AL { - class Xml; - }; -using AL::Xml; - -#include "driver.h" - -//--------------------------------------------------------- -// RouteNode -// this describes one endpoint of a route -// Track -// Track/Channel -// AuxPlugin -// Port -//--------------------------------------------------------- - -struct RouteNode { - enum RouteNodeType { - TRACK, AUDIOPORT, JACKMIDIPORT, AUXPLUGIN - }; - - Port port; - union { - Track* track; - AuxPluginIF* plugin; - }; - int channel; - RouteNodeType type; - - RouteNode(); - RouteNode(Port, int, RouteNodeType); - RouteNode(Port, RouteNodeType); - RouteNode(Track*); - RouteNode(Track*, int, RouteNodeType t = TRACK); - RouteNode(AuxPluginIF*); - - bool isPortType() const { - return type==AUDIOPORT || type == JACKMIDIPORT; - } - bool isValid() const { - return (isPortType() && !port.isZero()) - || ((type == TRACK) && track) - || ((type == AUXPLUGIN) && plugin); - } - QString name() const; - void read(QDomNode node); - void write(Xml&, const char* name) const; - - bool operator==(const RouteNode& a) const; - void dump() const; - const char* tname() const; - static const char* tname(RouteNodeType); - }; - -//--------------------------------------------------------- -// Route -//--------------------------------------------------------- - -struct Route { - RouteNode src; - RouteNode dst; - bool disconnected; // if true, do not remove route in graphChanged() - // or removeConnection() - - Route() { disconnected = false;} - Route(const RouteNode& s, const RouteNode& d) : src(s), dst(d) { disconnected = false;} - bool operator==(const Route& a) const { - return (src==a.src) && (dst==a.dst); - } - }; - -Q_DECLARE_METATYPE(struct Route); - -typedef QList RouteList; -typedef RouteList::iterator iRoute; -typedef RouteList::const_iterator ciRoute; - -extern bool addRoute(const Route&); -extern void removeRoute(const Route&); - -#endif - diff --git a/muse/muse/routedialog.cpp b/muse/muse/routedialog.cpp deleted file mode 100644 index a2f3b584..00000000 --- a/muse/muse/routedialog.cpp +++ /dev/null @@ -1,196 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "routedialog.h" -#include "track.h" -#include "song.h" -#include "audio.h" -#include "jackaudio.h" - -//--------------------------------------------------------- -// RouteDialog -//--------------------------------------------------------- - -RouteDialog::RouteDialog(QWidget* parent) - : QDialog(parent) - { - setupUi(this); - connect(routeList, SIGNAL(selectionChanged()), SLOT(routeSelectionChanged())); - connect(newSrcList, SIGNAL(selectionChanged()), SLOT(srcSelectionChanged())); - connect(newDstList, SIGNAL(selectionChanged()), SLOT(dstSelectionChanged())); - connect(removeButton, SIGNAL(clicked()), SLOT(removeRoute())); - connect(connectButton, SIGNAL(clicked()), SLOT(addRoute())); - connect(song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); - routingChanged(); - } - -//--------------------------------------------------------- -// routingChanged -//--------------------------------------------------------- - -void RouteDialog::routingChanged() - { - //--------------------------------------------------- - // populate lists - //--------------------------------------------------- - - routeList->clear(); - newSrcList->clear(); - newDstList->clear(); - -#if 0 //TODO3 - TrackList* tl = song->tracks(); - for (ciTrack i = tl->begin(); i != tl->end(); ++i) { - if ((*i)->isMidiTrack()) - continue; - Track* track = *i; - if (track->type() == Track::AUDIO_INPUT) { - for (int channel = 0; channel < track->channels(); ++channel) - newDstList->insertItem(Route(track, channel).name()); - const RouteList* rl = track->inRoutes(); - for (ciRoute r = rl->begin(); r != rl->end(); ++r) { - Route dst(track->name(), r->channel, Route::AUDIOPORT); - new QListWidgetItem(routeList, r->name(), dst.name()); - } - } - else - newDstList->insertItem(Route(track, -1).name()); - if (track->type() == Track::AUDIO_OUTPUT) { - for (int channel = 0; channel < track->channels(); ++channel) { - Route r(track, channel); - newSrcList->insertItem(r.name()); - } - } - else - newSrcList->insertItem(Route(track, -1).name()); - - const RouteList* rl = track->outRoutes(); - for (ciRoute r = rl->begin(); r != rl->end(); ++r) { - QString src(track->name()); - if (track->type() == Track::AUDIO_OUTPUT) { - Route s(src, r->channel, Route::AUDIOPORT); - src = s.name(); - } - new QListWidgetItem(routeList, src, r->name()); - } - } - - std::list sl = audioDriver->outputPorts(); - for (std::list::iterator i = sl.begin(); i != sl.end(); ++i) - newSrcList->insertItem(*i); - sl = audioDriver->inputPorts(); - for (std::list::iterator i = sl.begin(); i != sl.end(); ++i) - newDstList->insertItem(*i); -#endif - routeSelectionChanged(); // init remove button - srcSelectionChanged(); // init select button - } - -//--------------------------------------------------------- -// songChanged -//--------------------------------------------------------- - -void RouteDialog::songChanged(int v) - { - if (v & (SC_TRACK_INSERTED | SC_TRACK_REMOVED | SC_ROUTE)) { - routingChanged(); - } - } - -//--------------------------------------------------------- -// routeSelectionChanged -//--------------------------------------------------------- - -void RouteDialog::routeSelectionChanged() - { -//TD QListWidgetItem* item = routeList->selectedItem(); -// removeButton->setEnabled(item != 0); - } - -//--------------------------------------------------------- -// removeRoute -//--------------------------------------------------------- - -void RouteDialog::removeRoute() - { -#if 0 //TD - QListWidgetItem* item = routeList->selectedItem(); - if (item == 0) - return; - audio->msgRemoveRoute(Route(item->text(0), -1, Route::TRACK), Route(item->text(1), -1, Route::AUDIOPORT)); - delete item; -#endif - } - -//--------------------------------------------------------- -// addRoute -//--------------------------------------------------------- - -void RouteDialog::addRoute() - { -#if 0 //TD - QListWidgetItem* srcItem = newSrcList->selectedItem(); - QListWidgetItem* dstItem = newDstList->selectedItem(); - if (srcItem == 0 || dstItem == 0) - return; - audio->msgAddRoute(Route(srcItem->text(), -1, Route::TRACK), Route(dstItem->text(), -1, Route::AUDIOPORT)); - new QListWidgetItem(routeList, srcItem->text(), dstItem->text()); -#endif - } - -//--------------------------------------------------------- -// srcSelectionChanged -//--------------------------------------------------------- - -void RouteDialog::srcSelectionChanged() - { -#if 0 //TD - QListWidgetItem* srcItem = newSrcList->selectedItem(); - QListWidgetItem* dstItem = newDstList->selectedItem(); - connectButton->setEnabled((srcItem != 0) - && (dstItem != 0) - && checkRoute(srcItem->text(), dstItem->text())); -#endif - } - -//--------------------------------------------------------- -// dstSelectionChanged -//--------------------------------------------------------- - -void RouteDialog::dstSelectionChanged() - { -#if 0 //TD - QListWidgetItem* dstItem = newDstList->selectedItem(); - QListWidgetItem* srcItem = newSrcList->selectedItem(); - connectButton->setEnabled((srcItem != 0) - && (dstItem != 0) - && checkRoute(srcItem->text(), dstItem->text())); -#endif - } - -//--------------------------------------------------------- -// closeEvent -//--------------------------------------------------------- - -void RouteDialog::closeEvent(QCloseEvent* e) - { - emit closed(); - e->accept(); - } diff --git a/muse/muse/routedialog.h b/muse/muse/routedialog.h deleted file mode 100644 index 2bcbf471..00000000 --- a/muse/muse/routedialog.h +++ /dev/null @@ -1,53 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __ROUTEDIALOG_H__ -#define __ROUTEDIALOG_H__ - -#include "ui_routedialog.h" - -//--------------------------------------------------------- -// RouteDialog -//--------------------------------------------------------- - -class RouteDialog : public QDialog, public Ui::RouteDialogBase { - Q_OBJECT - - virtual void closeEvent(QCloseEvent*); - void routingChanged(); - - private slots: - void routeSelectionChanged(); - void removeRoute(); - void addRoute(); - void srcSelectionChanged(); - void dstSelectionChanged(); - void songChanged(int); - - signals: - void closed(); - - public: - RouteDialog(QWidget* parent); - }; - - -#endif - diff --git a/muse/muse/routedialog.ui b/muse/muse/routedialog.ui deleted file mode 100644 index be34c451..00000000 --- a/muse/muse/routedialog.ui +++ /dev/null @@ -1,170 +0,0 @@ - - - - - RouteDialogBase - - - - 0 - 0 - 316 - 383 - - - - - 5 - 7 - 0 - 0 - - - - MusE: Routing - - - - 4 - - - 4 - - - - - Add Route - - - - 4 - - - 4 - - - - - 0 - - - 6 - - - - - - 7 - 7 - 0 - 0 - - - - Source: - - - - 2 - - - 0 - - - - - - - - - - - - 7 - 7 - 0 - 0 - - - - Destination: - - - - 2 - - - 0 - - - - - - - - - - - - - - 4 - 1 - 0 - 0 - - - - connect source to destination - - - Connect - - - - - - - - - - Current Routes - - - - 4 - - - 4 - - - - - - - - - 4 - 1 - 0 - 0 - - - - remove selected route - - - Remove - - - - - - - - - - qPixmapFromMimeSource - - - diff --git a/muse/muse/selectfilter.h b/muse/muse/selectfilter.h deleted file mode 100644 index a28e6947..00000000 --- a/muse/muse/selectfilter.h +++ /dev/null @@ -1,51 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __SELECTFILTER_H__ -#define __SELECTFILTER_H__ - -//--------------------------------------------------------- -// SelectFilter -//--------------------------------------------------------- - -class SelectFilter :public QObject - { - QWidget* w; - Track* t; - - protected: - bool eventFilter(QObject*, QEvent* ev) - { - if (ev->type() == QEvent::MouseButtonPress) { - w->setFocus(); - song->selectTrack(t); - } - return false; - } - public: - SelectFilter(QObject* parent, QWidget* widget, Track* track) - : QObject(parent) { - w = widget; - t = track; - } - }; - -#endif - diff --git a/muse/muse/seqmsg.cpp b/muse/muse/seqmsg.cpp deleted file mode 100644 index cbd0d0dd..00000000 --- a/muse/muse/seqmsg.cpp +++ /dev/null @@ -1,621 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "song.h" -#include "instruments/minstrument.h" -#include "muse.h" -#include "mixer.h" -#include "al/tempo.h" -#include "al/sig.h" -#include "audio.h" -#include "audiodev.h" -#include "audio.h" -#include "arranger.h" -#include "plugin.h" -#include "midi.h" -#include "midictrl.h" -#include "midiplugin.h" -#include "part.h" -#include "midioutport.h" -#include "midiinport.h" - -//--------------------------------------------------------- -// sendMsg -//--------------------------------------------------------- - -void Audio::sendMsg(AudioMsg* m) - { - if (audioState == AUDIO_RUNNING) { - msg = m; - char c; - int rv = read(fromThreadFdr, &c, 1); - if (rv != 1) - perror("Audio: read pipe failed"); - } - else { - // if audio is not running (during initialization) - // process commands immediatly - msg = m; - processMsg(); - } - } - -//--------------------------------------------------------- -// sendMessage -// send request from gui to sequencer -// wait until request is processed -//--------------------------------------------------------- - -bool Audio::sendMessage(AudioMsg* m, bool doUndo) - { - if (doUndo) - song->startUndo(); - sendMsg(m); - if (doUndo) - song->endUndo(0); // song->endMsgCmd(); - return false; - } - -//--------------------------------------------------------- -// msgRoute -//--------------------------------------------------------- - -extern bool mops; - -void Audio::msgRoute(bool add, Route r) - { - if (add) - msgAddRoute(r); - else - msgRemoveRoute(r); - song->update(SC_ROUTE); - } - -//--------------------------------------------------------- -// msgRemoveRoute -//--------------------------------------------------------- - -void Audio::msgRemoveRoute(Route r) - { - if (r.src.type == RouteNode::AUDIOPORT) { - AudioInput* ai = (AudioInput*)(r.dst.track); - audioDriver->disconnect(r.src.port, ai->jackPort(r.dst.channel)); - } - else if (r.src.type == RouteNode::JACKMIDIPORT) { - audioDriver->disconnect(r.src.port, ((MidiInPort*)r.dst.track)->jackPort()); - } - else if (r.dst.type == RouteNode::AUDIOPORT) { - AudioOutput* ai = (AudioOutput*)(r.src.track); - audioDriver->disconnect(ai->jackPort(r.src.channel), r.dst.port); - } - else if (r.dst.type == RouteNode::JACKMIDIPORT) { - audioDriver->disconnect(((MidiOutPort*)r.src.track)->jackPort(), r.dst.port); - } - msgRemoveRoute1(r); - } - -//--------------------------------------------------------- -// msgRemoveRoute1 -//--------------------------------------------------------- - -void Audio::msgRemoveRoute1(Route r) - { - AudioMsg msg; - msg.id = AUDIO_ROUTEREMOVE; - msg.route = r; - sendMsg(&msg); - } - -//--------------------------------------------------------- -// msgAddRoute -//--------------------------------------------------------- - -void Audio::msgAddRoute(Route r) - { - msgAddRoute1(r); - if (r.src.type == RouteNode::AUDIOPORT) { - AudioInput* ai = (AudioInput*)r.dst.track; - audioDriver->connect(r.src.port, ai->jackPort(r.dst.channel)); - } - else if (r.src.type == RouteNode::JACKMIDIPORT) { - audioDriver->connect(r.src.port, ((MidiInPort*)r.dst.track)->jackPort()); - } - else if (r.dst.type == RouteNode::AUDIOPORT) { - AudioOutput* ao = (AudioOutput*)r.src.track; -printf("msgAddRoute to AUDIPORT %p\n", ao); - audioDriver->connect(ao->jackPort(r.src.channel), r.dst.port); - } - else if (r.dst.type == RouteNode::JACKMIDIPORT) { - audioDriver->connect(((MidiOutPort*)r.src.track)->jackPort(), r.dst.port); - } - } - -//--------------------------------------------------------- -// msgAddRoute1 -//--------------------------------------------------------- - -void Audio::msgAddRoute1(Route r) - { - AudioMsg msg; - msg.id = AUDIO_ROUTEADD; - msg.route = r; - sendMsg(&msg); - } - -//--------------------------------------------------------- -// msgAddMidiPlugin -//--------------------------------------------------------- - -void Audio::msgAddMidiPlugin(MidiTrackBase* track, int idx, MidiPluginI* plugin) - { - AudioMsg msg; - msg.id = AUDIO_ADDMIDIPLUGIN; - msg.track = track; - msg.ival = idx; - msg.mplugin = plugin; - MidiPluginI* oldPlugin = plugin ? 0 : track->plugin(idx); - sendMsg(&msg); - if (oldPlugin) - delete oldPlugin; - } - -//--------------------------------------------------------- -// msgAddPlugin -//--------------------------------------------------------- - -void Audio::msgAddPlugin(AudioTrack* track, int idx, PluginI* plugin, - bool prefader) - { - AudioMsg msg; - msg.id = AUDIO_ADDPLUGIN; - msg.track = track; - msg.ival = idx; - msg.iival = prefader; - msg.plugin = plugin; - sendMsg(&msg); - } - -//--------------------------------------------------------- -// msgSetChannels -//--------------------------------------------------------- - -void Audio::msgSetChannels(AudioTrack* node, int n) - { - if (n == node->channels()) - return; - QString name = node->name(); - int mc = std::max(n, node->channels()); - - if (!name.isEmpty()) { - if (node->type() == Track::AUDIO_INPUT) { - AudioInput* ai = (AudioInput*)node; - for (int i = 0; i < mc; ++i) { - if (i < n && ai->jackPort(i).isZero()) { - char buffer[128]; - snprintf(buffer, 128, "%s-%d", name.toLatin1().data(), i); - ai->setJackPort(audioDriver->registerInPort(QString(buffer), false), i); - } - else if ((i >= n) && ai->jackPort(i).isZero()) { - RouteList* ir = node->inRoutes(); - for (iRoute ii = ir->begin(); ii != ir->end(); ++ii) { - Route r = *ii; - if ((r.src.type == RouteNode::AUDIOPORT) && (r.src.channel == i)) { - msgRemoveRoute(r); - break; - } - } - audioDriver->unregisterPort(ai->jackPort(i)); - ai->setJackPort(Port(), i); - } - } - } - else if (node->type() == Track::AUDIO_OUTPUT) { - AudioOutput* ao = (AudioOutput*)node; - for (int i = 0; i < mc; ++i) { - Port port = ao->jackPort(i); - if (i < n && port.isZero()) { - char buffer[128]; - snprintf(buffer, 128, "%s-%d", name.toLatin1().data(), i); - ao->setJackPort(audioDriver->registerOutPort(QString(buffer), false), i); - } - else if (i >= n && !port.isZero()) { - RouteList* ir = node->outRoutes(); - for (iRoute ii = ir->begin(); ii != ir->end(); ++ii) { - Route r = *ii; - if ((r.src.type == RouteNode::AUDIOPORT) && (r.src.channel == i)) { - msgRemoveRoute(r); - break; - } - } - audioDriver->unregisterPort(ao->jackPort(i)); - ao->setJackPort(Port(), i); - } - } - } - } - AudioMsg msg; - msg.id = AUDIO_SET_CHANNELS; - msg.track = node; - msg.ival = n; - sendMsg(&msg); - } - -//--------------------------------------------------------- -// msgSetSegSize -//--------------------------------------------------------- - -void Audio::msgSetSegSize(int bs, int sr) - { - AudioMsg msg; - msg.id = AUDIO_SET_SEG_SIZE; - msg.ival = bs; - msg.iival = sr; - sendMsg(&msg); - } - -//--------------------------------------------------------- -// msgSeek -//--------------------------------------------------------- - -void Audio::msgSeek(const Pos& pos) - { - audioDriver->seekTransport(pos.frame()); - } - -//--------------------------------------------------------- -// msgUndo -//--------------------------------------------------------- - -void Audio::msgUndo() - { - AudioMsg msg; - msg.id = SEQM_UNDO; - sendMsg(&msg); - } - -//--------------------------------------------------------- -// msgRedo -//--------------------------------------------------------- - -void Audio::msgRedo() - { - AudioMsg msg; - msg.id = SEQM_REDO; - sendMsg(&msg); - } - -//--------------------------------------------------------- -// msgPlay -//--------------------------------------------------------- - -void Audio::msgPlay(bool val) - { - if (val) { - if (audioDriver) - audioDriver->startTransport(); - } - else - if (audioDriver) - audioDriver->stopTransport(); - } - -//--------------------------------------------------------- -// msgRemoveTrack -//--------------------------------------------------------- - -void Audio::msgRemoveTrack(Track* track) - { - AudioMsg msg; - msg.id = SEQM_REMOVE_TRACK; - msg.track = track; - sendMessage(&msg, true); - } - -//--------------------------------------------------------- -// msgRemoveTracks -// remove all selected tracks -//--------------------------------------------------------- - -void Audio::msgRemoveTracks() - { - TrackList tl; - TrackList* tl2 = song->tracks(); - for (iTrack t = tl2->begin(); t != tl2->end(); ++t) { - if ((*t)->selected()) - tl.push_back(*t); - } - for (iTrack t = tl.begin(); t != tl.end(); ++t) { - Track* track = *t; - int idx = song->tracks()->indexOf(track); - song->undoOp(UndoOp::DeleteTrack, idx, track); - song->removeTrack1(track); - msgRemoveTrack(track); - song->removeTrack3(track); - } - } - -//--------------------------------------------------------- -// msgMoveTrack -//--------------------------------------------------------- - -void Audio::msgMoveTrack(Track* src, Track* dst) - { - AudioMsg msg; - msg.id = SEQM_MOVE_TRACK; - msg.p1 = src; - msg.p2 = dst; - sendMessage(&msg, false); - } - -//--------------------------------------------------------- -// msgAddEvent -//--------------------------------------------------------- - -void Audio::msgAddEvent(const Event& event, Part* part, bool doUndoFlag) - { - AudioMsg msg; - msg.id = SEQM_ADD_EVENT; - msg.ev1 = event; - msg.p2 = part; - sendMessage(&msg, doUndoFlag); - } - -//--------------------------------------------------------- -// msgAddEvents -//--------------------------------------------------------- - -void Audio::msgAddEvents(QList* el, Part* part) - { - AudioMsg msg; - msg.id = SEQM_ADD_EVENTS; - msg.el = el; - msg.p2 = part; - sendMessage(&msg, false); - } - -//--------------------------------------------------------- -// msgDeleteEvent -//--------------------------------------------------------- - -void Audio::msgDeleteEvent(const Event& event, Part* part, bool doUndoFlag) - { - AudioMsg msg; - msg.id = SEQM_REMOVE_EVENT; - msg.ev1 = event; - msg.p2 = part; - sendMessage(&msg, doUndoFlag); - } - -//--------------------------------------------------------- -// msgChangeEvent -//--------------------------------------------------------- - -void Audio::msgChangeEvent(const Event& oe, const Event& ne, Part* part, bool doUndoFlag) - { - AudioMsg msg; - msg.id = SEQM_CHANGE_EVENT; - msg.ev1 = oe; - msg.ev2 = ne; - msg.p3 = part; - sendMessage(&msg, doUndoFlag); - } - -//--------------------------------------------------------- -// msgAddTempo -//--------------------------------------------------------- - -void Audio::msgAddTempo(int tick, int tempo, bool doUndoFlag) - { - AudioMsg msg; - msg.id = SEQM_ADD_TEMPO; - msg.a = tick; - msg.b = tempo; - sendMessage(&msg, doUndoFlag); - } - -//--------------------------------------------------------- -// msgSetTempo -//--------------------------------------------------------- - -void Audio::msgSetTempo(int tick, int tempo, bool doUndoFlag) - { - AudioMsg msg; - msg.id = SEQM_SET_TEMPO; - msg.a = tick; - msg.b = tempo; - sendMessage(&msg, doUndoFlag); - } - -//--------------------------------------------------------- -// msgSetGlobalTempo -//--------------------------------------------------------- - -void Audio::msgSetGlobalTempo(int val) - { - AudioMsg msg; - msg.id = SEQM_SET_GLOBAL_TEMPO; - msg.a = val; - sendMessage(&msg, false); - } - -//--------------------------------------------------------- -// msgDeleteTempo -//--------------------------------------------------------- - -void Audio::msgDeleteTempo(int tick, int tempo, bool doUndoFlag) - { - AudioMsg msg; - msg.id = SEQM_REMOVE_TEMPO; - msg.a = tick; - msg.b = tempo; - sendMessage(&msg, doUndoFlag); - } - -//--------------------------------------------------------- -// msgAddSig -//--------------------------------------------------------- - -void Audio::msgAddSig(int tick, const AL::TimeSignature& sig, bool doUndoFlag) - { - AudioMsg msg; - msg.id = SEQM_ADD_SIG; - msg.a = tick; - msg.b = sig.z; - msg.c = sig.n; - sendMessage(&msg, doUndoFlag); - } - -//--------------------------------------------------------- -// msgRemoveSig -//! sends remove tempo signature message -//--------------------------------------------------------- - -void Audio::msgRemoveSig(int tick, int z, int n, bool doUndoFlag) - { - AudioMsg msg; - msg.id = SEQM_REMOVE_SIG; - msg.a = tick; - msg.b = z; - msg.c = n; - sendMessage(&msg, doUndoFlag); - } - -//--------------------------------------------------------- -// msgResetMidiDevices -//--------------------------------------------------------- - -void Audio::msgResetMidiDevices() - { - AudioMsg msg; - msg.id = SEQM_RESET_DEVICES; - sendMessage(&msg, false); - } - -//--------------------------------------------------------- -// msgInitMidiDevices -//--------------------------------------------------------- - -void Audio::msgInitMidiDevices() - { - AudioMsg msg; - msg.id = SEQM_INIT_DEVICES; - sendMessage(&msg, false); - } - -//--------------------------------------------------------- -// panic -//--------------------------------------------------------- - -void Audio::msgPanic() - { - MidiEvent ev1(0, 0, ME_CONTROLLER, CTRL_ALL_SOUNDS_OFF, 0); - MidiEvent ev2(0, 0, ME_CONTROLLER, CTRL_RESET_ALL_CTRL, 0); - - MidiTrackList* cl = song->midis(); - for (iMidiTrack i = cl->begin(); i != cl->end(); ++i) { - (*i)->playMidiEvent(&ev1); - (*i)->playMidiEvent(&ev2); - } - } - -//--------------------------------------------------------- -// localOff -//--------------------------------------------------------- - -void Audio::msgLocalOff() - { - MidiEvent ev1(0, 0, ME_CONTROLLER, CTRL_LOCAL_OFF, 0); - - MidiTrackList* cl = song->midis(); - for (iMidiTrack i = cl->begin(); i != cl->end(); ++i) - (*i)->playMidiEvent(&ev1); - } - -//--------------------------------------------------------- -// msgBounce -// start bounce operation -//--------------------------------------------------------- - -void Audio::msgBounce() - { - _bounce = true; - audioDriver->seekTransport(song->lPos().frame()); - } - -//--------------------------------------------------------- -// msgIdle -//--------------------------------------------------------- - -void Audio::msgIdle(bool on) - { - AudioMsg msg; - msg.id = SEQM_IDLE; - msg.a = on; - sendMessage(&msg, false); - } - -//--------------------------------------------------------- -// msgAddController -// add controller value -//--------------------------------------------------------- - -void Audio::msgAddController(Track* track, int id, unsigned time, CVal val) - { - AudioMsg msg; - msg.id = SEQM_ADD_CTRL; - msg.track = track; - msg.a = id; - msg.time = time; - msg.cval1 = val; - song->startUndo(); - song->undoOp(UndoOp::AddCtrl, track, id, time, val, CVal()); - sendMessage(&msg, false); - song->endUndo(0); - } - -//--------------------------------------------------------- -// msgRemoveController -//--------------------------------------------------------- - -void Audio::msgRemoveController(Track* track, int id, unsigned time) - { - AudioMsg msg; - msg.id = SEQM_REMOVE_CTRL; - msg.track = track; - msg.a = id; - msg.time = time; - song->startUndo(); - CVal a, b; - song->undoOp(UndoOp::RemoveCtrl, track, id, time, a, b); - sendMessage(&msg, false); - song->endUndo(0); - } - -//--------------------------------------------------------- -// msgSetRtc -//--------------------------------------------------------- - -void Audio::msgSetRtc() - { - AudioMsg msg; - msg.id = MS_SET_RTC; - sendMsg(&msg); - } - diff --git a/muse/muse/shortcuts.cpp b/muse/muse/shortcuts.cpp deleted file mode 100644 index 9a0d6a7f..00000000 --- a/muse/muse/shortcuts.cpp +++ /dev/null @@ -1,1169 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Description: -// Definition of shortcuts used in the application -// -// Copyright (C) 2003 Mathias Lundgren -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "shortcuts.h" -#include "widgets/shortcutconfig.h" -#include "al/xml.h" -#include "muse.h" -#include "gui.h" - -//--------------------------------------------------------- -// shortcut_category -// These need to be members of ShortcutConfig, otherwise -// tr() won't play: -//--------------------------------------------------------- - -const shortcut_cg ShortcutConfig::shortcut_category[] = { - { GLOBAL_SHRT, QT_TR_NOOP("Global") }, - { ARRANG_SHRT, QT_TR_NOOP("Arranger") }, - { PROLL_SHRT, QT_TR_NOOP("Pianoroll") }, - { DEDIT_SHRT, QT_TR_NOOP("Drumeditor") }, - { LEDIT_SHRT, QT_TR_NOOP("List editor") }, - { LMEDIT_SHRT, QT_TR_NOOP("List Mastertrack") }, - { WAVE_SHRT, QT_TR_NOOP("Wave editor") }, - { ALL_SHRT , QT_TR_NOOP("All categories") } - }; - -QMap shortcuts; - -Shortcut MuseApplication::sc[] = { - Shortcut( - "start", - QT_TR_NOOP("Transport: Goto Start"), - GLOBAL_SHRT, - 0, - Qt::WindowShortcut, - QT_TR_NOOP("Goto Start"), - QT_TR_NOOP("rewind to start position"), - ":/xpm/start.xpm" - ), - Shortcut( - "toggle_loop", - QT_TR_NOOP("Transport: Toggle Loop section"), - GLOBAL_SHRT, - 0, // QKeySequence(Qt::Key_Slash), - Qt::WindowShortcut, - QT_TR_NOOP("Loop"), - QT_TR_NOOP("loop between left mark and right mark"), - ":/xpm/loop.xpm" - ), - Shortcut( - "play", - QT_TR_NOOP("Transport: Start playback from current location"), - GLOBAL_SHRT, - QKeySequence(Qt::Key_Enter), - Qt::WindowShortcut, - QT_TR_NOOP("Play"), - QT_TR_NOOP("start sequencer play"), - ":/xpm/play.xpm" - ), - Shortcut( - "play_toggle", - QT_TR_NOOP("Transport: Play, Stop"), - GLOBAL_SHRT, - Qt::Key_Space, - Qt::ApplicationShortcut - ), - Shortcut( - "stop", - QT_TR_NOOP("Transport: Stop Playback"), - GLOBAL_SHRT, - Qt::Key_Insert, - Qt::WindowShortcut, - QT_TR_NOOP("Stop"), - QT_TR_NOOP("stop sequencer"), - ":/xpm/stop.xpm" - ), - Shortcut( - "goto_left", - QT_TR_NOOP("Transport: Goto left marker"), - GLOBAL_SHRT, - Qt::Key_End - ), - Shortcut( - "goto_right", - QT_TR_NOOP("Transport: Goto right marker"), - GLOBAL_SHRT, - Qt::Key_PageDown - ), - Shortcut( - "toggle_metro", - QT_TR_NOOP("Transport: Toggle metronome"), - GLOBAL_SHRT, - QKeySequence(Qt::Key_C) - ), - Shortcut( - "toggle_rec", - QT_TR_NOOP("Transport: Toggle Record"), - GLOBAL_SHRT, - Qt::Key_Asterisk, - Qt::WindowShortcut, - QT_TR_NOOP("Record"), - QT_TR_NOOP("to record press record and then play"), - ":/xpm/recordOn.svg", - ":/xpm/recordOff.svg" - ), - Shortcut( - "punchin", - QT_TR_NOOP("Transport: Punch In"), - GLOBAL_SHRT, - 0, - Qt::WindowShortcut, - QT_TR_NOOP("Punchin"), - QT_TR_NOOP("record starts at left mark"), - ":/xpm/punchin.xpm" - ), - Shortcut( - "punchout", - QT_TR_NOOP("Transport: Punch Out"), - GLOBAL_SHRT, - 0, - Qt::WindowShortcut, - QT_TR_NOOP("Punchout"), - QT_TR_NOOP("record stops at right mark"), - ":/xpm/punchout.xpm" - ), - Shortcut( - "rewind", - QT_TR_NOOP("Transport: Rewind"), - GLOBAL_SHRT, - 0, - Qt::WindowShortcut, - QT_TR_NOOP("rewind"), - QT_TR_NOOP("rewind current position"), - ":/xpm/frewind.xpm" - ), - Shortcut( - "forward", - QT_TR_NOOP("Transport: Forward"), - GLOBAL_SHRT, - 0, - Qt::WindowShortcut, - QT_TR_NOOP("forward"), - QT_TR_NOOP("move current position"), - ":/xpm/fforward.xpm" - ), - Shortcut( - "panic", - QT_TR_NOOP("Panic"), - GLOBAL_SHRT, - 0, - Qt::WindowShortcut, - QT_TR_NOOP("Panic"), - QT_TR_NOOP("send note off to all midi channels"), - ":/xpm/panic.xpm" - ), - Shortcut( - "undo", - QT_TR_NOOP("Edit: Undo"), - INVIS_SHRT, - Qt::CTRL + Qt::Key_Z, - Qt::WindowShortcut, - QT_TR_NOOP("undo"), - QT_TR_NOOP("undo last change to song"), - ":/xpm/undo.xpm" - ), - Shortcut( - "redo", - QT_TR_NOOP("Edit: Redo"), - INVIS_SHRT, - Qt::CTRL + Qt::Key_Y, - Qt::WindowShortcut, - QT_TR_NOOP("redo"), - QT_TR_NOOP("redo last undo"), - ":/xpm/redo.xpm" - ), - Shortcut( - "cut", - QT_TR_NOOP("Edit: Cut" ), - INVIS_SHRT, - Qt::CTRL + Qt::Key_X, - Qt::WindowShortcut, - QT_TR_NOOP("Cut"), - QT_TR_NOOP("Cut"), - ":/xpm/editcut.xpm" - ), - Shortcut( - "copy", - QT_TR_NOOP("Edit: Copy"), - INVIS_SHRT, - Qt::CTRL + Qt::Key_C, - Qt::WindowShortcut, - QT_TR_NOOP("Copy"), - QT_TR_NOOP("Copy"), - ":/xpm/editcopy.xpm" - ), - Shortcut( - "paste", - QT_TR_NOOP("Edit: Paste,"), - INVIS_SHRT, - Qt::CTRL + Qt::Key_V, - Qt::WindowShortcut, - QT_TR_NOOP("Paste"), - QT_TR_NOOP("Paste"), - ":/xpm/editpaste.xpm" - ), - Shortcut( - "delete", - QT_TR_NOOP("Edit: Delete" ), - INVIS_SHRT, - Qt::Key_Delete, - Qt::WindowShortcut, - QT_TR_NOOP("Delete"), - QT_TR_NOOP("Delete"), - ":/xpm/delete.png" - ), - Shortcut( - "open_project", - QT_TR_NOOP("Open"), - ARRANG_SHRT + DEDIT_SHRT, - Qt::CTRL + Qt::Key_O, - Qt::WindowShortcut, - QT_TR_NOOP("open project"), - QT_TR_NOOP("Click this button to select a new project\n" - "You can also select the Open command from the Project menu."), - ":/xpm/fileopen.png" - ), - Shortcut( - "save_project", - QT_TR_NOOP("Save"), - ARRANG_SHRT + DEDIT_SHRT, - Qt::CTRL + Qt::Key_S, - Qt::WindowShortcut, - QT_TR_NOOP("save project"), - QT_TR_NOOP("Click this button to save the project you are editing.\n" - "You can also select the Save command from the Project menu."), - ":/xpm/filesave.png" - ), - Shortcut( - "save_project_as", - QT_TR_NOOP("File: Save as"), - ARRANG_SHRT + DEDIT_SHRT, - 0, - Qt::WindowShortcut, - QT_TR_NOOP("save project as..."), - QT_TR_NOOP("Click this button to save a new copy of the project.\n" - ), ":/xpm/filesave.png" - ), - Shortcut( - "save_as_template", - QT_TR_NOOP("File: Save as Template"), - ARRANG_SHRT, - 0, - Qt::WindowShortcut, - QT_TR_NOOP("save project as template"), - QT_TR_NOOP("Click this button to save the project you are editing\n" - "for later use as a template."), - ":/xpm/filesave.png" - ), - Shortcut( - "open_recent", - QT_TR_NOOP("File: Open recent file"), - ARRANG_SHRT, - Qt::CTRL + Qt::Key_1 - ), - Shortcut( - "import_midi", - QT_TR_NOOP("File: Import midi file"), - ARRANG_SHRT, - 0 - ), - Shortcut( - "export_midi", - QT_TR_NOOP("File: Export midi file"), - ARRANG_SHRT, - 0 - ), - Shortcut( - "import_audio", - QT_TR_NOOP("File: Import audio file"), - ARRANG_SHRT, - 0 - ), - Shortcut( - "quit", - QT_TR_NOOP("File: Quit MusE"), - ARRANG_SHRT, - Qt::CTRL + Qt::Key_Q, - Qt::WindowShortcut, - QT_TR_NOOP("Quit MusE"), - QT_TR_NOOP("Quit MusE"), - ":/xpm/on.svg", - ":/xpm/off.svg" - ), - Shortcut( - "select_parts_on_track", - QT_TR_NOOP("Edit: Select parts on track"), - ARRANG_SHRT, - Qt::CTRL+ Qt::ALT + Qt::Key_P, - Qt::WindowShortcut, - QT_TR_NOOP("All &Parts on Track"), - QT_TR_NOOP("All &Parts on Track"), - ":/xpm/select_all_parts_on_track.xpm" - ), - Shortcut( - "open_pianoroll", - QT_TR_NOOP("Open Pianoroll"), - ARRANG_SHRT, - Qt::CTRL + Qt::Key_E, - Qt::WindowShortcut, - QT_TR_NOOP("Pianoroll"), - QT_TR_NOOP("Start Pianoroll Editor"), - ":/xpm/piano.xpm" - ), - Shortcut( - "open_miditracker", - QT_TR_NOOP("Open MidiTracker"), - ARRANG_SHRT, - Qt::CTRL + Qt::Key_K, - Qt::WindowShortcut, - QT_TR_NOOP("MidiTracker"), - QT_TR_NOOP("Start Midi Tracker"), - ":/xpm/piano.xpm" - ), - Shortcut( - "open_drumedit", - QT_TR_NOOP("Open drumeditor"), - ARRANG_SHRT, - Qt::CTRL + Qt::Key_D, - Qt::WindowShortcut, - QT_TR_NOOP("Drum Editor"), - QT_TR_NOOP("Start Drum Editor"), - ":/xpm/edit_drumms.xpm" - ), - Shortcut( - "open_waveedit", - QT_TR_NOOP("Open wave editor"), - ARRANG_SHRT, - 0, - Qt::WindowShortcut, - QT_TR_NOOP("Wave Editor"), - QT_TR_NOOP("Wave Editor"), - ":/xpm/wave.xpm" - ), - Shortcut( - "listedit", - QT_TR_NOOP("Open listeditor"), - ARRANG_SHRT, - Qt::CTRL + Qt::Key_L, - Qt::WindowShortcut, - QT_TR_NOOP("Properties"), - QT_TR_NOOP("open Properties Editor"), - ":/xmp/edit_list.xpm" - ), - Shortcut( - "open_master", - QT_TR_NOOP("Open mastertrack editor"), - ARRANG_SHRT, - Qt::CTRL + Qt::Key_M, - Qt::WindowShortcut, - QT_TR_NOOP("Mastertrack (Tempo) Editor"), - QT_TR_NOOP("Start Mastertrack (Tempo) Editor"), - ":/xpm/edit_mastertrack.xpm" - ), - Shortcut( - "add_midi_track", - QT_TR_NOOP("Add midi track"), - ARRANG_SHRT, - Qt::CTRL + Qt::Key_J - ), - Shortcut( - "add_drum_track", - QT_TR_NOOP("Add drum track"), - ARRANG_SHRT, - 0 - ), - Shortcut( - "add_wave_track", - QT_TR_NOOP("Add wave track"), - ARRANG_SHRT, - 0 - ), - Shortcut( - "add_audio_output", - QT_TR_NOOP("Add audio output"), - ARRANG_SHRT, - 0 - ), - Shortcut( - "add_audio_group", - QT_TR_NOOP("Add audio group"), - ARRANG_SHRT, - 0 - ), - Shortcut( - "add_audio_input", - QT_TR_NOOP("Add audio input"), - ARRANG_SHRT, - 0 - ), - Shortcut( - "global_cut", - QT_TR_NOOP("Structure: Global cut"), - ARRANG_SHRT, - 0 - ), - Shortcut( - "global_insert", - QT_TR_NOOP("Structure: Global insert"), - ARRANG_SHRT, - 0 - ), - Shortcut( - "global_split", - QT_TR_NOOP("Structure: Global split"), - ARRANG_SHRT, - 0 - ), - Shortcut( - "copy_range", - QT_TR_NOOP("Structure: Copy range"), - ARRANG_SHRT, - 0 - ), - Shortcut( - "cut_events", - QT_TR_NOOP("Structure: Cut events"), - ARRANG_SHRT, - 0 - ), - Shortcut( - "toggle_mixer1", - QT_TR_NOOP("View: Open mixer 1 window"), - ARRANG_SHRT, - Qt::Key_F10, - Qt::ApplicationShortcut, - QT_TR_NOOP("Mixer1"), - QT_TR_NOOP("Show Mixer 1"), - ":/xpm/view_mixer.xpm" - ), - Shortcut( - "toggle_mixer2", - QT_TR_NOOP("View: Open mixer 2 window"), - ARRANG_SHRT, - 0, - Qt::ApplicationShortcut, - QT_TR_NOOP("Mixer2"), - QT_TR_NOOP("Show Mixer 2"), - ":/xpm/view_mixer.xpm" - ), - Shortcut( - "toggle_transport", - QT_TR_NOOP("View: Toggle transport window"), - ARRANG_SHRT, - Qt::Key_F11, - Qt::ApplicationShortcut, - QT_TR_NOOP("Transport"), - QT_TR_NOOP("Show Transport Window"), - ":/xpm/view_transport_window.xpm" - ), - Shortcut( - "toggle_bigtime", - QT_TR_NOOP("View: Toggle bigtime window"), - ARRANG_SHRT, - Qt::Key_F12, - Qt::ApplicationShortcut, - QT_TR_NOOP("BigTime"), - QT_TR_NOOP("Show BigTime Window"), - ":/xpm/view_bigtime_window.xpm" - ), - Shortcut( - "marker_window", - QT_TR_NOOP("View: Open marker window"), - ARRANG_SHRT, - Qt::Key_F9, - Qt::ApplicationShortcut, - QT_TR_NOOP("Marker"), - QT_TR_NOOP("Show Marker List"), - ":/xpm/view_marker.xpm" - ), - Shortcut( - "follow_jump", - QT_TR_NOOP("Settings: Follow song by page"), - ARRANG_SHRT, - 0 - ), - Shortcut( - "follow_no", - QT_TR_NOOP("Settings: Follow song off"), - ARRANG_SHRT, - 0 - ), - Shortcut( - "follow_continuous", - QT_TR_NOOP("Settings: Follow song continuous"), - ARRANG_SHRT, - 0 - ), - Shortcut( - "configure_shortcuts", - QT_TR_NOOP("Settings: Configure shortcuts"), - ARRANG_SHRT, - 0 - ), - Shortcut( - "configure_metronome", - QT_TR_NOOP("Settings: Configure metronome"), - ARRANG_SHRT, - 0 - ), - Shortcut( - "configure_midi_sync", - QT_TR_NOOP("Settings: Midi sync configuration"), - ARRANG_SHRT, - 0 - ), - Shortcut( - "configure_midi_file", - QT_TR_NOOP("Settings: Midi file export configuration"), - ARRANG_SHRT, - 0 - ), - Shortcut( - "configure_midi_ports", - QT_TR_NOOP("Settings: Midi ports / Soft Synth"), - ARRANG_SHRT, - 0 - ), - Shortcut( - "configure_audio_ports", - QT_TR_NOOP("Settings: Audio subsystem configuration"), - ARRANG_SHRT, - 0 - ), - Shortcut( - "midi_edit_instruments", - QT_TR_NOOP("Midi: Edit midi instruments"), - ARRANG_SHRT, - 0 - ), - Shortcut( - "midi_remote_control", - QT_TR_NOOP("Midi: Midi remote control"), - ARRANG_SHRT, - 0 - ), - Shortcut( - "midi_reset", - QT_TR_NOOP("Midi: Reset midi"), - ARRANG_SHRT, - 0 - ), - Shortcut( - "midi_init", - QT_TR_NOOP("Midi: Init midi"), - ARRANG_SHRT, - 0 - ), - Shortcut( - "midi_local_off", - QT_TR_NOOP("Midi: Midi local off"), - ARRANG_SHRT, - 0 - ), - Shortcut( - "audio_bounce_to_track", - QT_TR_NOOP("Audio: Bounce audio to track"), - ARRANG_SHRT, - 0 - ), - Shortcut( - "audio_bounce_to_file", - QT_TR_NOOP("Audio: Bounce audio to file"), - ARRANG_SHRT, - 0 - ), - Shortcut( - "audio_restart", - QT_TR_NOOP("Audio: Restart audio"), - ARRANG_SHRT, - 0 - ), - Shortcut( - "open_help", - QT_TR_NOOP("Help: Open Manual"), - ARRANG_SHRT, - Qt::Key_F1 - ), - Shortcut( - "toggle_whatsthis", - QT_TR_NOOP("Help: Toggle whatsthis mode"), - ARRANG_SHRT, - Qt::SHIFT + Qt::Key_F1 - ), - Shortcut( - "edit_selected_part", - QT_TR_NOOP("Edit: Edit selected part"), - ARRANG_SHRT, - Qt::Key_Return - ), - Shortcut( - "sel_part_above", - QT_TR_NOOP("Edit: Select nearest part on track above"), - ARRANG_SHRT, - Qt::Key_Up - ), - Shortcut( - "sel_part_above_add", - QT_TR_NOOP("Edit: Add nearest part on track above"), - ARRANG_SHRT, - Qt::SHIFT + Qt::Key_Up - ), - Shortcut( - "sel_part_below", - QT_TR_NOOP("Edit: Select nearest part on track below"), - ARRANG_SHRT, - Qt::Key_Down - ), - Shortcut( - "sel_part_below_add", - QT_TR_NOOP("Edit: Add nearest part on track below"), - ARRANG_SHRT, - Qt::SHIFT + Qt::Key_Down - ), - Shortcut( - "midi_transpose", - QT_TR_NOOP("Midi: Transpose"), - ARRANG_SHRT + PROLL_SHRT, - 0, - Qt::WindowShortcut, - QT_TR_NOOP("Transpose") - ), - Shortcut( - "sel_all", - QT_TR_NOOP("Edit: Select all"), - ARRANG_SHRT + PROLL_SHRT + DEDIT_SHRT, - Qt::CTRL + Qt::Key_A, - Qt::WindowShortcut, - QT_TR_NOOP("Select All"), - QT_TR_NOOP("Select All"), - ":/xpm/select_all.xpm" - ), - Shortcut( - "sel_none", - QT_TR_NOOP("Edit: Select none"), - ARRANG_SHRT + PROLL_SHRT + DEDIT_SHRT, - Qt::CTRL + Qt::SHIFT + Qt::Key_A, - Qt::WindowShortcut, - QT_TR_NOOP("Deselect All"), - QT_TR_NOOP("Deselect All"), - ":/xpm/select_deselect_all.xpm" - ), - Shortcut( - "sel_inv", - QT_TR_NOOP("Edit: Invert selection"), - ARRANG_SHRT + PROLL_SHRT + DEDIT_SHRT, - Qt::CTRL + Qt::Key_I, - Qt::WindowShortcut, - QT_TR_NOOP("Invert Selection"), - QT_TR_NOOP("Invert Selection"), - ":/xpm/select_invert_selection.xpm" - ), - Shortcut( - "sel_ins_loc", - QT_TR_NOOP("Edit: Select events/parts inside locators"), - ARRANG_SHRT + PROLL_SHRT + DEDIT_SHRT, - 0, - Qt::WindowShortcut, - QT_TR_NOOP("Select Inside Loop"), - QT_TR_NOOP("Select Inside Loop"), - ":/xpm/select_inside_loop.xpm" - ), - Shortcut( - "sel_out_loc", - QT_TR_NOOP("Edit: Select events/parts outside locators"), - ARRANG_SHRT + PROLL_SHRT + DEDIT_SHRT, - 0, - Qt::WindowShortcut, - QT_TR_NOOP("Select Outside Loop"), - QT_TR_NOOP("Select Outside Loop"), - ":/xpm/select_outside_loop.xpm" - ), - Shortcut( - "sel_left", - QT_TR_NOOP("Edit: Select nearest part/event to the left"), - ARRANG_SHRT + PROLL_SHRT + DEDIT_SHRT, - Qt::Key_Left - ), - Shortcut( - "sel_left_add", - QT_TR_NOOP("Edit: Add nearest part/event to the left to selection"), - PROLL_SHRT + DEDIT_SHRT, - Qt::Key_Left + Qt::SHIFT - ), - Shortcut( - "sel_right", - QT_TR_NOOP("Edit: Select nearest part/event to the left"), - ARRANG_SHRT + PROLL_SHRT + DEDIT_SHRT, - Qt::Key_Right - ), - Shortcut( - "sel_right_add", - QT_TR_NOOP("Edit: Add nearest part/event to the right to selection"), - PROLL_SHRT + DEDIT_SHRT, - Qt::Key_Right + Qt::SHIFT - ), - Shortcut( - "loc_to_sel", - QT_TR_NOOP("Edit: Set locators to selection"), - ARRANG_SHRT + PROLL_SHRT + DEDIT_SHRT, - Qt::ALT + Qt::Key_P - ), - Shortcut( - "sel_inc_pitch", - QT_TR_NOOP("Edit: Increase pitch"), - PROLL_SHRT + DEDIT_SHRT, - Qt::CTRL + Qt::Key_Up - ), - Shortcut( - "sel_dec_pitch", - QT_TR_NOOP("Edit: Decrease pitch"), - PROLL_SHRT + DEDIT_SHRT, - Qt::CTRL + Qt::Key_Down - ), - Shortcut( - "midi_fixed_len", - QT_TR_NOOP("Edit: Set fixed length on midi events"), - DEDIT_SHRT, - Qt::ALT + Qt::Key_L, - Qt::WindowShortcut, - QT_TR_NOOP("Set fixed length") - ), - Shortcut( - "midi_over_quant", - QT_TR_NOOP("Quantize: Over Quantize"), - PROLL_SHRT, - 0, - Qt::WindowShortcut, - QT_TR_NOOP("Over Quantize") - ), - Shortcut( - "midi_quant_noteon", - QT_TR_NOOP("Quantize: Note On Quantize"), - PROLL_SHRT, - 0, - Qt::WindowShortcut, - QT_TR_NOOP("Note On Quantize") - ), - Shortcut( - "midi_quant_noteoff", - QT_TR_NOOP("Quantize: Note On/Off Quantize"), - PROLL_SHRT, - 0, - Qt::WindowShortcut, - QT_TR_NOOP("Note On/Off Quantize") - ), - Shortcut( - "midi_quant_iterative", - QT_TR_NOOP("Quantize: Iterative Quantize"), - PROLL_SHRT, - 0, - Qt::WindowShortcut, - QT_TR_NOOP("Iterative Quantize") - ), - Shortcut( - "config_quant", - QT_TR_NOOP("Quantize: Configure quant"), - PROLL_SHRT, - Qt::CTRL + Qt::ALT + Qt::Key_Q - ), - Shortcut( - "midi_mod_gate_time", - QT_TR_NOOP("Quantize: Modify Gate Time"), - PROLL_SHRT, - 0, - Qt::WindowShortcut, - QT_TR_NOOP("Modify Gate Time") - ), - Shortcut( - "midi_mod_velo", - QT_TR_NOOP("Quantize: Modify Velocity"), - PROLL_SHRT, - 0, - Qt::WindowShortcut, - QT_TR_NOOP("Modify Velocity") - ), - Shortcut( - "midi_crescendo", - QT_TR_NOOP("Edit: Crescendo"), - PROLL_SHRT, - 0, - Qt::WindowShortcut, - QT_TR_NOOP("Crescendo") - ), - Shortcut( - "midi_thin_out", - QT_TR_NOOP("Edit: Thin Out"), - PROLL_SHRT, - 0, - Qt::WindowShortcut, - QT_TR_NOOP("Thin Out") - ), - Shortcut( - "midi_erase_event", - QT_TR_NOOP("Edit: Erase Event"), - PROLL_SHRT, - 0, - Qt::WindowShortcut, - QT_TR_NOOP("Erase Event") - ), - Shortcut( - "midi_note_shift", - QT_TR_NOOP("Edit: Note Shift"), - PROLL_SHRT, - 0, - Qt::WindowShortcut, - QT_TR_NOOP("Note Shift") - ), - Shortcut( - "midi_move_clock", - QT_TR_NOOP("Edit: Move Clock"), - PROLL_SHRT, - 0, - Qt::WindowShortcut, - QT_TR_NOOP("Move Clock") - ), - Shortcut( - "midi_copy_measure", - QT_TR_NOOP("Edit: Copy Measure"), - PROLL_SHRT, - 0, - Qt::WindowShortcut, - QT_TR_NOOP("Copy Measure") - ), - Shortcut( - "midi_erase_measure", - QT_TR_NOOP("Edit: Erase Measure"), - PROLL_SHRT, - 0, - Qt::WindowShortcut, - QT_TR_NOOP("Erase Measure") - ), - Shortcut( - "midi_delete_measure", - QT_TR_NOOP("Edit: Delete Measure"), - PROLL_SHRT, - 0, - Qt::WindowShortcut, - QT_TR_NOOP("Delete Measure") - ), - Shortcut( - "midi_create_measure", - QT_TR_NOOP("Edit: Create Measure"), - PROLL_SHRT, - 0, - Qt::WindowShortcut, - QT_TR_NOOP("Create Measure") - ), - Shortcut( - "change_event_color", - QT_TR_NOOP("Edit: Change event color"), - PROLL_SHRT, - Qt::Key_E - ), - Shortcut( - "pointer", - QT_TR_NOOP("Tool: Pointer"), - ARRANG_SHRT + PROLL_SHRT + DEDIT_SHRT, - Qt::Key_A, - Qt::WindowShortcut, - QT_TR_NOOP("Pointer"), - QT_TR_NOOP("select Pointer Tool:\n" - "with the pointer tool you can:\n" - " select parts\n" - " move parts\n" - " copy parts"), - ":/xpm/pointer.xpm" - ), - Shortcut( - "pencil", - QT_TR_NOOP("Tool: Pencil"), - ARRANG_SHRT + PROLL_SHRT + DEDIT_SHRT, - Qt::Key_D, - Qt::WindowShortcut, - QT_TR_NOOP("Pencil"), - QT_TR_NOOP("select Pencil Tool:\n" - "with the pencil tool you can:\n" - " create new parts\n" - " modify length of parts"), - ":/xpm/pencil.xpm" - ), - Shortcut( - "eraser", - QT_TR_NOOP("Tool: Eraser"), - ARRANG_SHRT + PROLL_SHRT + DEDIT_SHRT, - Qt::Key_R, - Qt::WindowShortcut, - QT_TR_NOOP("Eraser"), - QT_TR_NOOP("select Delete Tool:\n" - "with the delete tool you can delete parts"), - ":/xpm/delete.xpm" - ), - Shortcut( - "scissor", - QT_TR_NOOP("Tool: Scissor"), - ARRANG_SHRT, - Qt::Key_S, - Qt::WindowShortcut, - QT_TR_NOOP("Scissor"), - QT_TR_NOOP("select Cut Tool:\n" - "with the cut tool you can split a part"), - ":/xpm/cut.xpm" - ), - Shortcut( - "glue", - QT_TR_NOOP("Tool: Glue"), - ARRANG_SHRT, - Qt::Key_G, - Qt::WindowShortcut, - QT_TR_NOOP("Glue"), - QT_TR_NOOP("select Glue Tool:\n" - "with the glue tool you can glue two parts"), - ":/xpm/glue.xpm" - ), - Shortcut( - "declone", - QT_TR_NOOP("Declone"), - ARRANG_SHRT, - 0, - Qt::WindowShortcut, - QT_TR_NOOP("Declone") - ), - Shortcut( - "quantize", - QT_TR_NOOP("Tool: Quantize"), - ARRANG_SHRT, - Qt::Key_G, - Qt::WindowShortcut, - QT_TR_NOOP("Quantize"), - QT_TR_NOOP("select Quantize Tool:\n" - "insert display quantize event"), - ":/xpm/quant.xpm" - ), - Shortcut( - "draw", - QT_TR_NOOP("Tool: Line Draw"), - PROLL_SHRT + DEDIT_SHRT, - 0, - Qt::WindowShortcut, - QT_TR_NOOP("Draw"), - QT_TR_NOOP("select Drawing Tool"), - ":/xpm/draw.xpm" - ), - Shortcut( - "mute_parts", - QT_TR_NOOP("Tool: Mute Parts"), - ARRANG_SHRT, - 0, - Qt::WindowShortcut, - QT_TR_NOOP("Mute"), - QT_TR_NOOP("select Muting Tool:\n" - "click on part to mute/unmute"), - ":/xpm/editmute.xpm" - ), - - Shortcut( - "curpos_increase", - QT_TR_NOOP("Transport: Increase current position"), - GLOBAL_SHRT, - Qt::Key_Plus - ), - Shortcut( - "curpos_decrease", - QT_TR_NOOP("Transport: Decrease current position"), - GLOBAL_SHRT, - Qt::Key_Minus - ), - Shortcut( - "midi_quant_1", - QT_TR_NOOP("Quantize: Set quantize to 1/1 note"), - PROLL_SHRT, - Qt::Key_1 - ), - Shortcut( - "midi_quant_2", - QT_TR_NOOP("Quantize: Set quantize to 1/2 note"), - PROLL_SHRT, - Qt::Key_2 - ), - Shortcut( - "midi_quant_3", - QT_TR_NOOP("Quantize: Set quantize to 1/4 note"), - PROLL_SHRT, - Qt::Key_3 - ), - Shortcut( - "midi_quant_4", - QT_TR_NOOP("Quantize: Set quantize to 1/8 note"), - PROLL_SHRT, - Qt::Key_4 - ), - Shortcut( - "midi_quant_5", - QT_TR_NOOP("Quantize: Set quantize to 1/16 note"), - PROLL_SHRT, - Qt::Key_5 - ), - Shortcut( - "midi_quant_6", - QT_TR_NOOP("Quantize: Set quantize to 1/32 note"), - PROLL_SHRT, - Qt::Key_6 - ), - Shortcut( - "midi_quant_7", - QT_TR_NOOP("Quantize: Set quantize to 1/64 note"), - PROLL_SHRT, - Qt::Key_7 - ), - Shortcut( - "midi_quant_triol", - QT_TR_NOOP("Quantize: Toggle triol quantization"), - PROLL_SHRT, - Qt::Key_T - ), - Shortcut( - "midi_quant_punct", - QT_TR_NOOP("Quantize: Toggle punctuation quantization"), - PROLL_SHRT, - Qt::Key_Period - ), - Shortcut( - "midi_quant_punct2", - QT_TR_NOOP("Quantize: Toggle punctuation quantization (2)"), - PROLL_SHRT, - Qt::Key_Comma - ), - Shortcut( - "midi_insert_at_loc", - QT_TR_NOOP("Insert"), - PROLL_SHRT, - Qt::SHIFT + Qt::Key_Right - ), - Shortcut( - "lm_ins_tempo", - QT_TR_NOOP("Insert Tempo"), - LMEDIT_SHRT, - Qt::CTRL + Qt::Key_T - ), - Shortcut( - "lm_ins_sig", - QT_TR_NOOP("Insert Signature"), - LMEDIT_SHRT, - Qt::CTRL + Qt::Key_R - ), - Shortcut( - "lm_edit_beat", - QT_TR_NOOP("Change Event Position"), - LMEDIT_SHRT, - Qt::CTRL + Qt::SHIFT + Qt::Key_E - ), - Shortcut( - "lm_edit_val", - QT_TR_NOOP("Edit Event Value"), - LMEDIT_SHRT, - Qt::CTRL + Qt::Key_E - ), - Shortcut(0, 0, 0, 0 ), - }; - -KeyboardMovementIndicator shortcutsKbdMovement; //for keeping track of active part selected by kbd - -//--------------------------------------------------------- -// writeShortCuts -//--------------------------------------------------------- - -void writeShortCuts(Xml& xml) - { - xml.stag("shortcuts"); - foreach(Shortcut* s, shortcuts) { - // - // save only if different from default - // - for (unsigned i = 0;; ++i) { - if (MuseApplication::sc[i].xml == s->xml) { - if (MuseApplication::sc[i].key != s->key) - xml.tag(s->xml, s->key.toString(QKeySequence::PortableText)); - break; - } - } - } - xml.etag("shortcuts"); - } - -//--------------------------------------------------------- -// readShortCuts -//--------------------------------------------------------- - -void readShortCuts(QDomNode node) - { - for (;!node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - Shortcut* s = shortcuts.value(e.tagName()); - if (s) - s->key = QKeySequence::fromString(e.text(), QKeySequence::PortableText); - else - printf("MusE:readShortCuts: unknown tag <%s>\n", e.tagName().toLatin1().data()); - } - } - -//--------------------------------------------------------- -// getAction -// returns action for shortcut -//--------------------------------------------------------- - -QAction* getAction(const char* id, QObject* parent) - { - Shortcut* s = shortcuts.value(id); - if (s == 0) { - printf("interanl error: shortcut <%s> not found\n", id); - return 0; - } - if (s->action == 0 || (s->action->parent() != parent)) { - s->action = new QAction(s->xml, parent); - s->action->setData(s->xml); - s->action->setShortcut(s->key); - s->action->setShortcutContext(s->context); - if (s->help) { - s->action->setToolTip(s->help); - s->action->setWhatsThis(s->help); - } - else { - s->action->setToolTip(s->descr); - s->action->setWhatsThis(s->descr); - } - if (s->text) - s->action->setText(s->text); - if (s->iconOn) { - QIcon icon; - icon.addFile(s->iconOn, ICON_SIZE, QIcon::Normal, QIcon::On); - if (s->iconOff) - icon.addFile(s->iconOff, ICON_SIZE, QIcon::Normal, QIcon::Off); - s->action->setIcon(icon); - } - } -// else -// printf("action <%s> already initialized\n", s->xml); - return s->action; - } - diff --git a/muse/muse/shortcuts.h b/muse/muse/shortcuts.h deleted file mode 100644 index d66650e8..00000000 --- a/muse/muse/shortcuts.h +++ /dev/null @@ -1,135 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2003 Mathias Lundgren -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __SHORTCUTS_H__ -#define __SHORTCUTS_H__ - -class Part; -class Track; -namespace AL { - class Xml; - }; -using AL::Xml; - -// -// Shortcut categories -// -#define PROLL_SHRT 1 // Pianoroll shortcut -#define DEDIT_SHRT 2 // Drumedit shortcut -#define LEDIT_SHRT 4 // Listedit shortcut -#define SCORE_SHRT 8 // Score shortcut -#define ARRANG_SHRT 16 // Arrenger shortcut -#define TRANSP_SHRT 32 // Transport shortcut -#define WAVE_SHRT 64 // Waveedit shortcut -#define GLOBAL_SHRT 128 // Global shortcuts -#define LMEDIT_SHRT 256 // List masteredit -#define MEDIT_SHRT 512 // Master editor -#define ALL_SHRT 1023 // All shortcuts -#define INVIS_SHRT 1024 // Shortcuts not shown in the config-dialog. Hard-coded. To avoid conflicts - -#define SHRT_NUM_OF_CATEGORIES 7 //Number of shortcut categories - -//--------------------------------------------------------- -// shortcut -//! Holds the basic values for a configurable shortcut -//--------------------------------------------------------- - -struct Shortcut - { - const char* xml; /*! xml tag name for configuration file */ - const char* descr; /*! Description of the shortcut, shown in editor */ - int type; /*! Bitmask category value mapped against - PROLL_SHRT, DEDIT_SHRT etc. One shortcut can - be a member of many categories */ - QKeySequence key; /*! shortcut key */ - Qt::ShortcutContext context; - const char* text; /*! action help */ - const char* help; - const char* iconOn; - const char* iconOff; - QAction* action; /*! cached action, can be updated if user changes - shortcut key sequence */ - - Shortcut() { - xml = 0; - descr = 0; - type = 0; - key = 0; - context = Qt::WindowShortcut; - text = 0; - help = 0; - iconOn = 0; - iconOff = 0; - action = 0; - } - Shortcut(const char* name, const char* d, int t, const QKeySequence& k, - Qt::ShortcutContext cont = Qt::WindowShortcut, - const char* txt=0, const char* h=0, const char* ic1=0, const char* ic2=0) - : xml(name), descr(d), type(t), key(k), context(cont), text(txt), help(h), - iconOn(ic1), iconOff(ic2) { - action = 0; - } - }; - -//! Describes a shortcut category -struct shortcut_cg - { - int id_flag; /*! The category (one of PROLL_SHRT, DEDIT_SHRT etc) */ - const char* name; /*! Name (shown in editor) */ - }; - -//------------------------------------------------------------------------------------------------ -// KeyboardMovementIndicator -//! Used by Arranger to keep track of which Part is currently active when navigating with keys -//------------------------------------------------------------------------------------------------ - -class KeyboardMovementIndicator { - //! Left position of the active part, in ticks - unsigned lpos; - //! Right position of the active part, in ticks - unsigned rpos; - //! Last selected part (the active part) - Part* lastSelectedPart; - //! Track the last selected part belongs to - Track* lastSelectedTrack; - - public: - KeyboardMovementIndicator() - { reset(); } - - void setPos(int l, int r) { lpos = l; rpos = r; } - void setPart(Part* p) { lastSelectedPart = p; } - void setTrack(Track* t) { lastSelectedTrack = t; } - unsigned getLpos() { return lpos; } - unsigned getRpos() { return rpos; } - Part* part() { return lastSelectedPart; } - Track* track() { return lastSelectedTrack; } - //! Resets the values (equals to no active part) - void reset() { lpos = 0; rpos = 0; lastSelectedPart = 0; lastSelectedTrack = 0; } - //! Checks if there is any active part - bool isValid() { return (lastSelectedPart && lastSelectedTrack); } - }; - -extern KeyboardMovementIndicator shortcutsKbdMovement; -extern void writeShortCuts(Xml& xml); -extern void readShortCuts(QDomNode); -extern QAction* getAction(const char*, QObject* parent); -extern QMap shortcuts; -#endif diff --git a/muse/muse/song.cpp b/muse/muse/song.cpp deleted file mode 100644 index a1f3bff0..00000000 --- a/muse/muse/song.cpp +++ /dev/null @@ -1,1552 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "muse.h" -#include "song.h" -#include "track.h" -#include "undo.h" -#include "globals.h" -#include "event.h" -#include "midiedit/drummap.h" -#include "audio.h" -#include "mixer.h" -#include "audiodev.h" -#include "gconfig.h" -#include "al/marker.h" -#include "al/sig.h" -#include "al/tempo.h" -#include "midi.h" -#include "plugin.h" -#include "pipeline.h" -#include "synth.h" -#include "midiplugin.h" -#include "midirc.h" -#include "part.h" -#include "conf.h" -#include "midioutport.h" -#include "midiinport.h" -#include "instruments/minstrument.h" - -Song* song; - -//--------------------------------------------------------- -// Song -//--------------------------------------------------------- - -Song::Song() - :QObject(0) - { - undoList = new UndoList; - redoList = new UndoList; - _markerList = new AL::MarkerList; - _globalPitchShift = 0; - clear(false); - } - -//--------------------------------------------------------- -// Song -//--------------------------------------------------------- - -Song::~Song() - { - delete undoList; - delete redoList; - delete _markerList; -// delete esettingsList; - } - -//--------------------------------------------------------- -// putEvent -//--------------------------------------------------------- - -void Song::putEvent(const MidiEvent& event) - { - eventFifo.put(event); - } - -//--------------------------------------------------------- -// setTempo -// public slot -//--------------------------------------------------------- - -void Song::setTempo(int newTempo) - { - audio->msgSetTempo(pos[0].tick(), newTempo, true); - } - -//--------------------------------------------------------- -// setSig -// called from transport window -//--------------------------------------------------------- - -void Song::setSig(const AL::TimeSignature& sig) - { - if (_masterFlag) { - audio->msgAddSig(pos[0].tick(), sig); - } - } - -//--------------------------------------------------------- -// addEvent -// return true if event was added -//--------------------------------------------------------- - -bool Song::addEvent(const Event& event, Part* part) - { - if (event.type() == Controller) { - MidiTrack* track = (MidiTrack*)part->track(); - int tick = event.tick() + part->tick(); - int cntrl = event.dataA(); - CVal val; - val.i = event.dataB(); - if (!track->addControllerVal(cntrl, tick, val)) { - track->addMidiController(track->instrument(), cntrl); - if (!track->addControllerVal(cntrl, tick, val)) { - return false; - } - } - } - else { - part->events()->add(event); - } - return true; - } - -//--------------------------------------------------------- -// changeEvent -//--------------------------------------------------------- - -void Song::changeEvent(const Event& oldEvent, const Event& newEvent, Part* part) - { - iEvent i = part->events()->find(oldEvent); - if (i == part->events()->end()) { - printf("Song::changeEvent(): EVENT not found !! %ld\n", long(part->events()->size())); - // abort(); - return; - } - part->events()->erase(i); - part->events()->add(newEvent); - - if (newEvent.type() == Controller) { - MidiTrack* track = (MidiTrack*)part->track(); - int tick = newEvent.tick() + part->tick(); - int cntrl = newEvent.dataA(); - CVal val; - val.i = newEvent.dataB(); - track->addControllerVal(cntrl, tick, val); - } - } - -//--------------------------------------------------------- -// deleteEvent -//--------------------------------------------------------- - -void Song::deleteEvent(const Event& event, Part* part) - { -#if 0 //TODO3 - if (event.type() == Controller) { - MidiTrack* track = (MidiTrack*)part->track(); - int ch = track->outChannel(); - int tick = event.tick() + part->tick(); - int cntrl = event.dataA(); - midiPorts[track->outPort()].deleteController(ch, tick, cntrl); - } -#endif - iEvent ev = part->events()->find(event); - if (ev == part->events()->end()) { - printf("event not found in part\n"); - return; - } - part->events()->erase(ev); - } - -//--------------------------------------------------------- -// setLoop -// set transport loop flag -//--------------------------------------------------------- - -void Song::setLoop(bool f) - { - if (loopFlag != f) { - loopFlag = f; - loopAction->setChecked(loopFlag); - emit loopChanged(loopFlag); - } - } - -//--------------------------------------------------------- -// setRecord -// set record flag -//--------------------------------------------------------- - -void Song::setRecord(bool f) - { - if (recordFlag == f) - return; - if (muse->playAction->isChecked()) { - // - // dont allow record state changes when rolling - // - recordAction->setChecked(!f); - return; - } - - if (f) { - bool alreadyRecEnabled = false; - Track *selectedTrack = 0; - - // loop through list and check if any track is rec enabled - // if not then rec enable the selected track - - WaveTrackList* wtl = waves(); - for (iWaveTrack i = wtl->begin(); i != wtl->end(); ++i) { - if ((*i)->recordFlag()) { - alreadyRecEnabled = true; - break; - } - if ((*i)->selected()) - selectedTrack = (*i); - } - if (!alreadyRecEnabled) { - MidiTrackList* mtl = midis(); - for (iMidiTrack it = mtl->begin(); it != mtl->end(); ++it) { - if ((*it)->recordFlag()) { - alreadyRecEnabled = true; - break; - } - if ((*it)->selected()) - selectedTrack = (*it); - } - } - if (!alreadyRecEnabled && selectedTrack) { - // enable recording on selected track: - setRecordFlag(selectedTrack, true); - } - else { - if (!alreadyRecEnabled) { - // If there are no tracks, do not enable record. - // TODO: This forces the user to first enable record on a track - // which probably is a bad thing. Maybe we should warn - // only when the user actually starts recording by pressing - // play. - - QMessageBox::critical(0, "MusE: Record", - "No track(s) enabled for recording"); - f = false; - } - } - } - if (!f) - bounceTrack = 0; - recordAction->setChecked(f); - if (f != recordFlag) { - recordFlag = f; - emit recordChanged(recordFlag); - } - } - -//--------------------------------------------------------- -// setPunchin -// set punchin flag -//--------------------------------------------------------- - -void Song::setPunchin(bool f) - { - if (punchinFlag != f) { - punchinFlag = f; - punchinAction->setChecked(punchinFlag); - emit punchinChanged(punchinFlag); - } - } - -//--------------------------------------------------------- -// setPunchout -// set punchout flag -//--------------------------------------------------------- - -void Song::setPunchout(bool f) - { - if (punchoutFlag != f) { - punchoutFlag = f; - punchoutAction->setChecked(punchoutFlag); - emit punchoutChanged(punchoutFlag); - } - } - -//--------------------------------------------------------- -// setClick -//--------------------------------------------------------- - -void Song::setClick(bool val) - { - if (_click != val) { - _click = val; - emit clickChanged(_click); - } - } - -//--------------------------------------------------------- -// setQuantize -//--------------------------------------------------------- - -void Song::setQuantize(bool val) - { - if (_quantize != val) { - _quantize = val; - emit quantizeChanged(_quantize); - } - } - -//--------------------------------------------------------- -// setMasterFlag -//--------------------------------------------------------- - -void Song::setMasterFlag(bool val) - { - _masterFlag = val; - if (AL::tempomap.setMasterFlag(cpos(), val)) { - emit songChanged(SC_MASTER); - emit tempoChanged(); - } - } - -//--------------------------------------------------------- -// setPlay -// set transport play flag -//--------------------------------------------------------- - -void Song::setPlay(bool f) - { - // only allow the user to set the button "on" - if (!f) { - printf(" setPlay checked\n"); - muse->playAction->setChecked(true); - } - else { - if (recordAction->isChecked()) { - startUndo(); - MidiTrackList* ml = midis(); - for (iMidiTrack it = ml->begin(); it != ml->end(); ++it) { - if ((*it)->recordFlag()) - (*it)->startRecording(); - } - WaveTrackList* wl = waves(); - for (iWaveTrack wt = wl->begin(); wt != wl->end(); ++wt) { - if ((*wt)->recordFlag()) - (*wt)->startRecording(); - } - OutputList* ol = outputs(); - for (iAudioOutput o = ol->begin(); o != ol->end(); ++o) { - if ((*o)->recordFlag()) - (*o)->startRecording(); - } - } - audio->msgPlay(true); - } - } - -//--------------------------------------------------------- -// setStop -//--------------------------------------------------------- - -void Song::setStop(bool f) - { - // only allow the user to set the button "on" - if (f) - audio->msgPlay(false); - else - muse->stopAction->setChecked(true); - } - -//--------------------------------------------------------- -// setStopPlay -//--------------------------------------------------------- - -void Song::setStopPlay(bool f) - { - emit playChanged(f); // signal transport window - muse->playAction->setChecked(f); - muse->stopAction->setChecked(!f); - } - -//--------------------------------------------------------- -// swapTracks -//--------------------------------------------------------- - -void Song::swapTracks(int i1, int i2) - { - undoOp(UndoOp::SwapTrack, i1, i2); - Track* track = _tracks[i1]; - _tracks[i1] = _tracks[i2]; - _tracks[i2] = track; - } - -//--------------------------------------------------------- -// setTickPos -//--------------------------------------------------------- -/* -void Song::setTickPos(int idx, unsigned int tick) - { - Pos pos(tick); - setPos(idx, pos); - } -*/ -//--------------------------------------------------------- -// setPos -// song->setPos(Song::CPOS, pos, true, true, true); -//--------------------------------------------------------- - -void Song::setPos(int idx, const AL::Pos& val) - { - setPos(idx, val, true, true, false); - } - -void Song::setPos(int idx, const Pos& val, bool sig, bool isSeek, bool follow) - { -// printf("setPos %d sig=%d,seek=%d,scroll=%d\n", -// idx, sig, isSeek, follow); -// val.dump(0); -// printf("\n"); - - if (pos[idx] == val) - return; - if (idx == CPOS) { -// _vcpos = val; - if (isSeek) { - seekInProgress = true; - audio->msgSeek(val); - return; - } - } - pos[idx] = val; - bool swap = pos[LPOS] > pos[RPOS]; - if (swap) { // swap lpos/rpos if lpos > rpos - Pos tmp = pos[LPOS]; - pos[LPOS] = pos[RPOS]; - pos[RPOS] = tmp; - } - if (sig) { - if (swap) { - emit posChanged(LPOS, pos[LPOS], follow); - emit posChanged(RPOS, pos[RPOS], follow); - if (idx != LPOS && idx != RPOS) - emit posChanged(idx, pos[idx], follow); - } - else - emit posChanged(idx, pos[idx], follow); - } - - if (idx == CPOS) - updateCurrentMarker(); - } - -//--------------------------------------------------------- -// updateCurrentMarker -//--------------------------------------------------------- - -void Song::updateCurrentMarker() - { - AL::iMarker i1 = _markerList->begin(); - AL::iMarker i2 = i1; - bool currentChanged = false; - Pos& val = pos[CPOS]; - for (; i1 != _markerList->end(); ++i1) { - ++i2; - if (val.tick() >= i1->first && (i2==_markerList->end() || val.tick() < i2->first)) { - if (i1->second.current()) - return; - i1->second.setCurrent(true); - if (currentChanged) { - emit markerChanged(MARKER_CUR); - return; - } - ++i1; - for (; i1 != _markerList->end(); ++i1) { - if (i1->second.current()) - i1->second.setCurrent(false); - } - emit markerChanged(MARKER_CUR); - return; - } - else { - if (i1->second.current()) { - currentChanged = true; - i1->second.setCurrent(false); - } - } - } - if (currentChanged) - emit markerChanged(MARKER_CUR); - } - -//--------------------------------------------------------- -// forward -// roll forward config.division ticks -//--------------------------------------------------------- - -void Song::forward() - { - unsigned newPos = pos[0].tick() + config.division; - audio->msgSeek(Pos(newPos, AL::TICKS)); - } - -//--------------------------------------------------------- -// rewind -// roll back config.division ticks -//--------------------------------------------------------- - -void Song::rewind() - { - unsigned newPos; - if (unsigned(config.division) > pos[0].tick()) - newPos = 0; - else - newPos = pos[0].tick() - config.division; - audio->msgSeek(Pos(newPos, AL::TICKS)); - } - -//--------------------------------------------------------- -// rewindStart -//--------------------------------------------------------- - -void Song::rewindStart() - { - audio->msgSeek(Pos(0, AL::TICKS)); - } - -//--------------------------------------------------------- -// update -//--------------------------------------------------------- - -void Song::update(int flags) - { - if (flags == 0) - return; - emit songChanged(flags); - if (flags & SC_TEMPO) - emit tempoChanged(); - } - -//--------------------------------------------------------- -// updatePos -//--------------------------------------------------------- - -void Song::updatePos() - { - emit posChanged(0, pos[0], false); - emit posChanged(1, pos[1], false); - emit posChanged(2, pos[2], false); - } - -//--------------------------------------------------------- -// roundUpBar -//--------------------------------------------------------- - -int Song::roundUpBar(int t) const - { - int bar, beat; - unsigned tick; - AL::sigmap.tickValues(t, &bar, &beat, &tick); - if (beat || tick) - return AL::sigmap.bar2tick(bar+1, 0, 0); - return t; - } - -//--------------------------------------------------------- -// roundUpBeat -//--------------------------------------------------------- - -int Song::roundUpBeat(int t) const - { - int bar, beat; - unsigned tick; - AL::sigmap.tickValues(t, &bar, &beat, &tick); - if (tick) - return AL::sigmap.bar2tick(bar, beat+1, 0); - return t; - } - -//--------------------------------------------------------- -// roundDownBar -//--------------------------------------------------------- - -int Song::roundDownBar(int t) const - { - int bar, beat; - unsigned tick; - AL::sigmap.tickValues(t, &bar, &beat, &tick); - return AL::sigmap.bar2tick(bar, 0, 0); - } - -//--------------------------------------------------------- -// dumpMaster -//--------------------------------------------------------- - -void Song::dumpMaster() - { - AL::tempomap.dump(); - AL::sigmap.dump(); - } - -//--------------------------------------------------------- -// getSelectedParts -//--------------------------------------------------------- - -PartList* Song::getSelectedMidiParts() const - { - PartList* parts = new PartList(); - - //------------------------------------------------------ - // wenn ein Part selektiert ist, diesen editieren - // wenn ein Track selektiert ist, den Ersten - // Part des Tracks editieren, die restlichen sind - // 'ghostparts' - // wenn mehrere Parts selektiert sind, dann Ersten - // editieren, die restlichen sind 'ghostparts' - // - - // collect marked parts - for (ciMidiTrack t = _midis.begin(); t != _midis.end(); ++t) { - MidiTrack* track = *t; - PartList* pl = track->parts(); - for (iPart p = pl->begin(); p != pl->end(); ++p) { - if (p->second->selected()) { - parts->add(p->second); - } - } - } - // if no part is selected, then search for selected track - // and collect all parts of this track - - if (parts->empty()) { - for (ciMidiTrack t = _midis.begin(); t != _midis.end(); ++t) { - if ((*t)->selected()) { - MidiTrack* track = *t; - PartList* pl = track->parts(); - for (iPart p = pl->begin(); p != pl->end(); ++p) - parts->add(p->second); - break; - } - } - } - return parts; - } - -PartList* Song::getSelectedWaveParts() const - { - PartList* parts = new PartList(); - - //------------------------------------------------------ - // wenn ein Part selektiert ist, diesen editieren - // wenn ein Track selektiert ist, den Ersten - // Part des Tracks editieren, die restlichen sind - // 'ghostparts' - // wenn mehrere Parts selektiert sind, dann Ersten - // editieren, die restlichen sind 'ghostparts' - // - - // markierte Parts sammeln - for (ciWaveTrack t = _waves.begin(); t != _waves.end(); ++t) { - WaveTrack* track = *t; - PartList* pl = track->parts(); - for (iPart p = pl->begin(); p != pl->end(); ++p) { - if (p->second->selected()) { - parts->add(p->second); - } - } - } - // wenn keine Parts selektiert, dann markierten Track suchen - // und alle Parts dieses Tracks zusammensuchen - - if (parts->empty()) { - for (ciWaveTrack t = _waves.begin(); t != _waves.end(); ++t) { - if ((*t)->selected()) { - WaveTrack* track = *t; - PartList* pl = track->parts(); - for (iPart p = pl->begin(); p != pl->end(); ++p) - parts->add(p->second); - break; - } - } - } - return parts; - } - -//--------------------------------------------------------- -// beat -// update gui -//--------------------------------------------------------- - -void Song::beat() - { - updateFlags = 0; - if (audio->isPlaying()) { - int tick = audio->seqTime()->curTickPos; - setPos(0, tick, true, false, true); - } - if (audio->isRecording()) { - MidiTrackList* ml = midis(); - for (iMidiTrack it = ml->begin(); it != ml->end(); ++it) { - MidiTrack* mt = *it; - if (mt->recordFlag()) - mt->recordBeat(); - } - WaveTrackList* wl = waves(); - for (iWaveTrack wt = wl->begin(); wt != wl->end(); ++wt) { - WaveTrack* mt = *wt; - if (mt->recordFlag()) - mt->recordBeat(); - } - } - while (!eventFifo.isEmpty()) { - MidiEvent event(eventFifo.get()); - if (rcEnable) - midiRCList.doAction(event); - emit midiEvent(event); - } - // - // update controller guis - // - TrackList* tl = tracks(); - for (iTrack it = tl->begin(); it != tl->end(); ++it) { - Track* track = *it; - if (!track->autoRead()) - continue; - track->updateController(); - } - update(updateFlags); - } - -//--------------------------------------------------------- -// setLen -//--------------------------------------------------------- - -void Song::setLen(int l) - { - _len = roundUpBar(l); - AL::Pos pos(_len); - int bar, beat; - unsigned tick; - AL::sigmap.tickValues(_len, &bar, &beat, &tick); - emit measureLenChanged(bar); - emit lenChanged(pos); - } - -//--------------------------------------------------------- -// setMeasureLen -//--------------------------------------------------------- - -void Song::setMeasureLen(int b) - { - setLen(AL::sigmap.bar2tick(b, 0, 0)); - } - -//--------------------------------------------------------- -// addMarker -//--------------------------------------------------------- - -AL::Marker* Song::addMarker(const QString& s, const AL::Pos& pos) - { - AL::Marker* marker = _markerList->add(s, pos); - updateCurrentMarker(); - emit markerChanged(MARKER_ADD); - return marker; - } - -//--------------------------------------------------------- -// removeMarker -//--------------------------------------------------------- - -void Song::removeMarker(AL::Marker* marker) - { - _markerList->remove(marker); - updateCurrentMarker(); - emit markerChanged(MARKER_REMOVE); - } - -//--------------------------------------------------------- -// setMarkerName -//--------------------------------------------------------- - -AL::Marker* Song::setMarkerName(AL::Marker* m, const QString& s) - { - m->setName(s); - emit markerChanged(MARKER_NAME); - return m; - } - -AL::Marker* Song::setMarkerTick(AL::Marker* m, int t) - { - AL::Marker mm(*m); - _markerList->remove(m); - mm.setTick(t); - m = _markerList->add(mm); - updateCurrentMarker(); - emit markerChanged(MARKER_TICK); - return m; - } - -AL::Marker* Song::setMarkerLock(AL::Marker* m, bool f) - { - m->setType(f ? AL::FRAMES : AL::TICKS); - updateCurrentMarker(); - emit markerChanged(MARKER_LOCK); - return m; - } - -//--------------------------------------------------------- -// endMsgCmd -//--------------------------------------------------------- - -void Song::endMsgCmd() - { - redoList->clear(); // TODO: delete elements in list - undoAction->setEnabled(true); - redoAction->setEnabled(false); - update(updateFlags); - } - -//--------------------------------------------------------- -// undo -//--------------------------------------------------------- - -void Song::undo() - { - updateFlags = 0; - if (doUndo1()) - return; - audio->msgUndo(); - doUndo3(); - redoAction->setEnabled(true); - undoAction->setEnabled(!undoList->empty()); - if (updateFlags) { - emit songChanged(updateFlags); - if (updateFlags & SC_TEMPO) - emit tempoChanged(); - } - } - -//--------------------------------------------------------- -// redo -//--------------------------------------------------------- - -void Song::redo() - { - updateFlags = 0; - if (doRedo1()) - return; - audio->msgRedo(); - doRedo3(); - undoAction->setEnabled(true); - redoAction->setEnabled(!redoList->empty()); - if (updateFlags) { - emit songChanged(updateFlags); - if (updateFlags & SC_TEMPO) - emit tempoChanged(); - } - } - -//--------------------------------------------------------- -// processMsg -// executed in realtime thread context -//--------------------------------------------------------- - -void Song::processMsg(AudioMsg* msg) - { - switch(msg->id) { - case SEQM_UNDO: - doUndo2(); - break; - case SEQM_REDO: - doRedo2(); - break; - - case SEQM_ADD_EVENT: - updateFlags = SC_EVENT_INSERTED; - if (addEvent(msg->ev1, (Part*)(msg->p2))) { - undoOp(UndoOp::AddEvent, msg->ev1, (Part*)msg->p2); - } - else - updateFlags = 0; - break; - - case SEQM_ADD_EVENTS: - updateFlags = SC_EVENT_INSERTED; - for (int i = 0; i < msg->el->size(); ++i) { - if (addEvent(msg->el->at(i), (Part*)(msg->p2))) { - undoOp(UndoOp::AddEvent, msg->el->at(i), (Part*)msg->p2); - } - } - break; - - case SEQM_REMOVE_EVENT: - { - Event event = msg->ev1; - Part* part = (Part*)(msg->p2); - Event e; - undoOp(UndoOp::DeleteEvent, e, event, part); - deleteEvent(event, part); - updateFlags = SC_EVENT_REMOVED; - } - break; - case SEQM_CHANGE_EVENT: - changeEvent(msg->ev1, msg->ev2, (Part*)(msg->p3)); - undoOp(UndoOp::ModifyEvent, msg->ev2, msg->ev1, (Part*)msg->p3); - updateFlags = SC_EVENT_MODIFIED; - break; - - case SEQM_ADD_TEMPO: - undoOp(UndoOp::AddTempo, msg->a, msg->b); - AL::tempomap.addTempo(msg->a, msg->b); - updateFlags = SC_TEMPO; - break; - - case SEQM_SET_TEMPO: - undoOp(UndoOp::AddTempo, msg->a, msg->b); - AL::tempomap.setTempo(msg->a, msg->b); - updateFlags = SC_TEMPO; - break; - - case SEQM_SET_GLOBAL_TEMPO: - AL::tempomap.setGlobalTempo(msg->a); - break; - - case SEQM_REMOVE_TEMPO: - undoOp(UndoOp::DeleteTempo, msg->a, msg->b); - AL::tempomap.delTempo(msg->a); - updateFlags = SC_TEMPO; - break; - - case SEQM_ADD_SIG: - undoOp(UndoOp::AddSig, msg->a, msg->b, msg->c); - AL::sigmap.add(msg->a, AL::TimeSignature(msg->b, msg->c)); - updateFlags = SC_SIG; - break; - - case SEQM_REMOVE_SIG: - //printf("processMsg (SEQM_REMOVE_SIG) UndoOp::DeleteSig. Deleting AL::sigmap at: %d with z=%d n=%d\n", msg->a, msg->b, msg->c); - undoOp(UndoOp::DeleteSig, msg->a, msg->b, msg->c); - AL::sigmap.del(msg->a); - updateFlags = SC_SIG; - break; - - case SEQM_ADD_CTRL: - msg->track->addControllerVal(msg->a, msg->time, msg->cval1); - break; - - case SEQM_REMOVE_CTRL: - msg->track->removeControllerVal(msg->a, msg->time); - break; - - case SEQM_ADD_TRACK: - insertTrack2(msg->track); - break; - - case SEQM_REMOVE_TRACK: - removeTrack2(msg->track); - break; - - case SEQM_ADD_PART: - { - Part* part = (Part*)(msg->p1); - part->track()->addPart(part); - } - break; - - case SEQM_REMOVE_PART: - { - Part* part = (Part*)(msg->p1); - Track* track = part->track(); - track->parts()->remove(part); - } - break; - - case SEQM_CHANGE_PART: - { - Part* newPart = (Part*)msg->p2; - Part* oldPart = (Part*)msg->p1; - Part part = *newPart; - *newPart = *oldPart; - *oldPart = part; - } - break; - - case SEQM_MOVE_TRACK: - moveTrack((Track*)(msg->p1), (Track*)(msg->p2)); - break; - - default: - printf("unknown seq message %d\n", msg->id); - break; - } - } - -//--------------------------------------------------------- -// panic -//--------------------------------------------------------- - -void Song::panic() - { - audio->msgPanic(); - } - -//--------------------------------------------------------- -// clear -// signal - emit signals for changes if true -// called from constructor as clear(false) and -// from MusE::clearSong() as clear(false) -//--------------------------------------------------------- - -void Song::clear(bool signal) - { - _created = false; - _backupWritten = false; - dirty = false; - _comment = ""; - _createDate = QDateTime::currentDateTime(); - - seekInProgress = false; - bounceTrack = 0; - -// for (iTrack i = _tracks.begin(); i != _tracks.end(); ++i) -// (*i)->deactivate(); - - _selectedTrack = 0; - _tracks.clear(); - - qDeleteAll(_midis); - _midis.clear(); - - qDeleteAll(_waves); - _waves.clear(); - - qDeleteAll(_inputs); // audio input ports - _inputs.clear(); - - qDeleteAll(_outputs); // audio output ports - _outputs.clear(); - - qDeleteAll(_groups); // mixer groups - _groups.clear(); - - qDeleteAll(_synthIs); - _synthIs.clear(); - - qDeleteAll(_midiSyntis); - _midiSyntis.clear(); - - qDeleteAll(_midiOutPorts); - _midiOutPorts.clear(); - - qDeleteAll(_midiInPorts); - _midiInPorts.clear(); - - AL::tempomap.clear(); - AL::sigmap.clear(); - undoList->clear(); - redoList->clear(); - _markerList->clear(); - pos[0].setTick(0); - pos[1].setTick(0); - pos[2].setTick(0); - - _masterFlag = true; - loopFlag = false; - loopFlag = false; - punchinFlag = false; - punchoutFlag = false; - recordFlag = false; - soloFlag = false; - // seq - _recMode = REC_OVERDUP; - _cycleMode = CYCLE_NORMAL; - _click = false; - _quantize = false; - _len = 1; // song len in ticks - // _tempo = 500000; // default tempo 120 - if (signal) { - emit loopChanged(false); - recordChanged(false); - } - } - -//--------------------------------------------------------- -// seqSignal -// sequencer message to GUI -// execution environment: gui thread -//--------------------------------------------------------- - -void Song::seqSignal(int fd) - { - char buffer[16]; - - int n = ::read(fd, buffer, 16); - if (n < 0) { - printf("Song: seqSignal(): READ PIPE failed: %s\n", - strerror(errno)); - return; - } - bool graphChangedCalled = false; - bool seekDone = false; - -// printf("seqSignal %d\n", n); - for (int i = 0; i < n; ++i) { -// printf(" seqSignal to gui:<%c>\n", buffer[i]); - switch(buffer[i]) { - case MSG_STOP: - stopRolling(); - break; - case MSG_PLAY: - setStopPlay(true); - break; - case MSG_RECORD: - setRecord(true); - break; - case MSG_SEEK: - if (!seekDone) { - seekDone = true; - setPos(0, audio->seqTime()->curTickPos, true, false, !seekInProgress); - seekInProgress = false; - beat(); // update controller guis - } - break; - case MSG_JACK_SHUTDOWN: - restartJack(); - break; - - case MSG_START_BOUNCE: - { - bool useFreewheel = config.useJackFreewheelMode; - if (useFreewheel) { - // check: - // we cannot use freewheel, if there are active audio input - // strips - - for (iAudioInput ii = _inputs.begin(); ii != _inputs.end(); ++i) { - AudioInput* ai = *ii; - if (!(ai->mute() || ai->off())) { - useFreewheel = false; - break; - } - } - if (useFreewheel) - audioDriver->setFreewheel(true); - } - } - break; - - case MSG_STOP_BOUNCE: - if (audio->freewheel()) - audioDriver->setFreewheel(false); - audio->msgPlay(false); - break; - - case MSG_GRAPH_CHANGED: - if (!graphChangedCalled) { - printf(" graph changed\n"); - graphChangedCalled = true; - audioDriver->graphChanged(); - } - break; - - default: - printf("unknown Seq Signal <%c>\n", buffer[i]); - break; - } - } - } - -//--------------------------------------------------------- -// stopRolling -//--------------------------------------------------------- - -void Song::stopRolling() - { - setStopPlay(false); - if (record()) { - audio->msgIdle(true); // gain access to all data structures - - WaveTrackList* wl = waves(); - for (iWaveTrack it = wl->begin(); it != wl->end(); ++it) { - WaveTrack* track = *it; - if (track->recordFlag() || bounceTrack == track) { - track->stopRecording(audio->getStartRecordPos(), audio->getEndRecordPos()); - } - } - MidiTrackList* ml = midis(); - for (iMidiTrack it = ml->begin(); it != ml->end(); ++it) { - if ((*it)->recordFlag()) - (*it)->stopRecording(); - } - OutputList* ol = outputs(); - for (iAudioOutput io = ol->begin(); io != ol->end(); ++io) { - AudioOutput* ao = *io; - if (ao->recordFlag()) - ao->stopRecording(audio->getStartRecordPos(), audio->getEndRecordPos()); - } - audio->msgIdle(false); - updateFlags |= SC_PART_MODIFIED; - endUndo(updateFlags); - setRecord(false); - } - // - // process recorded automation events - // - for (iTrack it = tracks()->begin(); it != tracks()->end(); ++it) { - Track* track = *it; - if (!track->autoWrite()) - continue; - CtrlRecList* crl = track->recEvents(); - CtrlList* cl = track->controller(); - for (iCtrl icl = cl->begin(); icl != cl->end(); ++icl) { - Ctrl* cl = icl->second; - int id = cl->id(); - // - // remove old events from record region - // - bool hasEvents = false; -// int start = audio->getStartRecordPos().frame(); -// int end = audio->getEndRecordPos().frame(); -// iCtrlVal s = cl->lower_bound(start); -// iCtrlVal e = cl->lower_bound(end); -// cl->erase(s, e); -// } - - for (iCtrlRec icr = crl->begin(); icr != crl->end(); ++icr) { - if (icr->id == id && icr->type == 1) { - int start = icr->time; - ++icr; - for (; icr != crl->end(); ++icr) { - if (icr->id == id && icr->type == 2) { - int end = icr->time; - if (track->timeType() == AL::TICKS) { - start = AL::tempomap.frame2tick(start); - end = AL::tempomap.frame2tick(end); - } - iCtrlVal s = cl->lowerBound(start); - iCtrlVal e = cl->lowerBound(end); - while (s != e) - cl->erase(s++); - hasEvents = true; - break; - } - } - if (icr == crl->end()) - break; - } - } - // - // extract all recorded events for controller "id" - // from CtrlRecList and put into cl - // - for (iCtrlRec icr = crl->begin(); icr != crl->end(); ++icr) { - if (icr->id == id && icr->type == 0) - cl->add(icr->time, icr->val); - } - track->emitControllerChanged(id); - } - crl->clear(); - track->setAutoWrite(false); - } - } - -//--------------------------------------------------------- -// addControllerVal -// GUI context -//--------------------------------------------------------- - -void Song::cmdAddControllerVal(Track* t, int id, const Pos& pos, CVal val) - { - Ctrl* c = t->getController(id); - if (c == 0) { - printf("Song::addControllerVal:: no controller %d found\n", id); - return; - } - cmdAddControllerVal(t, c, pos, val); - } - -void Song::cmdAddControllerVal(Track* t, Ctrl* c, const Pos& p, CVal val) - { - unsigned time = t->timeType() == AL::FRAMES ? p.frame() : p.tick(); - iCtrlVal e = c->find(time); - if (e == c->end()) { - // add new controller event - audio->msgAddController(t, c->id(), time, val); - } - else { - // - // change controller is handled inline: - // - CVal oval = c->value(time); - startUndo(); - undoOp(UndoOp::ModifyCtrl, t, c->id(), time, val, oval); - c->add(time, val); - endUndo(0); - } - if (!audio->isPlaying() && t->autoRead()) { - // current value may have changed - unsigned ctime = t->timeType() == AL::FRAMES ? pos[0].frame() : pos[0].tick(); - CVal cval = c->value(ctime); - if (c->curVal().i != cval.i) { - if (t->type() == Track::MIDI) { - MidiEvent ev(0, 0, ME_CONTROLLER, c->id(), cval.i); - ((MidiTrack*)t)->playMidiEvent(&ev); - } - c->setCurVal(cval); - } - } - t->emitControllerChanged(c->id()); //moved this out here, otherwise canvas is not updated - } - -//--------------------------------------------------------- -// setControllerVal -// GUI context -//--------------------------------------------------------- - -void Song::setControllerVal(Track* t, int id, CVal val) - { - Ctrl* c = t->getController(id); - if (c == 0) { - printf("Song::addControllerVal:: no controller %d found\n", id); - return; - } - setControllerVal(t, c, val); - } - -void Song::setControllerVal(Track* t, Ctrl* c, CVal val) - { - if (t->isMidiTrack()) { - if (t->type() == Track::MIDI) { - MidiTrack* mt = (MidiTrack*)t; - MidiEvent ev(0, 0, ME_CONTROLLER, c->id(), val.i); - mt->playMidiEvent(&ev); - } - else if (t->type() == Track::MIDI_OUT) { - MidiOutPort* mp = (MidiOutPort*)t; - MidiEvent ev(0, 0, ME_CONTROLLER, c->id(), val.i); - mp->playMidiEvent(&ev); - } - } - else { - c->setCurVal(val); - if (c->id() & 0x3ffff000) { - // plugin controller - AudioTrack* track = (AudioTrack*) t; - bool prefader; - int pluginIndex, ctrlIndex; - getCtrlPlugin(c->id(), &prefader, &pluginIndex, &ctrlIndex); - Pipeline* pipe = prefader ? track->prePipe() : track->postPipe(); - pipe->plugin(pluginIndex)->setParam(ctrlIndex, val.f); - } - } - c->setCurVal(val); - - if (t->autoWrite()) { - unsigned time = t->timeType() == AL::FRAMES ? pos[0].frame() : pos[0].tick(); - if (audio->isPlaying()) - t->recEvents()->push_back(CtrlRecVal(time, c->id(), val)); - else { - iCtrlVal e = c->find(time); - if (e == c->end()) { - // add new controller event - audio->msgAddController(t, c->id(), time, val); - } - else { - CVal oval = c->value(time); - startUndo(); - undoOp(UndoOp::ModifyCtrl, t, c->id(), time, val, oval); - c->add(time, val); - endUndo(0); - } - } - } - t->emitControllerChanged(c->id()); - } - -//--------------------------------------------------------- -// cmdRemoveControllerVal -//--------------------------------------------------------- - -void Song::cmdRemoveControllerVal(Track* t, int id, unsigned time) - { - audio->msgRemoveController(t, id, time); - t->emitControllerChanged(id); - } - -//--------------------------------------------------------- -// absoluteProjectPath -//--------------------------------------------------------- - -QString Song::absoluteProjectPath() const - { - return QDir::homePath() + "/" + config.projectPath + "/" + _projectPath; - } - -//--------------------------------------------------------- -// projectPath -//--------------------------------------------------------- - -QString Song::projectPath() const - { - return _projectPath; - } - -//--------------------------------------------------------- -// projectName -//--------------------------------------------------------- - -QString Song::projectName() const - { - QString name = _projectPath.split("/").last(); - return name; - } - -//--------------------------------------------------------- -// setProjectPath -//--------------------------------------------------------- - -void Song::setProjectPath(const QString& s) - { - _projectPath = s; - } - -//--------------------------------------------------------- -// read -// return false on error -//--------------------------------------------------------- - -bool Song::read(QFile* qf) - { - QDomDocument doc; - - int line, column; - QString err; - if (!doc.setContent(qf, false, &err, &line, &column)) { - QString col, ln, error; - col.setNum(column); - ln.setNum(line); - error = err + "\n at line: " + ln + " col: " + col; - printf("error reading med file: %s\n", error.toLatin1().data()); - return false; - } - for (QDomNode node = doc.documentElement(); !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - if (e.isNull()) - continue; - if (e.tagName() == "muse") { - QString sversion = e.attribute("version", "1.0"); - int major=0, minor=0; - sscanf(sversion.toLatin1().data(), "%d.%d", &major, &minor); - int version = major << 8 + minor; - if (version >= 0x201) - read30(node.firstChild()); - else if (version >= 0x200) - read20(node); - else if (version == 0x100) - read10(node.firstChild()); - else - printf("unsupported *.med file version %s\n", sversion.toLatin1().data()); - } - else - printf("MusE: %s not supported\n", e.tagName().toLatin1().data()); - } - dirty = false; - return true; - } - -//--------------------------------------------------------- -// read10 -//--------------------------------------------------------- - -void Song::read10(QDomNode) - { - printf("reading type 1.0 *.med files not implemented\n"); - } - -//--------------------------------------------------------- -// read30 -//--------------------------------------------------------- - -void Song::read30(QDomNode node) - { - for (; !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - if (e.isNull()) - continue; - if (e.tagName() == "configuration") - readConfiguration(node.firstChild()); - else if (e.tagName() == "song") - read(node.firstChild()); - else if (e.tagName() == "toplevels") - muse->readToplevels(node.firstChild()); - else - printf("MusE:read30(): unknown tag %s\n", e.tagName().toLatin1().data()); - } - } - -//--------------------------------------------------------- -// restartJack -//--------------------------------------------------------- - -void Song::restartJack() - { - muse->seqStop(); - audioState = AUDIO_STOP; - for (;;) { - // give the user a sensible explanation - int btn = QMessageBox::critical( muse, tr("Jack shutdown!"), - tr("Jack has detected a performance problem which has lead to\n" - "MusE being disconnected.\n" - "This could happen due to a number of reasons:\n" - "- a performance issue with your particular setup.\n" - "- a bug in MusE (or possibly in another connected software).\n" - "- a random hiccup which might never occur again.\n" - "- jack was voluntary stopped by you or someone else\n" - "- jack crashed\n" - "If there is a persisting problem you are much welcome to discuss it\n" - "on the MusE mailinglist.\n" - "(there is information about joining the mailinglist on the MusE\n" - " homepage which is available through the help menu)\n" - "\n" - "To proceed check the status of Jack and try to restart it and then .\n" - "click on the Restart button."), - "restart", "cancel", "save project" - ); - if (btn == 0) { - if (!audioDriver->restart()) - break; - } - else if (btn == 2) - muse->save(); - else if (btn == 1) - exit(-1); - } - muse->seqRestart(); - } - -//--------------------------------------------------------- -// routeChanged -//--------------------------------------------------------- - -void Song::routeChanged(QAction* a) - { - audio->msgRoute(a->isChecked(), a->data().value()); - } - diff --git a/muse/muse/song.h b/muse/muse/song.h deleted file mode 100644 index 3ad574a0..00000000 --- a/muse/muse/song.h +++ /dev/null @@ -1,416 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __SONG_H__ -#define __SONG_H__ - -#include "undo.h" -#include "midiinport.h" -#include "midioutport.h" -#include "miditrack.h" -#include "midisynti.h" -#include "wavetrack.h" -#include "audioinput.h" -#include "audiooutput.h" -#include "audiogroup.h" -#include "synth.h" -#include "ctrl.h" -#include "midififo.h" - -namespace AL { - class Xml; - class Marker; - class MarkerList; - class Pos; - }; - -struct AudioMsg; -class Event; -class Track; -class Part; -class PartList; -class Marker; -class SettingsList; - -#define SC_TRACK_INSERTED 1 -#define SC_TRACK_REMOVED 2 -#define SC_TRACK_MODIFIED 4 -#define SC_PART_INSERTED 8 -#define SC_PART_REMOVED 0x10 -#define SC_PART_MODIFIED 0x20 -#define SC_EVENT_INSERTED 0x40 -#define SC_EVENT_REMOVED 0x80 -#define SC_EVENT_MODIFIED 0x100 -#define SC_SIG 0x200 // timing signature -#define SC_TEMPO 0x400 // tempo map changed -#define SC_MASTER 0x800 // master flag changed -#define SC_SELECTION 0x1000 -#define SC_RECFLAG 0x10000 -#define SC_ROUTE 0x20000 -#define SC_CHANNELS 0x40000 -#define SC_CONFIG 0x80000 // midiPort-midiDevice -#define SC_DRUMMAP 0x100000 // must update drumeditor -#define SC_AUTOMATION 0x800000 -#define SC_RACK 0x1000000 // mixer rack changed -#define SC_CLIP_MODIFIED 0x2000000 - -//--------------------------------------------------------- -// Song -//--------------------------------------------------------- - -class Song : public QObject { - Q_OBJECT - - public: - enum POS { CPOS = 0, LPOS, RPOS }; - enum FollowMode { NO, JUMP, CONTINUOUS }; - enum { REC_OVERDUP, REC_REPLACE }; - enum { CYCLE_NORMAL, CYCLE_MIX, CYCLE_REPLACE }; - enum { MARKER_CUR, MARKER_ADD, MARKER_REMOVE, MARKER_NAME, - MARKER_TICK, MARKER_LOCK }; - - private: - QString _projectPath; - QString _comment; - bool _backupWritten; // set after first "save" operation from - // user; used to make sure there will - // be only one backup for a session - bool _created; // project was created in current session - QDateTime _createDate; - - MidiFifo eventFifo; - - int updateFlags; - - TrackList _tracks; // tracklist as seen by arranger - MidiTrackList _midis; - WaveTrackList _waves; - InputList _inputs; // audio input ports - OutputList _outputs; // audio output ports - GroupList _groups; // mixer groups - SynthIList _synthIs; - MidiSyntiList _midiSyntis; - MidiOutPortList _midiOutPorts; - MidiInPortList _midiInPorts; - Track* _selectedTrack; - - UndoList* undoList; - UndoList* redoList; - Pos pos[3]; - AL::MarkerList* _markerList; - bool seekInProgress; // user initiated a seek - - bool _masterFlag; - bool loopFlag; - bool punchinFlag; - bool punchoutFlag; - bool recordFlag; - bool soloFlag; - int _recMode; - int _cycleMode; - bool _click; - bool _quantize; - unsigned _len; // song len in ticks - int _globalPitchShift; - void readMarker(QDomNode); - void restartJack(); - void undoPartModify(Part* oPart, Part* nPart, bool undo); - - public slots: - - void undo(); - void redo(); - - void setTempo(int t); - void setSig(const AL::TimeSignature&); - - void setMasterFlag(bool flag); - void setLoop(bool f); - void setRecord(bool f); - void setPlay(bool f); - void setStop(bool); - void forward(); - void rewindStart(); - void rewind(); - void setPunchin(bool f); - void setPunchout(bool f); - void setClick(bool val); - void toggleClick() { setClick(!click()); } - void gotoLeftMarker() { setPos(0, lPos()); } - void gotoRightMarker() { setPos(0, rPos()); } - - void setQuantize(bool val); - void panic(); - void seqSignal(int fd); - Track* addTrack(QAction*); - void setMeasureLen(int l); - void cmdChangePart(Part*, unsigned, unsigned); - void cmdCreateLRPart(Track* track); - void setPos(int, const AL::Pos&); - void setPos(int, const AL::Pos&, bool sig, bool isSeek = true, - bool adjustScrollbar = false); - void routeChanged(QAction*); - - signals: - void songChanged(int); - void posChanged(int, const AL::Pos&, bool); - void loopChanged(bool); - void recordChanged(bool); - void playChanged(bool); - void punchinChanged(bool); - void punchoutChanged(bool); - void clickChanged(bool); - void quantizeChanged(bool); - void markerChanged(int); - void midiPortsChanged(); - void midiEvent(const MidiEvent&); - void trackAdded(Track*, int idx); - void trackRemoved(Track*); - void lenChanged(const AL::Pos&); - void measureLenChanged(int); - - void recordChanged(Track*,bool); - void muteChanged(Track*,bool); - void soloChanged(Track*,bool); - void offChanged(Track*,bool); - void autoReadChanged(Track*,bool); - void autoWriteChanged(Track*,bool); - void trackSelectionChanged(Track*); - void tempoChanged(); - - public: - Song(); - ~Song(); - - void beat(); - void putEvent(const MidiEvent&); - void endMsgCmd(); - void processMsg(AudioMsg* msg); - - bool dirty; - bool backupWritten() const { return _backupWritten; } - void setBackupWritten(bool val) { _backupWritten = val; } - WaveTrack* bounceTrack; - - void updatePos(); - - void read(QDomNode); - void write(Xml&) const; - - void clear(bool signal); - void update(int flags = -1); - - int globalPitchShift() const { return _globalPitchShift; } - void setGlobalPitchShift(int val) { _globalPitchShift = val; } - - //----------------------------------------- - // Marker - //----------------------------------------- - - AL::MarkerList* marker() const { return _markerList; } - AL::Marker* addMarker(const QString& s, const AL::Pos&); - void removeMarker(AL::Marker*); - AL::Marker* setMarkerName(AL::Marker*, const QString&); - AL::Marker* setMarkerTick(AL::Marker*, int); - AL::Marker* setMarkerLock(AL::Marker*, bool); - void setMarkerCurrent(AL::Marker* m, bool f); - - //----------------------------------------- - // transport - //----------------------------------------- - - const Pos& cPos() const { return pos[0]; } - const Pos& lPos() const { return pos[1]; } - const Pos& rPos() const { return pos[2]; } - unsigned cpos() const { return pos[0].tick(); } - unsigned lpos() const { return pos[1].tick(); } - unsigned rpos() const { return pos[2].tick(); } - - bool loop() const { return loopFlag; } - bool record() const { return recordFlag; } - bool punchin() const { return punchinFlag; } - bool punchout() const { return punchoutFlag; } - bool masterFlag() const { return _masterFlag; } - void setRecMode(int val) { _recMode = val; } - int recMode() const { return _recMode; } - void setCycleMode(int val) { _cycleMode = val; } - int cycleMode() const { return _cycleMode; } - bool click() const { return _click; } - bool quantize() const { return _quantize; } - void setStopPlay(bool); - void stopRolling(); - - //----------------------------------------- - // access tempomap/sigmap (Mastertrack) - //----------------------------------------- - - unsigned len() const { return _len; } - int roundUpBar(int tick) const; - int roundUpBeat(int tick) const; - int roundDownBar(int tick) const; - - //----------------------------------------- - // event manipulations - //----------------------------------------- - - bool addEvent(const Event&, Part*); - void changeEvent(const Event&, const Event&, Part*); - void deleteEvent(const Event&, Part*); - void cmdChangeWave(QString original, QString tmpfile, unsigned sx, unsigned ex); - - //----------------------------------------- - // part manipulations - //----------------------------------------- - - void cmdAddPart(Part* part); - void addPart(Part* part); - - void cmdRemoveParts(); - void cmdRemovePart(Part* part); - void removePart(Part* part); - - void cmdChangePart(Part* oldPart, Part* newPart); - void changePart(Part*, Part*); - - void cmdSplitPart(Part* p, const Pos&); - void cmdGluePart(Part* p); - - PartList* getSelectedMidiParts() const; - PartList* getSelectedWaveParts() const; - - void cmdMovePart(Part*, unsigned, Track*); - void cmdLinkPart(Part*, unsigned, Track*); - void cmdCopyPart(Part*, unsigned, Track*); - void selectPart(Part*, bool add=false); - - //----------------------------------------- - // track manipulations - //----------------------------------------- - - TrackList* tracks() { return &_tracks; } - MidiTrackList* midis() { return &_midis; } - WaveTrackList* waves() { return &_waves; } - InputList* inputs() { return &_inputs; } - OutputList* outputs() { return &_outputs; } - GroupList* groups() { return &_groups; } - SynthIList* syntis() { return &_synthIs; } - MidiOutPortList* midiOutPorts() { return &_midiOutPorts; } - MidiSyntiList* midiSyntis() { return &_midiSyntis; } - MidiInPortList* midiInPorts() { return &_midiInPorts; } - - bool trackExists(Track*) const; - Track* findTrack(const QString& name) const; - - void removeTrack(Track* track); - void removeTrack1(Track* track); - void removeTrack2(Track* track); - void removeTrack3(Track* track); - void changeTrackName(Track* track, const QString&); - - void swapTracks(int i1, int i2); - void moveTrack(Track*, Track*); - void cmdInsertTrack(Track*, int idx); - void insertTrack(Track*, int idx); - - void insertTrack0(Track*, int idx); - void insertTrack1(Track*, int idx); - void insertTrack2(Track*); - void readRoute(QDomNode); - std::vector* synthesizer() const; - - void deselectTracks(); - void selectTrack(Track*); - - Track* selectedTrack() const { return _selectedTrack; } - void updateSelectedTrack(); - - //----------------------------------------- - // undo, redo - //----------------------------------------- - - void startUndo(); - void endUndo(int); - void undoOp(UndoOp::UndoType, int, Track*); - void undoOp(UndoOp::UndoType, int, int, int = 0); - void undoOp(UndoOp::UndoType, Part*); - void undoOp(UndoOp::UndoType, const Event& oevent, const Event& nevent, Part*); - void undoOp(UndoOp::UndoType type, const Event& nev, Part* part); - void undoOp(UndoOp::UndoType, SigEvent* oevent, SigEvent* nevent); - void undoOp(UndoOp::UndoType, Part* oPart, Part* nPart); - void undoOp(UndoOp::UndoType, Track*, int, unsigned, CVal, CVal); - void undoOp(UndoOp::UndoType, Track*, const QString&, const QString&); - void undoOp(UndoOp::UndoType type, const char* changedFile, const char* changeData, int startframe, int endframe); - bool doUndo1(); - void doUndo2(); - void doUndo3(); - bool doRedo1(); - void doRedo2(); - void doRedo3(); - - void addUndo(UndoOp& i); - - //----------------------------------------- - // Controller - //----------------------------------------- - - void cmdAddControllerVal(Track*, Ctrl*, const Pos&, CVal); - void cmdAddControllerVal(Track*, int, const Pos&, CVal); - void setControllerVal(Track*, Ctrl*, CVal); - void setControllerVal(Track*, int, CVal); - - void cmdRemoveControllerVal(Track*,int,unsigned); - void setAutoRead(Track*,bool); - void setAutoWrite(Track*,bool); - - //----------------------------------------- - // Misc/Debug - //----------------------------------------- - - void setLen(int); - void dumpMaster(); - void addUpdateFlags(int f) { updateFlags |= f; } - bool solo() const { return soloFlag; } - void setRecordFlag(Track*, bool); - void setMute(Track*,bool); - void setMonitor(Track*,bool); - void setSolo(Track*,bool); - void setOff(Track*,bool); - - QString projectPath() const; - QString absoluteProjectPath() const; - QString projectName() const; - void setProjectPath(const QString&); - QString comment() const { return _comment; } - void setComment(const QString& s) { _comment = s; } - void setCreated(bool val) { _created = val; } - bool created() const { return _created; } - QDateTime createDate() const { return _createDate; } - - bool read(QFile* qf); - void read30(QDomNode node); // muse >= 1.0 - void read20(QDomNode node); // muse < 1.0 - void read10(QDomNode); - void updateCurrentMarker(); - }; - -extern Song* song; - -#endif - diff --git a/muse/muse/songfile.cpp b/muse/muse/songfile.cpp deleted file mode 100644 index ff89e41e..00000000 --- a/muse/muse/songfile.cpp +++ /dev/null @@ -1,489 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "muse.h" -#include "song.h" -#include "arranger.h" -#include "al/al.h" -#include "al/xml.h" -#include "midiedit/drummap.h" -#include "al/marker.h" -#include "midictrl.h" -#include "conf.h" -#include "al/tempo.h" -#include "al/sig.h" -#include "synth.h" -#include "waveedit/waveedit.h" -#include "master/masteredit.h" -#include "midiedit/drumedit.h" -#include "midiedit/pianoroll.h" -#include "part.h" -#include "marker/markerview.h" -#include "liste/listedit.h" - -using namespace AL; - -//--------------------------------------------------------- -// readPart -//--------------------------------------------------------- - -Part* MusE::readPart(QDomNode node) - { - QDomElement e = node.toElement(); - Part* part = 0; - QString s = e.text(); - int trackIdx; - int partIdx; - sscanf(s.toLatin1().data(), "%d:%d", &trackIdx, &partIdx); - TrackList* tl = song->tracks(); - Track* track = song->tracks()->value(trackIdx); - if (track) { - part = track->parts()->find(partIdx); - if (part == 0) { - printf("MusE::readPart(): part %d(%d) not found in track <%s>\n", - partIdx, track->parts()->size(), track->name().toLatin1().data()); - } - } - else { - printf("MusE::readPart(): trackIdx >= tl->size %d > %d\n", - trackIdx , tl->size()); - } - return part; - } - -//--------------------------------------------------------- -// readToplevels -//--------------------------------------------------------- - -void MusE::readToplevels(QDomNode node) - { - PartList* pl = new PartList; - - for (;!node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - QString tag(e.tagName()); - if (tag == "part") { - Part* part = readPart(node); - if (part) - pl->add(part); - else - printf("part not found\n"); - } - else if (tag == "PianoRoll") { - PianoRoll* pianoroll = new PianoRoll(pl, true); -// connect(muse, SIGNAL(configChanged()), pianoroll, SLOT(configChanged())); - pianoroll->read(node); - pianoroll->show(); - pl = new PartList; - } - else if (tag == "DrumEdit") { - DrumEdit* drumEditor = new DrumEdit(pl, true); -// connect(muse, SIGNAL(configChanged()), drumEditor, SLOT(configChanged())); - drumEditor->read(node); - drumEditor->show(); - pl = new PartList; - } - else if (tag == "ListEdit") { - listEditor = new ListEdit(0); - listEditor->show(); - listEditor->read(node); - } - else if (tag == "MasterEdit") { - MasterEdit* masterEditor = new MasterEdit(); - masterEditor->show(); - masterEditor->read(node); - } - else if (tag == "MarkerView") { - showMarker(true); - markerView->read(node); - } - else if (tag == "WaveEdit") { - WaveEdit* waveEditor = new WaveEdit(pl, true); - waveEditor->read(node); - waveEditor->show(); - connect(muse, SIGNAL(configChanged()), waveEditor, SLOT(configChanged())); - pl = new PartList; - } - else - printf("MusE:readToplevels: unknown tag <%s>\n", e.tagName().toLatin1().data()); - } - delete pl; - } - -//--------------------------------------------------------- -// readMarker -//--------------------------------------------------------- - -void Song::readMarker(QDomNode node) - { - AL::Marker m; - m.read(node); - _markerList->add(m); - } - -//--------------------------------------------------------- -// read -//--------------------------------------------------------- - -void Song::read(QDomNode node) - { - cloneList.clear(); - for (; !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - QString tag(e.tagName()); - int i = e.text().toInt(); - if (tag == "configuration") - ; // readConfiguration(node.firstChild()); - else if (tag == "master") - setMasterFlag(i); - else if (tag == "loop") - setLoop(i); - else if (tag == "punchin") - setPunchin(i); - else if (tag == "punchout") - setPunchout(i); - else if (tag == "record") - ; // setRecord(i); - else if (tag == "solo") - soloFlag = i; - else if (tag == "recmode") - _recMode = i; - else if (tag == "cycle") - _cycleMode = i; - else if (tag == "click") - setClick(i); - else if (tag == "quantize") - _quantize = i; - else if (tag == "len") - _len = i; - else if (tag == "tempolist") - AL::tempomap.read(node); - else if (tag == "siglist") - AL::sigmap.read(node.firstChild()); - else if (tag == "miditrack") { - MidiTrack* track = new MidiTrack(); - track->read(node.firstChild()); - insertTrack0(track, -1); - } - else if (tag == "drumtrack") { - MidiTrack* track = new MidiTrack(); - //TODO track->setUseDrumMap(true); - track->read(node.firstChild()); - insertTrack0(track, -1); - } - else if (tag == "wavetrack") { - WaveTrack* track = new WaveTrack(); - track->read(node.firstChild()); - insertTrack0(track, -1); - } - else if (tag == "AudioInput") { - AudioInput* track = new AudioInput(); - track->read(node.firstChild()); - insertTrack0(track,-1); - } - else if (tag == "AudioOutput") { - AudioOutput* track = new AudioOutput(); - track->read(node.firstChild()); - insertTrack0(track,-1); - } - else if (tag == "AudioGroup") { - AudioGroup* track = new AudioGroup(); - track->read(node.firstChild()); - insertTrack0(track,-1); - } - else if (tag == "SynthI") { - SynthI* track = new SynthI(); - track->read(node.firstChild()); - // insertTrack(track, -1); - } - else if (tag == "MidiOutPort") { - MidiOutPort* track = new MidiOutPort(); - track->read(node.firstChild()); - insertTrack0(track, -1); - } - else if (tag == "MidiInPort") { - MidiInPort* track = new MidiInPort(); - track->read(node.firstChild()); - insertTrack0(track, -1); - } - else if (tag == "MidiSynti") { - MidiSynti* track = new MidiSynti(); - track->read(node.firstChild()); - // insertTrack0(track, -1); - } - else if (tag == "arranger") - muse->arranger->readStatus(node.firstChild()); - else if (tag == "Route") - readRoute(node); - else if (tag == "marker") - readMarker(node); - else if (tag == "globalPitchShift") - _globalPitchShift = i; - else if (tag == "cpos") { - int pos = i; - Pos p(pos, AL::TICKS); - setPos(Song::CPOS, p, false, false, false); - } - else if (tag == "lpos") { - int pos = i; - Pos p(pos, AL::TICKS); - setPos(Song::LPOS, p, false, false, false); - } - else if (tag == "rpos") { - int pos = i; - Pos p(pos, AL::TICKS); - setPos(Song::RPOS, p, false, false, false); - } - else if (tag == "Pianoroll") - PianoRoll::readConfiguration(node); - else if (tag == "DrumEdit") - DrumEdit::readConfiguration(node); - else if (tag == "comment") - _comment = e.text(); - else if (tag == "createDate") - _createDate = QDateTime::fromString(e.text(), Qt::ISODate); - else if (tag == "LenInSec") - ; - else - printf("MusE:Song: unknown tag %s\n", tag.toLatin1().data()); - } - dirty = false; - } - -//--------------------------------------------------------- -// write -//--------------------------------------------------------- - -void Song::write(Xml& xml) const - { - xml.stag("song"); - xml.tag("comment", _comment); - xml.tag("createDate", _createDate.toString(Qt::ISODate)); - int n = AL::tempomap.tick2frame(_len); - xml.tag("LenInSec", n / AL::sampleRate); - - xml.tag("cpos", cpos()); - xml.tag("rpos", rpos()); - xml.tag("lpos", lpos()); - xml.tag("master", _masterFlag); - if (loopFlag) - xml.tag("loop", loopFlag); - if (punchinFlag) - xml.tag("punchin", punchinFlag); - if (punchoutFlag) - xml.tag("punchout", punchoutFlag); - if (soloFlag) - xml.tag("solo", soloFlag); - if (_recMode != REC_OVERDUP) - xml.tag("recmode", _recMode); - if (_cycleMode != CYCLE_NORMAL) - xml.tag("cycle", _cycleMode); - if (_click) - xml.tag("click", _click); - if (_quantize) - xml.tag("quantize", _quantize); - xml.tag("len", _len); - - if (_globalPitchShift) - xml.tag("globalPitchShift", _globalPitchShift); - - cloneList.clear(); - - // write tracks - for (ciTrack i = _tracks.begin(); i != _tracks.end(); ++i) - (*i)->write(xml); - - // write routing - for (ciTrack i = _tracks.begin(); i != _tracks.end(); ++i) - (*i)->writeRouting(xml); - muse->arranger->writeStatus(xml); - - AL::tempomap.write(xml); - AL::sigmap.write(xml); - _markerList->write(xml); - - xml.etag("song"); - } - -//--------------------------------------------------------- -// write -// write song -//--------------------------------------------------------- - -void MusE::write(Xml& xml) const - { - xml.header(); - - xml.stag("muse version=\"3.0\""); - writeConfiguration(xml); - - song->write(xml); - - xml.stag("toplevels"); - foreach(QWidget* w, QApplication::topLevelWidgets()) { - if (!w->isVisible()) - continue; - if (strcmp("DrumEdit", w->metaObject()->className()) == 0) - ((TopWin*)w)->write(xml); - else if (strcmp("PianoRoll", w->metaObject()->className()) == 0) - ((TopWin*)w)->write(xml); - else if (strcmp("MasterEdit", w->metaObject()->className()) == 0) - ((TopWin*)w)->write(xml); - else if (strcmp("WaveEdit", w->metaObject()->className()) == 0) - ((TopWin*)w)->write(xml); - else if (strcmp("ListEdit", w->metaObject()->className()) == 0) - ((TopWin*)w)->write(xml); - else if (strcmp("MarkerView", w->metaObject()->className()) == 0) - ((TopWin*)w)->write(xml); - else if (strcmp("Mixer", w->metaObject()->className()) == 0) - ; - else if (strcmp("Transport", w->metaObject()->className()) == 0) - ; - else if (strcmp("MusE", w->metaObject()->className()) == 0) - ; - else if (strcmp("QDesktopWidget", w->metaObject()->className()) == 0) - ; - else - printf("TopLevel <%s>\n", w->metaObject()->className()); - } - xml.etag("toplevels"); - xml.etag("muse"); - } - -//--------------------------------------------------------- -// read20 -// read old file versions (muse < 1.0) -//--------------------------------------------------------- - -void Song::read20(QDomNode node) - { - printf("Warning: importing old muse file version\n"); - - for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) { - QDomElement e = n.toElement(); - if (e.isNull()) - continue; - QString t(e.tagName()); - if (t == "configuration") - readConfiguration(node.firstChild()); - else if (t == "song") { - for (QDomNode n1 = n.firstChild(); !n1.isNull(); n1 = n1.nextSibling()) { - QDomElement e = n1.toElement(); - if (e.isNull()) - continue; - QString t(e.tagName()); - int i = e.text().toInt(); - if (t == "automation") - ; - else if (t == "cpos") { - int pos = i; - Pos p(pos, AL::TICKS); - setPos(Song::CPOS, p, false, false, false); - } - else if (t == "rpos") { - int pos = i; - Pos p(pos, AL::TICKS); - setPos(Song::RPOS, p, false, false, false); - } - else if (t == "lpos") { - int pos = i; - Pos p(pos, AL::TICKS); - setPos(Song::LPOS, p, false, false, false); - } - else if (t == "master") - setMasterFlag(i); - else if (t == "loop") - setLoop(i); - else if (t == "punchin") - setPunchin(i); - else if (t == "punchout") - setPunchout(i); - else if (t == "record") - ; - else if (t == "solo") - soloFlag = i; - else if (t == "type") - ; - else if (t == "recmode") - _recMode = i; - else if (t == "cycle") - _cycleMode = i; - else if (t == "click") - setClick(i); - else if (t == "quantize") - _quantize = i; - else if (t == "len") - _len = i; - else if (t == "follow") - ; - else if (t == "drummap") - ; - else if (t == "siglist") - AL::sigmap.read(node.firstChild()); - else if (t == "tempolist") - AL::tempomap.read(node); - else if (t == "Route") - ; - else if (t == "AudioAux") { - AudioGroup* track = new AudioGroup(); - track->read(n1.firstChild()); - insertTrack0(track,-1); - } - else if (t == "AudioInput") { - AudioInput* track = new AudioInput(); - track->read(n1.firstChild()); - insertTrack0(track,-1); - } - else if (t == "AudioGroup") { - AudioGroup* track = new AudioGroup(); - track->read(n1.firstChild()); - insertTrack0(track,-1); - } - else if (t == "AudioOutput") { - AudioOutput* track = new AudioOutput(); - track->read(n1.firstChild()); - insertTrack0(track,-1); - } - else if (t == "wavetrack") { - MidiTrack* track = new MidiTrack(); - track->read(n1.firstChild()); - insertTrack0(track, -1); - } - else if (t == "drumtrack") { - MidiTrack* track = new MidiTrack(); - track->read(n1.firstChild()); - insertTrack0(track, -1); - } - else if (t == "miditrack") { - MidiTrack* track = new MidiTrack(); - track->read(n1.firstChild()); - insertTrack0(track, -1); - } - else - domError(n1); - } - } - else if (t == "toplevels") { - } - else - domError(n); - } - } - diff --git a/muse/muse/songpart.cpp b/muse/muse/songpart.cpp deleted file mode 100644 index 72faf7f8..00000000 --- a/muse/muse/songpart.cpp +++ /dev/null @@ -1,371 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "song.h" -#include "part.h" -#include "audio.h" - -//--------------------------------------------------------- -// cmdAddPart -// GUI context + startUndo/endUndo -//--------------------------------------------------------- - -void Song::cmdAddPart(Part* part) - { - Track* track = part->track(); - // - // create default name: - // - for (int i = 1;;++i) { - PartList* pl = track->parts(); - bool found = false; - QString name = QString("Part-%1").arg(i); - for (iPart ip = pl->begin(); ip != pl->end(); ++ip) { - if (name == ip->second->name()) { - found = true; - break; - } - } - if (!found) { - part->setName(name); - break; - } - } - startUndo(); - addPart(part); - endUndo(0); - track->partListChanged(); - } - -//--------------------------------------------------------- -// addPart -// GUI context -//--------------------------------------------------------- - -void Song::addPart(Part* part) - { - AudioMsg msg; - msg.id = SEQM_ADD_PART; - msg.p1 = part; - audio->sendMessage(&msg, false); - undoOp(UndoOp::AddPart, part); - updateFlags |= SC_PART_INSERTED; - if (len() < part->endTick()) - setLen(part->endTick()); - } - -//--------------------------------------------------------- -// cmdRemovePart -//--------------------------------------------------------- - -void Song::cmdRemovePart(Part* part) - { - startUndo(); - removePart(part); - endUndo(0); - } - -//--------------------------------------------------------- -// cmdRemoveParts -// remove selected parts -//--------------------------------------------------------- - -void Song::cmdRemoveParts() - { - TrackList* tl = song->tracks(); - PartList pl; - - for (iTrack it = tl->begin(); it != tl->end(); ++it) { - PartList* pl2 = (*it)->parts(); - for (iPart ip = pl2->begin(); ip != pl2->end(); ++ip) { - if (ip->second->selected()) - pl.add(ip->second); - } - } - startUndo(); - for (iPart ip = pl.begin(); ip != pl.end(); ++ip) - removePart(ip->second); - endUndo(0); - } - -//--------------------------------------------------------- -// removePart -//--------------------------------------------------------- - -void Song::removePart(Part* part) - { - AudioMsg msg; - msg.id = SEQM_REMOVE_PART; - msg.p1 = part; - audio->sendMessage(&msg, false); - undoOp(UndoOp::DeletePart, part); - updateFlags |= SC_PART_REMOVED; - part->deref(); - part->track()->partListChanged(); - } - -//--------------------------------------------------------- -// cmdChangePart -// realtime context -//--------------------------------------------------------- - -void Song::cmdChangePart(Part* oldPart, Part* newPart) - { - startUndo(); - changePart(oldPart, newPart); - endUndo(0); - newPart->track()->partListChanged(); - } - -//--------------------------------------------------------- -// changePart -//--------------------------------------------------------- - -void Song::changePart(Part* oldPart, Part* newPart) - { - AudioMsg msg; - msg.id = SEQM_CHANGE_PART; - msg.p1 = oldPart; - msg.p2 = newPart; - audio->sendMessage(&msg, false); - undoOp(UndoOp::ModifyPart, oldPart, newPart); - updateFlags = SC_PART_MODIFIED; - if (len() < newPart->endTick()) - setLen(newPart->endTick()); - } - -//--------------------------------------------------------- -// cmdChangePart -// extend/shrink part in front or at end -//--------------------------------------------------------- - -void Song::cmdChangePart(Part* oPart, unsigned pos, unsigned len) - { - startUndo(); - // - // move events so they stay at same position in song - // - int delta = oPart->tick() - pos; - Part* nPart = new Part(*oPart); - nPart->clone(new EventList); - - const EventList* s = oPart->events(); - for (ciEvent ie = s->begin(); ie != s->end(); ++ie) { - int tick = ie->first + delta; - if (tick >= 0 && tick < int(len)) { - Event ev = ie->second.clone(); - ev.move(delta); - nPart->addEvent(ev, unsigned(tick)); - } - } - if (oPart->fillLen() > 0 && len < (unsigned)oPart->fillLen()) - oPart->setFillLen(len); - if (oPart->lenTick() < len && oPart->fillLen() > 0) { - unsigned loop = oPart->fillLen(); - unsigned fillLen = len - oPart->lenTick(); - for (unsigned i = 0; i < fillLen / loop; ++i) { - int start = oPart->lenTick() + loop * i; - for (ciEvent ie = s->begin(); ie != s->end(); ++ie) { - if (ie->first >= loop) - break; - Event ev = ie->second.clone(); - ev.move(start); - nPart->addEvent(ev, ie->first + start); - } - } - } - nPart->setLenTick(len); - nPart->setTick(pos); - changePart(oPart, nPart); - endUndo(0); - oPart->track()->partListChanged(); - } - -//--------------------------------------------------------- -// cmdMovePart -//--------------------------------------------------------- - -void Song::cmdMovePart(Part* oPart, unsigned pos, Track* track) - { - Track* oTrack = oPart->track(); - Part* nPart = new Part(*oPart); - nPart->setTrack(track); - nPart->setTick(pos); - startUndo(); - if (oPart->track() != track) { - removePart(oPart); - addPart(nPart); - } - else { - changePart(oPart, nPart); - } - endUndo(0); - oTrack->partListChanged(); - } - -//--------------------------------------------------------- -// cmdLinkPart -//--------------------------------------------------------- - -void Song::cmdLinkPart(Part* sPart, unsigned pos, Track* track) - { - Part* dPart = track->newPart(sPart, true); - dPart->setTick(pos); - cmdAddPart(dPart); - sPart->track()->partListChanged(); - dPart->track()->partListChanged(); - } - -//--------------------------------------------------------- -// cmdCopyPart -//--------------------------------------------------------- - -void Song::cmdCopyPart(Part* sPart, unsigned pos, Track* track) - { - bool clone = sPart->isClone(); - Part* dPart = track->newPart(sPart, clone); - dPart->setTick(pos); - if (!clone) { - // - // Copy Events - // - EventList* se = sPart->events(); - EventList* de = dPart->events(); - for (iEvent i = se->begin(); i != se->end(); ++i) { - Event oldEvent = i->second; - Event ev = oldEvent.clone(); - de->add(ev); - } - } - cmdAddPart(dPart); - sPart->track()->partListChanged(); - dPart->track()->partListChanged(); - } - -//--------------------------------------------------------- -// cmdCreateLRPart -//--------------------------------------------------------- - -void Song::cmdCreateLRPart(Track* track) - { - Part* part = track->newPart(); - if (part) { - part->setTick(pos[1].tick()); - part->setLenTick(pos[2].tick()-pos[1].tick()); - part->setSelected(true); - cmdAddPart(part); - } - } - -//--------------------------------------------------------- -// selectPart -//--------------------------------------------------------- - -void Song::selectPart(Part* part, bool add) - { - if (add) { - part->setSelected(!part->selected()); - part->track()->partListChanged(); - return; - } - for (iTrack it = _tracks.begin(); it != _tracks.end(); ++it) { - PartList* pl = (*it)->parts(); - bool changed = false; - for (iPart ip = pl->begin(); ip != pl->end(); ++ip) { - bool f = part == ip->second; - if (ip->second->selected() != f) { - ip->second->setSelected(f); - changed = true; - } - } - if (changed) - (*it)->partListChanged(); - } - } - -//--------------------------------------------------------- -// cmdSplitPart -//--------------------------------------------------------- - -void Song::cmdSplitPart(Part* part, const Pos& pos) - { - int tick = pos.tick(); - int l1 = tick - part->tick(); - int l2 = part->lenTick() - l1; - if (l1 <= 0 || l2 <= 0) - return; - Part* p1; - Part* p2; - part->track()->splitPart(part, tick, p1, p2); - - startUndo(); - changePart(part, p1); - addPart(p2); - endUndo(0); - part->track()->partListChanged(); - } - -//--------------------------------------------------------- -// cmdGluePart -//--------------------------------------------------------- - -void Song::cmdGluePart(Part* oPart) - { - Track* track = oPart->track(); - PartList* pl = track->parts(); - Part* nextPart = 0; - - for (iPart ip = pl->begin(); ip != pl->end(); ++ip) { - if (ip->second == oPart) { - ++ip; - if (ip == pl->end()) - return; - nextPart = ip->second; - break; - } - } - - Part* nPart = track->newPart(oPart); - nPart->setLenTick(nextPart->tick() + nextPart->lenTick() - oPart->tick()); - - // populate nPart with Events from oPart and nextPart - - EventList* sl1 = oPart->events(); - EventList* dl = nPart->events(); - - for (iEvent ie = sl1->begin(); ie != sl1->end(); ++ie) - dl->add(ie->second); - - EventList* sl2 = nextPart->events(); - int tickOffset = nextPart->tick() - oPart->tick(); - - for (iEvent ie = sl2->begin(); ie != sl2->end(); ++ie) { - Event event = ie->second.clone(); - event.move(tickOffset); - dl->add(event); - } - startUndo(); - removePart(nextPart); - changePart(oPart, nPart); - endUndo(0); - track->partListChanged(); - } - - diff --git a/muse/muse/songtrack.cpp b/muse/muse/songtrack.cpp deleted file mode 100644 index 8a865620..00000000 --- a/muse/muse/songtrack.cpp +++ /dev/null @@ -1,715 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "song.h" -#include "audio.h" -#include "midiplugin.h" -#include "audiodev.h" -#include "muse.h" - -//--------------------------------------------------------- -// deselectTracks -//--------------------------------------------------------- - -void Song::deselectTracks() - { - for (iTrack t = _tracks.begin(); t != _tracks.end(); ++t) - (*t)->setSelected(false); - } - -//--------------------------------------------------------- -// selectTrack -//--------------------------------------------------------- - -void Song::selectTrack(Track* track) - { - bool changed = false; - for (iTrack t = _tracks.begin(); t != _tracks.end(); ++t) { - bool select = *t == track; - if ((*t)->selected() != select) { - (*t)->setSelected(select); - changed = true; - } - } - if (changed) { - updateSelectedTrack(); - trackSelectionChanged(_selectedTrack); - } - } - -//--------------------------------------------------------- -// updateSelectedTrack -// set _selectedTrack to first selected track -//--------------------------------------------------------- - -void Song::updateSelectedTrack() - { - _selectedTrack = 0; - for (iTrack t = _tracks.begin(); t != _tracks.end(); ++t) { - bool select = (*t)->selected(); - if (select) { - _selectedTrack = *t; - break; - } - } - } - -//--------------------------------------------------------- -// addTrack -// called from GUI context -//--------------------------------------------------------- - -Track* Song::addTrack(QAction* action) - { - int t = action->data().toInt(); - - deselectTracks(); - Track* track = 0; - - Track::TrackType type = (Track::TrackType) t; - if (t >= 5000) { - int idx = t - 5000; - type = Track::MIDI_SYNTI; - int k = 0; - iMidiPlugin i; - for (i = midiPlugins.begin(); i != midiPlugins.end(); ++i) { - if ((*i)->type() != MEMPI_GENERATOR) - continue; - if (k == idx) - break; - ++k; - } - if (i == midiPlugins.end()) { - fprintf(stderr, "Song::addTrack: midi synti not found\n"); - return 0; - } - MidiPlugin* s = *i; - MidiSynti* si = new MidiSynti(); - QString sName(s->name()); - for (k = s->instances(); k < 1000; ++k) { - QString instanceName = (k == 0) ? - sName : instanceName.arg(sName).arg(k); - - MidiSyntiList* sl = midiSyntis(); - iMidiSynti sii; - for (sii = sl->begin(); sii != sl->end(); ++sii) { - if ((*sii)->name() == instanceName) - break; - } - if (sii == sl->end()) { - si->setName(instanceName); - break; - } - } - if (si->initInstance(s)) { - delete si; - return 0; - } - track = si; - } - else if (t >= 1000) { - type = Track::AUDIO_SOFTSYNTH; - QString sclass = synthis[t-1000]->name(); - - Synth* s = findSynth(sclass); - if (s == 0) { - fprintf(stderr, "synthi class <%s> not found\n", sclass.toLatin1().data()); - return 0; - } - - SynthI* si = new SynthI(); - int i; - for (i = s->instances(); i < 1000; ++i) { - QString instanceName = (i == 0) ? - s->name() : QString("%1-%2").arg(s->name()).arg(i); - - SynthIList* sl = syntis(); - iSynthI sii; - for (sii = sl->begin(); sii != sl->end(); ++sii) { - if ((*sii)->name() == instanceName) - break; - } - if (sii == sl->end()) { - si->setName(instanceName); - break; - } - } - if (si->initInstance(s)) { - delete si; - return 0; - } - track = si; - } - else { - switch (type) { - case Track::MIDI: - track = new MidiTrack(); - break; - case Track::MIDI_OUT: - track = new MidiOutPort(); - break; - case Track::MIDI_IN: - track = new MidiInPort(); - break; - case Track::WAVE: - track = new WaveTrack(); - break; - case Track::AUDIO_OUTPUT: - track = new AudioOutput(); - break; - case Track::AUDIO_GROUP: - track = new AudioGroup(); - break; - case Track::AUDIO_INPUT: - track = new AudioInput(); - break; - case Track::AUDIO_SOFTSYNTH: - case Track::TRACK_TYPES: - default: - printf("Song::addTrack() illegal type %d\n", type); - abort(); - } - if (track == 0) - return 0; - } - track->setDefaultName(); - cmdInsertTrack(track, -1); - return track; - } - -//--------------------------------------------------------- -// cmdInsertTrack -//--------------------------------------------------------- - -void Song::cmdInsertTrack(Track* track, int idx) - { - startUndo(); - insertTrack(track, idx); - endUndo(SC_TRACK_INSERTED | SC_ROUTE); - selectTrack(track); - } - -//--------------------------------------------------------- -// insertTrack -//--------------------------------------------------------- - -void Song::insertTrack(Track* track, int idx) - { - // - // add default routes - // - OutputList* ol = outputs(); - AudioOutput* ao = 0; - if (!ol->empty()) - ao = ol->front(); - - switch (track->type()) { - case Track::TRACK_TYPES: - case Track::MIDI_OUT: - { -#if 0 - QList op = midiDriver->outputPorts(false); - if (!op.isEmpty()) { - RouteNode src(track); - RouteNode dst(op.back().port, -1, RouteNode::MIDIPORT); - Route r = Route(src, dst); - track->addOutRoute(r); - } -#endif - //TODO: autoconnect to JACK midi ports - } - break; - - case Track::MIDI_IN: - { -#if 0 - QList op = midiDriver->inputPorts(true); - if (!op.isEmpty()) { - RouteNode src(op.back().port, -1, RouteNode::MIDIPORT); - RouteNode dst(track); - Route r = Route(src, dst); - track->addInRoute(r); - } -#endif - //TODO: autoconnect to JACK midi ports - } - break; - - case Track::MIDI_SYNTI: - break; - case Track::MIDI: - // - // connect to first channel of all all midi input ports, - // if there is not already a route - // - if (track->noInRoute()) { - MidiInPortList* mi = midiInPorts(); - RouteNode dst(track); - for (iMidiInPort i = mi->begin(); i != mi->end(); ++i) { - RouteNode src(*i, 0, RouteNode::TRACK); - track->addInRoute(Route(src, dst)); - } - } - // - // connect to first free input channel in midi output ports - // - if (track->noOutRoute()) { - MidiOutPortList* mo = midiOutPorts(); - for (iMidiOutPort i = mo->begin(); i != mo->end(); ++i) { - RouteList* rl = (*i)->inRoutes(); - for (int ch = 0; ch < MIDI_CHANNELS; ++ch) { - RouteNode src(track); - RouteNode dst(*i, ch, RouteNode::TRACK); - Route r(src, dst); - bool channelUsed = false; - for (iRoute ir = rl->begin(); ir != rl->end(); ++ir) { - if (ir->dst.channel == ch) { - channelUsed = true; - break; - } - } - if (!channelUsed) { - track->addOutRoute(r); - break; - } - } - if (!track->noOutRoute()) - break; - } - } - break; - case Track::AUDIO_SOFTSYNTH: - case Track::WAVE: - case Track::AUDIO_GROUP: - if (ao) - track->addOutRoute(Route(RouteNode(track), RouteNode(ao))); - break; - - case Track::AUDIO_INPUT: - { - // connect first input channel to first available jack output - // etc. - QList op = audioDriver->outputPorts(false); - QList::iterator is = op.begin(); - for (int ch = 0; ch < track->channels(); ++ch) { - if (is != op.end()) { - RouteNode src(is->port, -1, RouteNode::AUDIOPORT); - RouteNode dst(track, ch, RouteNode::TRACK); - Route r = Route(src, dst); - track->addInRoute(r); - ++is; - } - } - } - break; - case Track::AUDIO_OUTPUT: - { - QList op = audioDriver->inputPorts(false); - QList::iterator is = op.begin(); - for (int ch = 0; ch < track->channels(); ++ch) { - if (is != op.end()) { - RouteNode src(track, ch, RouteNode::TRACK); - RouteNode dst(is->port, -1, RouteNode::AUDIOPORT); - Route r = Route(src, dst); - track->addOutRoute(r); - ++is; - } - } - } - break; - } - insertTrack1(track, idx); - - undoOp(UndoOp::AddTrack, idx, track); - AudioMsg msg; - msg.id = SEQM_ADD_TRACK; - msg.track = track; - msg.ival = idx; - audio->sendMsg(&msg); - emit trackAdded(track, idx); - } - -//--------------------------------------------------------- -// insertTrack0 -// can only be called if sequencer is idle -// (during song load) -//--------------------------------------------------------- - -void Song::insertTrack0(Track* track, int idx) - { - insertTrack1(track, idx); - insertTrack2(track); - } - -//--------------------------------------------------------- -// insertTrack1 -// non realtime part of insertTrack -//--------------------------------------------------------- - -void Song::insertTrack1(Track* track, int idx) - { - if (idx == -1) - idx = _tracks.size(); - _tracks.insert(idx, track); - if (track->type() == Track::AUDIO_SOFTSYNTH) { - SynthI* s = (SynthI*)track; - Synth* sy = s->synth(); - if (!s->isActivated()) - s->initInstance(sy); - } - if (audioState == AUDIO_RUNNING) { - track->activate1(); - track->activate2(); - } - } - -//--------------------------------------------------------- -// insertTrack2 -// realtime part -//--------------------------------------------------------- - -void Song::insertTrack2(Track* track) - { - switch(track->type()) { - case Track::MIDI_SYNTI: - _midiSyntis.push_back((MidiSynti*)track); - break; - case Track::MIDI: - _midis.push_back((MidiTrack*)track); - break; - case Track::MIDI_OUT: - _midiOutPorts.push_back((MidiOutPort*)track); - break; - case Track::MIDI_IN: - _midiInPorts.push_back((MidiInPort*)track); - break; - case Track::WAVE: - _waves.push_back((WaveTrack*)track); - break; - case Track::AUDIO_OUTPUT: - _outputs.push_back((AudioOutput*)track); - break; - case Track::AUDIO_GROUP: - _groups.push_back((AudioGroup*)track); - break; - case Track::AUDIO_INPUT: - _inputs.push_back((AudioInput*)track); - break; - case Track::AUDIO_SOFTSYNTH: - { - SynthI* s = (SynthI*)track; - midiInstruments.push_back(s->instrument()); - _synthIs.push_back(s); - } - break; - default: - fprintf(stderr, "insertTrack2: unknown track type %d\n", track->type()); - // abort(); - return; - } - - // - // connect routes - // - if (track->type() == Track::AUDIO_OUTPUT || track->type() == Track::MIDI_OUT) { - foreach(Route r, *(track->inRoutes())) { - if (r.src.type != RouteNode::AUXPLUGIN) { - r.src.track->addOutRoute(r); - } - } - } - else if (track->type() == Track::AUDIO_INPUT || track->type() == Track::MIDI_IN) { - foreach(Route r, *(track->outRoutes())) { - if (r.dst.type != RouteNode::AUXPLUGIN) { - r.dst.track->addInRoute(r); - } - } - } - else { - foreach(Route r, *(track->inRoutes())) { - if (r.src.type != RouteNode::AUXPLUGIN) { - r.src.track->addOutRoute(r); - } - } - foreach(Route r, *(track->outRoutes())) { - if (r.dst.type != RouteNode::AUXPLUGIN) { - r.dst.track->addInRoute(r); - } - } - } - } - -//--------------------------------------------------------- -// removeTrack -// called from gui context -//--------------------------------------------------------- - -void Song::removeTrack(Track* track) - { - startUndo(); - int idx = _tracks.indexOf(track); - undoOp(UndoOp::DeleteTrack, idx, track); - removeTrack1(track); - audio->msgRemoveTrack(track); - removeTrack3(track); - endUndo(SC_TRACK_REMOVED | SC_ROUTE); - } - -//--------------------------------------------------------- -// removeTrack1 -// non realtime part of removeTrack -//--------------------------------------------------------- - -void Song::removeTrack1(Track* track) - { - track->deactivate(); - _tracks.removeAt(_tracks.indexOf(track)); - } - -//--------------------------------------------------------- -// removeTrack2 -// called from RT context -//--------------------------------------------------------- - -void Song::removeTrack2(Track* track) - { - switch (track->type()) { - case Track::MIDI_SYNTI: - _midiSyntis.removeAt(_midiSyntis.indexOf((MidiSynti*)track)); - break; - case Track::MIDI: - _midis.removeAt(_midis.indexOf((MidiTrack*)track)); - break; - case Track::MIDI_OUT: - _midiOutPorts.removeAt(_midiOutPorts.indexOf((MidiOutPort*)track)); - break; - case Track::MIDI_IN: - _midiInPorts.removeAt(_midiInPorts.indexOf((MidiInPort*)track)); - break; - case Track::WAVE: - _waves.removeAt(_waves.indexOf((WaveTrack*)track)); - break; - case Track::AUDIO_OUTPUT: - _outputs.removeAt(_outputs.indexOf((AudioOutput*)track)); - break; - case Track::AUDIO_INPUT: - _inputs.removeAt(_inputs.indexOf((AudioInput*)track)); - break; - case Track::AUDIO_GROUP: - _groups.removeAt(_groups.indexOf((AudioGroup*)track)); - break; - case Track::AUDIO_SOFTSYNTH: - { - SynthI* s = (SynthI*) track; - s->deactivate2(); - _synthIs.removeAt(_synthIs.indexOf(s)); - } - break; - case Track::TRACK_TYPES: - return; - } - // - // remove routes - // - foreach (const Route r, *(track->inRoutes())) { - if (r.src.type != RouteNode::TRACK) - continue; - int idx = r.src.track->outRoutes()->indexOf(r); - if (idx != -1) - r.src.track->outRoutes()->removeAt(idx); - else - printf("Song::removeTrack2(): input route not found\n"); - } - foreach (const Route r, *(track->outRoutes())) { - if (r.dst.type != RouteNode::TRACK) - continue; - int idx = r.dst.track->inRoutes()->indexOf(r); - if (idx != -1) - r.dst.track->inRoutes()->removeAt(idx); - else { - printf("Song::removeTrack2(): output route not found\n"); - } - } - } - -//--------------------------------------------------------- -// removeTrack3 -// non realtime part of removeTrack -//--------------------------------------------------------- - -void Song::removeTrack3(Track* track) - { - if (track->type() == Track::AUDIO_SOFTSYNTH) { - SynthI* s = (SynthI*) track; - s->deactivate3(); - } - emit trackRemoved(track); - } - -//--------------------------------------------------------- -// synthesizer -//--------------------------------------------------------- - -std::vector* Song::synthesizer() const - { - std::vector* l = new std::vector; - - for (std::vector::const_iterator i = synthis.begin(); - i != synthis.end(); ++i) { - l->push_back((*i)->name()); - } - return l; - } - -//--------------------------------------------------------- -// setRecordFlag -//--------------------------------------------------------- - -void Song::setRecordFlag(Track* track, bool val) - { - if (track->type() == Track::AUDIO_OUTPUT) { - if (!val && track->recordFlag() == false) { - muse->bounceToFile(); - } - } - track->setRecordFlag(val); - } - -//--------------------------------------------------------- -// setMute -//--------------------------------------------------------- - -void Song::setMute(Track* track, bool val) - { - track->setMute(val); - emit muteChanged(track, track->mute()); - } - -//--------------------------------------------------------- -// setMonitor -//--------------------------------------------------------- - -void Song::setMonitor(Track* track, bool val) - { - track->setMonitor(val); -// emit monitorChanged(track, track->mute()); - } - -//--------------------------------------------------------- -// setOff -//--------------------------------------------------------- - -void Song::setOff(Track* track, bool val) - { - track->setOff(val); - emit offChanged(track, track->off()); - } - -//--------------------------------------------------------- -// setAutoRead -//--------------------------------------------------------- - -void Song::setAutoRead(Track* track, bool val) - { - track->setAutoRead(val); - emit autoReadChanged(track, track->autoRead()); - } - -//--------------------------------------------------------- -// setAutoWrite -//--------------------------------------------------------- - -void Song::setAutoWrite(Track* track, bool val) - { - track->setAutoWrite(val); - emit autoWriteChanged(track, track->autoRead()); - } - -//--------------------------------------------------------- -// setSolo -//--------------------------------------------------------- - -void Song::setSolo(Track* track, bool val) - { - if (!track->setSolo(val)) - return; - emit soloChanged(track, track->solo()); - soloFlag = false; - for (iTrack i = _tracks.begin(); i != _tracks.end(); ++i) { - if ((*i)->solo()) { - soloFlag = true; - break; - } - } - for (iTrack i = _tracks.begin(); i != _tracks.end(); ++i) { - (*i)->updateMute(); - } - } - -//--------------------------------------------------------- -// moveTrack -//--------------------------------------------------------- - -void Song::moveTrack(Track* src, Track* dst) - { - iTrack si = qFind(_tracks.begin(), _tracks.end(), src); - iTrack di = qFind(_tracks.begin(), _tracks.end(), dst); - if (si == _tracks.end() || di == _tracks.end()) { - printf("Song::moveTrack() track not found\n"); - return; - } - _tracks.erase(si); - _tracks.insert(di, src); - } - -//--------------------------------------------------------- -// changeTrackName -//--------------------------------------------------------- - -void Song::changeTrackName(Track* t, const QString& s) - { - startUndo(); - undoOp(UndoOp::RenameTrack, t, t->name(), s); - t->setName(s); - endUndo(SC_TRACK_MODIFIED); - } - -//--------------------------------------------------------- -// trackExists -//--------------------------------------------------------- - -bool Song::trackExists(Track* t) const - { - return findTrack(t->name()) != 0; - } - -//--------------------------------------------------------- -// findTrack -//--------------------------------------------------------- - -Track* Song::findTrack(const QString& name) const - { - for (int i = 0; i < _tracks.size(); ++i) { - if (_tracks[i]->name() == name) - return _tracks[i]; - } - return 0; - } - diff --git a/muse/muse/strip.cpp b/muse/muse/strip.cpp deleted file mode 100644 index 38519878..00000000 --- a/muse/muse/strip.cpp +++ /dev/null @@ -1,123 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "gconfig.h" -#include "song.h" -#include "strip.h" -#include "muse.h" -#include "widgets/simplebutton.h" -#include "widgets/utils.h" - -//--------------------------------------------------------- -// resetPeaks -//--------------------------------------------------------- - -void Strip::resetPeaks() - { - track->resetPeaks(); - } - -//--------------------------------------------------------- -// updateLabel -//--------------------------------------------------------- - -void Strip::updateLabel() - { - label->setText(track->name()); - label->setToolTip(track->name()); - } - -//--------------------------------------------------------- -// Strip -// create mixer strip -//--------------------------------------------------------- - -Strip::Strip(Mixer* m, Track* t, bool align) - : QFrame() - { - ar = 0; - aw = 0; - setAttribute(Qt::WA_DeleteOnClose, true); - mixer = m; - _align = align; - setFrameStyle(QFrame::Panel | QFrame::Raised); - setLineWidth(2); - - track = t; - grid = new QGridLayout; - grid->setMargin(0); - grid->setSpacing(0); - setLayout(grid); - - //--------------------------------------------- - // label - //--------------------------------------------- - - label = new QLabel; - label->setObjectName(track->cname()); - label->setFixedHeight(LABEL_HEIGHT); - label->setTextFormat(Qt::PlainText); - label->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); - label->setLineWidth(2); - label->setFrameStyle(QFrame::Sunken | QFrame::StyledPanel); - updateLabel(); - grid->addWidget(label, 0, 0, 1, 2); - connect(muse, SIGNAL(configChanged()), SLOT(configChanged())); - connect(track, SIGNAL(controllerChanged(int)), SLOT(controllerChanged(int))); - } - -//--------------------------------------------------------- -// Strip -//--------------------------------------------------------- - -Strip::~Strip() - { - } - -//--------------------------------------------------------- -// configChanged -//--------------------------------------------------------- - -void Strip::configChanged() - { - updateLabel(); - } - -//--------------------------------------------------------- -// addAutomationButtons -//--------------------------------------------------------- - -void Strip::addAutomationButtons(int row) - { - ar = newAutoReadButton(); - ar->setFixedHeight(BUTTON_HEIGHT); - ar->setChecked(track->autoRead()); - grid->addWidget(ar, row, 0); - aw = newAutoWriteButton(); - aw->setFixedHeight(BUTTON_HEIGHT); - aw->setChecked(track->autoWrite()); - grid->addWidget(aw, row, 1); - connect(ar, SIGNAL(clicked(bool)), SLOT(autoReadToggled(bool))); - connect(aw, SIGNAL(clicked(bool)), SLOT(autoWriteToggled(bool))); - connect(track, SIGNAL(autoReadChanged(bool)), ar, SLOT(setChecked(bool))); - connect(track, SIGNAL(autoWriteChanged(bool)), aw, SLOT(setChecked(bool))); - } - - diff --git a/muse/muse/strip.h b/muse/muse/strip.h deleted file mode 100644 index 1e5f7bd4..00000000 --- a/muse/muse/strip.h +++ /dev/null @@ -1,75 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __STRIP_H__ -#define __STRIP_H__ - -#include "globaldefs.h" -#include "gui.h" - -class Track; -class Meter; -class SimpleButton; -class Mixer; - -static const QSize entrySize(STRIP_WIDTH/2-2, ENTRY_HEIGHT); - -//--------------------------------------------------------- -// Strip -//--------------------------------------------------------- - -class Strip : public QFrame { - Q_OBJECT - - protected: - Mixer* mixer; - Track* track; - QLabel* label; - QGridLayout* grid; - - SimpleButton* solo; - SimpleButton* mute; - SimpleButton* ar; - SimpleButton* aw; - - void updateLabel(); - bool _align; // align elements for mixer app - - void recordToggled(bool); - void addAutomationButtons(int row); - void addMidiInPorts(QMenu* menu, Track* dtrack, int channel); - void addMidiOutPorts(QMenu* menu, Track* strack, int channel); - - public slots: - void resetPeaks(); - virtual void songChanged(int) = 0; - virtual void controllerChanged(int) {} - void configChanged(); - - public: - Strip(Mixer* m, Track* t, bool align); - ~Strip(); - Track* getTrack() const { return track; } - virtual void heartBeat() = 0; - virtual QSize sizeHint() const { return QSize(STRIP_WIDTH, 80); } - }; - -#endif - diff --git a/muse/muse/style.qss b/muse/muse/style.qss deleted file mode 100644 index b62122c5..00000000 --- a/muse/muse/style.qss +++ /dev/null @@ -1,66 +0,0 @@ -/* - * this is the MusE application style sheet - */ - -QLabel#midiChannelLabel { font-size: 6pt } -MidiRack, EffectRack { font-size: 8pt } -QLabel#trackLabel { font-size: 6pt } -SimpleButton { font-size: 8pt } -QToolButton#routeButton { font-size: 8pt } -QToolButton#preButton { font-size: 8pt } - -TimeCanvas { - qproperty-fontSize1: 6; - qproperty-fontSize2: 8; - qproperty-fontSize3: 8 - } - -QLabel#knobLabel { font-size: 8pt } -Awl--MidiVolEntry { font-size: 5pt } -Awl--MidiPanEntry { font-size: 5pt } -Awl--VolEntry { font-size: 5pt } -Awl--PanEntry { font-size: 5pt } - -QLabel#AudioOut { - font-size: 7pt; - background-color: white; - } - -QLabel#Group { - font-size: 7pt; - background-color: yellow; - } - -QLabel#Wave { - font-size: 7pt; - background-color: rgb(0,255,0); - } - -QLabel#AudioIn { - font-size: 7pt; - background-color: red; - } - -QLabel#Synth { - font-size: 7pt; - background-color: blue; - } - -QLabel#Midi { - font-size: 7pt; - background-color: gray; - } - -QLabel#MidiOut { - font-size: 7pt; - background-color: gray; - } - -QLabel#MidiIn { - font-size: 7pt; - background-color: gray; - } -QLabel#M-Synth { - font-size: 7pt; - background-color: gray; - } diff --git a/muse/muse/sync.cpp b/muse/muse/sync.cpp deleted file mode 100644 index c4cb30fc..00000000 --- a/muse/muse/sync.cpp +++ /dev/null @@ -1,499 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "sync.h" -#include "song.h" -#include "widgets/utils.h" -#include "globals.h" -#include "audio.h" -#include "audiodev.h" -#include "gconfig.h" -#include "al/tempo.h" -#include "al/al.h" - -int rxSyncPort = -1; // receive from all ports -int txSyncPort = 1; - -bool debugSync = false; -MTC mtcOffset; -bool extSyncFlag = false; -bool genMTCSync = false; // output MTC Sync -bool genMCSync = false; // output MidiClock Sync -bool genMMC = false; // output Midi Machine Control -bool acceptMTC = false; -bool acceptMC = true; -bool acceptMMC = true; - -static MTC mtcCurTime; -// static int mtcState; // 0-7 next expected quarter message -// static bool mtcValid; -// static int mtcLost; -// static bool mtcSync; // receive complete mtc frame? - -//static bool mcStart = false; -//static int mcStartTick; - -enum { - MMC_STOP = 1, - MMC_PLAY = 2, - MMC_DEFERRED_PLAY = 3, - MMC_FAST_FORWARD = 4, - MMC_REWIND = 5, - MMC_RECORD_STROBE = 6, // Punch In - MMC_RECORD_EXIT = 7, // Punch Out - MMC_PAUSE = 9, - MMC_RESET = 13, - MMC_GOTO = 0x44 - }; - -#if 0 -//--------------------------------------------------------- -// mmcInput -// Midi Machine Control Input received -//--------------------------------------------------------- - -void MidiSeq::mmcInput(int id, int cmd, const Pos& pos) - { -#if 0 - int rxDeviceId = 127; - - if (!extSyncFlag || !acceptMMC || (id != 127 && id != rxDeviceId)) - return; - - if (debugMsg) - printf("mmcInput: id %d cmd %02x %02x\n", id, cmd, cmd); - - switch (cmd) { - case MMC_STOP: - if (debugSync) - printf(" MMC: STOP\n"); - if (audio->isPlaying()) - audioDriver->stopTransport(); - else - // reset REC - audio->sendMsgToGui(MSG_STOP); - break; - case MMC_PLAY: - case MMC_DEFERRED_PLAY: - audioDriver->startTransport(); - break; - case MMC_FAST_FORWARD: - printf("MMC: FF not implemented\n"); - break; - case MMC_REWIND: - printf("MMC: REWIND not implemented\n"); - break; - case MMC_RECORD_STROBE: - printf("MMC: REC STROBE not implemented\n"); - break; - case MMC_RECORD_EXIT: - printf("MMC: REC EXIT not implemented\n"); - break; - case MMC_PAUSE: - audio->sendMsgToGui(MSG_RECORD); - break; - case MMC_RESET: - printf("MMC: RESET not implemented\n"); - break; - - case MMC_GOTO: - audioDriver->seekTransport(pos.frame()); - break; - - default: - printf("MMC id %x cmd %x, unknown\n", id, cmd); - break; - } -#endif - } - -//--------------------------------------------------------- -// mtcInputQuarter -// process Quarter Frame Message -//--------------------------------------------------------- - -void MidiSeq::mtcInputQuarter(int, unsigned char c) - { -#if 0 - static int hour, min, sec, frame; - - if (!extSyncFlag) - return; - - int valL = c & 0xf; - int valH = valL << 4; - - int _state = (c & 0x70) >> 4; - if (mtcState != _state) - mtcLost += _state - mtcState; - mtcState = _state + 1; - - switch(_state) { - case 7: - hour = (hour & 0x0f) | valH; - break; - case 6: - hour = (hour & 0xf0) | valL; - break; - case 5: - min = (min & 0x0f) | valH; - break; - case 4: - min = (min & 0xf0) | valL; - break; - case 3: - sec = (sec & 0x0f) | valH; - break; - case 2: - sec = (sec & 0xf0) | valL; - break; - case 1: - frame = (frame & 0x0f) | valH; - break; - case 0: frame = (frame & 0xf0) | valL; - break; - } - frame &= 0x1f; // 0-29 - sec &= 0x3f; // 0-59 - min &= 0x3f; // 0-59 - hour &= 0x1f; - - if (mtcState == 8) { - mtcValid = (mtcLost == 0); - mtcState = 0; - mtcLost = 0; - if (mtcValid) { - mtcCurTime.set(hour, min, sec, frame); - mtcSyncMsg(mtcCurTime, !mtcSync); - mtcSync = true; - } - } - else if (mtcValid && (mtcLost == 0)) { - mtcCurTime.incQuarter(); - mtcSyncMsg(mtcCurTime, false); - } -#endif - } - -//--------------------------------------------------------- -// mtcInputFull -// process Frame Message -//--------------------------------------------------------- - -void MidiSeq::mtcInputFull(const unsigned char* p, int n) - { -#if 0 - if (debugSync) - printf("mtcInputFull\n"); - if (!extSyncFlag) - return; - - if (p[3] != 1) { - if (p[3] != 2) { // silently ignore user bits - printf("unknown mtc msg subtype 0x%02x\n", p[3]); - dump(p, n); - } - return; - } - int hour = p[4]; - int min = p[5]; - int sec = p[6]; - int frame = p[7]; - - frame &= 0x1f; // 0-29 - sec &= 0x3f; // 0-59 - min &= 0x3f; // 0-59 -// int type = (hour >> 5) & 3; - hour &= 0x1f; - - mtcCurTime.set(hour, min, sec, frame); - mtcState = 0; - mtcValid = true; - mtcLost = 0; -#endif - } - -//--------------------------------------------------------- -// nonRealtimeSystemSysex -//--------------------------------------------------------- - -void MidiSeq::nonRealtimeSystemSysex(const unsigned char* p, int n) - { -#if 0 -// int chan = p[2]; - switch(p[3]) { - case 4: - printf("NRT Setup\n"); - break; - default: - printf("unknown NRT Msg 0x%02x\n", p[3]); - dump(p, n); - break; - } -#endif - } - -//--------------------------------------------------------- -// setSongPosition -// MidiBeat is a 14 Bit value. Each MidiBeat spans -// 6 MIDI Clocks. Inother words, each MIDI Beat is a -// 16th note (since there are 24 MIDI Clocks in a -// quarter note). -//--------------------------------------------------------- - -void MidiSeq::setSongPosition(int port, int midiBeat) - { -#if 0 - if (midiInputTrace) - printf("set song position port:%d %d\n", port, midiBeat); - if (!extSyncFlag) - return; - Pos pos((config.division * midiBeat) / 4, AL::TICKS); - audioDriver->seekTransport(pos.frame()); - if (debugSync) - printf("setSongPosition %d\n", pos.tick()); -#endif - } - -//--------------------------------------------------------- -// realtimeSystemInput -// real time message received -//--------------------------------------------------------- - -void MidiSeq::realtimeSystemInput(int port, int c) - { -#if 0 - if (midiInputTrace) - printf("realtimeSystemInput port:%d 0x%x\n", port+1, c); - - if (midiInputTrace && (rxSyncPort != port) && rxSyncPort != -1) { - if (debugSync) - printf("rxSyncPort configured as %d; received sync from port %d\n", - rxSyncPort, port); - return; - } - if (!extSyncFlag) - return; - switch(c) { - case 0xf8: // midi clock (24 ticks / quarter note) - { - double mclock0 = curTime(); - // Difference in time last 2 rounds: - double tdiff0 = mclock0 - mclock1; - double tdiff1 = mclock1 - mclock2; - double averagetimediff = 0.0; - - if (mclock1 != 0.0) { - if (storedtimediffs < 24) - { - timediff[storedtimediffs] = mclock0 - mclock1; - storedtimediffs++; - } - else { - for (int i=0; i<23; i++) { - timediff[i] = timediff[i+1]; - } - timediff[23] = mclock0 - mclock1; - } - // Calculate average timediff: - for (int i=0; i < storedtimediffs; i++) { - averagetimediff += timediff[i]/storedtimediffs; - } - } - processMidiClock(); - - // Compare w audio if playing: - if (audio->isPlaying() /*state == PLAY*/) { - //BEGIN standard setup: - recTick += config.division / 24; // The one we're syncing to - int tempo = AL::tempomap.tempo(0); - unsigned curFrame = audio->pos().frame(); - double songtick = (double(curFrame)/double(AL::sampleRate)) * config.division * 1000000.0 / double(tempo); - double scale = tdiff0/averagetimediff; - double tickdiff = songtick - ((double) recTick - 24 + scale*24.0); - - //END standard setup - if (debugSync) { - // - // Create debug values for printing out which beat we're at, etc etc... yaddayadda... - // - int m, b, t; - audio->pos().mbt(&m, &b, &t); - - int song_beat = b + m*4; // if the time-signature is different than 4/4, this will be wrong. - int sync_beat = recTick/config.division; - printf("pT=%.3f rT=%d diff=%.3f songB=%d syncB=%d scale=%.3f", songtick, recTick, tickdiff, song_beat, sync_beat, scale); - } - //if ((mclock2 !=0.0) && (tdiff1 > 0.0) && tickdiff != 0.0 && lastTempo != 0) { - if ((mclock2 !=0.0) && (tdiff1 > 0.0) && fabs(tickdiff) > 2.0 && lastTempo != 0) { - // Interpolate: - double tickdiff1 = songtick1 - recTick1; - double tickdiff2 = songtick2 - recTick2; - //double newtickdiff = tickdiff/3.0 + tickdiff1/5.0 + tickdiff2/7.0; //2 min 15 sec, 120BPM, -p 512 jackd - //double newtickdiff = tickdiff/4.0 + tickdiff1/4.0 + tickdiff2/4.0; // Not long... :-P - //double newtickdiff = tickdiff/5.0 + tickdiff1/8.0 + tickdiff2/12.0; //3,5 mins on 120BPM, -p 512 jackd - //double newtickdiff = tickdiff/7.0 + tickdiff1/8.0 + tickdiff2/9.0; //2 min 15 sec, 120BPM, -p 512 jackd - //double newtickdiff = tickdiff/5.0 + tickdiff1/8.0 + tickdiff2/16.0; //3,5 mins on 120BPM, -p 512 jackd - double newtickdiff = tickdiff/5.0 + tickdiff1/16.0 + tickdiff2/24.0; //5 mins 30 secs on 116BPM, -p 512 jackd - //double newtickdiff = tickdiff/5.0 + tickdiff1/23.0 + tickdiff2/31.0; //5 mins on 116BPM, -p 512 jackd - //double newtickdiff = tickdiff + tickdiff1/8.0 + tickdiff2/16.0; // Not long... - - if (newtickdiff != 0.0) { - int newTempo = AL::tempomap.tempo(0); - //newTempo += int(24.0 * newtickdiff * scale); - newTempo += int(24.0 * newtickdiff); - if (debugSync) - printf(" tdiff=%f ntd=%f lt=%d tmpo=%.3f", tdiff0, newtickdiff, lastTempo, (float)((1000000.0 * 60.0)/newTempo)); - AL::tempomap.setTempo(0,newTempo); - } - if (debugSync) - printf("\n"); - } - else if (debugSync) - printf("\n"); - - //BEGIN post calc - lastTempo = tempo; - recTick2 = recTick1; - recTick1 = recTick; - mclock2 = mclock1; - mclock1 = mclock0; - songtick2 = songtick1; - songtick1 = songtick; - //END post calc - break; - } // END state play - // - // Pre-sync (when audio is not running) - // Calculate tempo depending on time per pulse - // - if (mclock1 == 0.0) { -//TODO3 midiPorts[port].device()->discardInput(); - if (debugSync) - printf("Discarding input from port %d\n", port); - } - if ((mclock2 != 0.0) && (tdiff0 > 0.0)) { - int tempo0 = int(24000000.0 * tdiff0 + .5); - int tempo1 = int(24000000.0 * tdiff1 + .5); - int tempo = AL::tempomap.tempo(0); - - int diff0 = tempo0 - tempo; - int diff1 = tempo1 - tempo0; - if (diff0) { - int newTempo = tempo + diff0/8 + diff1/16; - if (debugSync) - printf("setting new tempo %d = %f\n", newTempo, (float)((1000000.0 * 60.0)/newTempo)); - AL::tempomap.setTempo(0, newTempo); - } - } - mclock2 = mclock1; - mclock1 = mclock0; - } - break; - case 0xf9: // midi tick (every 10 msec) - if (mcStart) { - song->setPos(0, mcStartTick); - mcStart = false; - return; - } - break; - case 0xfa: // start - if (debugSync) - printf(" start\n"); - if (!audio->isPlaying() /*state == IDLE*/) { - //seek(0); - audioDriver->seekTransport(0); - unsigned curFrame = audioDriver->framePos(); - recTick = recTick1 = recTick2 = 0; - mclock1 = 0.0; mclock2 = 0.0; - songtick1 = songtick2 = 0; - if (debugSync) - printf(" curFrame: %d curTick: %d tempo: %d\n", curFrame, recTick, AL::tempomap.tempo(0)); - - //startPlay(); - storedtimediffs = 0; - for (int i=0; i<24; i++) - timediff[i] = 0.0; - audio->msgPlay(true); - } - break; - case 0xfb: // continue - if (debugSync) - printf(" continue\n"); - if (!audio->isPlaying() /*state == IDLE */) { - unsigned curFrame = audioDriver->framePos(); - recTick = AL::tempomap.frame2tick(curFrame); // don't think this will work... (ml) - audio->msgPlay(true); - } - break; - case 0xfc: // stop - if (debugSync) - printf(" stop\n"); - if (audio->isPlaying() /*state == PLAY*/) - audio->msgPlay(false); - break; - case 0xfd: // unknown - case 0xfe: // active sensing - case 0xff: // system reset - break; - } -#endif - - } - -//--------------------------------------------------------- -// mtcSyncMsg -// process received mtc Sync -// seekFlag - first complete mtc frame received after -// start -//--------------------------------------------------------- - -void MidiSeq::mtcSyncMsg(const MTC& /*mtc*/, bool /*seekFlag*/) - { -#if 0 - double time = mtc.time(); - if (debugSync) - printf("mtcSyncMsg: time %f\n", time); - - if (seekFlag && state == START_PLAY) { -// int tick = tempomap.time2tick(time); - state = PLAY; - sendMsgToGui(MSG_PLAY); - return; - } - // double curT = curTime(); - - if (tempoSN != tempomap.tempoSN()) { - double cpos = tempomap.tick2time(_midiTick, 0); - samplePosStart = samplePos - lrint(cpos * sampleRate); - rtcTickStart = rtcTick - lrint(cpos * realRtcTicks); - tempoSN = tempomap.tempoSN(); - } - - // - // diff is the time in sec MusE is out of sync - // - double diff = time - (double(samplePosStart)/double(sampleRate)); - if (debugSync) - printf(" state %d diff %f\n", mtcState, diff); -#endif - } -#endif - diff --git a/muse/muse/sync.h b/muse/muse/sync.h deleted file mode 100644 index b8d8920b..00000000 --- a/muse/muse/sync.h +++ /dev/null @@ -1,37 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __SYNC_H__ -#define __SYNC_H__ - -#include "mtc.h" - -extern bool debugSync; -extern MTC mtcOffset; -extern bool extSyncFlag; -extern bool genMTCSync; // output MTC Sync -extern bool genMCSync; // output MidiClock Sync -extern bool genMMC; // output Midi Machine Control -extern bool acceptMTC; -extern bool acceptMC; -extern bool acceptMMC; - -#endif - diff --git a/muse/muse/synth.cpp b/muse/muse/synth.cpp deleted file mode 100644 index bbec5e34..00000000 --- a/muse/muse/synth.cpp +++ /dev/null @@ -1,588 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include - -#include "al/al.h" -#include "al/xml.h" -#include "al/tempo.h" -#include "muse.h" -#include "synth.h" -#include "midi.h" -#include "synti/libsynti/mess.h" -#include "song.h" -#include "audio.h" -#include "event.h" -#include "midievent.h" -#include "audio.h" -#include "midictrl.h" -#include "instruments/minstrument.h" -#include "audiodev.h" - -std::vector synthis; // array of available synthis - -extern void connectNodes(AudioTrack*, AudioTrack*); - -//--------------------------------------------------------- -// description -//--------------------------------------------------------- - -const char* MessSynth::description() const - { - return descr ? descr->description : ""; - } - -//--------------------------------------------------------- -// version -//--------------------------------------------------------- - -const char* MessSynth::version() const - { - return descr ? descr->version : ""; - } - -bool MessSynthIF::guiVisible() const - { - return _mess ? _mess->guiVisible() : false; - } - -void MessSynthIF::showGui(bool v) - { - if (v == guiVisible()) - return; - if (_mess) - _mess->showGui(v); - } - -bool MessSynthIF::hasGui() const - { - if (_mess) - return _mess->hasGui(); - return false; - } - -MidiEvent MessSynthIF::receiveEvent() - { - if (_mess) - return _mess->receiveEvent(); - return MidiEvent(); - } - -int MessSynthIF::eventsPending() const - { - if (_mess) - return _mess->eventsPending(); - return 0; - } - -void MessSynthIF::getGeometry(int* x, int* y, int* w, int* h) const - { - if (_mess) - _mess->getGeometry(x, y, w, h); - } - -void MessSynthIF::setGeometry(int x, int y, int w, int h) - { - if (_mess) - _mess->setGeometry(x, y, w, h); - } - -//--------------------------------------------------------- -// findSynth -// search for synthesizer base class -//--------------------------------------------------------- - -Synth* findSynth(const QString& sclass) - { - for (std::vector::iterator i = synthis.begin(); - i != synthis.end(); ++i) { - if ((*i)->name() == sclass) - return *i; - } - printf("synthi class <%s> not found\n", sclass.toLatin1().data()); - return 0; - } - -//--------------------------------------------------------- -// Synth -//--------------------------------------------------------- - -Synth::Synth(const QFileInfo* fi, QString s) - : info(*fi), _name(s) - { - _instances = 0; - } - -//--------------------------------------------------------- -// instantiate -//--------------------------------------------------------- - -void* MessSynth::instantiate(const QString& instanceName) - { - ++_instances; - const char* path = strdup(info.filePath().toAscii().data()); - - // load Synti dll - if (debugMsg) - printf(" load synti <%s>\n", path); - void* handle = dlopen(path, RTLD_NOW); - // void* handle = dlopen(path, RTLD_LAZY); - if (handle == 0) { - fprintf(stderr, "Synth::instantiate: dlopen(%s) failed: %s\n", - path, dlerror()); - delete path; - return 0; - } - typedef const MESS* (*MESS_Function)(); - MESS_Function msynth = (MESS_Function)dlsym(handle, "mess_descriptor"); - - if (!msynth) { - const char *txt = dlerror(); - if (txt) { - fprintf(stderr, - "Unable to find msynth_descriptor() function in plugin " - "library file \"%s\": %s.\n" - "Are you sure this is a MESS plugin file?\n", - path, txt); - delete path; - return 0; - } - } - delete path; - descr = msynth(); - if (descr == 0) { - fprintf(stderr, "Synth::instantiate: no MESS descr found\n"); - return 0; - } - Mess* mess = descr->instantiate(AL::sampleRate, instanceName.toLatin1().data()); - return mess; - } - -//--------------------------------------------------------- -// SynthI -//--------------------------------------------------------- - -SynthI::SynthI() - : AudioTrack() - { - track = this; - synthesizer = 0; - _sif = 0; - // setVolume(1.0); - // setPan(0.0); - setReadonly(true); // midi instrument cannot be edited - } - -//--------------------------------------------------------- -// ~SynthI -//--------------------------------------------------------- - -SynthI::~SynthI() - { - deactivate2(); - deactivate3(); - } - -//--------------------------------------------------------- -// setName -//--------------------------------------------------------- - -void SynthI::setName(const QString& s) - { - Track::setName(s); - } - -//--------------------------------------------------------- -// init -//--------------------------------------------------------- - -bool MessSynthIF::init(Synth* s, SynthI* si) - { - _mess = (Mess*)((MessSynth*)s)->instantiate(si->name()); - return (_mess == 0); - } - -//--------------------------------------------------------- -// channels -//--------------------------------------------------------- - -int MessSynthIF::channels() const - { - return _mess->channels(); - } - -//--------------------------------------------------------- -// createSIF -//--------------------------------------------------------- - -SynthIF* MessSynth::createSIF(SynthI* si) - { - MessSynthIF* sif = new MessSynthIF(si); - sif->init(this, si); - return sif; - } - -//--------------------------------------------------------- -// initInstance -// returns false on success -//--------------------------------------------------------- - -bool SynthI::initInstance(Synth* s) - { - synthesizer = s; - _sif = s->createSIF(this); - - setIName(name()); // set instrument name - int n = _sif->channels(); - AudioTrack::setChannels(n); - - //--------------------------------------------------- - // read available controller from synti - //--------------------------------------------------- - - int id = 0; - MidiControllerList* cl = MidiInstrument::controller(); - for (;;) { - const char* name; - int ctrl; - int min; - int max; - id = _sif->getControllerInfo(id, &name, &ctrl, &min, &max); - if (id == 0) - break; - MidiController* c = new MidiController(QString(name), ctrl, min, max, 0); - cl->push_back(c); - } - - EventList* iel = midiState(); - if (!iel->empty()) { - for (iEvent i = iel->begin(); i != iel->end(); ++i) { - Event ev = i->second; - MidiEvent pev(0, 0, ev); - if (_sif->putEvent(pev)) - putFifo.put(pev); // save for later retry - } - iel->clear(); - } - - int idx = 0; - for (std::vector::iterator i = initParams.begin(); i != initParams.end(); ++i, ++idx) - _sif->setParameter(idx, *i); - return false; - } - -//--------------------------------------------------------- -// getControllerInfo -//--------------------------------------------------------- - -int MessSynthIF::getControllerInfo(int id, const char** name, int* ctrl, int* min, int* max) - { - return _mess->getControllerInfo(id, name, ctrl, min, max); - } - -//--------------------------------------------------------- -// SynthI::deactivate -//--------------------------------------------------------- - -void SynthI::deactivate2() - { - removeMidiInstrument(this); - } - -//--------------------------------------------------------- -// deactivate3 -//--------------------------------------------------------- - -void SynthI::deactivate3() - { - delete _sif; - _sif = 0; - synthesizer->incInstances(-1); - } - -void MessSynthIF::deactivate3() - { - if (_mess) { - delete _mess; - _mess = 0; - } - } - -MessSynthIF::~MessSynthIF() - { - deactivate3(); - } - -//--------------------------------------------------------- -// initMidiSynth -// search for software synthis and advertise -//--------------------------------------------------------- - -void initMidiSynth() - { - QString s = museGlobalLib + "/synthi"; - -#ifdef __APPLE__ - QDir pluginDir(s, QString("*.dylib"), 0, QDir::Files); -#else - QDir pluginDir(s, QString("*.so"), 0, QDir::Files); -#endif - if (debugMsg) - printf("searching for software synthesizer in <%s>\n", s.toLatin1().data()); - if (pluginDir.exists()) { - QFileInfoList list = pluginDir.entryInfoList(); - for (int i = 0; i < list.size(); ++i) { - QFileInfo fi = list.at(i); - synthis.push_back(new MessSynth(&fi)); - } - if (debugMsg) - printf("%zd soft synth found\n", synthis.size()); - } - } - -//--------------------------------------------------------- -// write -//--------------------------------------------------------- - -void SynthI::write(Xml& xml) const - { - xml.stag("SynthI"); - AudioTrack::writeProperties(xml); - xml.tag("class", synth()->name()); - - //--------------------------------------------- - // if soft synth is attached to a midi port, - // write out port number - //--------------------------------------------- - - if (hasGui()) { - xml.tag("guiVisible", guiVisible()); - int x, y, w, h; - w = 0; - h = 0; - getGeometry(&x, &y, &w, &h); - if (h || w) - xml.tag("geometry", QRect(x, y, w, h)); - } - _sif->write(xml); - xml.etag("SynthI"); - - } - -void MessSynthIF::write(Xml& xml) const - { - //--------------------------------------------- - // dump current state of synth - //--------------------------------------------- - - int len = 0; - const unsigned char* p; - _mess->getInitData(&len, &p); - if (len) { - xml.stag("midistate"); - xml.stag(QString("event type=\"%1\" datalen=\"%2\"").arg(Sysex).arg(len)); - xml.dump(len, p); - xml.etag("event"); - xml.etag("midistate"); - } - } - -//--------------------------------------------------------- -// SynthI::read -//--------------------------------------------------------- - -void SynthI::read(QDomNode node) - { - QString sclass; - int port = -1; - bool startGui = false; - QRect r; - - for (; !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - QString tag(e.tagName()); - if (tag == "class") - sclass = e.text(); - else if (tag == "port") - port = e.text().toInt(); - else if (tag == "guiVisible") - startGui = e.text().toInt(); - else if (tag == "midistate") - readMidiState(node.firstChild()); - else if (tag == "param") { - float val = e.text().toFloat(); - initParams.push_back(val); - } - else if (tag == "geometry") - r = AL::readGeometry(node); - else if (AudioTrack::readProperties(node)) { - printf("MusE:SynthI: unknown tag %s\n", e.tagName().toLatin1().data()); - } - } - Synth* s = findSynth(sclass); - if (s == 0) - return; - if (initInstance(s)) - return; - song->insertTrack0(this, -1); - setGeometry(r.x(), r.y(), r.width(), r.height()); - showGui(startGui); - } - -//--------------------------------------------------------- -// getPatchName -//--------------------------------------------------------- - -QString MessSynthIF::getPatchName(int channel, int prog) - { - if (_mess) - return _mess->getPatchName(channel, prog, 0); - return ""; - } - -//--------------------------------------------------------- -// populatePatchPopup -//--------------------------------------------------------- - -void MessSynthIF::populatePatchPopup(QMenu* menu, int ch) - { - menu->clear(); - const MidiPatch* mp = _mess->getPatchInfo(ch, 0); - QMenu *hm = NULL, *lm = NULL; - while (mp) { - switch(mp->typ) { - case MP_TYPE_HBANK : - hm = menu->addMenu(QString(mp->name)); - break; - case MP_TYPE_LBANK : - if(hm) lm = hm->addMenu(QString(mp->name)); - else lm = menu->addMenu(QString(mp->name)); - break; - default : - int id = ((mp->hbank & 0xff) << 16) - + ((mp->lbank & 0xff) << 8) + mp->prog; - QAction* a; - if(lm) a = lm->addAction(QString(mp->name)); - else a = menu->addAction(QString(mp->name)); - a->setData(id); - break; - } - mp = _mess->getPatchInfo(ch, mp); - } - } - - - -//--------------------------------------------------------- -// getData -//--------------------------------------------------------- - -void MessSynthIF::getData(MidiEventList* el, unsigned pos, int ports, unsigned n, float** buffer) - { - // Reset buffers first - for (int port = 0; port < ports; ++port) - memset(buffer[port], 0, n * sizeof(float)); - - int curPos = pos; - int endPos = pos + n; - - while (!synti->putFifo.isEmpty()) { - if (putEvent(synti->putFifo.peek())) - break; - synti->putFifo.remove(); - } - - // Echo events from Synti back - while (_mess->eventsPending()) - // _mess->processEvent(_mess->receiveEvent()); - _mess->receiveEvent(); // throw away event - - if (ports >= channels()) { - iMidiEvent i = el->begin(); - for (; i != el->end(); ++i) { - int frame = i->time(); - if (frame >= endPos) - break; - if (frame > curPos) { - // Several following notes during same segmentsize? - _mess->process(buffer, curPos-pos, frame - curPos); - curPos = frame; // don't process this piece again - } - if (putEvent(*i)) - synti->putFifo.put(*i); - } - if (endPos - curPos > 0) - _mess->process(buffer, curPos-pos, endPos - curPos); - el->erase(el->begin(), i); - } - else { - // this happens if the synth has stereo and we switch the - // channel to mono - - printf("MessSynthIF::getData - ports %d < channels %d\n", - ports, channels()); - } - } - -//--------------------------------------------------------- -// putEvent -// return true on error (busy), event will later be -// resend -//--------------------------------------------------------- - -bool MessSynthIF::putEvent(const MidiEvent& ev) - { - bool rv = true; - if (_mess) { - rv = _mess->processEvent(ev); - if (midiOutputTrace && !rv) { - printf("MidiOut<%s>", synti->name().toLatin1().data()); - ev.dump(); - } - } - return rv; - } - -//--------------------------------------------------------- -// collectInputData -//--------------------------------------------------------- - -void SynthI::collectInputData() - { - bufferEmpty = false; - _sif->getData(&_schedEvents, audioDriver->frameTime(), channels(), - segmentSize, buffer); - } - -//------------------------------------------------------------------- -// process -// Collect all midi events for the current process cycle and put -// into _schedEvents queue. For note on events create the proper -// note off events. The note off events maybe played after the -// current process cycle. -//------------------------------------------------------------------- - -void SynthI::processMidi(SeqTime* t) - { - if (mute()) - return; - MidiOut::processMidi(_schedEvents, t); - } - diff --git a/muse/muse/synth.h b/muse/muse/synth.h deleted file mode 100644 index cae9c417..00000000 --- a/muse/muse/synth.h +++ /dev/null @@ -1,227 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __SYNTH_H__ -#define __SYNTH_H__ - -#include "globals.h" -#include "instruments/minstrument.h" -#include "audiotrack.h" -#include "midiout.h" -#include "midififo.h" - -class Mess; -struct MESS; - -class SynthI; -class SynthIF; - -//--------------------------------------------------------- -// Synth -// software synthesizer -//--------------------------------------------------------- - -class Synth { - protected: - QFileInfo info; - QString _name; - int _instances; - - public: - Synth(const QFileInfo* fi, QString label); - virtual ~Synth() {} - virtual const char* description() const { return ""; } - virtual const char* version() const { return ""; } - - int instances() const { return _instances; } - virtual void incInstances(int val) { _instances += val; } - - QString name() const { return _name; } - QString path() const { return info.absolutePath(); } - virtual SynthIF* createSIF(SynthI*) = 0; - }; - -//--------------------------------------------------------- -// MessSynth -//--------------------------------------------------------- - -class MessSynth : public Synth { - const MESS* descr; - - public: - MessSynth(const QFileInfo* fi) : Synth(fi, fi->baseName()) { descr = 0; } - virtual ~MessSynth() {} - virtual const char* description() const; - virtual const char* version() const; - virtual void* instantiate(const QString&); - virtual SynthIF* createSIF(SynthI*); - }; - -class Mess; - -//--------------------------------------------------------- -// SynthIF -// synth instance interface -//--------------------------------------------------------- - -class SynthIF { - - protected: - SynthI* synti; - - public: - SynthIF(SynthI* s) { synti = s; } - virtual ~SynthIF() {} - - virtual bool guiVisible() const = 0; - virtual void showGui(bool v) = 0; - virtual bool hasGui() const = 0; - virtual void getGeometry(int*, int*, int*, int*) const = 0; - virtual void setGeometry(int, int, int, int) = 0; - virtual void getData(MidiEventList*, unsigned pos, int ports, unsigned n, float** buffer) = 0; - virtual bool putEvent(const MidiEvent& ev) = 0; - virtual MidiEvent receiveEvent() = 0; - virtual int eventsPending() const = 0; - virtual int channels() const = 0; - virtual void deactivate3() = 0; - virtual QString getPatchName(int, int) = 0; - virtual void populatePatchPopup(QMenu*, int) = 0; - virtual void write(Xml& xml) const = 0; - virtual void setParameter(int idx, float value) = 0; - virtual int getControllerInfo(int id, const char** name, int* ctrl, int* min, int* max) = 0; - virtual bool hasAuxSend() const { return true; } - }; - -//--------------------------------------------------------- -// SynthI -// software synthesizer instance -// Track -// MidiInstrument -//--------------------------------------------------------- - -class SynthI : public AudioTrack, public MidiOut, public MidiInstrument - { - Q_OBJECT - - SynthIF* _sif; - - protected: - Synth* synthesizer; - std::vector initParams; - MidiFifo putFifo; - - bool putMidiEvent(const MidiEvent& ev) { - return _sif->putEvent(ev); - } - - virtual QString open() { return QString("OK");} - virtual void close() {} - virtual void collectInputData(); - - public: - friend class SynthIF; - friend class MessSynthIF; - friend class DssiSynthIF; - - SynthI(); - virtual ~SynthI(); - virtual TrackType type() const { return AUDIO_SOFTSYNTH; } - - virtual void setName(const QString& s); - - SynthIF* sif() const { return _sif; } - bool initInstance(Synth* s); - - void read(QDomNode); - virtual void write(Xml&) const; - - Synth* synth() const { return synthesizer; } - virtual bool isSynti() const { return true; } - - virtual QString getPatchName(int ch, int prog) { - return _sif ? _sif->getPatchName(ch, prog) : ""; - } - virtual void populatePatchPopup(QMenu* m, int i) { - _sif->populatePatchPopup(m, i); - } - - void setParameter(const char* name, const char* value) const; - - bool guiVisible() const { return _sif->guiVisible(); } - void showGui(bool v) { _sif->showGui(v); } - bool hasGui() const { return _sif->hasGui(); } - void getGeometry(int* x, int* y, int* w, int* h) const { - _sif->getGeometry(x, y, w, h); - } - void setGeometry(int x, int y, int w, int h) { - _sif->setGeometry(x, y, w, h); - } - MidiEvent receiveEvent() { return _sif->receiveEvent(); } - int eventsPending() const { return _sif->eventsPending(); } - void deactivate2(); - void deactivate3(); - bool isActivated() const { return synthesizer && _sif; } - virtual bool hasAuxSend() const { return _sif->hasAuxSend(); } - virtual void processMidi(SeqTime*); - - virtual MidiOut* midiOut() { return this; } - virtual MidiInstrument* instrument() { return this; } - }; - -//--------------------------------------------------------- -// MessSynthIF -// mess synthesizer instance -//--------------------------------------------------------- - -class MessSynthIF : public SynthIF { - Mess* _mess; - - public: - MessSynthIF(SynthI* s) : SynthIF(s) { _mess = 0; } - virtual ~MessSynthIF(); - - virtual bool guiVisible() const; - virtual void showGui(bool v); - virtual bool hasGui() const; - virtual void getGeometry(int*, int*, int*, int*) const; - virtual void setGeometry(int, int, int, int); - virtual void getData(MidiEventList*, unsigned pos, int ports, unsigned n, float** buffer); - virtual bool putEvent(const MidiEvent& ev); - virtual MidiEvent receiveEvent(); - virtual int eventsPending() const; - virtual int channels() const; - virtual void deactivate3(); - virtual QString getPatchName(int, int); - virtual void populatePatchPopup(QMenu*, int); - virtual void write(Xml& xml) const; - virtual void setParameter(int, float) {} - virtual int getControllerInfo(int id, const char** name, int* ctrl, int* min, int* max); - bool init(Synth* s, SynthI* si); - }; - -typedef QList SynthIList; -typedef SynthIList::iterator iSynthI; -typedef SynthIList::const_iterator ciSynthI; - -extern std::vector synthis; // array of available synthis -extern Synth* findSynth(const QString& sclass); - -#endif - diff --git a/muse/muse/templatedialog.cpp b/muse/muse/templatedialog.cpp deleted file mode 100644 index 0b655862..00000000 --- a/muse/muse/templatedialog.cpp +++ /dev/null @@ -1,259 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "templatedialog.h" -#include "gconfig.h" -#include "song.h" -#include "icons.h" - -// -// entry types for templateTree tree widget: -// -enum { DIR_TYPE, LOCAL_TEMPLATE_TYPE, GLOBAL_TEMPLATE_TYPE}; - -//--------------------------------------------------------- -// processSubdir -//--------------------------------------------------------- - -void TemplateDialog::processSubdir(QTreeWidgetItem* item, const QString& p, - const QString& subdir, int type) - { - QDir pd(p + "/" + subdir); - pd.setFilter(QDir::Files | QDir::AllDirs | QDir::NoDotAndDotDot); - pd.setNameFilters(QStringList("*.med")); - QFileInfoList el = pd.entryInfoList(); - foreach (QFileInfo s, el) { - QTreeWidgetItem* pi; - if (s.isDir()) { - pi = new QTreeWidgetItem(item, DIR_TYPE); - itemCollapsed(pi); - processSubdir(pi, pd.absolutePath(), s.fileName(), type); - } - else { - pi = new QTreeWidgetItem(item, type); - pi->setIcon(0, style()->standardIcon(QStyle::SP_FileIcon)); - } - pi->setText(0, s.fileName()); - } - } - -//--------------------------------------------------------- -// TemplateDialog -//--------------------------------------------------------- - -TemplateDialog::TemplateDialog(QWidget* parent) - : QDialog(parent) - { - setupUi(this); - templateTree->setSelectionBehavior(QAbstractItemView::SelectRows); - templateTree->setSelectionMode(QAbstractItemView::SingleSelection); - - // - // add global templates to list - // - QTreeWidgetItem* pi; - pi = new QTreeWidgetItem(templateTree, DIR_TYPE); - templateTree->setItemExpanded(pi, true); - itemExpanded(pi); - pi->setText(0, tr("MusE presets")); - processSubdir(pi, museGlobalShare, "templates", GLOBAL_TEMPLATE_TYPE); - - // - // add local templates to list - // - pi = new QTreeWidgetItem(templateTree, DIR_TYPE); - pi->setIcon(0, style()->standardIcon(QStyle::SP_FileIcon)); - templateTree->setItemExpanded(pi, true); - itemExpanded(pi); - pi->setText(0, tr("User presets")); - processSubdir(pi, QDir::homePath() + "/" + config.templatePath, ".", LOCAL_TEMPLATE_TYPE); - - connect(templateTree, - SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), - SLOT(currentChanged(QTreeWidgetItem*, QTreeWidgetItem*))); - connect(templateTree, - SIGNAL(itemDoubleClicked(QTreeWidgetItem*, int)), - SLOT(itemDoubleClicked(QTreeWidgetItem*, int))); - connect(templateTree, - SIGNAL(itemCollapsed(QTreeWidgetItem*)), - SLOT(itemCollapsed(QTreeWidgetItem*))); - connect(templateTree, - SIGNAL(itemExpanded(QTreeWidgetItem*)), - SLOT(itemExpanded(QTreeWidgetItem*))); - - currentChanged(0, 0); - } - -//--------------------------------------------------------- -// itemCollapsed -//--------------------------------------------------------- - -void TemplateDialog::itemCollapsed(QTreeWidgetItem* item) - { - item->setIcon(0, style()->standardIcon(QStyle::SP_DirClosedIcon)); - } - -//--------------------------------------------------------- -// itemExpanded -//--------------------------------------------------------- - -void TemplateDialog::itemExpanded(QTreeWidgetItem* item) - { - item->setIcon(0, style()->standardIcon(QStyle::SP_DirOpenIcon)); - } - -//--------------------------------------------------------- -// itemPath -//--------------------------------------------------------- - -QString TemplateDialog::itemPath(QTreeWidgetItem* item) const - { - QString path; - QTreeWidgetItem* ti = item; - QStringList dirComponent; - do { - dirComponent.prepend(ti->text(0)); - ti = ti->parent(); - } while (ti); - size_t n = dirComponent.size(); - for (size_t i = 1; i < n; ++i) { - if (!path.isEmpty()) - path += "/"; - path += dirComponent[i]; - } - return path; - } - -//--------------------------------------------------------- -// currentChanged -//--------------------------------------------------------- - -void TemplateDialog::currentChanged(QTreeWidgetItem* item, QTreeWidgetItem*) - { - bool enable = (item != 0) && - ( - (item->type() == LOCAL_TEMPLATE_TYPE) - || - (item->type() == GLOBAL_TEMPLATE_TYPE) - ); - createdDate->setEnabled(enable); - modifiedDate->setEnabled(enable); - comment->setEnabled(enable); - - // newFolder->setEnabled(item == 0 || item->type() == DIR_TYPE); - if (!enable) - return; - - QString pd; - if (item->type() == LOCAL_TEMPLATE_TYPE) - pd = QDir::homePath() + "/" + config.templatePath; - else - pd = museGlobalShare + "/" + "templates"; - - pd += "/" + itemPath(item); - - QFileInfo pf(pd); - modifiedDate->setDateTime(pf.lastModified()); - - QTime time(0, 0, 0); - QDateTime date; - - QFile f(pf.filePath()); - QDomDocument doc; - int line, column; - QString err; - if (!doc.setContent(&f, false, &err, &line, &column)) { - QString col, ln, error; - col.setNum(column); - ln.setNum(line); - error = err + "\n at line: " + ln + " col: " + col; - printf("error reading med file: %s\n", error.toLatin1().data()); - return; - } - for (QDomNode node = doc.documentElement(); !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - if (e.isNull()) - continue; - if (e.tagName() == "muse") { - QString sversion = e.attribute("version", "1.0"); - int major=0, minor=0; - sscanf(sversion.toLatin1().data(), "%d.%d", &major, &minor); - int version = major << 8 + minor; - if (version >= 0x200) { - for (QDomNode n1 = node.firstChild(); !n1.isNull(); n1 = n1.nextSibling()) { - QDomElement e = n1.toElement(); - if (e.tagName() == "song") { - for (QDomNode n2 = n1.firstChild(); !n2.isNull(); n2 = n2.nextSibling()) { - QDomElement e = n2.toElement(); - QString tag(e.tagName()); - QString s(e.text()); - if (tag == "comment") - comment->setPlainText(s); - else if (tag == "createDate") { - date = QDateTime::fromString(e.text(), Qt::ISODate); - break; - } - } - } - } - } - } - } - createdDate->setDateTime(date); - } - -//--------------------------------------------------------- -// templatePath -//--------------------------------------------------------- - -QString TemplateDialog::templatePath() const - { - QTreeWidgetItem* item = templateTree->currentItem(); - QString s; - if (item) { - if (item->type() == LOCAL_TEMPLATE_TYPE) - s = QDir::homePath() + "/" + config.templatePath; - else - s = museGlobalShare + "/" + "templates"; - s += "/" + itemPath(item); - } - return s; - } - -//--------------------------------------------------------- -// setTemplatePath -//--------------------------------------------------------- - -void TemplateDialog::setTemplatePath(const QString&) - { - // TODO - } - -//--------------------------------------------------------- -// itemDoubleClicked -//--------------------------------------------------------- - -void TemplateDialog::itemDoubleClicked(QTreeWidgetItem* item, int) - { - if ((item->type() == LOCAL_TEMPLATE_TYPE) || - (item->type() == GLOBAL_TEMPLATE_TYPE)) - accept(); - } - diff --git a/muse/muse/templatedialog.h b/muse/muse/templatedialog.h deleted file mode 100644 index 4db03286..00000000 --- a/muse/muse/templatedialog.h +++ /dev/null @@ -1,51 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __TEMPLATE_DIALOG_H__ -#define __TEMPLATE_DIALOG_H__ - -#include "ui_templatedialog.h" - -//--------------------------------------------------------- -// TemplateDialog -//--------------------------------------------------------- - -class TemplateDialog : public QDialog, public Ui_TemplateDialogBase { - Q_OBJECT - - void processSubdir(QTreeWidgetItem*, const QString&, - const QString&, int); - - QString itemPath(QTreeWidgetItem*) const; - - private slots: - void currentChanged(QTreeWidgetItem*, QTreeWidgetItem*); - void itemCollapsed(QTreeWidgetItem*); - void itemExpanded(QTreeWidgetItem*); - void itemDoubleClicked(QTreeWidgetItem*, int); - - public: - TemplateDialog(QWidget* parent = 0); - QString templatePath() const; - void setTemplatePath(const QString&); - }; - -#endif - diff --git a/muse/muse/templatedialog.ui b/muse/muse/templatedialog.ui deleted file mode 100644 index cbbc295d..00000000 --- a/muse/muse/templatedialog.ui +++ /dev/null @@ -1,188 +0,0 @@ - - - - - TemplateDialogBase - - - - 0 - 0 - 574 - 385 - - - - MusE: Select Template - - - - 9 - - - 6 - - - - - Properties - - - - 9 - - - 3 - - - - - Qt::NoFocus - - - true - - - - - - - Qt::NoFocus - - - true - - - - - - - Comment: - - - - - - - Modified: - - - - - - - Created: - - - - - - - Qt::NoFocus - - - true - - - - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - - 131 - 31 - - - - - - - - OK - - - true - - - - - - - Cancel - - - - - - - - - - Templates - - - - - - - - - okButton - cancelButton - templateTree - modifiedDate - createdDate - comment - - - - - - - okButton - clicked() - TemplateDialogBase - accept() - - - 278 - 253 - - - 96 - 254 - - - - - cancelButton - clicked() - TemplateDialogBase - reject() - - - 369 - 253 - - - 179 - 282 - - - - - diff --git a/muse/muse/thread.cpp b/muse/muse/thread.cpp deleted file mode 100644 index 8291613b..00000000 --- a/muse/muse/thread.cpp +++ /dev/null @@ -1,354 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include -#include -#include - -#include "thread.h" -#include "globals.h" -#include "errno.h" - -//--------------------------------------------------------- -// Thread -//--------------------------------------------------------- - -Thread::~Thread() - { - } - -//--------------------------------------------------------- -// serverloop -//--------------------------------------------------------- - -static void* loop(void* mops) - { - Thread* t = (Thread*) mops; - t->loop(); - return 0; - } - -//--------------------------------------------------------- -// start -//--------------------------------------------------------- - -void Thread::start(int prio, void* ptr) - { - userPtr = ptr; - pthread_attr_t* attributes = 0; - - realTimePriority = prio; - if (realTimePriority) { - attributes = (pthread_attr_t*) malloc(sizeof(pthread_attr_t)); - pthread_attr_init(attributes); - - if (pthread_attr_setschedpolicy(attributes, SCHED_FIFO)) { - printf("cannot set FIFO scheduling class for RT thread\n"); - } - if (pthread_attr_setscope (attributes, PTHREAD_SCOPE_SYSTEM)) { - printf("Cannot set scheduling scope for RT thread\n"); - } - if (pthread_attr_setinheritsched(attributes, PTHREAD_EXPLICIT_SCHED)) { - printf("Cannot set setinheritsched for RT thread\n"); - } - - struct sched_param rt_param; - memset(&rt_param, 0, sizeof(rt_param)); - rt_param.sched_priority = realTimePriority; - if (pthread_attr_setschedparam (attributes, &rt_param)) { - printf("Cannot set scheduling priority %d for RT thread (%s)\n", - realTimePriority, strerror(errno)); - } - } - - int rv; - if ((rv = pthread_create(&thread, attributes, ::loop, this))) { - fprintf(stderr, "creating thread <%s> failed: %s\n", - _name, strerror(rv)); - thread = 0; - } - } - -//--------------------------------------------------------- -// stop -//--------------------------------------------------------- - -void Thread::stop(bool force) - { - if (thread == 0) - return; - if (force) { - pthread_cancel(thread); - threadStop(); - } - _running = false; - if (pthread_join(thread, 0)) { - // perror("Failed to join sequencer thread"); - } - } - -//--------------------------------------------------------- -// Thread -// prio = 0 no realtime scheduling -//--------------------------------------------------------- - -Thread::Thread(const char* s) - { - userPtr = 0; - _name = s; - realTimePriority = 0; - pfd = 0; - npfd = 0; - maxpfd = 0; - _running = false; - _pollWait = -1; - thread = 0; - sendSerialNo = 0x00a5a500; - - // create message channels - int filedes[2]; // 0 - reading 1 - writing - if (pipe(filedes) == -1) { - perror("thread:creating pipe4"); - exit(-1); - } - toThreadFdr = filedes[0]; - toThreadFdw = filedes[1]; - if (fcntl(toThreadFdw, F_SETFL, O_NONBLOCK) == -1) - perror("set pipe nonblocking\n"); - - if (pipe(filedes) == -1) { - perror("thread: creating pipe5"); - exit(-1); - } - fromThreadFdr = filedes[0]; - fromThreadFdw = filedes[1]; - if (fcntl(fromThreadFdw, F_SETFL, O_NONBLOCK) == -1) - perror("set pipe nonblocking\n"); - } - -//--------------------------------------------------------- -// addPollFd -//--------------------------------------------------------- - -void Thread::addPollFd(int fd, int action, void (*handler)(void*,void*), void* p, void* q) - { - if (fd == -1) - return; - for (iPoll i = plist.begin(); i != plist.end(); ++i) { - if ((i->fd == fd) && (i->action == action)) - return; - } - - plist.push_back(Poll(fd, action, handler, p, q)); - - if (npfd == maxpfd) { - int n = (maxpfd == 0) ? 4 : maxpfd * 2; - //TODO: delete old pfd - pfd = new struct pollfd[n]; - maxpfd = n; - } - ++npfd; - int idx = 0; - for (iPoll i = plist.begin(); i != plist.end(); ++i, ++idx) { - pfd[idx].fd = i->fd; - pfd[idx].events = i->action; - } - } - -//--------------------------------------------------------- -// removePollFd -//--------------------------------------------------------- - -void Thread::removePollFd(int fd, int action) - { - for (iPoll i = plist.begin(); i != plist.end(); ++i) { - if (i->fd == fd && i->action == action) { - plist.erase(i); - --npfd; - break; - } - } - int idx = 0; - for (iPoll i = plist.begin(); i != plist.end(); ++i, ++idx) { - pfd[idx].fd = i->fd; - pfd[idx].events = i->action; - } - } - -//--------------------------------------------------------- -// loop -//--------------------------------------------------------- - -void Thread::loop() - { - if (!debugMode) { - if (mlockall(MCL_CURRENT | MCL_FUTURE)) - perror("WARNING: Cannot lock memory:"); - } -#ifdef __APPLE__ -#define BIG_ENOUGH_STACK (1024*256*1) -#else -#define BIG_ENOUGH_STACK (1024*1024*1) -#endif - char buf[BIG_ENOUGH_STACK]; - for (int i = 0; i < BIG_ENOUGH_STACK; i++) - buf[i] = i; -#undef BIG_ENOUGH_STACK - - pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, 0); - pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, 0); - - int policy; - /*if ((policy = sched_getscheduler (0)) < 0) { - printf("Thread: Cannot get current client scheduler: %s\n", strerror(errno)); - } -*/ - if (debugMsg) - printf("Thread <%s, id %p> has %s priority %d\n", - _name, (void *)pthread_self(), policy == SCHED_FIFO ? "SCHED_FIFO" : "SCHED_OTHER", - realTimePriority); - - _running = true; - - threadStart(userPtr); - while (_running) { - if (debugMode) // DEBUG - _pollWait = 10; // ms - else - _pollWait = -1; - - int n = poll(pfd, npfd, _pollWait); - if (n < 0) { - if (errno == EINTR) - continue; - fprintf(stderr, "poll failed: %s\n", strerror(errno)); - exit(-1); - } - if (n == 0) { // timeout - defaultTick(); - continue; - } - struct pollfd* p = &pfd[0]; - int i = 0; - for (iPoll ip = plist.begin(); ip != plist.end(); ++ip, ++p, ++i) { - if (ip->action & p->revents) { - (ip->handler)(ip->param1, ip->param2); - break; - } - } - } - threadStop(); - } - -//--------------------------------------------------------- -// sendMsg -// send request from gui to thread -// wait until request is processed -//--------------------------------------------------------- - -extern const char* seqMsgList[]; - -bool Thread::sendMsg(const ThreadMsg* m) - { -// fprintf(stderr, "<%s> self: %p sendMsg %d id %s running %d\n", -// _name, -// pthread_self(), sendSerialNo, seqMsgList[m->id], _running); - - m->serialNo = sendSerialNo; - if (_running) { - int rv = write(toThreadFdw, &m, sizeof(ThreadMsg*)); - if (rv != sizeof(ThreadMsg*)) { - perror("Thread::sendMessage(): write pipe failed"); - return true; - } - - // wait for thread to finish operation - int c; - rv = read(fromThreadFdr, &c, sizeof(c)); - if (rv != sizeof(c)) { - perror("Thread::sendMessage(): read pipe failed"); - return true; - } - if (c != sendSerialNo) - fprintf(stderr, "%p Thread:sendMsg() serial No mismatch %d - %d\n", - this, c, sendSerialNo); - } - else { - // if thread is not running (during initialization) - // process commands directly: - processMsg(m); - } - ++sendSerialNo; - return false; - } - -//--------------------------------------------------------- -// sendMsg1 -// send request from gui to thread -// do __not__ wait until request is processed -//--------------------------------------------------------- - -bool Thread::sendMsg1(const void* m, int n) - { - int rv = write(toThreadFdw, m, n); - if (rv != n) { - perror("Thread::sendMessage1(): write pipe failed"); - return true; - } - return false; - } - -//--------------------------------------------------------- -// readMsg -//--------------------------------------------------------- - -void Thread::readMsg() - { - ThreadMsg* p; - if (read(toThreadFdr, &p, sizeof(p)) != sizeof(p)) { - perror("Thread::readMsg(): read pipe failed"); - exit(-1); - } -// fprintf(stderr, "%p read msg %d %s\n", this, p->serialNo, seqMsgList[p->id]); - - processMsg(p); - int c = p->serialNo; - int rv = write(fromThreadFdw, &c, sizeof(c)); - if (rv != sizeof(c)) - perror("Thread::readMsg(): write pipe failed"); - } - -//--------------------------------------------------------- -// readMsg -// sequencer reads one gui message -//--------------------------------------------------------- - -void Thread::readMsg1(int size) - { - char buffer[size]; - int n = read(toThreadFdr, buffer, size); - if (n != size) { - fprintf(stderr, "Thread::readMessage1(): read pipe failed, get %d, expected %d: %s\n", - n, size, strerror(errno)); - exit(-1); - } - processMsg1(buffer); - } - diff --git a/muse/muse/thread.h b/muse/muse/thread.h deleted file mode 100644 index cf7fc40b..00000000 --- a/muse/muse/thread.h +++ /dev/null @@ -1,109 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __THREAD_H__ -#define __THREAD_H__ - -#include - -//--------------------------------------------------------- -// Poll -//--------------------------------------------------------- - -struct Poll { - int fd; - int action; - void (*handler)(void*,void*); - void* param1; - void* param2; - - Poll(int _fd, int _action, void(*_handler)(void*,void*), void* p, void* q) { - fd = _fd; - action = _action; - handler = _handler; - param1 = p; - param2 = q; - } - }; - -typedef std::list PollList; -typedef std::list::iterator iPoll; - - -//--------------------------------------------------------- -// ThreadMsg -//--------------------------------------------------------- - -struct ThreadMsg { - int id; - mutable int serialNo; // debug - }; - -//--------------------------------------------------------- -// Thread -//--------------------------------------------------------- - -class Thread { - const char* _name; - volatile bool _running; - int _pollWait; // poll timeout in msec (-1 = infinite) - int sendSerialNo; // debug - - pthread_t thread; - - int toThreadFdw; // message to thread (app write) - - PollList plist; - void* userPtr; - - protected: - int realTimePriority; - int fromThreadFdr; // message from thread (seq read) - int fromThreadFdw; // message from thread (app write) - int toThreadFdr; // message to thread (seq read) - struct pollfd* pfd; // poll file descriptors - int npfd; - int maxpfd; - virtual void processMsg(const ThreadMsg*) {} - virtual void processMsg1(const void *) {} - virtual void defaultTick() {} - - public: - Thread(const char* name); - virtual ~Thread(); - const char* name() const { return _name; } - virtual void start(int priority, void* ptr=0); - void stop(bool); - void clearPollFd() { plist.clear(); npfd = 0; } - void addPollFd(int fd, int action, void (*handler)(void*,void*), void*, void*); - void removePollFd(int fd, int action); - void loop(); - void readMsg(); - void readMsg1(int size); - bool sendMsg1(const void* m, int n); - bool sendMsg(const ThreadMsg* m); - bool isRunning() const { return _running; } - void setPollWait(int val) { _pollWait = val; } - virtual void threadStart(void*){ } // called from loop - virtual void threadStop() { } // called from loop before leaving - }; - -#endif - diff --git a/muse/muse/ticksynth.cpp b/muse/muse/ticksynth.cpp deleted file mode 100644 index 861861de..00000000 --- a/muse/muse/ticksynth.cpp +++ /dev/null @@ -1,181 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "audio.h" -#include "ticksynth.h" -#include "default_click.h" - -SynthI* metronome = 0; - -class MetronomeSynth; -static MetronomeSynth* metronomeSynth; - -//--------------------------------------------------------- -// MetronomeSynth -//--------------------------------------------------------- - -class MetronomeSynth : public Synth { - public: - MetronomeSynth(const QFileInfo* fi) : Synth(fi, QString("Metronome")) {} - virtual ~MetronomeSynth() {} - virtual void incInstances(int) {} - virtual void* instantiate(); - virtual SynthIF* createSIF(SynthI*); - }; - -//--------------------------------------------------------- -// instantiate -//--------------------------------------------------------- - -void* MetronomeSynth::instantiate() - { - return 0; - } - -//--------------------------------------------------------- -// MetronomeSynthIF -//--------------------------------------------------------- - -class MetronomeSynthIF : public SynthIF - { - const float* data; - int pos; - int len; - void process(float** buffer, int offset, int n); - - public: - MetronomeSynthIF(SynthI* s) : SynthIF(s) { - data = 0; - } - virtual bool guiVisible() const { return false; } - virtual void showGui(bool) {} - virtual bool hasGui() const { return false; } - virtual void getGeometry(int*, int*, int*, int*) const {} - virtual void setGeometry(int, int, int, int) {} - virtual void getData(MidiEventList*, unsigned pos, int ports, unsigned n, float** buffer); - virtual bool putEvent(const MidiEvent& ev); - virtual MidiEvent receiveEvent() { return MidiEvent(); } - virtual int eventsPending() const { return 0; } - virtual int channels() const { return 1; } - virtual void deactivate2() {} - virtual void deactivate3() {} - virtual QString getPatchName(int, int, int) const { return ""; } - virtual QString getPatchName(int, int) { return ""; } - virtual void populatePatchPopup(QMenu*, int) {}; - virtual void write(Xml&) const {} - virtual void setParameter(int, float) {} - virtual int getControllerInfo(int, const char**, int*, int*, int*) { return 0; } - virtual bool hasAuxSend() const { return false; } - }; - -//--------------------------------------------------------- -// getData -//--------------------------------------------------------- - -void MetronomeSynthIF::getData(MidiEventList* el, unsigned pos, int/*ports*/, unsigned n, float** buffer) - { - unsigned curPos = pos; - unsigned endPos = pos + n; - unsigned off = pos; - - iMidiEvent i = el->begin(); - for (; i != el->end(); ++i) { - unsigned frame = i->time(); - if (frame >= endPos) - break; - if (frame > curPos) { - if (frame < pos) - printf("should not happen: missed event %d\n", pos -frame); - else - process(buffer, curPos-pos, frame - curPos); - curPos = frame; - } - putEvent(*i); - } - if (endPos - curPos) - process(buffer, curPos - off, endPos - curPos); - el->erase(el->begin(), i); - } - -//--------------------------------------------------------- -// putEvent -//--------------------------------------------------------- - -bool MetronomeSynthIF::putEvent(const MidiEvent& ev) - { - if (ev.dataA() == 0) { - data = defaultClickEmphasis; - len = defaultClickEmphasisLength; - } - else { - data = defaultClick; - len = defaultClickLength; - } - pos = 0; - return false; - } - -//--------------------------------------------------------- -// createSIF -//--------------------------------------------------------- - -SynthIF* MetronomeSynth::createSIF(SynthI* s) - { - return new MetronomeSynthIF(s); - } - -//--------------------------------------------------------- -// process -// synthesize n samples into buffer+offset -//--------------------------------------------------------- - -void MetronomeSynthIF::process(float** buffer, int offset, int n) - { - if (data == 0) { - memset(buffer[0], 0, n * sizeof(float)); - return; - } - const float* s = data + pos; - float* d = *buffer + offset; - int l = std::min(n, len); - int i; - for (i = 0; i < l; ++i) - *d++ = *s++; - for (; i < n; ++i) - *d++ = 0.0f; - pos += l; - len -= l; - if (len <= 0) - data = 0; - } - -//--------------------------------------------------------- -// initMetronome -//--------------------------------------------------------- - -void initMetronome() - { - QFileInfo fi; // dummy - metronomeSynth = new MetronomeSynth(&fi); - metronome = new SynthI(); - metronome->setName("metronome"); - metronome->initInstance(metronomeSynth); - } - diff --git a/muse/muse/ticksynth.h b/muse/muse/ticksynth.h deleted file mode 100644 index d18a483d..00000000 --- a/muse/muse/ticksynth.h +++ /dev/null @@ -1,29 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __TICKSYNTH_H__ -#define __TICKSYNTH_H__ - -#include "synth.h" -extern void initMetronome(); -extern SynthI* metronome; - -#endif - diff --git a/muse/muse/tllineedit.cpp b/muse/muse/tllineedit.cpp deleted file mode 100644 index 0581b858..00000000 --- a/muse/muse/tllineedit.cpp +++ /dev/null @@ -1,70 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "tllineedit.h" - -//--------------------------------------------------------- -// TLLineEdit -//--------------------------------------------------------- - -TLLineEdit::TLLineEdit(const QString& contents, QWidget* parent) - : QLineEdit(contents, parent) - { - setReadOnly(true); - setFrame(false); - setAlignment(Qt::AlignLeft); - setCursorPosition(0); - connect(this, SIGNAL(editingFinished()), SLOT(contentHasChanged())); - } - -//--------------------------------------------------------- -// contentHasChanged -//--------------------------------------------------------- - -void TLLineEdit::contentHasChanged() - { - setReadOnly(true); - setFrame(false); - if (isModified()) - emit contentChanged(text()); - setModified(false); - } - -//--------------------------------------------------------- -// mouseDoubleClickEvent -//--------------------------------------------------------- - -void TLLineEdit::mouseDoubleClickEvent(QMouseEvent*) - { - setReadOnly(false); - setFocus(); - setFrame(true); - } - -//--------------------------------------------------------- -// mousePressEvent -//--------------------------------------------------------- - -void TLLineEdit::mousePressEvent(QMouseEvent* ev) - { - QLineEdit::mousePressEvent(ev); - emit mousePress(); - } - diff --git a/muse/muse/tllineedit.h b/muse/muse/tllineedit.h deleted file mode 100644 index 56bfdd55..00000000 --- a/muse/muse/tllineedit.h +++ /dev/null @@ -1,48 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __TLLINEEDIT_H__ -#define __TLLINEEDIT_H__ - -//--------------------------------------------------------- -// TLLineEdit -//--------------------------------------------------------- - -class TLLineEdit : public QLineEdit { - Q_OBJECT - - virtual void mouseDoubleClickEvent(QMouseEvent*); - virtual void mousePressEvent(QMouseEvent*); - - private slots: - void contentHasChanged(); - - signals: - void contentChanged(QString s); - void mousePress(); - - public: - TLLineEdit(const QString& contents, QWidget* parent = 0); - }; - -#endif - - - diff --git a/muse/muse/tlswidget.cpp b/muse/muse/tlswidget.cpp deleted file mode 100644 index 23b7fbc1..00000000 --- a/muse/muse/tlswidget.cpp +++ /dev/null @@ -1,355 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "song.h" -#include "track.h" -#include "tlswidget.h" -#include "tlwlayout.h" -#include "icons.h" -#include "arranger.h" -#include "widgets/simplebutton.h" -#include "muse.h" -#include "ctrl/configmidictrl.h" -#include "ctrl/ctrldialog.h" -#include "midictrl.h" -#include "widgets/utils.h" - -//--------------------------------------------------------- -// TLSLayout -//--------------------------------------------------------- - -class TLSLayout : public QLayout { - QList itemList; - - public: - TLSLayout() {} - ~TLSLayout(); - - void addItem(QLayoutItem* item); - void insertWidget(int index, QWidget* item); - Qt::Orientations expandingDirections() const { return 0; } - bool hasHeightForWidth() const { return false; } - int count() const { return itemList.size(); } - void setGeometry(const QRect &rect); - QSize sizeHint() const { return ((QWidget*)parent())->size(); } - QLayoutItem *itemAt(int index) const { return itemList.value(index); } - QLayoutItem *takeAt(int idx) { - return idx >= 0 && idx < itemList.size() ? itemList.takeAt(idx) : 0; - } - }; - -//--------------------------------------------------------- -// TLSLayout -//--------------------------------------------------------- - -TLSLayout::~TLSLayout() - { - QLayoutItem* child; - while ((child = takeAt(0)) != 0) - delete child; - } - -//--------------------------------------------------------- -// insertWidget -//--------------------------------------------------------- - -void TLSLayout::insertWidget(int index, QWidget* item) - { - if (item->parent() == 0) - item->setParent((QWidget*)parent()); - itemList.insert(index, new QWidgetItem(item)); - update(); - } - -//--------------------------------------------------------- -// addItem -//--------------------------------------------------------- - -void TLSLayout::addItem(QLayoutItem* item) - { - itemList.append(item); - update(); - } - -//--------------------------------------------------------- -// setGeometry -//--------------------------------------------------------- - -void TLSLayout::setGeometry(const QRect& rect) - { - static const int labelWidth = 50; - int x1 = rect.x() + labelWidth; - int y = rect.y(); - int y2 = y + rect.height(); - - QLayoutItem *item = itemList.at(0); - QSize size(item->sizeHint()); - item->widget()->setGeometry(QRect(x1 - 18, y2 - 18-splitWidth, 18, 18)); - - item = itemList.at(1); - size = item->sizeHint(); - item->setGeometry(QRect(x1, rect.y(), - rect.width() - x1 - 2, trackRowHeight)); - } - -//--------------------------------------------------------- -// TLSWidget -//--------------------------------------------------------- - -TLSWidget::TLSWidget(Track* t, ArrangerTrack* atrack, TimeCanvas* timeC) - { - setAttribute(Qt::WA_NoBackground); - setAttribute(Qt::WA_StaticContents); - setAutoFillBackground(true); - - setMouseTracking(true); - _tc = timeC; - state = S_NORMAL; - - at = atrack; - _track = t; - _ctrlTrack = t; - - TLSLayout* l = new TLSLayout; - setLayout(l); - // - // track type - // - SimpleButton* minus = newMinusButton(); - minus->setToolTip(tr("Remove Subtrack")); - l->addWidget(minus); - - ctrlList = new QToolButton; - ctrlList->setText(tr("Ctrl")); - - connect(ctrlList, SIGNAL(clicked()), SLOT(showControllerList())); - - l->addWidget(ctrlList); - ctrlList->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); - - connect(_track, SIGNAL(selectionChanged(bool)), SLOT(selectionChanged())); - connect(_track, SIGNAL(controllerChanged(int)), SLOT(controllerListChanged(int))); - connect(_track, SIGNAL(autoReadChanged(bool)), SLOT(autoReadChanged())); - connect(muse, SIGNAL(configChanged()), SLOT(configChanged())); - connect(minus, SIGNAL(clicked()), SLOT(labelMinusClicked())); - configChanged(); - } - -//--------------------------------------------------------- -// ctrl -//--------------------------------------------------------- - -Ctrl* TLSWidget::ctrl() const - { - return at->controller; - } - -//--------------------------------------------------------- -// height -//--------------------------------------------------------- - -int TLSWidget::cheight() const - { - return at->tw->height() - splitWidth; - } - -//--------------------------------------------------------- -// selectionChanged -//--------------------------------------------------------- - -void TLSWidget::selectionChanged() - { -// setFrameShadow(_track->selected() ? QFrame::Sunken : QFrame::Raised); - } - -//--------------------------------------------------------- -// configChanged -//--------------------------------------------------------- - -void TLSWidget::configChanged() - { - QColor c(_track->ccolor()); - QPalette p(palette()); - p.setColor(QPalette::Background, c.light(100)); - setPalette(p); - } - -//--------------------------------------------------------- -// showControllerList -//--------------------------------------------------------- - -bool TLSWidget::showControllerList() - { - Ctrl* c = ctrl(); - int id; - if (c) - id = c->id(); - else - id = CTRL_NO_CTRL; - for (;;) { - CtrlDialog cd(_ctrlTrack, id); - int rv = cd.exec(); - if (rv != 1) - return false; - id = cd.curId(); - if (id == CTRL_NO_CTRL) - return false; - if (id != CTRL_OTHER) - break; - ConfigMidiCtrl* mce = new ConfigMidiCtrl((MidiTrack*)_track); - mce->exec(); - delete mce; - } - setCtrl(id); - return true; - } - -//--------------------------------------------------------- -// setCtrl -//--------------------------------------------------------- - -bool TLSWidget::setCtrl(int ctrl) - { - if (ctrl == CTRL_NO_CTRL || ctrl == CTRL_OTHER) { - // this controller subtrack is new, ask user for - // controller: - return showControllerList(); - } - - if (_ctrlTrack && _ctrlTrack != _track) { - disconnect(_ctrlTrack, SIGNAL(controllerChanged(int)), this, SLOT(controllerListChanged(int))); - } - if (ctrl == CTRL_VELOCITY) { - at->controller = &veloList; - at->ctrl = CTRL_VELOCITY; - ctrlList->setText(tr("Velocity")); - _ctrlTrack = _track; - emit controllerChanged(at->ctrl); - } - else { - at->ctrl = ctrl; - at->controller = _track->getController(ctrl); - if (at->controller) { - _ctrlTrack = _track; - ctrlList->setText(at->controller->name()); - emit controllerChanged(ctrl); - } - } - return true; - } - -//--------------------------------------------------------- -// labelMinusClicked -//--------------------------------------------------------- - -void TLSWidget::labelMinusClicked() - { - emit minusClicked(this); - } - -//--------------------------------------------------------- -// mousePressEvent -//--------------------------------------------------------- - -void TLSWidget::mousePressEvent(QMouseEvent* ev) - { - if (ev->button() == Qt::RightButton) { - QMenu* menu = new QMenu(this); - QAction* a = menu->addAction(tr("Delete Controller")); - a->setData(0); - QAction* rv = menu->exec(ev->globalPos()); - if (rv == 0) - return; - emit minusClicked(this); - return; - } - song->selectTrack(_track); - - int y = ev->pos().y(); - int wh = height(); - starty = ev->globalPos().y(); - if (y > (wh - splitWidth)) { - state = S_DRAGBOTTOM; - emit startDrag(trackIdx); - } - } - -//--------------------------------------------------------- -// mouseReleaseEvent -//--------------------------------------------------------- - -void TLSWidget::mouseReleaseEvent(QMouseEvent*) - { - state = S_NORMAL; - } - -//--------------------------------------------------------- -// mouseMoveEvent -//--------------------------------------------------------- - -void TLSWidget::mouseMoveEvent(QMouseEvent* ev) - { - QPoint pos(ev->pos()); - - if (state == S_DRAGTOP) - emit drag(trackIdx-1, ev->globalPos().y() - starty); - else if (state == S_DRAGBOTTOM) - emit drag(trackIdx, ev->globalPos().y() - starty); - else { - int y = pos.y(); - int wh = height(); - if (y > (wh - splitWidth)) - setCursor(Qt::SizeVerCursor); - else - setCursor(Qt::ArrowCursor); - } - } - -//--------------------------------------------------------- -// controllerListChanged -// controller list for controller id changed -//--------------------------------------------------------- - -void TLSWidget::controllerListChanged(int id) - { - if (ctrl()->id() == id) - tc()->widget()->update(); - } - -//--------------------------------------------------------- -// autoReadChanged -//--------------------------------------------------------- - -void TLSWidget::autoReadChanged() - { - tc()->widget()->update(); - } - -//--------------------------------------------------------- -// paintEvent -//--------------------------------------------------------- - -void TLSWidget::paintEvent(QPaintEvent* ev) - { - QPainter p(this); - QRect r(ev->rect()); - p.fillRect(r, _track->ccolor()); - paintHLine(p, r.x(), r.x() + r.width(), height() - splitWidth); - } diff --git a/muse/muse/tlswidget.h b/muse/muse/tlswidget.h deleted file mode 100644 index ccdfa3b8..00000000 --- a/muse/muse/tlswidget.h +++ /dev/null @@ -1,83 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __TLSWIDGET_H__ -#define __TLSWIDGET_H__ - -class Track; -class ArrangerTrack; -class CtrlDialog; -class TimeCanvas; - -#include "ctrl/ctrleditor.h" - -//--------------------------------------------------------- -// TLSWidget -//--------------------------------------------------------- - -class TLSWidget : public QWidget, public CtrlEditor { - Q_OBJECT - - enum { S_NORMAL, S_DRAGTOP, S_DRAGBOTTOM, S_DRAG }; - int state; - - int trackIdx; - int starty; - Track* _track; // editor canvas is associated to this track - Track* _ctrlTrack; // track were ctrl belongs to - TimeCanvas* _tc; - QToolButton* ctrlList; - QLineEdit* nameEdit; - ArrangerTrack* at; - - TimeCanvas* tc() const { return _tc; } - Ctrl* ctrl() const; - int cheight() const; - - virtual void paintEvent(QPaintEvent*); - virtual void mousePressEvent(QMouseEvent*); - virtual void mouseReleaseEvent(QMouseEvent*); - virtual void mouseMoveEvent(QMouseEvent*); - - private slots: - void labelMinusClicked(); - bool showControllerList(); - void selectionChanged(); - void configChanged(); - void controllerListChanged(int); - void autoReadChanged(); - - signals: - void minusClicked(TLSWidget*); - void controllerChanged(int); - void startDrag(int idx); - void drag(int idx, int); - - public: - TLSWidget(Track*, ArrangerTrack*, TimeCanvas* tc); - Track* track() const { return _track; } - Track* ctrlTrack() const { return _ctrlTrack; } - bool setCtrl(int ctrl); - void setIdx(int n) { trackIdx = n; } - }; - -#endif - - diff --git a/muse/muse/tlwidget.cpp b/muse/muse/tlwidget.cpp deleted file mode 100644 index fdf08d0b..00000000 --- a/muse/muse/tlwidget.cpp +++ /dev/null @@ -1,641 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "song.h" -#include "track.h" -#include "tlwidget.h" -#include "tlwlayout.h" -#include "tllineedit.h" -#include "icons.h" -#include "arranger.h" -#include "widgets/simplebutton.h" -#include "muse.h" -#include "trelement.h" -#include "gconfig.h" -#include "widgets/utils.h" -#include "trackdrag.h" -#include "synth.h" -#include "widgets/outportcombo.h" -#include "audio.h" -#include "midioutport.h" -#include "instruments/minstrument.h" - -//--------------------------------------------------------- -// TLWidget -//--------------------------------------------------------- - -TLWidget::TLWidget(Track* t, TrGroupList* tgl) - { - setAttribute(Qt::WA_OpaquePaintEvent); - setAutoFillBackground(true); - - setMouseTracking(true); - - state = S_NORMAL; - off = 0; - tel = tgl; - _track = t; - outPort = 0; - - bgColor = _track->ccolor(); - selectBgColor = bgColor.light(); - - QPalette p(palette()); - p.setColor(QPalette::Window, bgColor); - p.setColor(QPalette::Base, bgColor); - setPalette(p); - - l = new TLWidgetLayout(this); - configChanged(); - - connect(_track, SIGNAL(selectionChanged(bool)), SLOT(selectionChanged())); - setAcceptDrops(true); - connect(muse, SIGNAL(configChanged()), SLOT(configChanged())); - } - -//--------------------------------------------------------- -// selectionChanged -//--------------------------------------------------------- - -void TLWidget::selectionChanged() - { - update(); - } - -//--------------------------------------------------------- -// nameChanged -//--------------------------------------------------------- - -void TLWidget::nameChanged(QString s) - { - song->changeTrackName(_track, s); - nameEdit->setCursorPosition(0); - } - -//--------------------------------------------------------- -// selectTL -//--------------------------------------------------------- - -void TLWidget::select() - { - setFocus(); - song->selectTrack(_track); - } - -//--------------------------------------------------------- -// labelPlusClicked -//--------------------------------------------------------- - -void TLWidget::labelPlusClicked() - { - emit plusClicked(this); - } - -//--------------------------------------------------------- -// mousePressEvent -//--------------------------------------------------------- - -void TLWidget::mousePressEvent(QMouseEvent* ev) - { - enum { - CMD_REMOVE_TRACK, CMD_COPY_TRACK, CMD_SHOW_AUDIO_GUI, - CMD_SHOW_MIDI_GUI - }; - int button = ev->button(); - if (button == Qt::RightButton) { - QMenu* menu = new QMenu(this); - QAction* a = getAction("delete", this); - menu->addAction(a); - a->setData(CMD_REMOVE_TRACK); - if (_track->type() == Track::MIDI || _track->type() == Track::WAVE) { - a = menu->addAction(tr("Copy Track")); - a->setData(CMD_COPY_TRACK); - } - if (_track->type() == Track::AUDIO_SOFTSYNTH) { - SynthI* s = (SynthI*) _track; - if (s->hasGui()) { - menu->addSeparator(); - a = menu->addAction(tr("Show Gui")); - a->setData(CMD_SHOW_AUDIO_GUI); - a->setCheckable(true); - a->setChecked(s->guiVisible()); - } - } - else if (_track->type() == Track::MIDI_SYNTI) { - MidiSynti* s = (MidiSynti*) _track; - if (s->hasGui()) { - menu->addSeparator(); - a = menu->addAction(tr("Show Gui")); - a->setData(CMD_SHOW_MIDI_GUI); - a->setCheckable(true); - a->setChecked(s->guiVisible()); - } - } - - a = menu->exec(ev->globalPos()); - if (!a) - return; - int rv = a->data().toInt(); - switch (rv) { - default: - break; - case CMD_REMOVE_TRACK: - song->removeTrack(_track); - break; - case CMD_COPY_TRACK: - { - int idx = song->tracks()->indexOf(_track); - if (_track->type() == Track::MIDI) { - MidiTrack* t = new MidiTrack(); - t->clone((MidiTrack*)_track); - song->cmdInsertTrack(t, idx); - } - else { - WaveTrack* t = new WaveTrack(); - t->clone((WaveTrack*)_track); - song->cmdInsertTrack(t, idx); - } - } - break; - case CMD_SHOW_AUDIO_GUI: - { - SynthI* s = (SynthI*) _track; - s->showGui(!s->guiVisible()); - } - break; - case CMD_SHOW_MIDI_GUI: - { - MidiSynti* s = (MidiSynti*) _track; - s->showGui(!s->guiVisible()); - } - break; - } - return; - } - int y = ev->pos().y(); - int wh = height(); - starty = ev->globalPos().y(); - if (y > (wh - splitWidth)) { - state = S_DRAGBOTTOM; - emit startDrag(trackIdx); - } - else { - state = S_DRAG; - startDragPos = ev->pos(); - startDragTime = QTime::currentTime(); - select(); - } - } - -//--------------------------------------------------------- -// mouseReleaseEvent -//--------------------------------------------------------- - -void TLWidget::mouseReleaseEvent(QMouseEvent*) - { - state = S_NORMAL; - } - -//--------------------------------------------------------- -// mouseMoveEvent -//--------------------------------------------------------- - -void TLWidget::mouseMoveEvent(QMouseEvent* ev) - { - QPoint pos(ev->pos()); - - if (state == S_DRAGBOTTOM) - emit drag(trackIdx, ev->globalPos().y() - starty); - else if (state == S_DRAG) { - int t = startDragTime.msecsTo(QTime::currentTime()); - bool dragActive = (startDragPos - pos).manhattanLength() > - QApplication::startDragDistance() - || t > QApplication::startDragTime(); - if (dragActive) { - QDrag* d = new TrackDrag(_track, this); - d->start(Qt::MoveAction); - state = S_NORMAL; - } - } - else { - int y = pos.y(); - int wh = height(); - if (y > (wh - splitWidth)) - setCursor(Qt::SizeVerCursor); - else - setCursor(Qt::ArrowCursor); - } - } - -//--------------------------------------------------------- -// configChanged -//--------------------------------------------------------- - -void TLWidget::configChanged() - { - l->clear(); - wlist.clear(); - nameEdit = 0; - record = 0; - off = 0; - outChannel = 0; - outPort = 0; - - label = new QLabel; - label->setObjectName("trackLabel"); - l->addWidget(label); - label->setIndent(3); - - label->setText(_track->cname()); - label->setFixedHeight(11); - - plus = newPlusButton(); - l->addWidget(plus); - plus->setToolTip(tr("Add Subtrack")); - connect(plus, SIGNAL(clicked()), SLOT(labelPlusClicked())); - - for (iTrGroup i = tel->begin(); i != tel->end(); ++i) { - TrElementList& el = *i; - iTrElement k; - for (k = el.begin(); k != el.end(); ++k) { - int id = (*k)->id; - switch(id) { - case TR_NAME: - nameEdit = new TLLineEdit(_track->name(), this); - nameEdit->setFixedHeight(trackRowHeight); - connect(nameEdit, SIGNAL(contentChanged(QString)), SLOT(nameChanged(QString))); - connect(nameEdit, SIGNAL(mousePress()), SLOT(select())); - connect(_track, SIGNAL(nameChanged(const QString&)), nameEdit, SLOT(setText(const QString&))); - nameEdit->setToolTip(_track->clname() + " Name"); - l->addWidget(nameEdit); - wlist.push_back(nameEdit); - break; - - case TR_INSTRUMENT: - { - instrument = new QComboBox(this); - instrument->setFixedHeight(trackRowHeight); - MidiOutPort* op = (MidiOutPort*)_track; - MidiInstrument* mi = op->instrument(); - int idx = 0; - int curIdx = 0; - for (iMidiInstrument i = midiInstruments.begin(); i != midiInstruments.end(); ++i, ++idx) { - instrument->addItem((*i)->iname()); - if ((*i)->iname() == mi->iname()) - curIdx = idx; - } - instrument->setCurrentIndex(curIdx); - connect(instrument, SIGNAL(activated(int)), SLOT(instrumentSelected(int))); - connect(op, SIGNAL(instrumentChanged()), SLOT(instrumentChanged())); - l->addWidget(instrument); - wlist.push_back(instrument); - } - break; - - case TR_PATCH: - { - // Ctrl* ctrl = _track->getController(CTRL_PROGRAM); - } - break; - - case TR_OFF: - { - off = newOffButton(); - off->setFixedSize(trackRowHeight, trackRowHeight); - off->setChecked(_track->off()); - connect(off, SIGNAL(clicked(bool)), SLOT(offToggled(bool))); - connect(_track, SIGNAL(offChanged(bool)), this, SLOT(updateOffState())); - l->addWidget(off); - wlist.push_back(off); - } - break; - - case TR_DRUMMAP: - { - SimpleButton* dm = newDrumMapButton(); - dm->setFixedSize(trackRowHeight, trackRowHeight); - dm->setChecked(((MidiTrack*)_track)->useDrumMap()); - connect(dm, SIGNAL(clicked(bool)), SLOT(drumMapToggled(bool))); - connect(_track, SIGNAL(useDrumMapChanged(bool)), dm, SLOT(setChecked(bool))); - l->addWidget(dm); - wlist.push_back(dm); - } - break; - - case TR_MUTE: - { - SimpleButton* mute = newMuteButton(); - mute->setFixedSize(trackRowHeight, trackRowHeight); - mute->setChecked(_track->isMute()); - connect(mute, SIGNAL(clicked(bool)), SLOT(muteToggled(bool))); - connect(_track, SIGNAL(muteChanged(bool)), mute, SLOT(setChecked(bool))); - l->addWidget(mute); - wlist.push_back(mute); - } - break; - - case TR_SOLO: - { - SimpleButton* solo = newSoloButton(); - solo->setFixedSize(trackRowHeight, trackRowHeight); - solo->setChecked(_track->solo()); - connect(solo, SIGNAL(clicked(bool)), SLOT(soloToggled(bool))); - connect(_track, SIGNAL(soloChanged(bool)), solo, SLOT(setChecked(bool))); - l->addWidget(solo); - wlist.push_back(solo); - } - break; - - case TR_MONITOR: - { - SimpleButton* monitor = newMonitorButton(); - monitor->setFixedSize(trackRowHeight+4, trackRowHeight); - monitor->setChecked(_track->monitor()); - connect(monitor, SIGNAL(clicked(bool)), SLOT(monitorToggled(bool))); - connect(_track, SIGNAL(monitorChanged(bool)), monitor, SLOT(setChecked(bool))); - l->addWidget(monitor); - wlist.push_back(monitor); - } - break; - - case TR_RECORD: - { - record = newRecordButton(); - record->setFixedSize(trackRowHeight, trackRowHeight); - record->setChecked(_track->recordFlag()); - connect(record, SIGNAL(clicked(bool)), SLOT(recordToggled(bool))); - connect(_track, SIGNAL(recordChanged(bool)), record, SLOT(setChecked(bool))); - l->addWidget(record); - wlist.push_back(record); - } - break; - - case TR_AREAD: - { - SimpleButton* b = newAutoReadButton(); - b->setFixedSize(trackRowHeight, trackRowHeight); - b->setChecked(_track->autoRead()); - connect(b, SIGNAL(clicked(bool)), SLOT(autoReadToggled(bool))); - connect(_track, SIGNAL(autoReadChanged(bool)), b, SLOT(setChecked(bool))); - l->addWidget(b); - wlist.push_back(b); - } - break; - - case TR_AWRITE: - { - SimpleButton* b = newAutoWriteButton(); - b->setFixedSize(trackRowHeight, trackRowHeight); - b->setChecked(_track->autoWrite()); - connect(b, SIGNAL(clicked(bool)), SLOT(autoWriteToggled(bool))); - connect(_track, SIGNAL(autoWriteChanged(bool)), b, SLOT(setChecked(bool))); - l->addWidget(b); - wlist.push_back(b); - } - break; - - case TR_OCHANNEL: - { - outChannel = new QSpinBox(this); - outChannel->setFixedSize(45, trackRowHeight); - outChannel->setRange(1, 16); - outChannel->setValue(((MidiTrack*)_track)->channelNo() + 1); - outChannel->setToolTip(tr("Midi Output Channel")); - l->addWidget(outChannel); - wlist.push_back(outChannel); - connect(outChannel, SIGNAL(valueChanged(int)), SLOT(setChannel(int))); - connect((MidiTrack*)_track, SIGNAL(channelChanged(int)), SLOT(channelChanged(int))); - } - break; - - default: - printf("TLWidget:: unknown element %d\n", id); - break; - } - } - } - updateOffState(); - selectionChanged(); // update selection state - l->update(); - } - -//--------------------------------------------------------- -// recordToggled -//--------------------------------------------------------- - -void TLWidget::recordToggled(bool val) - { - song->setRecordFlag(_track, !val); - } - -//--------------------------------------------------------- -// muteToggled -//--------------------------------------------------------- - -void TLWidget::muteToggled(bool val) - { - song->setMute(_track, val); - } - -//--------------------------------------------------------- -// monitorToggled -//--------------------------------------------------------- - -void TLWidget::monitorToggled(bool val) - { - _track->setMonitor(val); - } - -//--------------------------------------------------------- -// drumMapToggled -//--------------------------------------------------------- - -void TLWidget::drumMapToggled(bool val) - { - ((MidiTrack*)_track)->setUseDrumMap(val); - } - -//--------------------------------------------------------- -// offToggled -//--------------------------------------------------------- - -void TLWidget::offToggled(bool val) - { - song->setOff(_track, !val); - } - -//--------------------------------------------------------- -// soloToggled -//--------------------------------------------------------- - -void TLWidget::soloToggled(bool val) - { - song->setSolo(_track, val); - } - -//--------------------------------------------------------- -// autoReadToggled -//--------------------------------------------------------- - -void TLWidget::autoReadToggled(bool val) - { - song->setAutoRead(_track, val); - } - -//--------------------------------------------------------- -// autoWriteToggled -//--------------------------------------------------------- - -void TLWidget::autoWriteToggled(bool val) - { - song->setAutoWrite(_track, val); - } - -//--------------------------------------------------------- -// setOutPort -//--------------------------------------------------------- - -void TLWidget::setOutPort(int n) - { - outPort->setCurrentIndex(n); - } - -//--------------------------------------------------------- -// dragEnterEvent -//--------------------------------------------------------- - -void TLWidget::dragEnterEvent(QDragEnterEvent* event) - { - if (TrackDrag::canDecode(event)) - event->acceptProposedAction(); - } - -//--------------------------------------------------------- -// dropEvent -//--------------------------------------------------------- - -void TLWidget::dropEvent(QDropEvent* event) - { - Track* t; - TrackDrag::decode(event, t); - if (_track != t) - emit moveTrack(t, _track); - event->acceptProposedAction(); - } - -//--------------------------------------------------------- -// updateOffState -//--------------------------------------------------------- - -void TLWidget::updateOffState() - { - bool val = !_track->off(); - std::vector::iterator i = wlist.begin(); - for (; i != wlist.end(); ++i) { - if ((*i) != off) - (*i)->setEnabled(val); - } - if (off) - off->setChecked(!val); - } - -//--------------------------------------------------------- -// instrumentSelected -//--------------------------------------------------------- - -void TLWidget::instrumentSelected(int n) - { - MidiOutPort* op = (MidiOutPort*)_track; - int idx = 0; - for (iMidiInstrument i = midiInstruments.begin(); i != midiInstruments.end(); ++i, ++idx) { - if (idx == n) { - op->setInstrument(*i); - break; - } - } - } - -//--------------------------------------------------------- -// instrumentChanged -//--------------------------------------------------------- - -void TLWidget::instrumentChanged() - { - MidiOutPort* op = (MidiOutPort*)_track; - MidiInstrument* mi = op->instrument(); - int idx = 0; - for (iMidiInstrument i = midiInstruments.begin(); i != midiInstruments.end(); ++i, ++idx) { - if (*i == mi) { - instrument->setCurrentIndex(idx); - break; - } - } - } - -//--------------------------------------------------------- -// paintEvent -//--------------------------------------------------------- - -void TLWidget::paintEvent(QPaintEvent* ev) - { - QPainter p(this); - QRect r(ev->rect()); - QColor color(_track->selected() ? selectBgColor : bgColor); - p.fillRect(r, color); - - paintHLine(p, r.x(), r.x() + r.width(), height() - splitWidth); - QPalette pl = nameEdit->palette(); - pl.setColor(QPalette::Window, color); - pl.setColor(QPalette::Base, color); - nameEdit->setPalette(pl); - - // The selected track will get a 4 pixel red bar to the left - if ( _track->selected()) { - QColor color(200,10,10); - QRect qr(0, 0, 4, r.height()-splitWidth); - p.fillRect(qr, color); - } - } - -//--------------------------------------------------------- -// channelChanged -// SLOT: callend when channel routing of track has -// changed -// - channel starts counting at 0 -//--------------------------------------------------------- - -void TLWidget::channelChanged(int channel) - { - if (outChannel->value() == channel + 1) - return; - outChannel->setValue(channel + 1); - } - -//--------------------------------------------------------- -// setChannel -// - called when channel spinbox value changed -// - channel starts counting at 1 -//--------------------------------------------------------- - -void TLWidget::setChannel(int channel) - { - ((MidiTrack*)_track)->setChannel(channel - 1); - } - diff --git a/muse/muse/tlwidget.h b/muse/muse/tlwidget.h deleted file mode 100644 index fbe428e2..00000000 --- a/muse/muse/tlwidget.h +++ /dev/null @@ -1,105 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __TLWIDGET_H__ -#define __TLWIDGET_H__ - -class Track; -class TrGroupList; -class TLWidgetLayout; -class SimpleButton; - -//--------------------------------------------------------- -// TLWidget -//--------------------------------------------------------- - -class TLWidget : public QWidget { - Q_OBJECT - - enum { S_NORMAL, S_DRAGBOTTOM, S_DRAG }; - int state; - - int trackIdx; - int starty; - Track* _track; - QColor bgColor; - QColor selectBgColor; - - QLineEdit* nameEdit; - TLWidgetLayout* l; - TrGroupList* tel; - QSpinBox* outChannel; - QComboBox* outPort; - SimpleButton* off; - SimpleButton* plus; - SimpleButton* record; - std::vector wlist; - QComboBox* instrument; - QLabel* label; - - QTime startDragTime; - QPoint startDragPos; - - virtual void paintEvent(QPaintEvent*); - virtual void mousePressEvent(QMouseEvent*); - virtual void mouseReleaseEvent(QMouseEvent*); - virtual void mouseMoveEvent(QMouseEvent*); - virtual void dragEnterEvent(QDragEnterEvent*); - virtual void dropEvent(QDropEvent*); - - signals: - void startDrag(int idx); - void drag(int idx, int); - - private slots: - void nameChanged(QString); - void labelPlusClicked(); - void configChanged(); - void recordToggled(bool); - void muteToggled(bool); - void offToggled(bool); - void soloToggled(bool); - void monitorToggled(bool); - void drumMapToggled(bool); - void selectionChanged(); - void setOutPort(int); - void autoReadToggled(bool val); - void autoWriteToggled(bool val); - void instrumentSelected(int); - void instrumentChanged(); - void updateOffState(); - void channelChanged(int); - void setChannel(int); - - public slots: - void select(); - - signals: - void plusClicked(TLWidget*); - void moveTrack(Track* src, Track* dst); - - public: - TLWidget(Track* t, TrGroupList*); - Track* track() const { return _track; } - void setIdx(int n) { trackIdx = n; } - }; - -#endif - diff --git a/muse/muse/tlwlayout.cpp b/muse/muse/tlwlayout.cpp deleted file mode 100644 index 076f07cf..00000000 --- a/muse/muse/tlwlayout.cpp +++ /dev/null @@ -1,144 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "tlwlayout.h" -#include "arranger.h" -#include "gui.h" - -//--------------------------------------------------------- -// TLWidgetLayout -//--------------------------------------------------------- - -TLWidgetLayout::TLWidgetLayout(QWidget *parent) - : QLayout(parent) - { - setMargin(0); - setSpacing(0); - } - -TLWidgetLayout::TLWidgetLayout() - { - setMargin(0); - setSpacing(0); - } - -//--------------------------------------------------------- -// takeAt -//--------------------------------------------------------- - -QLayoutItem *TLWidgetLayout::takeAt(int index) - { - if (index >= 0 && index < itemList.size()) - return itemList.takeAt(index); - else - return 0; - } - -//--------------------------------------------------------- -// setGeometry -//--------------------------------------------------------- - -void TLWidgetLayout::setGeometry(const QRect &rect) - { - int n = itemList.size(); - if (n < 2) - return; - - static const int labelWidth = 50; - int x1 = rect.x() + labelWidth; - int x2 = rect.x() + rect.width(); - int y = rect.y() + 1; - int y2 = y + rect.height() - splitWidth; - int dh = trackRowHeight; - - QLayoutItem* item = itemList.at(0); - QSize size(item->sizeHint()); - item->setGeometry(QRect(rect.x(), rect.y(), size.width(), size.height())); - - item = itemList.at(1); - item->setGeometry(QRect(x1 - 18, y2 - 19, 18, 18)); - - itemList.at(2)->setGeometry(QRect(x1, y, x2-x1, dh)); - if (n <= 3) - return; - - y += dh; - if ((y + itemList.at(3)->sizeHint().height()) > y2) { - for (int i = 3; i < n; ++i) - itemList.at(i)->setGeometry(QRect(-1000, -1000, 0, 0)); - return; - } - int x = x1; - - for (int i = 3; i < n; ++i) { - QLayoutItem *item = itemList.at(i); - QSize size(item->sizeHint()); - - if ((x > x1) && ((x + size.width()) > x2)) { - x = x1; - y += dh; - if ((y + size.height()) > y2) { - for (; i < n; ++i) - itemList.at(i)->setGeometry(QRect(-1000, -1000, 0, 0)); - return; - } - } - item->setGeometry(QRect(x, y, size.width(), dh)); - x += size.width(); - } - } - -//--------------------------------------------------------- -// sizeHint -//--------------------------------------------------------- - -QSize TLWidgetLayout::sizeHint() const - { - return minimumSize(); - } - -//--------------------------------------------------------- -// minimumSize -//--------------------------------------------------------- - -QSize TLWidgetLayout::minimumSize() const - { - QSize size; - QLayoutItem *item; - foreach (item, itemList) - size = size.expandedTo(item->minimumSize()); - - size += QSize(2*margin(), 2*margin()); - return size; - } - -//--------------------------------------------------------- -// clear -//--------------------------------------------------------- - -void TLWidgetLayout::clear() - { - QLayoutItem* child; - while ((child = takeAt(0)) != 0) { - delete child->widget(); - delete child; - } - } - diff --git a/muse/muse/tlwlayout.h b/muse/muse/tlwlayout.h deleted file mode 100644 index 1a9cc914..00000000 --- a/muse/muse/tlwlayout.h +++ /dev/null @@ -1,51 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __TLWLAYOUT_H__ -#define __TLWLAYOUT_H__ - -//--------------------------------------------------------- -// TLWidgetLayout -//--------------------------------------------------------- - -class TLWidgetLayout : public QLayout { - QList itemList; - - int doLayout(const QRect& rect, bool testOnly) const; - - public: - TLWidgetLayout(QWidget* parent); - TLWidgetLayout(); - ~TLWidgetLayout() { clear(); } - - void addItem(QLayoutItem* item) { itemList.append(item); } - Qt::Orientations expandingDirections() const { return 0; } - bool hasHeightForWidth() const { return false; } - int count() const { return itemList.size(); } - QSize minimumSize() const; - void setGeometry(const QRect &rect); - QSize sizeHint() const; - QLayoutItem *itemAt(int index) const { return itemList.value(index); } - QLayoutItem *takeAt(int index); - void clear(); - }; - -#endif - diff --git a/muse/muse/track.cpp b/muse/muse/track.cpp deleted file mode 100644 index 93d92ac1..00000000 --- a/muse/muse/track.cpp +++ /dev/null @@ -1,1062 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "track.h" -#include "song.h" -#include "al/tempo.h" -#include "al/xml.h" -#include "icons.h" -#include "audio.h" -#include "gconfig.h" -#include "midictrl.h" -#include "part.h" -#include "gui.h" -#include "audiodev.h" - -// synchronize with TrackType!: - -const char* Track::_cname[] = { - "AudioOut", "Group", "Wave", "AudioIn", - "Synth", "Midi", "MidiOut", "MidiIn", "M-Synth" - }; - -const char* Track::_clname[] = { - "Audio Output", "Audio Group", "Wave Track", "Audio Input", - "Synti", "Midi Track", "Midi Output", "Midi Input", - "Midi Synth" - }; - -//--------------------------------------------------------- -// ArrangerTrack -//--------------------------------------------------------- - -ArrangerTrack::ArrangerTrack() - { - tw = 0; - ctrl = -1; // first ctrl in list - controller = 0; - h = defaultTrackHeight; - } - -//--------------------------------------------------------- -// ccolor -// return track specific track background color -//--------------------------------------------------------- - -QColor Track::ccolor() const - { - return config.trackBg[type()]; - } - -//--------------------------------------------------------- -// pixmap -//--------------------------------------------------------- - -QPixmap* Track::pixmap(TrackType t) - { - switch(t) { - case AUDIO_OUTPUT: return addtrack_audiooutputIcon; - case AUDIO_GROUP: return addtrack_audiogroupIcon; - case WAVE: return addtrack_wavetrackIcon; - case AUDIO_INPUT: return addtrack_audioinputIcon; - case AUDIO_SOFTSYNTH: return addtrack_audioinputIcon; // DEBUG - default: - case MIDI: return addtrack_addmiditrackIcon; - case MIDI_OUT: return addtrack_addmiditrackIcon; - case MIDI_IN: return addtrack_addmiditrackIcon; - } - } - -//--------------------------------------------------------- -// Track -//--------------------------------------------------------- - -Track::Track() - { - _tt = AL::TICKS; - _recordFlag = false; - _monitor = false; - _mute = false; - _solo = false; - _off = false; - _channels = 0; // 1 - mono, 2 - stereo - _selected = false; - _locked = false; - _autoRead = autoReadDefault(); - _autoWrite = autoWriteDefault(); - - for (int i = 0; i < MAX_CHANNELS; ++i) { - _meter[i] = 0.0f; - _peak[i] = 0.0f; - _peakTimer[i] = 0; - } - _sendSync = false; - _deviceId = 127; - _parts = new PartList; - } - -//--------------------------------------------------------- -// ~Track -//--------------------------------------------------------- - -Track::~Track() - { - delete _parts; - - for (int i = 0; i < MAX_CHANNELS; ++i) { -// if (!_alsaPort[i].isZero()) -// midiDriver->unregisterPort(_alsaPort[i]); - if (!_jackPort[i].isZero()) - audioDriver->unregisterPort(_jackPort[i]); - } - - } - -//--------------------------------------------------------- -// setDefaultName -// generate unique name for track -//--------------------------------------------------------- - -void Track::setDefaultName() - { - QString base; - switch(type()) { - case MIDI: - case WAVE: - base = QString("Track"); - break; - case AUDIO_GROUP: - base = QString("Group"); - break; - case AUDIO_SOFTSYNTH: - // base = QString("Synth"); - return; - case AUDIO_OUTPUT: - case AUDIO_INPUT: - case MIDI_OUT: - case MIDI_IN: - case MIDI_SYNTI: - case TRACK_TYPES: - base = cname(); - break; - }; - // - // create unique name - // - for (int i = 1;; ++i) { - QString s; - if (i == 1) - s = base; - else - s = QString("%1 %2").arg(base).arg(i); - bool found = false; - TrackList* tl = song->tracks(); - for (iTrack it = tl->begin(); it != tl->end(); ++it) { - Track* track = *it; - if (track->name() == s) { - found = true; - break; - } - } - if (!found) { - setName(s); - break; - } - } - } - -//--------------------------------------------------------- -// dump -//--------------------------------------------------------- - -void Track::dump() const - { - printf("Track <%s>: typ %d, parts %zd sel %d\n", - _name.toLatin1().data(), type(), _parts->size(), _selected); - } - -//--------------------------------------------------------- -// addPart -//--------------------------------------------------------- - -void Track::addPart(Part* p) - { - p->setTrack(this); - _parts->add(p); - } - -//--------------------------------------------------------- -// findPart -//--------------------------------------------------------- - -Part* Track::findPart(unsigned tick) - { - for (iPart i = _parts->begin(); i != _parts->end(); ++i) { - Part* part = i->second; - if (tick >= part->tick() && tick < (part->tick()+part->lenTick())) - return part; - } - return 0; - } - -//--------------------------------------------------------- -// Track::writeProperties -//--------------------------------------------------------- - -void Track::writeProperties(Xml& xml) const - { - xml.tag("name", _name); - if (!_comment.isEmpty()) - xml.tag("comment", _comment); - if (_recordFlag) - xml.tag("record", _recordFlag); - if (mute() != muteDefault()) - xml.tag("mute", mute()); - if (solo()) - xml.tag("solo", solo()); - if (off()) - xml.tag("off", off()); - if (_channels) - xml.tag("channels", _channels); - if (_locked) - xml.tag("locked", _locked); - if (_monitor) - xml.tag("monitor", _monitor); - if (_autoRead != autoReadDefault()) - xml.tag("autoRead", _autoRead); - if (_autoWrite != autoWriteDefault()) - xml.tag("autoWrite", _autoWrite); - if (_selected) - xml.tag("selected", _selected); - for (ciCtrl icl = controller()->begin(); icl != controller()->end(); ++icl) - icl->second->write(xml); - if (arrangerTrack.tw) - xml.tag("height", arrangerTrack.tw->height()); - for (ciArrangerTrack i = subtracks.begin(); i != subtracks.end(); ++i) { - xml.stag("subtrack"); - xml.tag("height", (*i)->tw->height()); - xml.tag("ctrl", (*i)->ctrl); - xml.etag("subtrack"); - } - } - -//--------------------------------------------------------- -// Track::readProperties -//--------------------------------------------------------- - -bool Track::readProperties(QDomNode node) - { - QDomElement e = node.toElement(); - QString tag(e.tagName()); - QString s(e.text()); - int i = s.toInt(); - - if (tag == "name") - setName(s); - else if (tag == "comment") - _comment = s; - else if (tag == "record") { - bool recordFlag = i; - setRecordFlag(recordFlag); - } - else if (tag == "mute") - _mute = i; - else if (tag == "solo") - _solo = i; - else if (tag == "off") - _off = i; - else if (tag == "channels") - _channels = i; - else if (tag == "locked") - _locked = i; - else if (tag == "monitor") - _monitor = i; - else if (tag == "selected") - _selected = i; - else if (tag == "autoRead") - _autoRead = i; - else if (tag == "autoWrite") - _autoWrite = i; - else if (tag == "controller") { - Ctrl* l = new Ctrl(); - l->read(node, false); - - iCtrl icl = controller()->find(l->id()); - if (icl == controller()->end()) - controller()->add(l); - else { //??? - Ctrl* d = icl->second; - for (iCtrlVal i = l->begin(); i != l->end(); ++i) - d->insert(i.key(), i.value()); - d->setCurVal(l->curVal()); - d->setDefault(l->getDefault()); - delete l; - } - } - else if (tag == "height") - arrangerTrack.h = i < minTrackHeight ? minTrackHeight : i; - else if (tag == "subtrack") { - ArrangerTrack* st = new ArrangerTrack; - for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) { - QDomElement e = n.toElement(); - QString tag = e.tagName(); - QString s = e.text(); - int i = s.toInt(); - if (tag == "height") - st->h = i; - else if (tag == "ctrl") { - st->ctrl = i; - } - else - printf("Track::subtrack: unknown tag <%s>\n", tag.toLatin1().data()); - } - subtracks.push_back(st); - } - else - return true; - return false; - } - -//--------------------------------------------------------- -// addController -//--------------------------------------------------------- - -void Track::addController(Ctrl* list) - { - iCtrl i = controller()->find(list->id()); - if (i != controller()->end()) { - // printf("%s(%s)::addController(%s): already there 0x%x\n", - // cname().toLatin1().data(), name().toLatin1().data(), list->name().toLatin1().data(), list->id()); - // abort(); - return; - } - controller()->add(list); - emit clChanged(); - } - -//--------------------------------------------------------- -// addMidiController -//--------------------------------------------------------- - -void Track::addMidiController(MidiInstrument* mi, int ctrl) - { - iCtrl cl = _controller.find(ctrl); - if (cl != _controller.end()) - return; - - MidiController* mc = mi->midiController(ctrl); - Ctrl* pvl; - if (mc) { - pvl = new Ctrl(mc); - } - else { - printf("unknown midi controller %x\n", ctrl); - pvl = new Ctrl(ctrl, QString("unknown")); - pvl->setCurVal(CTRL_VAL_UNKNOWN); - pvl->setType(Ctrl::DISCRETE | Ctrl::INT); - } - addController(pvl); - } - -//--------------------------------------------------------- -// removeController -//--------------------------------------------------------- - -void Track::removeController(int id) - { - iCtrl i = controller()->find(id); - if (i == controller()->end()) { - printf("Track::removeController id 0x%x not found, listsize %zd\n", - id, controller()->size()); - return; - } - controller()->erase(i); - emit clChanged(); - } - -//--------------------------------------------------------- -// changeCtrlName -//--------------------------------------------------------- - -void Track::changeCtrlName(Ctrl* c, const QString& s) - { - c->setName(s); - emit clChanged(); - } - -//--------------------------------------------------------- -// addControllerVal -// return true if new controller value added -//--------------------------------------------------------- - -bool Track::addControllerVal(int id, unsigned time, CVal val) - { - iCtrl i = controller()->find(id); - if (i == controller()->end()) { - if ((id & 0xf0000) == CTRL_NRPN_OFFSET) { - int msb = id & 0xff00; - // int lsb = id & 0xff; - int nid = CTRL_NRPN_OFFSET + msb + 0xff; - i = controller()->find(nid); - if (i != controller()->end()) { - Ctrl* c = new Ctrl(*(i->second)); - c->setId(id); - addController(c); -// printf("add pitch ctrl %x\n", id); - return c->add(time, val); - } - } - printf("Track::addControllerVal(): id 0x%x not found, listsize %zd\n", - id, controller()->size()); - return false; - } - return i->second->add(time, val); - } - -//--------------------------------------------------------- -// removeControllerVal -//--------------------------------------------------------- - -void Track::removeControllerVal(int id, unsigned time) - { - iCtrl i = controller()->find(id); - if (i == controller()->end()) { - printf("Track::removeControllerVal(): id 0x%x not found, listsize %zd\n", - id, controller()->size()); - return; - } - i->second->del(time); - } - -//--------------------------------------------------------- -// getController -//--------------------------------------------------------- - -Ctrl* Track::getController(int id) const - { - ciCtrl i = controller()->find(id); - if (i == controller()->end()) { -// printf("%s(%s)::getController(%d) size %d: not found\n", -// cname().toLatin1().data(), name().toLatin1().data(), id, controller()->size()); -// const CtrlList* cl = controller(); -// for (ciCtrl i = cl->begin(); i != cl->end(); ++i) -// printf(" Ctrl %d\n", i->first); - return 0; - } - return i->second; - } - -//--------------------------------------------------------- -// controllerNames -//--------------------------------------------------------- - -ControllerNameList* Track::controllerNames() const - { - ControllerNameList* l = new ControllerNameList; - for (ciCtrl i = controller()->begin(); i != controller()->end(); ++i) - l->push_back(ControllerName(i->second->name(), i->second->id())); - return l; - } - -//--------------------------------------------------------- -// setRecordFlag -//--------------------------------------------------------- - -void Track::setRecordFlag(bool f) - { - if (_recordFlag != f) { - _recordFlag = f; - emit recordChanged(_recordFlag); - } - } - -//--------------------------------------------------------- -// setMonitor -//--------------------------------------------------------- - -void Track::setMonitor(bool f) - { - if (_monitor != f) { - _monitor = f; - emit monitorChanged(_monitor); - } - } - -//--------------------------------------------------------- -// setSelected -//--------------------------------------------------------- - -void Track::setSelected(bool f) - { - if (f != _selected) { - _selected = f; - emit selectionChanged(_selected); -// muse->selectionChanged(); - } - } - -//--------------------------------------------------------- -// setController -// called from GUI -//--------------------------------------------------------- - -#if 0 -void Track::setController(Pos pos, int id, int v) - { - CVal val; - val.i = v; - setController(pos, id, val); - } - -void Track::setController(Pos pos, int id, double v) - { - CVal val; - val.f = v; - setController(pos, id, val); - } - -void Track::setController(Pos pos, int id, CVal val) - { - Ctrl* c = getController(id); - if (c == 0) { - printf("no controller 0x%x %s\n", id, name().toLatin1().data()); - return; - } - if (isMidiTrack()) { - int port = ((MidiTrack*)this)->outPort(); - int channel = ((MidiTrack*)this)->outChannel(); - MidiEvent ev(0, port, channel, ME_CONTROLLER, id, val.i); - audio->msgPlayMidiEvent(&ev); - } - else { - // non midi controller are current once set - c->setCurVal(val); - } - c->setSchedVal(val); - if (autoWrite()) { - unsigned time = _tt == AL::FRAMES ? pos.frame() : pos.tick(); - if (audio->isPlaying()) - _recEvents.push_back(CtrlRecVal(time, id, val)); - else - song->addControllerVal(this, c, id, time, val); - } - emit controllerChanged(id); - } -#endif - -//--------------------------------------------------------- -// startAutoRecord -// slider/knob touched -//--------------------------------------------------------- - -void Track::startAutoRecord(int n) - { - Ctrl* ctrl = getController(n); - if (ctrl) { - ctrl->setTouched(true); - if (audio->isPlaying() && autoWrite()) - _recEvents.push_back(CtrlRecVal(song->cPos().frame(), n, 1)); - } - else - printf("no ctrl 0x%x\n", n); - } - -//--------------------------------------------------------- -// stopAutoRecord -// slider/knob released -//--------------------------------------------------------- - -void Track::stopAutoRecord(int n) - { - Ctrl* ctrl = getController(n); - if (ctrl) { - ctrl->setTouched(false); - if (audio->isPlaying() && autoWrite()) - _recEvents.push_back(CtrlRecVal(song->cPos().frame(), n, 2)); - } - else - printf("no ctrl 0x%x\n", n); - } - -//--------------------------------------------------------- -// setName -//--------------------------------------------------------- - -void Track::setName(const QString& s) - { - _name = s; - emit nameChanged(_name); - } - -//--------------------------------------------------------- -// setAutoRead -//--------------------------------------------------------- - -void Track::setAutoRead(bool val) - { - if (_autoRead != val) { - _autoRead = val; - emit autoReadChanged(_autoRead); - } - } - -//--------------------------------------------------------- -// setAutoWrite -//--------------------------------------------------------- - -void Track::setAutoWrite(bool val) - { - if (_autoWrite != val) { - _autoWrite = val; - emit autoWriteChanged(_autoWrite); - } - } - -//--------------------------------------------------------- -// cpos -//--------------------------------------------------------- - -unsigned Track::cpos() const - { - return timeType() == AL::TICKS ? song->cPos().tick() : song->cPos().frame(); - } - -//--------------------------------------------------------- -// updateController -//--------------------------------------------------------- - -void Track::updateController() - { - CtrlList* cl = controller(); - for (iCtrl i = cl->begin(); i != cl->end(); ++i) { - Ctrl* c = i->second; - if (c->changed()) { - c->setChanged(false); - emit controllerChanged(c->id()); - } - } - } - -//--------------------------------------------------------- -// writeRouting -//--------------------------------------------------------- - -void Track::writeRouting(Xml& xml) const - { - if (type() == AUDIO_INPUT || type() == MIDI_IN) { - foreach(Route r, _inRoutes) { - xml.stag("Route"); - r.src.write(xml, "src"); - r.dst.write(xml, "dst"); - xml.etag("Route"); - } - } - foreach(Route r, _outRoutes) { - xml.stag("Route"); - r.src.write(xml, "src"); - r.dst.write(xml, "dst"); - xml.etag("Route"); - } - } - -//--------------------------------------------------------- -// hwCtrlState -//--------------------------------------------------------- - -int Track::hwCtrlState(int ctrl) const - { - ciCtrl cl = _controller.find(ctrl); - if (cl == _controller.end()) { - if (debugMsg) - printf("hwCtrlState: ctrl 0x%x not found\n", ctrl); - return CTRL_VAL_UNKNOWN; - } - Ctrl* vl = cl->second; - return vl->curVal().i; - } - -//--------------------------------------------------------- -// setHwCtrlState -//--------------------------------------------------------- - -void Track::setHwCtrlState(int ctrl, int val) - { - iCtrl cl = _controller.find(ctrl); - if (cl == _controller.end()) { - // try to add new controller - if (debugMsg) - printf("setHwCtrlState(0x%x,0x%x): not found\n", ctrl, val); - return; - } - Ctrl* vl = cl->second; -// printf("setHwCtrlState ctrl %x val %x\n", ctrl, val); - vl->setChanged(true); - return vl->setCurVal(val); - } - -//--------------------------------------------------------- -// getCtrl -//--------------------------------------------------------- - -int Track::getCtrl(int tick, int ctrl) const - { - ciCtrl cl = _controller.find(ctrl); - if (cl == _controller.end()) { - if (debugMsg) - printf("getCtrl: controller %d(0x%x) not found %zd\n", - ctrl, ctrl, _controller.size()); - return CTRL_VAL_UNKNOWN; - } - return cl->second->value(tick).i; - } - -//--------------------------------------------------------- -// setSolo -//--------------------------------------------------------- - -bool Track::setSolo(bool val) - { - if (_solo != val) { - _solo = val; - emit soloChanged(_solo); - return true; - } - return false; - } - -//--------------------------------------------------------- -// setMute -// return true if mute changed -//--------------------------------------------------------- - -bool Track::setMute(bool val) - { - if (_mute != val) { - _mute = val; - emit muteChanged(_mute); - return true; - } - return false; - } - -//--------------------------------------------------------- -// setOff -// return true if state changed -//--------------------------------------------------------- - -bool Track::setOff(bool val) - { - if (_off != val) { - _off = val; - emit offChanged(_off); - return true; - } - return false; - } - -//--------------------------------------------------------- -// setChannels -//--------------------------------------------------------- - -void Track::setChannels(int n) - { - _channels = n; - for (int i = 0; i < _channels; ++i) { - _meter[i] = 0.0f; - _peak[i] = 0.0f; - } - } - -//--------------------------------------------------------- -// resetMeter -//--------------------------------------------------------- - -void Track::resetMeter() - { - for (int i = 0; i < _channels; ++i) - _meter[i] = 0.0f; - } - -//--------------------------------------------------------- -// resetPeaks -//--------------------------------------------------------- - -void Track::resetPeaks() - { - for (int i = 0; i < _channels; ++i) - _peak[i] = 0; - } - -//--------------------------------------------------------- -// resetAllMeter -//--------------------------------------------------------- - -void Track::resetAllMeter() - { - TrackList* tl = song->tracks(); - for (iTrack i = tl->begin(); i != tl->end(); ++i) - (*i)->resetMeter(); - } - -//--------------------------------------------------------- -// activate1 -// register JACK and ALSA ports -//--------------------------------------------------------- - -void Track::activate1() - { - if (isMidiTrack()) { - if (!jackPort(0).isZero()) - printf("Track::activate1() midi: jack port already active!\n"); - if (type() == MIDI_OUT) { - _jackPort[0] = audioDriver->registerOutPort(_name, true); - } - else if (type() == MIDI_IN) { - _jackPort[0] = audioDriver->registerInPort(_name, true); - } - return; - } - - for (int i = 0; i < channels(); ++i) { - if (!jackPort(i).isZero()) - printf("Track<%s>::activate1(): channel %d already active!\n", - name().toLatin1().data(), i); - else { - QString s(QString("%1-%2").arg(_name).arg(i)); - if (type() == AUDIO_OUTPUT) - _jackPort[i] = audioDriver->registerOutPort(s, false); - else if (type() == AUDIO_INPUT) - _jackPort[i] = audioDriver->registerInPort(s, false); - } - } - } - -//--------------------------------------------------------- -// activate2 -// connect all JACK/ALSA in/out routes -// connect to JACK only works if JACK is running -//--------------------------------------------------------- - -void Track::activate2() - { - if (audioState != AUDIO_RUNNING) { - printf("Track::activate2(): no audio running !\n"); - abort(); - } - foreach(Route r, _outRoutes) { - if (r.dst.type == RouteNode::JACKMIDIPORT) { - audioDriver->connect(_jackPort[0], r.dst.port); - r.disconnected = false; - } - else if (r.dst.type == RouteNode::AUDIOPORT) { - audioDriver->connect(_jackPort[r.src.channel], r.dst.port); - r.disconnected = false; - } - } - foreach(Route r, _inRoutes) { - if (r.src.type == RouteNode::JACKMIDIPORT) { - audioDriver->connect(r.src.port, _jackPort[0]); - r.disconnected = false; - } - else if (r.src.type == RouteNode::AUDIOPORT) { - audioDriver->connect(r.src.port, _jackPort[r.dst.channel]); - r.disconnected = false; - } - } - } - -//--------------------------------------------------------- -// deactivate -// disconnect and unregister JACK and ALSA ports -//--------------------------------------------------------- - -void Track::deactivate() - { -// printf("deactivate<%s>\n", name().toLatin1().data()); - foreach(Route r, _outRoutes) { - if (r.dst.type == RouteNode::JACKMIDIPORT) { - r.disconnected = true; - audioDriver->disconnect(_jackPort[0], r.dst.port); - } - else if (r.dst.type == RouteNode::AUDIOPORT) { - audioDriver->disconnect(_jackPort[r.src.channel], r.dst.port); - r.disconnected = true; - } - } - foreach(Route r, _inRoutes) { - if (r.src.type == RouteNode::JACKMIDIPORT) { - r.disconnected = true; - audioDriver->disconnect(r.src.port, _jackPort[0]); - } - else if (r.src.type == RouteNode::AUDIOPORT) { - r.disconnected = true; - audioDriver->disconnect(r.src.port, _jackPort[r.dst.channel]); - } - } - for (int i = 0; i < channels(); ++i) { - if (!_jackPort[i].isZero()) { - audioDriver->unregisterPort(_jackPort[i]); - _jackPort[i].setZero(); - } - } - } - -//--------------------------------------------------------- -// setSendSync -//--------------------------------------------------------- - -void Track::setSendSync(bool val) - { - _sendSync = val; - emit sendSyncChanged(val); - } - -//--------------------------------------------------------- -// splitPart -// split part "part" at "tick" position -// create two new parts p1 and p2 -//--------------------------------------------------------- - -void Track::splitPart(Part* part, int tickpos, Part*& p1, Part*& p2) - { - int l1 = 0; // len of first new part (ticks or samples) - int l2 = 0; // len of second new part - - int samplepos = AL::tempomap.tick2frame(tickpos); - - switch (type()) { - case WAVE: - l1 = samplepos - part->frame(); - l2 = part->lenFrame() - l1; - break; - case MIDI: - l1 = tickpos - part->tick(); - l2 = part->lenTick() - l1; - break; - default: - return; - } - - if (l1 <= 0 || l2 <= 0) - return; - - p1 = newPart(part); // new left part - p2 = newPart(part); // new right part - - switch (type()) { - case WAVE: - p1->setLenFrame(l1); - p2->setFrame(samplepos); - p2->setLenFrame(l2); - break; - case MIDI: - p1->setLenTick(l1); - p2->setTick(tickpos); - p2->setLenTick(l2); - break; - default: - break; - } - - EventList* se = part->events(); - EventList* de1 = p1->events(); - EventList* de2 = p2->events(); - - if (type() == WAVE) { - int ps = part->frame(); - int d1p1 = p1->frame(); - int d2p1 = p1->endFrame(); - int d1p2 = p2->frame(); - int d2p2 = p2->endFrame(); - for (iEvent ie = se->begin(); ie != se->end(); ++ie) { - Event event = ie->second; - int s1 = event.frame() + ps; - int s2 = event.endFrame() + ps; - - if ((s2 > d1p1) && (s1 < d2p1)) { - Event si = event.mid(d1p1 - ps, d2p1 - ps); - de1->add(si); - } - if ((s2 > d1p2) && (s1 < d2p2)) { - Event si = event.mid(d1p2 - ps, d2p2 - ps); - si.setFrame(si.frame() - l1); //?? - si.setFrame(0); //?? - de2->add(si); - } - } - } - else { - for (iEvent ie = se->begin(); ie != se->end(); ++ie) { - Event event = ie->second.clone(); - int t = event.tick(); - if (t >= l1) { - event.move(-l1); - de2->add(event); - } - else - de1->add(event); - } - } - } - -//--------------------------------------------------------- -// addInRoute -//--------------------------------------------------------- - -void Track::addInRoute(const Route& r) - { - if (_inRoutes.indexOf(r) != -1) { - printf("Track::addInRoute: route already there\n"); - return; - } - _inRoutes.push_back(r); - } - -//--------------------------------------------------------- -// addOutRoute -//--------------------------------------------------------- - -void Track::addOutRoute(const Route& r) - { - if (_outRoutes.indexOf(r) != -1) { - printf("Track::addOutRoute: route already there\n"); - return; - } - _outRoutes.push_back(r); - } - -//--------------------------------------------------------- -// inRouteExists -//--------------------------------------------------------- - -bool Track::inRouteExists(const Route& r) const - { - return _inRoutes.indexOf(r) != -1; - } - -//--------------------------------------------------------- -// outRouteExists -//--------------------------------------------------------- - -bool Track::outRouteExists(const Route& r) const - { - return _outRoutes.indexOf(r) != -1; - } - diff --git a/muse/muse/track.h b/muse/muse/track.h deleted file mode 100644 index 1afa3cc2..00000000 --- a/muse/muse/track.h +++ /dev/null @@ -1,345 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __TRACK_H__ -#define __TRACK_H__ - -#include "port.h" -#include "al/pos.h" -#include "route.h" -#include "ctrl.h" -#include "globaldefs.h" - -namespace AL { - class Xml; - enum TType; - }; -using AL::Xml; -using AL::TType; - -class DrumMap; -class MidiPipeline; -class MidiEvent; -class MidiEventList; -class SynthI; -class MidiPlugin; -class MidiPluginI; -class MidiInstrument; -class PartList; -class Part; -class MidiOutPort; -class MidiInPort; -class MidiOut; - -//--------------------------------------------------------- -// ArrangerTrack -//--------------------------------------------------------- - -struct ArrangerTrack { - QWidget* tw; // tracklist widget - int ctrl; - int h; // tmp val used by readProperties() - Ctrl* controller; - - ArrangerTrack(); - }; - -typedef std::list ArrangerTrackList; -typedef ArrangerTrackList::iterator iArrangerTrack; -typedef ArrangerTrackList::const_iterator ciArrangerTrack; - -//--------------------------------------------------------- -// Track -//--------------------------------------------------------- - -class Track : public QObject { - Q_OBJECT - - public: - enum TrackType { - AUDIO_OUTPUT, - AUDIO_GROUP, - WAVE, - AUDIO_INPUT, - AUDIO_SOFTSYNTH, - MIDI, - MIDI_OUT, - MIDI_IN, - MIDI_SYNTI, - TRACK_TYPES - }; - enum { - M_AUDIO_OUTPUT = 1 << AUDIO_OUTPUT, - M_AUDIO_GROUP = 1 << AUDIO_GROUP, - M_WAVE = 1 << WAVE, - M_AUDIO_INPUT = 1 << AUDIO_INPUT, - M_AUDIO_SOFTSYNTH = 1 << AUDIO_SOFTSYNTH, - M_MIDI = 1 << MIDI, - M_MIDI_OUT = 1 << MIDI_OUT, - M_MIDI_IN = 1 << MIDI_IN, - M_MIDI_SYNTI = 1 << MIDI_SYNTI - }; - - private: - QString _comment; - PartList* _parts; - Port _jackPort[MAX_CHANNELS]; - bool _sendSync; // this port sends mtc/mmc events - int _deviceId; // midi device id: 0-126; 127 == all - - protected: - TType _tt; // time type - QString _name; - bool _recordFlag; - bool _mute; - bool _solo; - bool _off; - bool _monitor; - int _channels; // 1 - mono, 2 - stereo - // Note: midi out/in tracks have - // 1 channel - CtrlRecList _recEvents; // recorded automation events - double _meter[MAX_CHANNELS]; - double _peak[MAX_CHANNELS]; - int _peakTimer[MAX_CHANNELS]; - bool _locked; // true if parts are locked to frames - bool _selected; - - RouteList _inRoutes, _outRoutes; - CtrlList _controller; - - bool _autoRead, _autoWrite; - - bool readProperties(QDomNode); - void writeProperties(Xml& xml) const; - - virtual bool setMute(bool val); - virtual bool setOff(bool val); - virtual bool setSolo(bool val); - - signals: - void recordChanged(bool); - void autoReadChanged(bool); - void autoWriteChanged(bool); - void clChanged(); - void controllerChanged(int id); - void selectionChanged(bool); - void muteChanged(bool); - void soloChanged(bool); - void monitorChanged(bool); - void offChanged(bool); - void partsChanged(); - void nameChanged(const QString&); - void routeChanged(); - void sendSyncChanged(bool); - - private slots: - void setAutoRead(bool); - void setAutoWrite(bool); - - public: - Track(); - virtual ~Track(); - - static const char* _cname[]; - static const char* _clname[]; - - QString comment() const { return _comment; } - void setComment(const QString& s) { _comment = s; } - TType timeType() const { return _tt; } - void setTimeType(TType t) { _tt = t; } - - QString cname() const { - int t = type(); - return QString(_cname[t]); - } - QString clname() const { return QString(_clname[type()]); } - - // - // called before and after use - // (undo/redo) - // connects/reconnects to the outside world - // - void activate1(); - void activate2(); - void deactivate(); - - //---------------------------------------------------------- - // controller handling - //---------------------------------------------------------- - - CtrlList* controller() { return &_controller; } - const CtrlList* controller() const { return &_controller; } - - ControllerNameList* controllerNames() const; - void addController(Ctrl*); - void addMidiController(MidiInstrument*, int ctrl); - void removeController(int id); - Ctrl* getController(int id) const; - - int hwCtrlState(int ctrl) const; - void setHwCtrlState(int ctrl, int val); - - // current value: - CVal ctrlVal(int id) { return getController(id)->curVal(); } - - // editor interface: - bool addControllerVal(int id, unsigned pos, CVal); - void removeControllerVal(int id, unsigned pos); - int getCtrl(int tick, int ctrl) const; - - // signal interface: - virtual void emitControllerChanged(int id) { emit controllerChanged(id); } - void updateController(); - void changeCtrlName(Ctrl* c, const QString& s); - - // automation - void startAutoRecord(int); - void stopAutoRecord(int); - CtrlRecList* recEvents() { return &_recEvents; } - //---------------------------------------------------------- - - QColor ccolor() const; - QPixmap* pixmap() const { return pixmap(type()); } - static QPixmap* pixmap(TrackType); - - bool selected() const { return _selected; } - void setSelected(bool f); - - bool locked() const { return _locked; } - void setLocked(bool b) { _locked = b; } - - QString name() const { return _name; } - virtual void setName(const QString& s); - - virtual TrackType type() const = 0; - - PartList* parts() const { return _parts; } - - Part* findPart(unsigned tick); - void addPart(Part* p); - - virtual void write(Xml&) const = 0; - - void setRecordFlag(bool); - virtual Part* newPart(Part*p=0, bool clone = false) = 0; - void dump() const; - virtual void splitPart(Part*, int, Part*&, Part*&); - - void setMonitor(bool val); - virtual bool isMute() const = 0; - - bool monitor() const { return _monitor; } - bool solo() const { return _solo; } - bool mute() const { return _mute; } - bool off() const { return _off; } - bool recordFlag() const { return _recordFlag; } - - void resetMeter(); - void resetPeaks(); - static void resetAllMeter(); - double meter(int ch) const { return _meter[ch]; } - void addMidiMeter(int velo) { - _meter[0] += velo/5; - if (_meter[0] > 127.0f) - _meter[0] = 127.0f; - } - double peak(int ch) const { return _peak[ch]; } - void setPeak(int ch, double v) { _peak[ch] = v; } - void resetPeak(int ch) { - _peak[ch] = 0; - _peakTimer[ch] = 0; - } - int peakTimer(int ch) const { return _peakTimer[ch]; } - void setPeakTimer(int ch, int v) { _peakTimer[ch] = v; } - void setMeter(int ch, double v) { - _meter[ch] = v; - if (v > _peak[ch]) { - _peak[ch] = v; - _peakTimer[ch] = 0; - } - } - - void setDefaultName(); - int channels() const { return _channels; } - virtual void setChannels(int n); - bool isMidiTrack() const { - return type() == MIDI - || type() == MIDI_IN - || type() == MIDI_OUT - || type() == MIDI_SYNTI; - } - virtual bool canRecord() const { return false; } - - bool autoRead() const { return _autoRead; } - bool autoWrite() const { return _autoWrite; } - - void partListChanged() { emit partsChanged(); } - void updateMute() { emit muteChanged(isMute()); } - unsigned cpos() const; - - //---------------------------------------------------------- - // routing - //---------------------------------------------------------- - - RouteList* inRoutes() { return &_inRoutes; } - RouteList* outRoutes() { return &_outRoutes; } - bool noInRoute() const { return _inRoutes.empty(); } - bool noOutRoute() const { return _outRoutes.empty(); } - void addInRoute(const Route& r); - void addOutRoute(const Route& r); - void writeRouting(Xml&) const; - bool inRouteExists(const Route& r) const; - bool outRouteExists(const Route& r) const; - - Port jackPort(int channel = 0) const { return _jackPort[channel]; } - - void setJackPort(const Port& port, int channel = 0) { - _jackPort[channel] = port; - } - - struct ArrangerTrack arrangerTrack; - ArrangerTrackList subtracks; - - friend class Song; - - virtual void routeEvent(const MidiEvent&) {} - bool sendSync() const { return _sendSync; } - void setSendSync(bool val); - int deviceId() const { return _deviceId; } - void setDeviceId(int val) { _deviceId = val; } - - virtual bool muteDefault() const { return false; } - virtual bool autoReadDefault() const { return false; } - virtual bool autoWriteDefault() const { return false; } - - virtual MidiOut* midiOut() { return 0; } - virtual MidiInstrument* instrument() { return 0; } - }; - -Q_DECLARE_METATYPE(class Track*); - -typedef QList TrackList; -typedef TrackList::iterator iTrack; -typedef TrackList::const_iterator ciTrack; - - -#endif - diff --git a/muse/muse/trackdrag.cpp b/muse/muse/trackdrag.cpp deleted file mode 100644 index beab87dd..00000000 --- a/muse/muse/trackdrag.cpp +++ /dev/null @@ -1,61 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "trackdrag.h" - -class Track; -const char TrackDrag::type[] = "application/muse/track"; - -//--------------------------------------------------------- -// TrackDrag -//--------------------------------------------------------- - -TrackDrag::TrackDrag(Track* track, QWidget* src) - : QDrag(src) - { - QByteArray a((char*)&track, sizeof(track)); - QMimeData* mimeData = new QMimeData; - mimeData->setData(type, a); - setMimeData(mimeData); - } - -//--------------------------------------------------------- -// canDecode -//--------------------------------------------------------- - -bool TrackDrag::canDecode(const QMimeSource* s) - { - return !strcmp(s->format(0), type); - } - -//--------------------------------------------------------- -// decode -//--------------------------------------------------------- - -bool TrackDrag::decode(const QMimeSource* s, Track*& p) - { - QByteArray a = s->encodedData(type); - p = (Track*)((a[0] & 0xff) - | (a[1] & 0xff) << 8 - | (a[2] & 0xff) << 16 - | (a[3] & 0xff) << 24); - return true; - } - diff --git a/muse/muse/trackdrag.h b/muse/muse/trackdrag.h deleted file mode 100644 index 083a94b3..00000000 --- a/muse/muse/trackdrag.h +++ /dev/null @@ -1,42 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __TRACKDRAG_H__ -#define __TRACKDRAG_H__ - -class Track; - -//--------------------------------------------------------- -// TrackDrag -//--------------------------------------------------------- - -class TrackDrag : public QDrag { - static const char type[]; - Q_OBJECT - - public: - TrackDrag(Track*, QWidget* src); - static bool canDecode(const QMimeSource*); - static bool decode(const QMimeSource* s, Track*& p); - }; - - -#endif - diff --git a/muse/muse/trackinfo.cpp b/muse/muse/trackinfo.cpp deleted file mode 100644 index 1a62b1c0..00000000 --- a/muse/muse/trackinfo.cpp +++ /dev/null @@ -1,553 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "arranger.h" -#include "widgets/outportcombo.h" -#include "instruments/minstrument.h" -#include "midiedit/drummap.h" -#include "midictrl.h" -#include "song.h" -#include "trackinfo.h" -#include "synth.h" -#include "tllineedit.h" -#include "audio.h" -#include "gui.h" -#include "midioutport.h" -#include "midiinport.h" - -static QColor labelColor(140, 140, 255); - -//--------------------------------------------------------- -// createTrackInfo -//--------------------------------------------------------- - -TrackInfo* Arranger::createTrackInfo() - { - Track::TrackType t = _curTrack->type(); - switch (t) { - case Track::MIDI: return new MidiTrackInfo(); - case Track::AUDIO_OUTPUT: return new AudioOutputInfo(); - case Track::AUDIO_GROUP: return new AudioGroupInfo(); - case Track::WAVE: return new WaveTrackInfo(); - case Track::AUDIO_INPUT: return new AudioInputInfo(); - case Track::AUDIO_SOFTSYNTH: return new SynthIInfo(); - case Track::MIDI_OUT: return new MidiOutPortInfo(); - case Track::MIDI_IN: return new MidiInPortInfo(); - case Track::MIDI_SYNTI: return new MidiSynthIInfo(); - default: - printf("Arranger::createTrackInfo: type %d\n", t); - abort(); - } - } - -//--------------------------------------------------------- -// TrackInfo -//--------------------------------------------------------- - -TrackInfo::TrackInfo() - : QWidget() - { - track = 0; - label = new QLabel; - label->setToolTip(tr("Track Type")); - label->setLineWidth(2); - label->setFrameStyle(QFrame::Panel | QFrame::Raised); - label->setAutoFillBackground(true); - QPalette p = label->palette(); - p.setColor(QPalette::Background, labelColor); - label->setPalette(p); - - name = new TLLineEdit(""); - name->setToolTip(tr("Track Name")); - name->setMaximumHeight(24); - - grid = new QGridLayout; - grid->setMargin(0); - grid->setSpacing(0); - setLayout(grid); - - grid->addWidget(label, 0, 0, 1, 2); - grid->addWidget(name, 1, 0, 1, 2); - connect(name, SIGNAL(contentChanged(QString)), SLOT(nameChanged(QString))); - connect(song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); -// resize(QSize(infoWidth, height())); - } - -//--------------------------------------------------------- -// nameChanged -//--------------------------------------------------------- - -void TrackInfo::nameChanged(QString s) - { - song->changeTrackName(track, s); - name->setCursorPosition(0); - } - -//--------------------------------------------------------- -// init -//--------------------------------------------------------- - -void TrackInfo::init(Track* t) - { - track = t; - if (t == 0) - return; - label->setText(track->clname()); - name->setText(track->name()); - connect(track, SIGNAL(nameChanged(const QString&)), name, SLOT(setText(const QString&))); - } - -//--------------------------------------------------------- -// songChanged -//--------------------------------------------------------- - -void TrackInfo::songChanged(int val) - { - if ((val & SC_ROUTE) && track) - init(track); - } - -//--------------------------------------------------------- -// MidiTrackInfo -//--------------------------------------------------------- - -MidiTrackInfo::MidiTrackInfo() - : TrackInfo() - { - QWidget* midiTrackInfo = new QWidget; - mt.setupUi(midiTrackInfo); - - QWidget* midiPortInfo = new QWidget; - mp.setupUi(midiPortInfo); - - grid->addWidget(midiTrackInfo, 2, 0, 1, 2); - - channel = new QComboBox; - channel->setMaximumHeight(24); - for (int ch = 0; ch < MIDI_CHANNELS; ++ch) - channel->addItem(tr("Channel %1").arg(ch+1), ch); - grid->addWidget(channel, 3, 0, 1, 2); - - QLabel* label = new QLabel; - label->setText(tr("Midi Port")); - label->setLineWidth(2); - label->setFrameStyle(QFrame::Panel | QFrame::Raised); - label->setAutoFillBackground(true); - QPalette p = label->palette(); - p.setColor(QPalette::Background, labelColor); - label->setPalette(p); - grid->addWidget(label, 4, 0, 1, 2); - - port = new QComboBox; - port->setMaximumHeight(24); - grid->addWidget(port, 5, 0, 1, 2); - grid->addWidget(midiPortInfo, 6, 0, 1, 2); - grid->setRowStretch(grid->rowCount(), 100); - - pop = new QMenu(mt.patch); - - connect(mt.transposition, SIGNAL(valueChanged(int)), SLOT(transpositionChanged(int))); - connect(mt.velocity, SIGNAL(valueChanged(int)), SLOT(velocityChanged(int))); - connect(mt.delay, SIGNAL(valueChanged(int)), SLOT(delayChanged(int))); - connect(mt.length, SIGNAL(valueChanged(int)), SLOT(lenChanged(int))); - connect(mt.compression, SIGNAL(valueChanged(int)), SLOT(iKomprChanged(int))); - connect(mt.patch, SIGNAL(clicked()), SLOT(patchClicked())); - connect(port, SIGNAL(activated(int)), SLOT(portSelected(int))); - connect(mp.instrument, SIGNAL(activated(int)), SLOT(instrumentSelected(int))); - connect(mp.deviceId, SIGNAL(valueChanged(int)), SLOT(deviceIdChanged(int))); - connect(song, SIGNAL(autoReadChanged(Track*,bool)), SLOT(autoChanged(Track*,bool))); - connect(song, SIGNAL(autoWriteChanged(Track*,bool)), SLOT(autoChanged(Track*,bool))); - } - -//--------------------------------------------------------- -// init -//--------------------------------------------------------- - -void MidiTrackInfo::init(Track* t) - { - MidiTrack* midiTrack = (MidiTrack*)&*t; - if (t != track) { - if (track) { - disconnect(channel, 0, track, 0); - disconnect(track, 0, channel, 0); - } - connect(channel, SIGNAL(activated(int)), midiTrack, SLOT(setChannel(int))); - connect(midiTrack,SIGNAL(channelChanged(int)), channel, SLOT(setCurrentIndex(int))); - } - - TrackInfo::init(t); - mt.transposition->setValue(midiTrack->transposition()); - mt.delay->setValue(midiTrack->delay()); - mt.length->setValue(midiTrack->len()); - mt.velocity->setValue(midiTrack->velocity()); - mt.compression->setValue(midiTrack->compression()); - - mp.instrument->clear(); - foreach(MidiInstrument* mi, midiInstruments) - mp.instrument->addItem(mi->iname()); - - RouteList* rl = track->outRoutes(); - Track* outputTrack = 0; - if (!rl->isEmpty()) - outputTrack = (*rl)[0].dst.track; - - port->clear(); - port->addItem("---", QVariant::fromValue(0)); - foreach(MidiOutPort* mp, *(song->midiOutPorts())) - port->addItem(mp->name(), QVariant::fromValue(mp)); - foreach(SynthI* s, *(song->syntis())) - port->addItem(s->name(), QVariant::fromValue(s)); - if (outputTrack) { - int idx = port->findText(outputTrack->name()); - port->setCurrentIndex(idx == -1 ? 0 : idx); - } - - channel->setCurrentIndex(midiTrack->channelNo()); - - connect(track, SIGNAL(controllerChanged(int)), SLOT(controllerChanged(int))); - if (outputTrack && outputTrack->type() == Track::MIDI_OUT) - connect(outputTrack, SIGNAL(instrumentChanged()), SLOT(instrumentChanged())); - - instrumentChanged(); // setup instrument - - // enable instrument selection only for tracks routed to a - // midi out port: - mp.instrument->setEnabled(outputTrack && (outputTrack->type() == Track::MIDI_OUT)); - - if (!rl->isEmpty()) { - mp.deviceId->setValue(midiTrack->deviceId()); - autoChanged(track, false); // update enable - int val = midiTrack->ctrlVal(CTRL_PROGRAM).i; - int channelno = midiTrack->channelNo(); - mt.patch->setText(midiTrack->instrument()->getPatchName(channelno, val)); - } - else { - channel->setCurrentIndex(0); - port->setCurrentIndex(0); - mp.instrument->addItem("--"); - mp.instrument->setCurrentIndex(0); - mt.patch->setText("--"); - } - } - -//--------------------------------------------------------- -// portSelected -//--------------------------------------------------------- - -void MidiTrackInfo::portSelected(int idx) - { - QVariant v(port->itemData(idx)); - Track* outputTrack = (Track*)v.value(); - if (outputTrack == 0) - return; - RouteList* rl = track->outRoutes(); - if (rl->isEmpty()) - return; - Route r = (*rl)[0]; - audio->msgRemoveRoute(r); - r.dst.track = outputTrack; - audio->msgAddRoute(r); - song->update(SC_ROUTE); - } - -//--------------------------------------------------------- -// controllerChanged -//--------------------------------------------------------- - -void MidiTrackInfo::controllerChanged(int id) - { - if (id == CTRL_PROGRAM) { - MidiInstrument* mi = track->instrument(); - int val = track->ctrlVal(id).i; - mt.patch->setText(mi->getPatchName(((MidiTrack*)&*track)->channelNo(), val)); - } - } - -//--------------------------------------------------------- -// instrumentChanged -//--------------------------------------------------------- - -void MidiTrackInfo::instrumentChanged() - { - MidiInstrument* mi = track->instrument(); - mp.instrument->setCurrentIndex(midiInstruments.indexOf(mi)); - } - -//--------------------------------------------------------- -// autoChanged -//--------------------------------------------------------- - -void MidiTrackInfo::autoChanged(Track* t, bool) - { - if (t != track) - return; - bool ar = t->autoRead(); - bool aw = t->autoWrite(); - bool en = !ar || (ar && aw); - mt.patch->setEnabled(en); - } - -//--------------------------------------------------------- -// transpositionChanged -//--------------------------------------------------------- - -void MidiTrackInfo::transpositionChanged(int val) - { - ((MidiTrack*)&*track)->setTransposition(val); - } - -//--------------------------------------------------------- -// patchClicked -//--------------------------------------------------------- - -void MidiTrackInfo::patchClicked() - { - MidiInstrument* mi = track->instrument(); - mi->populatePatchPopup(pop, 0); - - QAction* rv = pop->exec(mt.patch->mapToGlobal(QPoint(10,5))); - if (rv != 0) { - CVal cval; - cval.i = rv->data().toInt(); - song->setControllerVal(track, CTRL_PROGRAM, cval); - } - } - -//--------------------------------------------------------- -// instrumentSelected -//--------------------------------------------------------- - -void MidiTrackInfo::instrumentSelected(int n) - { - RouteList* rl = track->outRoutes(); - if (rl->isEmpty()) - return; - Track* outTrack = (*rl)[0].dst.track; - if (outTrack->type() == Track::MIDI_OUT) - ((MidiOutPort*)outTrack)->setInstrument(midiInstruments[n]); - } - -//--------------------------------------------------------- -// velocityChanged -//--------------------------------------------------------- - -void MidiTrackInfo::velocityChanged(int val) - { - ((MidiTrack*)&*track)->setVelocity(val); - } - -//--------------------------------------------------------- -// delayChanged -//--------------------------------------------------------- - -void MidiTrackInfo::delayChanged(int val) - { - ((MidiTrack*)&*track)->setDelay(val); - } - -//--------------------------------------------------------- -// lenChanged -//--------------------------------------------------------- - -void MidiTrackInfo::lenChanged(int val) - { - ((MidiTrack*)&*track)->setLen(val); - } - -//--------------------------------------------------------- -// iKomprChanged -//--------------------------------------------------------- - -void MidiTrackInfo::iKomprChanged(int val) - { - ((MidiTrack*)&*track)->setCompression(val); - } - -//--------------------------------------------------------- -// deviceIdChanged -//--------------------------------------------------------- - -void MidiTrackInfo::deviceIdChanged(int val) - { - ((MidiTrack*)&*track)->setDeviceId(val); - } - -//--------------------------------------------------------- -// AudioOutputInfo -//--------------------------------------------------------- - -AudioOutputInfo::AudioOutputInfo() - : TrackInfo() - { - grid->setRowStretch(grid->rowCount(), 100); - } - -//--------------------------------------------------------- -// AudioInputInfo -//--------------------------------------------------------- - -AudioInputInfo::AudioInputInfo() - : TrackInfo() - { - grid->setRowStretch(grid->rowCount(), 100); - } - -//--------------------------------------------------------- -// AudioGroupInfo -//--------------------------------------------------------- - -AudioGroupInfo::AudioGroupInfo() - : TrackInfo() - { - grid->setRowStretch(grid->rowCount(), 100); - } - -//--------------------------------------------------------- -// AudioAuxInfo -//--------------------------------------------------------- - -AudioAuxInfo::AudioAuxInfo() - : TrackInfo() - { - grid->setRowStretch(grid->rowCount(), 100); - } - -//--------------------------------------------------------- -// WaveTrackInfo -//--------------------------------------------------------- - -WaveTrackInfo::WaveTrackInfo() - : TrackInfo() - { - grid->setRowStretch(grid->rowCount(), 100); - } - -//--------------------------------------------------------- -// SynthIInfo -//--------------------------------------------------------- - -SynthIInfo::SynthIInfo() - : TrackInfo() - { - grid->setRowStretch(grid->rowCount(), 100); - } - -//--------------------------------------------------------- -// MidiSynthIInfo -//--------------------------------------------------------- - -MidiSynthIInfo::MidiSynthIInfo() - : TrackInfo() - { - grid->setRowStretch(grid->rowCount(), 100); - } - -//--------------------------------------------------------- -// MidiOutPortInfo -//--------------------------------------------------------- - -MidiOutPortInfo::MidiOutPortInfo() - : TrackInfo() - { - QWidget* midiPortInfo = new QWidget; - mp.setupUi(midiPortInfo); - grid->addWidget(midiPortInfo, 2, 0, 1, 2); - - grid->setRowStretch(grid->rowCount(), 100); - - connect(mp.instrument, SIGNAL(activated(int)), SLOT(instrumentSelected(int))); - connect(mp.deviceId, SIGNAL(valueChanged(int)), SLOT(deviceIdChanged(int))); - } - -//--------------------------------------------------------- -// init -//--------------------------------------------------------- - -void MidiOutPortInfo::init(Track* t) - { - TrackInfo::init(t); - - MidiOutPort* op = (MidiOutPort*)&*track; - MidiInstrument* mi = op->instrument(); - int idx = 0; - int curIdx = 0; - mp.instrument->clear(); - for (iMidiInstrument i = midiInstruments.begin(); i != midiInstruments.end(); ++i, ++idx) { - mp.instrument->addItem((*i)->iname()); - if ((*i)->iname() == mi->iname()) - curIdx = idx; - } - mp.instrument->setCurrentIndex(curIdx); - mp.deviceId->setValue(op->deviceId()); - connect(t, SIGNAL(instrumentChanged()), SLOT(instrumentChanged())); - } - -//--------------------------------------------------------- -// deviceIdChanged -//--------------------------------------------------------- - -void MidiOutPortInfo::deviceIdChanged(int val) - { - ((MidiOutPort*)&*track)->setDeviceId(val); - } - -//--------------------------------------------------------- -// instrumentChanged -//--------------------------------------------------------- - -void MidiOutPortInfo::instrumentChanged() - { - MidiOutPort* op = (MidiOutPort*)&*track; - MidiInstrument* mi = op->instrument(); - int idx = 0; - for (iMidiInstrument i = midiInstruments.begin(); i != midiInstruments.end(); ++i, ++idx) { - if (*i == mi) { - mp.instrument->setCurrentIndex(idx); - break; - } - } - } - -//--------------------------------------------------------- -// instrumentSelected -//--------------------------------------------------------- - -void MidiOutPortInfo::instrumentSelected(int n) - { - MidiOutPort* op = (MidiOutPort*)&*track; - int idx = 0; - for (iMidiInstrument i = midiInstruments.begin(); i != midiInstruments.end(); ++i, ++idx) { - if (idx == n) { - op->setInstrument(*i); - break; - } - } - } - -//--------------------------------------------------------- -// MidiInPortInfo -//--------------------------------------------------------- - -MidiInPortInfo::MidiInPortInfo() - : TrackInfo() - { - grid->setRowStretch(grid->rowCount(), 100); - } - diff --git a/muse/muse/trackinfo.h b/muse/muse/trackinfo.h deleted file mode 100644 index bea98d70..00000000 --- a/muse/muse/trackinfo.h +++ /dev/null @@ -1,203 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __TRACKINFO_H__ -#define __TRACKINFO_H__ - -#include "ui_miditrackinfo.h" -#include "ui_midiportinfo.h" - -class Track; -class MidiTrack; -class AudioOutput; -class AudioInput; -class AudioGroup; -class AudioAux; -class SynthI; -class MidiInPort; -class MidiOutPort; -class MidiChannel; -class WaveTrack; -class TLLineEdit; - -//--------------------------------------------------------- -// TrackInfo -//--------------------------------------------------------- - -class TrackInfo : public QWidget { - Q_OBJECT - - QLabel* label; - TLLineEdit* name; - - protected: - QGridLayout* grid; - QPointer track; - - private slots: - void nameChanged(QString s); - void songChanged(int); - - public: - TrackInfo(); - virtual void init(Track*); - }; - -//--------------------------------------------------------- -// MidiTrackInfo -//--------------------------------------------------------- - -class MidiTrackInfo : public TrackInfo { - Q_OBJECT - - Ui::MidiTrackInfoBase mt; - Ui::MidiPortInfoBase mp; - QComboBox* port; - QComboBox* channel; - QMenu* pop; - - private slots: - void transpositionChanged(int val); - void velocityChanged(int val); - void delayChanged(int val); - void lenChanged(int val); - void iKomprChanged(int val); - void patchClicked(); - void instrumentSelected(int); - void instrumentChanged(); - void autoChanged(Track*,bool); - void controllerChanged(int); - void portSelected(int); - void deviceIdChanged(int); - - public: - MidiTrackInfo(); - virtual void init(Track*); - }; - -//--------------------------------------------------------- -// AudioOutputInfo -//--------------------------------------------------------- - -class AudioOutputInfo : public TrackInfo { - Q_OBJECT - - public: - AudioOutputInfo(); - }; - -//--------------------------------------------------------- -// AudioInputInfo -//--------------------------------------------------------- - -class AudioInputInfo : public TrackInfo { - Q_OBJECT - - public: - AudioInputInfo(); - }; - -//--------------------------------------------------------- -// AudioGroupInfo -//--------------------------------------------------------- - -class AudioGroupInfo : public TrackInfo { - Q_OBJECT - - public: - AudioGroupInfo(); - }; - -//--------------------------------------------------------- -// AudioAuxInfo -//--------------------------------------------------------- - -class AudioAuxInfo : public TrackInfo { - Q_OBJECT - - public: - AudioAuxInfo(); - }; - -//--------------------------------------------------------- -// WaveTrackInfo -//--------------------------------------------------------- - -class WaveTrackInfo : public TrackInfo { - Q_OBJECT - - public: - WaveTrackInfo(); - }; - -//--------------------------------------------------------- -// SynthIInfo -//--------------------------------------------------------- - -class SynthIInfo : public TrackInfo { - Q_OBJECT - - public: - SynthIInfo(); - }; - -//--------------------------------------------------------- -// MidiSynthIInfo -//--------------------------------------------------------- - -class MidiSynthIInfo : public TrackInfo { - Q_OBJECT - - public: - MidiSynthIInfo(); - }; - -//--------------------------------------------------------- -// MidiOutPortInfo -//--------------------------------------------------------- - -class MidiOutPortInfo : public TrackInfo { - Q_OBJECT - - Ui::MidiPortInfoBase mp; - - private slots: - void instrumentSelected(int); - void instrumentChanged(); - void deviceIdChanged(int); - - public: - MidiOutPortInfo(); - virtual void init(Track*); - }; - -//--------------------------------------------------------- -// MidiInPortInfo -//--------------------------------------------------------- - -class MidiInPortInfo : public TrackInfo { - Q_OBJECT - - public: - MidiInPortInfo(); - }; - -#endif - diff --git a/muse/muse/transport.cpp b/muse/muse/transport.cpp deleted file mode 100644 index aa8fcc7c..00000000 --- a/muse/muse/transport.cpp +++ /dev/null @@ -1,411 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "song.h" -#include "transport.h" -#include "widgets/doublelabel.h" -#include "widgets/siglabel.h" -#include "globals.h" -#include "icons.h" -#include "awl/posedit.h" -#include "sync.h" -#include "shortcuts.h" -#include "gconfig.h" -#include "muse.h" -#include "al/sig.h" -#include "al/tempo.h" - -static const char* recordTransportText = QT_TR_NOOP("Click this button to enable recording"); -static const char* stopTransportText = QT_TR_NOOP("Click this button to stop playback"); -static const char* playTransportText = QT_TR_NOOP("Click this button to start playback"); -static const char* startTransportText = QT_TR_NOOP("Click this button to rewind to start position"); -static const char* frewindTransportText = QT_TR_NOOP("Click this button to rewind"); -static const char* fforwardTransportText = QT_TR_NOOP("Click this button to forward current play position"); - -//--------------------------------------------------------- -// Transport -//--------------------------------------------------------- - -Transport::Transport() - { - setupUi(this); - - connect(recMode, SIGNAL(activated(int)), SLOT(setRecMode(int))); - connect(cycleMode, SIGNAL(activated(int)), SLOT(setCycleMode(int))); - - //----------------------------------------------------- - // loop flags - //----------------------------------------------------- - - connect(punchinButton, SIGNAL(toggled(bool)), song, SLOT(setPunchin(bool))); - connect(punchoutButton, SIGNAL(toggled(bool)), song, SLOT(setPunchout(bool))); - connect(loopButton, SIGNAL(toggled(bool)), song, SLOT(setLoop(bool))); - - connect(song, SIGNAL(punchinChanged(bool)), punchinButton, SLOT(setChecked(bool))); - connect(song, SIGNAL(punchoutChanged(bool)), punchoutButton, SLOT(setChecked(bool))); - connect(song, SIGNAL(loopChanged(bool)), loopButton, SLOT(setChecked(bool))); - - //----------------------------------------------------- - // Transport Buttons - //----------------------------------------------------- - - time2->setSmpte(true); - - buttons[0] = tb1; - tb1->setWhatsThis(tr(startTransportText)); - - buttons[1] = tb2; - tb2->setAutoRepeat(true); - tb2->setWhatsThis(tr(frewindTransportText)); - - buttons[2] = tb3; - tb3->setAutoRepeat(true); - tb3->setWhatsThis(tr(fforwardTransportText)); - - buttons[3] = tb4; - tb4->setChecked(true); // set STOP - tb4->setWhatsThis(tr(stopTransportText)); - - buttons[4] = tb5; - tb5->setWhatsThis(tr(playTransportText)); - - buttons[5] = tb6; - tb6->setIcon(*recordIcon); - tb6->setWhatsThis(tr(recordTransportText)); - - connect(buttons[0], SIGNAL(clicked()), song, SLOT(rewindStart())); - connect(buttons[1], SIGNAL(clicked()), song, SLOT(rewind())); - connect(buttons[2], SIGNAL(clicked()), song, SLOT(forward())); - connect(buttons[3], SIGNAL(clicked(bool)), SLOT(stopToggled(bool))); - connect(buttons[4], SIGNAL(clicked(bool)), SLOT(playToggled(bool))); - connect(buttons[5], SIGNAL(clicked(bool)), song, SLOT(setRecord(bool))); - - connect(song, SIGNAL(recordChanged(bool)), SLOT(setRecord(bool))); - - //----------------------------------------------------- - // AQ - Click - Sync - //----------------------------------------------------- - -//TODOB clickButton->setShortcut(shortcuts[SHRT_TOGGLE_METRO].key); - - connect(quantizeButton, SIGNAL(clicked(bool)), song, SLOT(setQuantize(bool))); - connect(clickButton, SIGNAL(clicked(bool)), song, SLOT(setClick(bool))); - connect(syncButton, SIGNAL(clicked(bool)), SLOT(syncButtonClicked(bool))); -//TD connect(&extSyncFlag, SIGNAL(valueChanged(bool)), SLOT(syncChanged(bool))); - - connect(song, SIGNAL(quantizeChanged(bool)), this, SLOT(setQuantizeFlag(bool))); - connect(song, SIGNAL(clickChanged(bool)), clickButton, SLOT(setChecked(bool))); - - //----------------------------------------------------- - // Tempo/Sig - //----------------------------------------------------- - - connect(masterButton, SIGNAL(clicked(bool)), song, SLOT(setMasterFlag(bool))); - - //----------------------------------------------------- - - connect(tl1, SIGNAL(valueChanged(const Pos&)), SLOT(lposChanged(const Pos&))); - connect(tl2, SIGNAL(valueChanged(const Pos&)), SLOT(rposChanged(const Pos&))); - connect(time1, SIGNAL(valueChanged(const Pos&)), SLOT(cposChanged(const Pos&))); - connect(time2, SIGNAL(valueChanged(const Pos&)), SLOT(cposChanged(const Pos&))); - - slider->setRange(0, song->len()); - connect(song, SIGNAL(lenChanged(const AL::Pos&)), SLOT(setLen(const AL::Pos&))); - connect(slider,SIGNAL(sliderMoved(int)), SLOT(cposChanged(int))); - connect(song, SIGNAL(posChanged(int,const AL::Pos&, bool)), SLOT(setPos(int,const AL::Pos&))); - connect(tempo, SIGNAL(tempoChanged(int)), song, SLOT(setTempo(int))); - connect(song, SIGNAL(playChanged(bool)), SLOT(setPlay(bool))); - connect(song, SIGNAL(songChanged(int)), this, SLOT(songChanged(int))); - setValues(); - } - -//--------------------------------------------------------- -// setValues -//--------------------------------------------------------- - -void Transport::setValues() - { - punchinButton->setChecked(song->punchin()); - loopButton->setChecked(song->loop()); - punchoutButton->setChecked(song->punchout()); - quantizeButton->setChecked(song->quantize()); - clickButton->setChecked(song->click()); - syncButton->setChecked(extSyncFlag); - setPos(0, song->cpos()); - setPos(1, song->lpos()); - setPos(2, song->rpos()); - } - -//--------------------------------------------------------- -// setLen -// song len changed -//--------------------------------------------------------- - -void Transport::setLen(const AL::Pos& len) - { - slider->setRange(0, len.tick()); - } - -//--------------------------------------------------------- -// setTimesig -//--------------------------------------------------------- - -void Transport::setTimesig(int /*z*/, int /*n*/) - { -//TD tempo->setTimesig(z, n); - } - -//--------------------------------------------------------- -// setPos -//--------------------------------------------------------- - -void Transport::setPos(int idx, const AL::Pos& pos) - { - switch (idx) { - case 0: - time1->setValue(pos); - time2->setValue(pos); - slider->setValue(pos.tick()); - { - int tp = AL::tempomap.tempo(pos.tick()); - AL::TimeSignature sig = AL::sigmap.timesig(pos.tick()); - int z = sig.z; - int n = sig.n; - setTimesig(z, n); - tempo->setTempo(tp); - } - break; - case 1: - tl1->setValue(pos); - break; - case 2: - tl2->setValue(pos); - break; - } - } - -//--------------------------------------------------------- -// cposChanged -//--------------------------------------------------------- - -void Transport::cposChanged(int tick) - { - song->setPos(0, tick); - } - -//--------------------------------------------------------- -// cposChanged -//--------------------------------------------------------- - -void Transport::cposChanged(const Pos& pos) - { - song->setPos(0, pos.tick()); - } - -//--------------------------------------------------------- -// lposChanged -//--------------------------------------------------------- - -void Transport::lposChanged(const Pos& pos) - { - song->setPos(1, pos.tick()); - } - -//--------------------------------------------------------- -// rposChanged -//--------------------------------------------------------- - -void Transport::rposChanged(const Pos& pos) - { - song->setPos(2, pos.tick()); - } - -//--------------------------------------------------------- -// setPlay -//--------------------------------------------------------- - -void Transport::setPlay(bool f) - { - buttons[3]->setChecked(!f); - buttons[4]->setChecked(f); - } - -//--------------------------------------------------------- -// setMasterFlag -//--------------------------------------------------------- - -void Transport::setMasterFlag(bool f) - { - masterButton->setChecked(f); - } - -//--------------------------------------------------------- -// setQuantizeFlag -//--------------------------------------------------------- - -void Transport::setQuantizeFlag(bool f) - { - quantizeButton->setChecked(f); - } - -//--------------------------------------------------------- -// setSyncFlag -//--------------------------------------------------------- - -void Transport::setSyncFlag(bool f) - { - syncButton->setChecked(f); - } - -//--------------------------------------------------------- -// toggleRecMode -//--------------------------------------------------------- - -void Transport::setRecMode(int id) - { - song->setRecMode(id); - } - -//--------------------------------------------------------- -// toggleCycleMode -//--------------------------------------------------------- - -void Transport::setCycleMode(int id) - { - song->setCycleMode(id); - } - -//--------------------------------------------------------- -// songChanged -//--------------------------------------------------------- - -void Transport::songChanged(int flags) - { - int cpos = song->cpos(); - if (flags & (SC_MASTER | SC_TEMPO)) { - if (extSyncFlag) { - tempo->setTempo(0); - } - else { - int t = AL::tempomap.tempo(cpos); - tempo->setTempo(t); - } - } - if (flags & SC_SIG) { - AL::TimeSignature sig = AL::sigmap.timesig(cpos); - int z = sig.z; - int n = sig.n; - setTimesig(z, n); - } - if (flags & SC_MASTER) - masterButton->setChecked(song->masterFlag()); - } - -//--------------------------------------------------------- -// syncChanged -//--------------------------------------------------------- - -void Transport::syncChanged(bool flag) - { - syncButton->setChecked(flag); - buttons[0]->setEnabled(!flag); // goto start - buttons[1]->setEnabled(!flag); // rewind - buttons[2]->setEnabled(!flag); // forward - buttons[3]->setEnabled(!flag); // stop - buttons[4]->setEnabled(!flag); // play - slider->setEnabled(!flag); - masterButton->setEnabled(!flag); - if (flag) { - masterButton->setChecked(false); - song->setMasterFlag(false); - tempo->setValue(0); // slave mode: show "extern" - } - else - tempo->setValue(AL::tempomap.tempo(song->cpos())); - muse->playAction->setEnabled(!flag); - muse->startAction->setEnabled(!flag); - muse->stopAction->setEnabled(!flag); - muse->rewindAction->setEnabled(!flag); - muse->forwardAction->setEnabled(!flag); - } - -//--------------------------------------------------------- -// stopToggled -//--------------------------------------------------------- - -void Transport::stopToggled(bool val) - { - if (val) - song->setStop(true); - else { - buttons[3]->setChecked(true); - } - } - -//--------------------------------------------------------- -// playToggled -//--------------------------------------------------------- - -void Transport::playToggled(bool val) - { - if (val) - song->setPlay(true); - else { - buttons[4]->setChecked(true); - } - } - -//--------------------------------------------------------- -// setRecord -//--------------------------------------------------------- - -void Transport::setRecord(bool flag) - { - buttons[5]->setChecked(flag); - } - -//--------------------------------------------------------- -// syncButtonClicked -//--------------------------------------------------------- - -void Transport::syncButtonClicked(bool flag) - { - extSyncFlag = flag; - } - -//--------------------------------------------------------- -// syncChanged -//--------------------------------------------------------- - -void Transport::syncChanged() - { - syncButton->setChecked(extSyncFlag); - } - -//--------------------------------------------------------- -// closeEvent -//--------------------------------------------------------- - -void Transport::closeEvent(QCloseEvent *ev) - { - emit closed(); - QWidget::closeEvent(ev); - } - diff --git a/muse/muse/transport.h b/muse/muse/transport.h deleted file mode 100644 index 43acef24..00000000 --- a/muse/muse/transport.h +++ /dev/null @@ -1,74 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __TRANSPORT_H__ -#define __TRANSPORT_H__ - -#include "ui_transport.h" - -namespace AL { - class Pos; - }; -using AL::Pos; - -//--------------------------------------------------------- -// Transport -//--------------------------------------------------------- - -class Transport : public QWidget, public Ui::TransportBase - { - QToolButton* buttons[6]; // transport buttons - Q_OBJECT - - virtual void closeEvent(QCloseEvent*); - - private slots: - void cposChanged(const Pos&); - void cposChanged(int); - void lposChanged(const Pos&); - void rposChanged(const Pos&); - void setRecMode(int); - void setCycleMode(int); - void songChanged(int); - void syncChanged(bool); - void setRecord(bool flag); - void stopToggled(bool); - void playToggled(bool); - void setLen(const AL::Pos& len); - - public slots: - void setTimesig(int a, int b); - void setPos(int idx, const AL::Pos& pos); - void setMasterFlag(bool); - void setQuantizeFlag(bool); - void setSyncFlag(bool); - void setPlay(bool f); - void syncButtonClicked(bool); - void syncChanged(); - - signals: - void closed(); - - public: - Transport(); - void setValues(); - }; -#endif - diff --git a/muse/muse/transport.ui b/muse/muse/transport.ui deleted file mode 100644 index a70992e9..00000000 --- a/muse/muse/transport.ui +++ /dev/null @@ -1,856 +0,0 @@ - - - - - TransportBase - - - - 0 - 0 - 636 - 99 - - - - - 0 - 0 - 0 - 0 - - - - MusE: Transport Panel - - - - 1 - - - 1 - - - - - 3 - - - 2 - - - - - - Overdub - - - - - Replace - - - - - - - - - Sans Serif - 6 - 50 - false - false - false - false - - - - Rec Mode - - - Qt::AlignCenter - - - - - - - - Normal - - - - - Mix - - - - - Replace - - - - - - - - - Sans Serif - 6 - 50 - false - false - false - false - - - - Cycle Rec - - - Qt::AlignCenter - - - - - - - - - 2 - - - 2 - - - - - - 5 - 7 - 0 - 0 - - - - :/xpm/punchin.xpm - - - true - - - - - - - - 5 - 7 - 0 - 0 - - - - ... - - - :/xpm/loop.xpm - - - true - - - - - - - - 5 - 7 - 0 - 0 - - - - :/xpm/punchout.xpm - - - true - - - Qt::ToolButtonTextOnly - - - Qt::NoArrow - - - - - - - - - 2 - - - 2 - - - - - - - - - Sans Serif - 6 - 50 - false - false - false - false - - - - Left Loc - - - Qt::AlignCenter - - - - - - - - - - - Sans Serif - 6 - 50 - false - false - false - false - - - - Right Loc - - - Qt::AlignCenter - - - - - - - - - 3 - - - 2 - - - - - 0 - - - 0 - - - - - - - - - - - - - - 7 - 7 - 0 - 0 - - - - Qt::Horizontal - - - - - - - 3 - - - 1 - - - - - - 5 - 7 - 0 - 0 - - - - rewind to start - - - ... - - - :/xpm/start.xpm - - - - - - - - 5 - 7 - 0 - 0 - - - - rewind - - - ... - - - :/xpm/frewind.xpm - - - - - - - - 5 - 7 - 0 - 0 - - - - forward - - - ... - - - :/xpm/fforward.xpm - - - - - - - - 5 - 7 - 0 - 0 - - - - stop - - - ... - - - :/xpm/stop.xpm - - - true - - - - - - - - 5 - 7 - 0 - 0 - - - - play - - - ... - - - :/xpm/play.xpm - - - true - - - - - - - - 5 - 7 - 0 - 0 - - - - record - - - ... - - - true - - - - - - - - - - - 2 - - - 2 - - - - - - 5 - 7 - 0 - 0 - - - - AC - - - true - - - - - - - - 5 - 7 - 0 - 0 - - - - Click - - - true - - - - - - - - 5 - 7 - 0 - 0 - - - - Sync - - - true - - - - - - - - - 5 - - - 1 - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 1 - - - 1 - - - - - - - - - - - 128 - 128 - 128 - - - 221 - 223 - 228 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 85 - 85 - 85 - - - 199 - 199 - 199 - - - 199 - 199 - 199 - - - 255 - 255 - 255 - - - 128 - 128 - 128 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 86 - 117 - 148 - - - 255 - 255 - 255 - - - 0 - 0 - 238 - - - 82 - 24 - 139 - - - 232 - 232 - 232 - - - - - 128 - 128 - 128 - - - 221 - 223 - 228 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 85 - 85 - 85 - - - 199 - 199 - 199 - - - 199 - 199 - 199 - - - 255 - 255 - 255 - - - 128 - 128 - 128 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 86 - 117 - 148 - - - 255 - 255 - 255 - - - 0 - 0 - 238 - - - 82 - 24 - 139 - - - 232 - 232 - 232 - - - - - 128 - 128 - 128 - - - 221 - 223 - 228 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 85 - 85 - 85 - - - 199 - 199 - 199 - - - 199 - 199 - 199 - - - 255 - 255 - 255 - - - 128 - 128 - 128 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 86 - 117 - 148 - - - 255 - 255 - 255 - - - 0 - 0 - 238 - - - 82 - 24 - 139 - - - 232 - 232 - 232 - - - - - - 4/4 - - - Qt::AlignCenter - - - - - - - - - - - 5 - 0 - 0 - 0 - - - - use tempo map - - - Tempomap - - - true - - - true - - - - - - - - - - - Awl::PosEdit - QWidget -
awl/posedit.h
- 0 - -
- - SigLabel - QLabel -
widgets/siglabel.h
- 0 - -
- - Awl::TempoEdit - QWidget -
awl/tempoedit.h
- 0 - -
-
- - - - -
diff --git a/muse/muse/transpose.cpp b/muse/muse/transpose.cpp deleted file mode 100644 index 73edb05a..00000000 --- a/muse/muse/transpose.cpp +++ /dev/null @@ -1,92 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "transpose.h" -#include "track.h" -#include "song.h" -#include "event.h" -#include "audio.h" -#include "part.h" - -//--------------------------------------------------------- -// Transpose -//--------------------------------------------------------- - -Transpose::Transpose(QWidget* parent) - : QDialog(parent) - { - setupUi(this); - if (song->lpos() != song->rpos()) { - time_selected->setChecked(true); - } - else { -// time_all->setChecked(true); - ButtonGroup1->setEnabled(false); - } -// parts_all->setSelected(true); - } - -//--------------------------------------------------------- -// accept -//--------------------------------------------------------- - -void Transpose::accept() - { - int left = 0, right = 0; - int dv = delta->value(); - - TrackList *tracks = song->tracks(); - - if (time_selected->isChecked()) { - left = song->lpos(); - right = song->rpos(); - } - else { - left = 0; - right = song->len(); - } - - song->startUndo(); - for (iTrack t = tracks->begin(); t != tracks->end(); ++t) { - if (((*t)->type() != Track::MIDI) - || !(parts_all->isChecked() || (*t)->selected())) - continue; - - PartList *pl = (*t)->parts(); - for (iPart p = pl->begin(); p != pl->end(); ++p) { - Part *mp = p->second; - EventList* el = mp->events(); - for (iEvent i = el->begin(); i != el->end(); ++i) { - Event oe = i->second; - int tick = oe.tick(); - if (tick > right) - break; - if (tick < left) - continue; - Event ne = oe.clone(); - ne.setA(oe.dataA() + dv ); - audio->msgChangeEvent(oe, ne, mp, false); - } - } - } - song->endUndo(SC_EVENT_MODIFIED); - close(); - } - diff --git a/muse/muse/transpose.h b/muse/muse/transpose.h deleted file mode 100644 index 31b73865..00000000 --- a/muse/muse/transpose.h +++ /dev/null @@ -1,40 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __TRANSPOSE_H__ -#define __TRANSPOSE_H__ - -#include "ui_transpose.h" - -//--------------------------------------------------------- -// transpose widget -//--------------------------------------------------------- - -class Transpose : public QDialog, public Ui::TransposeDialogBase { - Q_OBJECT - - private slots: - virtual void accept(); - - public: - Transpose(QWidget* parent=0); - }; - -#endif diff --git a/muse/muse/transpose.ui b/muse/muse/transpose.ui deleted file mode 100644 index de0bfe2e..00000000 --- a/muse/muse/transpose.ui +++ /dev/null @@ -1,193 +0,0 @@ - - - - - TransposeDialogBase - - - - 0 - 0 - 289 - 317 - - - - MusE: Midi Transpose - - - - 11 - - - 6 - - - - - Value - - - - 11 - - - 6 - - - - - 0 - - - 6 - - - - - - 5 - 0 - 0 - 0 - - - - -99 - - - - - - - - 3 - 1 - 0 - 0 - - - - halftones - - - - - - - - - - - - - 11 - - - 6 - - - - - all - - - true - - - - - - - between markers - - - - - - - - - - - 11 - - - 6 - - - - - all - - - true - - - - - - - - - - all in selected tracks - - - - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 20 - 20 - - - - - - - - OK - - - false - - - true - - - - - - - Cancel - - - - - - - - - qPixmapFromMimeSource - - - diff --git a/muse/muse/trelement.h b/muse/muse/trelement.h deleted file mode 100644 index 4c702ae2..00000000 --- a/muse/muse/trelement.h +++ /dev/null @@ -1,63 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __TR_ELEMENT_H__ -#define __TR_ELEMENT_H__ - -#include "track.h" - -//--------------------------------------------------------- -// TrElement -// describes a configurable gui element of the -// track list -//--------------------------------------------------------- - -enum { - TR_NAME, TR_MUTE, TR_OFF, TR_SOLO, TR_RECORD, TR_AREAD, TR_AWRITE, - TR_OCHANNEL, TR_MONITOR, TR_DRUMMAP, TR_INSTRUMENT, TR_PATCH - }; - -struct TrElement { - int id; - int grp; // default group - const char* name; - int trackMask; - - TrElement(int i, int g, const char* s, int m) - : id(i), grp(g), name(s), trackMask(m) {} - }; - -//--------------------------------------------------------- -// TrGroup -// TrElements are grouped -//--------------------------------------------------------- - -typedef std::list TrElementList; -typedef TrElementList::iterator iTrElement; - -class TrGroupList : public std::list { - }; -typedef TrGroupList::iterator iTrGroup; - -extern const TrElement trElements[]; -extern const int nTrElements; -extern TrGroupList glist[Track::TRACK_TYPES]; - -#endif diff --git a/muse/muse/undo.cpp b/muse/muse/undo.cpp deleted file mode 100644 index 383f7d33..00000000 --- a/muse/muse/undo.cpp +++ /dev/null @@ -1,614 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "undo.h" -#include "song.h" -#include "globals.h" -#include "al/tempo.h" -#include "al/sig.h" -#include "al/sig.h" -#include "part.h" - -// iundo points to last Undo() in Undo-list - -static bool undoMode = false; // for debugging -std::list temporaryWavFiles; - -//--------------------------------------------------------- -// typeName -//--------------------------------------------------------- - -const char* UndoOp::typeName() - { - static const char* name[] = { - "AddTrack", "DeleteTrack", "RenameTrack", - "AddPart", "DeletePart", "ModifyPart", - "AddEvent", "DeleteEvent", "ModifyEvent", - "AddTempo", "DeleteTempo", - "AddSig", "DeleteSig", - "SwapTrack", - "ModifyClip", - "AddCtrl", "RemoveCtrl", "ModifyCtrl" - }; - return name[type]; - } - -//--------------------------------------------------------- -// dump -//--------------------------------------------------------- - -void UndoOp::dump() - { - printf("UndoOp: %s\n ", typeName()); - switch(type) { - case AddTrack: - case DeleteTrack: - printf("%d %s\n", id, track->name().toLatin1().data()); - break; - case AddPart: - case DeletePart: - case ModifyPart: - break; - case AddEvent: - case DeleteEvent: - printf("old event:\n"); - oEvent.dump(5); - printf(" new event:\n"); - nEvent.dump(5); - printf(" Part:\n"); - if (part) - part->dump(5); - break; - case ModifyEvent: - case AddTempo: - case DeleteTempo: - case AddSig: - case DeleteSig: - case SwapTrack: - case AddCtrl: - case RemoveCtrl: - case ModifyCtrl: - case RenameTrack: - case ModifyClip: - break; - } - } - -//--------------------------------------------------------- -// startUndo -//--------------------------------------------------------- - -void Song::startUndo() - { - undoList->push_back(Undo()); - updateFlags = 0; - undoMode = true; - } - -//--------------------------------------------------------- -// endUndo -//--------------------------------------------------------- - -void Song::endUndo(int flags) - { - updateFlags |= flags; - endMsgCmd(); - undoMode = false; - } - -//--------------------------------------------------------- -// doUndo2 -// real time part -//--------------------------------------------------------- - -void Song::doUndo2() - { - Undo& u = undoList->back(); - -// printf("doUndo2\n"); - for (riUndoOp i = u.rbegin(); i != u.rend(); ++i) { -// printf(" doUndo2 %s\n", i->typeName()); - switch(i->type) { - case UndoOp::AddTrack: - removeTrack2(i->track); - updateFlags |= SC_TRACK_REMOVED; - break; - case UndoOp::DeleteTrack: - insertTrack2(i->track); - updateFlags |= SC_TRACK_INSERTED; - break; - case UndoOp::SwapTrack: - { - updateFlags |= SC_TRACK_MODIFIED; - Track* track = _tracks[i->a]; - _tracks[i->a] = _tracks[i->b]; - _tracks[i->b] = track; - updateFlags |= SC_TRACK_MODIFIED; - } - break; - case UndoOp::RenameTrack: - i->track->setName(*(i->os)); - break; - case UndoOp::AddPart: - { - Part* part = i->oPart; - part->track()->parts()->remove(part); - updateFlags |= SC_PART_REMOVED; - part->deref(); - } - break; - case UndoOp::DeletePart: - i->oPart->track()->addPart(i->oPart); - updateFlags |= SC_PART_INSERTED; - i->oPart->ref(); - break; - case UndoOp::ModifyPart: - { - Part* oldPart = i->oPart; - Part* newPart = i->nPart; - Part part = *newPart; - *newPart = *oldPart; - *oldPart = part; -// oldPart->deref(); -// newPart->ref(); - updateFlags |= SC_PART_MODIFIED; - } - break; - case UndoOp::AddEvent: - deleteEvent(i->nEvent, i->part); - updateFlags |= SC_EVENT_REMOVED; - break; - case UndoOp::DeleteEvent: - addEvent(i->nEvent, i->part); - updateFlags |= SC_EVENT_INSERTED; - break; - case UndoOp::ModifyEvent: - updateFlags |= SC_EVENT_MODIFIED; - changeEvent(i->oEvent, i->nEvent, i->part); - break; - case UndoOp::AddTempo: - AL::tempomap.delTempo(i->a); - updateFlags |= SC_TEMPO; - break; - case UndoOp::DeleteTempo: - AL::tempomap.addTempo(i->a, i->b); - updateFlags |= SC_TEMPO; - break; - case UndoOp::AddSig: - AL::sigmap.del(i->a); - updateFlags |= SC_SIG; - break; - case UndoOp::DeleteSig: - AL::sigmap.add(i->a, AL::TimeSignature(i->b, i->c)); - updateFlags |= SC_SIG; - break; - case UndoOp::AddCtrl: - i->track->removeControllerVal(i->id, i->time); - break; - case UndoOp::RemoveCtrl: - i->track->addControllerVal(i->id, i->time, i->cval1); - break; - case UndoOp::ModifyCtrl: - i->track->addControllerVal(i->id, i->time, i->cval2); - break; - case UndoOp::ModifyClip: - break; - } - } - } - -//--------------------------------------------------------- -// Song::doRedo2 -//--------------------------------------------------------- - -void Song::doRedo2() - { - Undo& u = redoList->back(); -// printf("doRedo2\n"); - for (iUndoOp i = u.begin(); i != u.end(); ++i) { -// printf(" doRedo2 %s\n", i->typeName()); - switch(i->type) { - case UndoOp::AddTrack: - insertTrack2(i->track); - updateFlags |= SC_TRACK_INSERTED; - break; - case UndoOp::DeleteTrack: - removeTrack2(i->track); - updateFlags |= SC_TRACK_REMOVED; - break; - case UndoOp::SwapTrack: - { - Track* track = _tracks[i->a]; - _tracks[i->a] = _tracks[i->b]; - _tracks[i->b] = track; - updateFlags |= SC_TRACK_MODIFIED; - } - break; - case UndoOp::RenameTrack: - i->track->setName(*(i->ns)); - break; - case UndoOp::AddPart: - i->oPart->track()->addPart(i->oPart); - updateFlags |= SC_PART_INSERTED; - i->oPart->ref(); - break; - case UndoOp::DeletePart: - { - Part* part = i->oPart; - part->track()->parts()->remove(part); - updateFlags |= SC_PART_REMOVED; - part->deref(); - } - break; - case UndoOp::ModifyPart: - { - Part* oldPart = i->oPart; - Part* newPart = i->nPart; - Part part = *newPart; - *newPart = *oldPart; - *oldPart = part; - updateFlags |= SC_PART_MODIFIED; -// oldPart->ref(); -// newPart->deref(); - } - break; - case UndoOp::AddEvent: - addEvent(i->nEvent, i->part); - updateFlags |= SC_EVENT_INSERTED; - break; - case UndoOp::DeleteEvent: - deleteEvent(i->nEvent, i->part); - updateFlags |= SC_EVENT_REMOVED; - break; - case UndoOp::ModifyEvent: - changeEvent(i->nEvent, i->oEvent, i->part); - updateFlags |= SC_EVENT_MODIFIED; - break; - case UndoOp::AddTempo: - AL::tempomap.addTempo(i->a, i->b); - updateFlags |= SC_TEMPO; - break; - case UndoOp::DeleteTempo: - AL::tempomap.delTempo(i->a); - updateFlags |= SC_TEMPO; - break; - case UndoOp::AddSig: - AL::sigmap.add(i->a, AL::TimeSignature(i->b, i->c)); - updateFlags |= SC_SIG; - break; - case UndoOp::DeleteSig: - //printf("doRedo: UndoOp::DeleteSig. Deleting sigmap at: %d, z=%d n=%d\n", i->a, i->b, i->c); - AL::sigmap.del(i->a); - updateFlags |= SC_SIG; - break; - case UndoOp::AddCtrl: - i->track->addControllerVal(i->id, i->time, i->cval1); - break; - case UndoOp::RemoveCtrl: - i->track->removeControllerVal(i->id, i->time); - break; - case UndoOp::ModifyCtrl: - i->track->addControllerVal(i->id, i->time, i->cval1); - break; - case UndoOp::ModifyClip: - break; - } - } - } - -void Song::undoOp(UndoOp::UndoType type, int a, int b, int c) - { - UndoOp i; - i.type = type; - i.a = a; - i.b = b; - i.c = c; - addUndo(i); - } - -void Song::undoOp(UndoOp::UndoType type, int n, Track* track) - { - UndoOp i; - i.type = type; - i.id = n; - i.track = track; - if (type == UndoOp::AddTrack) - updateFlags |= SC_TRACK_INSERTED; - addUndo(i); - } - -void Song::undoOp(UndoOp::UndoType type, Part* part) - { - UndoOp i; - i.type = type; - i.oPart = part; - addUndo(i); - } - -void Song::undoOp(UndoOp::UndoType type, const Event& oev, const Event& nev, Part* part) - { - UndoOp i; - i.type = type; - i.nEvent = nev; - i.oEvent = oev; - i.part = part; - addUndo(i); - } - -void Song::undoOp(UndoOp::UndoType type, const Event& nev, Part* part) - { - UndoOp i; - i.type = type; - i.nEvent = nev; - i.part = part; - addUndo(i); - } - -void Song::undoOp(UndoOp::UndoType type, Part* oPart, Part* nPart) - { - UndoOp i; - i.type = type; - i.oPart = nPart; - i.nPart = oPart; - addUndo(i); - } - -void Song::undoOp(UndoOp::UndoType type, SigEvent* oevent, SigEvent* nevent) - { - UndoOp i; - i.type = type; - i.oSignature = oevent; - i.nSignature = nevent; - addUndo(i); - } - -void Song::undoOp(UndoOp::UndoType type, Track* t, int id, unsigned time, CVal nval, CVal oval) - { - UndoOp i; - i.type = type; - i.track = t; - i.id = id; - i.time = time; - i.cval1 = nval; - i.cval2 = oval; - addUndo(i); - } - -void Song::undoOp(UndoOp::UndoType type, Track* t, const QString& s1, const QString& s2) - { - UndoOp i; - i.type = type; - i.track = t; - i.os = new QString(s1); - i.ns = new QString(s2); - addUndo(i); - } - -void Song::undoOp(UndoOp::UndoType type, const char* changedFile, const char* changeData, int startframe, int endframe) - { - UndoOp i; - i.type = type; - i.filename = changedFile; - i.tmpwavfile = changeData; - i.startframe = startframe; - i.endframe = endframe; - addUndo(i); - temporaryWavFiles.push_back(QString(changeData)); - - printf("Adding ModifyClip undo-operation: origfile=%s tmpfile=%s sf=%d ef=%d\n", changedFile, changeData, startframe, endframe); - } - -//--------------------------------------------------------- -// addUndo -//--------------------------------------------------------- - -void Song::addUndo(UndoOp& i) - { - if (!undoMode) { - printf("internal error: undoOp without startUndo()\n"); -abort(); - return; - } - undoList->back().push_back(i); - dirty = true; - } - -//--------------------------------------------------------- -// doUndo1 -// non realtime context -// return true if nothing to do -//--------------------------------------------------------- - -bool Song::doUndo1() - { - if (undoList->empty()) - return true; -// printf("doUndo1\n"); - Undo& u = undoList->back(); - for (riUndoOp i = u.rbegin(); i != u.rend(); ++i) { -// printf(" doUndo1 %s\n", i->typeName()); - switch(i->type) { - case UndoOp::AddTrack: - removeTrack1(i->track); - break; - case UndoOp::DeleteTrack: - insertTrack1(i->track, i->id); - break; - case UndoOp::ModifyClip: - SndFile::applyUndoFile(i->filename, i->tmpwavfile, i->startframe, i->endframe); - break; - default: - break; - } - } - return false; - } - -//--------------------------------------------------------- -// doUndo3 -// non realtime context after realtime operation -//--------------------------------------------------------- - -void Song::doUndo3() - { -// printf("doUndo3\n"); - Undo& u = undoList->back(); - for (riUndoOp i = u.rbegin(); i != u.rend(); ++i) { -// printf(" doUndo3 %s\n", i->typeName()); - switch(i->type) { - case UndoOp::AddTrack: - removeTrack3(i->track); - break; - case UndoOp::DeleteTrack: - emit trackAdded(i->track, i->id); - if (i->track->selected()) { - i->track->setSelected(false); - selectTrack(i->track); - } - break; - case UndoOp::ModifyPart: - undoPartModify(i->oPart, i->nPart, true); - - case UndoOp::AddPart: - case UndoOp::DeletePart: - i->oPart->track()->partListChanged(); - break; - case UndoOp::AddCtrl: - case UndoOp::RemoveCtrl: - case UndoOp::ModifyCtrl: - i->track->emitControllerChanged(i->id); - break; - default: - break; - } - } - redoList->push_back(u); // put item on redo list - undoList->pop_back(); - dirty = true; - } - -//--------------------------------------------------------- -// doRedo1 -// non realtime context -// return true if nothing to do -//--------------------------------------------------------- - -bool Song::doRedo1() - { - if (redoList->empty()) - return true; -// printf("doRedo1\n"); - Undo& u = redoList->back(); - for (iUndoOp i = u.begin(); i != u.end(); ++i) { -// printf(" doRedo1 %s\n", i->typeName()); - switch(i->type) { - case UndoOp::AddTrack: - insertTrack1(i->track, i->id); - break; - case UndoOp::DeleteTrack: - removeTrack1(i->track); - break; - case UndoOp::ModifyClip: - SndFile::applyUndoFile(i->filename, i->tmpwavfile, i->startframe, i->endframe); - break; - case UndoOp::AddCtrl: - case UndoOp::RemoveCtrl: - default: - break; - } - } - return false; - } - -//--------------------------------------------------------- -// doRedo3 -// non realtime context -//--------------------------------------------------------- - -void Song::doRedo3() - { -// printf("doRedo3\n"); - Undo& u = redoList->back(); - for (iUndoOp i = u.begin(); i != u.end(); ++i) { -// printf(" doRedo3 %s\n", i->typeName()); - switch(i->type) { - case UndoOp::AddTrack: - emit trackAdded(i->track, i->id); - break; - case UndoOp::DeleteTrack: - removeTrack3(i->track); - break; - case UndoOp::ModifyPart: - undoPartModify(i->oPart, i->nPart, false); - - case UndoOp::AddPart: - case UndoOp::DeletePart: - i->oPart->track()->partListChanged(); - break; - case UndoOp::AddCtrl: - case UndoOp::RemoveCtrl: - case UndoOp::ModifyCtrl: - i->track->emitControllerChanged(i->id); - break; - default: - break; - } - } - undoList->push_back(u); // put item on undo list - redoList->pop_back(); - dirty = true; - } - -//--------------------------------------------------------- -// undoPartModify -//--------------------------------------------------------- - -void Song::undoPartModify(Part* oPart, Part* nPart, bool undo) - { - if (oPart->track() != nPart->track()) - nPart->track()->partListChanged(); - // - // look for cloned part - // - for (iMidiTrack i = _midis.begin(); i != _midis.end(); ++i) { - PartList* pl = (*i)->parts(); - for (iPart ip = pl->begin(); ip != pl->end(); ++ip) { - Part* p = ip->second; - if (undo) { - if (p == nPart) - continue; - if (p->events() == nPart->events()) { - // this is a cloned Part - p->ref(); - return; - } - } - else { - if (p == oPart) - continue; - if (p->events() == oPart->events()) { - p->deref(); - return; - } - } - } - } - } - diff --git a/muse/muse/undo.h b/muse/muse/undo.h deleted file mode 100644 index 620199bb..00000000 --- a/muse/muse/undo.h +++ /dev/null @@ -1,103 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __UNDO_H__ -#define __UNDO_H__ - -#include "event.h" -#include "ctrl.h" - -class Track; -class TEvent; -class SigEvent; -class Part; - -extern std::list temporaryWavFiles; //!< Used for storing all tmp-files, for cleanup on shutdown - -//--------------------------------------------------------- -// UndoOp -//--------------------------------------------------------- - -struct UndoOp { - enum UndoType { - AddTrack, DeleteTrack, RenameTrack, - AddPart, DeletePart, ModifyPart, - AddEvent, DeleteEvent, ModifyEvent, - AddTempo, DeleteTempo, - AddSig, DeleteSig, - SwapTrack, - ModifyClip, - AddCtrl, RemoveCtrl, ModifyCtrl - }; - UndoType type; - - union { - struct { - int a; - int b; - int c; - }; - struct { - Part* oPart; - Part* nPart; - }; - struct { - Part* part; - }; - struct { - SigEvent* nSignature; - SigEvent* oSignature; - }; - struct { - int startframe; //!< Start frame of changed data - int endframe; //!< End frame of changed data - const char* filename; //!< The file that is changed - const char* tmpwavfile; //!< The file with the changed data - }; - struct { - Track* track; - int id; - unsigned time; - CVal cval1, cval2; - QString* os; - QString* ns; - }; - }; - Event oEvent; - Event nEvent; - const char* typeName(); - void dump(); - }; - -class Undo : public std::list { - void undoOp(UndoOp::UndoType, int data); - }; - -typedef Undo::iterator iUndoOp; -typedef Undo::reverse_iterator riUndoOp; - -class UndoList : public std::list { - public: - }; - -typedef UndoList::iterator iUndo; - - -#endif // __UNDO_H__ diff --git a/muse/muse/value.cpp b/muse/muse/value.cpp deleted file mode 100644 index 9434d192..00000000 --- a/muse/muse/value.cpp +++ /dev/null @@ -1,73 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "value.h" -#include "al/xml.h" - -IValue::IValue(QObject* parent, const char* name) - : QObject(parent) - { - setObjectName(name); - } -BValue::BValue(QObject* parent, const char* name) - : QObject(parent) - { - setObjectName(name); - } - -//--------------------------------------------------------- -// save -//--------------------------------------------------------- - -void BValue::save(Xml& xml) - { - xml.intTag(objectName().toLatin1().data(), val); - } - -//--------------------------------------------------------- -// save -//--------------------------------------------------------- - -void IValue::save(Xml& xml) - { - xml.intTag(objectName().toLatin1().data(), val); - } - -//--------------------------------------------------------- -// setValue -//--------------------------------------------------------- - -void BValue::setValue(bool v) - { - if (val != v) { - val = v; - emit valueChanged(val); - emit valueChanged(int(val)); - } - } - -void IValue::setValue(int v) - { - if (val != v) { - val = v; - emit valueChanged(val); - } - } - diff --git a/muse/muse/vst.cpp b/muse/muse/vst.cpp deleted file mode 100644 index f91d1322..00000000 --- a/muse/muse/vst.cpp +++ /dev/null @@ -1,1063 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// This code is based on jack_fst: -// Copyright (C) 2004 Paul Davis -// Torben Hohn -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "config.h" - -#ifdef VST_SUPPORT - -#include "al/al.h" -#include -#include -#include - -#include "vst.h" -#include "globals.h" -#include "synth.h" -#include "jackaudio.h" -#include "midi.h" -#include "al/xml.h" -#include "song.h" -#include "audio.h" -#include "widgets/utils.h" - -extern "C" void fst_error(const char *fmt, ...); -extern JackAudio* jackAudio; - -//--------------------------------------------------------- -// jfstReserveMem -//--------------------------------------------------------- - -static void jfstReserveMem(int size) - { - char buf[size]; - - for (int i = 0; i < size; ++i) - buf[i] = (char)(i % 256); - } - -//--------------------------------------------------------- -// vstHostCallback -//--------------------------------------------------------- - -static long vstHostCallback(AEffect* effect, - long opcode, long index, long value, void* ptr, float opt) - { - static VstTimeInfo _timeInfo; - - VstPluginIF* pluginIF = effect ? (VstPluginIF*) effect->user : 0; - - jack_position_t jack_pos; - jack_transport_state_t tstate; - - switch (opcode) { - case audioMasterAutomate: - // index, value, returns 0 - if (pluginIF) { - PluginI* pi = pluginIF->pluginInstance(); - // pi->setParam(index, opt); - CVal cval; - cval.f = opt; - song->setControllerVal(pi->track(), pi->controller(index), cval); - } - return 0; - - case audioMasterVersion: - // vst version, currently 2 (0 for older) - return 2200; - - case audioMasterCurrentId: - // returns the unique id of a plug that's currently - // loading - return 0; - - case audioMasterIdle: - // call application idle routine (this will - // call effEditIdle for all open editors too) - effect->dispatcher(effect, effEditIdle, 0, 0, NULL, 0.0f); - return 0; - - case audioMasterPinConnected: - // inquire if an input or output is beeing connected; - // index enumerates input or output counting from zero: - // value is 0 for input and != 0 otherwise. note: the - // return value is 0 for such that older versions - // will always return true. - return 1; - - case audioMasterWantMidi: - // is a filter which is currently ignored - return 0; - - case audioMasterGetTime: - // returns const VstTimeInfo* (or 0 if not supported) - // should contain a mask indicating which fields are required - // (see valid masks above), as some items may require extensive - // conversions - - memset(&_timeInfo, 0, sizeof(_timeInfo)); - - if (effect) { - tstate = jackAudio->transportQuery(&jack_pos); - - _timeInfo.samplePos = jack_pos.frame; - _timeInfo.sampleRate = jack_pos.frame_rate; - _timeInfo.flags = 0; - - if ((value & (kVstBarsValid|kVstTempoValid)) && (jack_pos.valid & JackPositionBBT)) { - _timeInfo.tempo = jack_pos.beats_per_minute; - _timeInfo.timeSigNumerator = (long) floor (jack_pos.beats_per_bar); - _timeInfo.timeSigDenominator = (long) floor (jack_pos.beat_type); - _timeInfo.flags |= (kVstBarsValid|kVstTempoValid); - } - if (tstate == JackTransportRolling) { - _timeInfo.flags |= kVstTransportPlaying; - } - } - else { - _timeInfo.samplePos = 0; - _timeInfo.sampleRate = AL::sampleRate; - } - return (long)&_timeInfo; - - case audioMasterProcessEvents: - // VstEvents* in - return 0; - - case audioMasterSetTime: - // VstTimenfo* in , filter in , not supported - - case audioMasterTempoAt: - // returns tempo (in bpm * 10000) at sample frame location passed in - return 0; - - case audioMasterGetNumAutomatableParameters: - return 0; - - case audioMasterGetParameterQuantization: - // returns the integer value for +1.0 representation, - // or 1 if full single float precision is maintained - // in automation. parameter index in (-1: all, any) - return 0; - - case audioMasterIOChanged: - // numInputs and/or numOutputs has changed - return 0; - - case audioMasterNeedIdle: - // plug needs idle calls (outside its editor window) - return 0; - - case audioMasterSizeWindow: - // index: width, value: height - return 0; - - case audioMasterGetSampleRate: - return 0; - - case audioMasterGetBlockSize: - return 0; - - case audioMasterGetInputLatency: - return 0; - - case audioMasterGetOutputLatency: - return 0; - - case audioMasterGetPreviousPlug: - // input pin in (-1: first to come), returns cEffect* - return 0; - - case audioMasterGetNextPlug: - // output pin in (-1: first to come), returns cEffect* - - case audioMasterWillReplaceOrAccumulate: - // returns: 0: not supported, 1: replace, 2: accumulate - return 0; - - case audioMasterGetCurrentProcessLevel: - // returns: 0: not supported, - // 1: currently in user thread (gui) - // 2: currently in audio thread (where process is called) - // 3: currently in 'sequencer' thread (midi, timer etc) - // 4: currently offline processing and thus in user thread - // other: not defined, but probably pre-empting user thread. - return 0; - - case audioMasterGetAutomationState: - // returns 0: not supported, 1: off, 2:read, 3:write, 4:read/write - // offline - return 0; - - case audioMasterOfflineStart: - case audioMasterOfflineRead: - // ptr points to offline structure, see below. return 0: error, 1 ok - return 0; - - case audioMasterOfflineWrite: - // same as read - return 0; - - case audioMasterOfflineGetCurrentPass: - case audioMasterOfflineGetCurrentMetaPass: - return 0; - - case audioMasterSetOutputSampleRate: - // for variable i/o, sample rate in - return 0; - - case audioMasterGetSpeakerArrangement: - // (long)input in , output in - return 0; - - case audioMasterGetVendorString: - // fills with a string identifying the vendor (max 64 char) - strcpy ((char*) ptr, "LAD"); - return 0; - - case audioMasterGetProductString: - // fills with a string with product name (max 64 char) - strcpy ((char*) ptr, "FreeST"); - - case audioMasterGetVendorVersion: - // returns vendor-specific version - return 1000; - - case audioMasterVendorSpecific: - // no definition, vendor specific handling - return 0; - - case audioMasterSetIcon: - // void* in , format not defined yet - return 0; - - case audioMasterCanDo: - // string in ptr, see below - return 0; - - case audioMasterGetLanguage: - // see enum - return 0; - - case audioMasterOpenWindow: - // returns platform specific ptr - return 0; - - case audioMasterCloseWindow: - // close window, platform specific handle in - return 0; - - case audioMasterGetDirectory: - // get plug directory, FSSpec on MAC, else char* - return 0; - - case audioMasterUpdateDisplay: - // something has changed, update 'multi-fx' display - effect->dispatcher(effect, effEditIdle, 0, 0, NULL, 0.0f); - return 0; - - case audioMasterBeginEdit: - // begin of automation session (when mouse down), parameter index in - return 0; - - case audioMasterEndEdit: - // end of automation session (when mouse up), parameter index in - return 0; - - case audioMasterOpenFileSelector: - // open a fileselector window with VstFileSelect* in - return 0; - - default: - break; - } - return 0; - } - - -//--------------------------------------------------------- -// FstPlugin -//--------------------------------------------------------- - -FstPlugin::FstPlugin() - { - _fst = 0; - } - -//--------------------------------------------------------- -// ~FstPlugin -//--------------------------------------------------------- - -FstPlugin::~FstPlugin() - { - if (_fst) { - destroyEditor(); - fst_close(_fst); - _fst = 0; - } - } - -//--------------------------------------------------------- -// instantiate -//--------------------------------------------------------- - -void FstPlugin::instantiate(FSTHandle* fstHandle, void* p) - { - _fst = fst_instantiate(fstHandle, vstHostCallback, p); - if (_fst == 0) { - printf("FstPlugin::instantiate:: cannot instantiate plugin\n"); - return; - } - AEffect* plugin = _fst->plugin; - version = plugin->dispatcher (plugin, effGetVstVersion, 0, 0, 0, 0.0f); - } - -//--------------------------------------------------------- -// numInputs -//--------------------------------------------------------- - -int FstPlugin::numInputs() const - { - return _fst->plugin->numInputs; - } - -//--------------------------------------------------------- -// numOutputs -//--------------------------------------------------------- - -int FstPlugin::numOutputs() const - { - return _fst->plugin->numOutputs; - } - -//--------------------------------------------------------- -// numParameter -//--------------------------------------------------------- - -int FstPlugin::numParameter() const - { - return _fst->plugin->numParams; - } - -//--------------------------------------------------------- -// setSampleRate -//--------------------------------------------------------- - -void FstPlugin::setSampleRate(float sr) - { - AEffect* plugin = _fst->plugin; - plugin->dispatcher(plugin, effSetSampleRate, 0, 0, 0, sr); - } - -//--------------------------------------------------------- -// setBlockSize -//--------------------------------------------------------- - -void FstPlugin::setBlockSize(int bs) - { - AEffect* plugin = _fst->plugin; - plugin->dispatcher(plugin, effSetBlockSize, 0, bs, 0, 0.0f); - } - -//--------------------------------------------------------- -// mainsChanged -//--------------------------------------------------------- - -void FstPlugin::mainsChanged(bool on) - { - AEffect* plugin = _fst->plugin; - plugin->dispatcher(plugin, effMainsChanged, 0, on, 0, 0.0f); - } - -//--------------------------------------------------------- -// setProgram -//--------------------------------------------------------- - -void FstPlugin::setProgram(int p) - { - AEffect* plugin = _fst->plugin; - plugin->dispatcher(plugin, effSetProgram, 0, p, 0, 0.0f); - } - -//--------------------------------------------------------- -// hasGui -//--------------------------------------------------------- - -bool FstPlugin::hasGui() const - { - return _fst->plugin->flags & effFlagsHasEditor; - } - -//--------------------------------------------------------- -// canReplacing -//--------------------------------------------------------- - -bool FstPlugin::canReplacing() - { - return _fst->plugin->flags & effFlagsCanReplacing; - } - -//--------------------------------------------------------- -// runEditor -//--------------------------------------------------------- - -bool FstPlugin::runEditor() - { - return fst_run_editor(_fst); - } - -//--------------------------------------------------------- -// destroyEditor -//--------------------------------------------------------- - -void FstPlugin::destroyEditor() - { - fst_destroy_editor(_fst); - } - -//--------------------------------------------------------- -// getVstVersion -//--------------------------------------------------------- - -int FstPlugin::getVstVersion() - { - return version; - } - -//--------------------------------------------------------- -// setParameter -//--------------------------------------------------------- - -void FstPlugin::setParameter(int idx, float value) - { - AEffect* plugin = _fst->plugin; - plugin->setParameter(plugin, idx, value); - } - -//--------------------------------------------------------- -// getParameter -//--------------------------------------------------------- - -float FstPlugin::getParameter(int idx) - { - AEffect* plugin = _fst->plugin; - return plugin->getParameter(plugin, idx); - } - -//--------------------------------------------------------- -// processReplacing -//--------------------------------------------------------- - -void FstPlugin::processReplacing(float** ins, float** outs, int n) - { - AEffect* plugin = _fst->plugin; - plugin->processReplacing(plugin, ins, outs, n); - } - -//--------------------------------------------------------- -// process -//--------------------------------------------------------- - -void FstPlugin::process(float** ins, float** outs, int n) - { - AEffect* plugin = _fst->plugin; - plugin->process(plugin, ins, outs, n); - } - -//--------------------------------------------------------- -// putEvent -//--------------------------------------------------------- - -void FstPlugin::putEvent(const MidiEvent& ev) - { - AEffect* plugin = _fst->plugin; - static struct VstEvents events; - static struct VstMidiEvent event; - events.numEvents = 1; - events.reserved = 0; - events.events[0] = (VstEvent*)(&event); - - event.type = kVstMidiType; - event.byteSize = 24; - event.deltaFrames = 0; - event.flags = 0; - event.detune = 0; - event.noteLength = 0; - event.noteOffset = 0; - event.reserved1 = 0; - event.reserved2 = 0; - event.noteOffVelocity = 0; - switch (ev.type()) { - case ME_PITCHBEND: - { - int a = ev.dataA() + 8192; - int b = a >> 7; - event.midiData[0] = (ev.type() | ev.channel()) & 0xff; - event.midiData[1] = a & 0x7f; - event.midiData[2] = b & 0x7f; - event.midiData[3] = 0; - } - break; - - case ME_CONTROLLER: - case ME_NOTEON: - default: - event.midiData[0] = (ev.type() | ev.channel()) & 0xff; - event.midiData[1] = ev.dataA() & 0xff; - event.midiData[2] = ev.dataB() & 0xff; - event.midiData[3] = 0; - break; - } - plugin->dispatcher(plugin, effProcessEvents, 0, 0, &events, 0.0f); - } - -//--------------------------------------------------------- -// getParameterName -//--------------------------------------------------------- - -const char* FstPlugin::getParameterName(int idx) const - { - static char dsp[8]; - dsp[0] = 0; - AEffect* effect = _fst->plugin; - effect->dispatcher(effect, effGetParamName, idx, 0, &dsp, 0.0f); - return dsp; - } - -//--------------------------------------------------------- -// getParameterLabel -//--------------------------------------------------------- - -const char* FstPlugin::getParameterLabel(int idx) const - { - static char dsp[8]; - dsp[0] = 0; - AEffect* effect = _fst->plugin; - effect->dispatcher(effect, effGetParamLabel, idx, 0, &dsp, 0.0f); - return dsp; - } - -//--------------------------------------------------------- -// getParameterDisplay -//--------------------------------------------------------- - -const char* FstPlugin::getParameterDisplay(int idx, float val) const - { - static char dsp[8]; - dsp[0] = 0; - AEffect* effect = _fst->plugin; - effect->dispatcher(effect, effGetParamDisplay, idx, 0, &dsp, val); - return dsp; - } - -//--------------------------------------------------------- -// scanVstDir -//--------------------------------------------------------- - -static void scanVstDir(const QString& s) - { - if (debugMsg) - printf("scan vst plugin dir <%s>\n", s.toLatin1().data()); - QDir pluginDir(s, QString("*.dll"), QDir::Unsorted, QDir::Files); - if (pluginDir.exists()) { - const QFileInfoList list = pluginDir.entryInfoList(); - for (int i = 0; i < list.size(); ++i) { - QFileInfo fi = list.at(i); - char* path = strdup(fi.filePath().toLatin1().data()); - FSTInfo* info = fst_get_info(path); - if (info) { - // - // simple hack: - // plugins with no inputs are treated - // as software synthesizer - // - // if (info->wantEvents && info->numOutputs) { - if (info->numInputs == 0 && info->numOutputs) { - if (debugMsg) - printf(" add vsti synti <%s>\n", fi.fileName().toLatin1().data()); - synthis.push_back(new VstSynth(&fi)); - fst_free_info(info); - } - else if (info->numInputs && info->numOutputs) { - if (debugMsg) - printf(" add vst plugin <%s>\n", fi.fileName().toLatin1().data()); - plugins.push_back(new VstPlugin(&fi, info)); - } - } - free(path); - } - } - } - -//--------------------------------------------------------- -// fstSignalHandler -//--------------------------------------------------------- - -static void fstSignalHandler(int sig, siginfo_t* /*info*/, void* /*context*/) - { - fst_error("fst signal handler %d, thread = 0x%x", sig, pthread_self ()); - //if (sig == SIGSEGV || sig == SIGABRT) { - char*p = 0; - *p = 0; -// } - fatalError("fst signal"); - } - -//--------------------------------------------------------- -// initVST -//--------------------------------------------------------- - -void initVST() - { - jfstReserveMem(1000000); - - if (fst_init(fstSignalHandler)) { - printf("initVST failed\n"); - return; - } - char* vstPath = getenv("VST_PATH"); - if (vstPath == 0) - vstPath = "/usr/lib/vst:/usr/local/lib/vst"; - - char* p = vstPath; - while (*p != '\0') { - char* pe = p; - while (*pe != ':' && *pe != '\0') - pe++; - - int n = pe - p; - if (n) { - char* buffer = new char[n + 1]; - strncpy(buffer, p, n); - buffer[n] = '\0'; - scanVstDir(QString(buffer)); - delete[] buffer; - } - p = pe; - if (*p == ':') - p++; - } - } - -//--------------------------------------------------------- -// guiVisible -//--------------------------------------------------------- - -bool VstSynthIF::guiVisible() const - { - return _guiVisible; - } - -//--------------------------------------------------------- -// showGui -//--------------------------------------------------------- - -void VstSynthIF::showGui(bool v) - { - if (v == guiVisible()) - return; - if (v) - _fst->runEditor(); - else - _fst->destroyEditor(); - _guiVisible = v; - } - -//--------------------------------------------------------- -// receiveEvent -//--------------------------------------------------------- - -MidiEvent VstSynthIF::receiveEvent() - { - return MidiEvent(); - } - -//--------------------------------------------------------- -// hasGui -//--------------------------------------------------------- - -bool VstSynthIF::hasGui() const - { - return _fst->hasGui(); - } - -//--------------------------------------------------------- -// incInstances -//--------------------------------------------------------- - -void VstSynth::incInstances(int val) - { - _instances += val; - if (_instances == 0 && fstHandle) { - fst_unload(fstHandle); - fstHandle = 0; - } - } - -//--------------------------------------------------------- -// init -//--------------------------------------------------------- - -bool VstSynthIF::init(FSTHandle* h) - { - _fst = new FstPlugin(); - _fst->instantiate(h, 0); - _fst->setSampleRate(AL::sampleRate); - _fst->setBlockSize(segmentSize); - _fst->mainsChanged(true); - _fst->setProgram(0); - return true; - } - -//--------------------------------------------------------- -// channels -//--------------------------------------------------------- - -int VstSynthIF::channels() const - { - return _fst->numOutputs(); - } - -//--------------------------------------------------------- -// createSIF -//--------------------------------------------------------- - -SynthIF* VstSynth::createSIF(SynthI* s) - { - VstSynthIF* sif = new VstSynthIF(s); - ++_instances; - const char* path = info.filePath().toLatin1().data(); - - if (fstHandle == 0) { - fstHandle = fst_load(path); - if (fstHandle == 0) { - printf("SynthIF:: cannot load vst plugin %s\n", path); - return 0; - } - } - sif->init(fstHandle); - return sif; - } - -//--------------------------------------------------------- -// deactivate3 -//--------------------------------------------------------- - -void VstSynthIF::deactivate3() - { - if (_fst) { - delete _fst; - _fst = 0; - } - } - -//--------------------------------------------------------- -// ~VstSynthIF -//--------------------------------------------------------- - -VstSynthIF::~VstSynthIF() - { - deactivate3(); - } - -//--------------------------------------------------------- -// setParameter -//--------------------------------------------------------- - -void VstSynthIF::setParameter(int idx, float value) - { - _fst->setParameter(idx, value); - } - -//--------------------------------------------------------- -// write -//--------------------------------------------------------- - -void VstSynthIF::write(Xml& xml) const - { - //--------------------------------------------- - // dump current state of synth - //--------------------------------------------- - - int params = _fst->numParameter(); - for (int i = 0; i < params; ++i) { - float f = _fst->getParameter(i); - xml.tag("param", f); - } - } - -//--------------------------------------------------------- -// getData -//--------------------------------------------------------- - -void VstSynthIF::getData(MidiEventList* el, unsigned pos, int ports, unsigned n, float** buffer) - { - unsigned int endPos = pos + n; - iMidiEvent i = el->begin(); - for (; i != el->end(); ++i) { - if (i->time() >= endPos) - break; - putEvent(*i); - } - el->erase(el->begin(), i); - - int outputs = _fst->numOutputs(); - if (ports < outputs) { - float* ob[outputs]; - float fp[n * (outputs-ports)]; // dummy output buffer - for (int i = 0; i < outputs; ++i) { - if (i < ports) - ob[i] = buffer[i]; - else - ob[i] = fp + n * (i-ports); - } - if (_fst->canReplacing()) - _fst->processReplacing(0, ob, n); - else { - for (int i = 0; i < outputs; ++i) - memset(ob[i], 0, n * sizeof(float)); - _fst->process(0, ob, n); - } - } - else { - if (_fst->canReplacing()) - _fst->processReplacing(0, buffer, n); - else { - for (int i = 0; i < outputs; ++i) - memset(buffer[i], 0, n * sizeof(float)); - _fst->process(0, buffer, n); - } - } - } - -//--------------------------------------------------------- -// putEvent -//--------------------------------------------------------- - -bool VstSynthIF::putEvent(const MidiEvent& ev) - { - if (midiOutputTrace) - ev.dump(); - _fst->putEvent(ev); - return false; - } - -//--------------------------------------------------------- -// VstPlugin -//--------------------------------------------------------- - -VstPlugin::VstPlugin(const QFileInfo* fi, FSTInfo* i) - : Plugin(fi) - { - info = i; - fstHandle = 0; - } - -//--------------------------------------------------------- -// VstPlugin -//--------------------------------------------------------- - -VstPlugin::~VstPlugin() - { - fst_free_info(info); - } - -//--------------------------------------------------------- -// createPIF -//--------------------------------------------------------- - -PluginIF* VstPlugin::createPIF(PluginI* pi) - { - VstPluginIF* pif = new VstPluginIF(pi); - ++_instances; - const char* path = fi.filePath().toLatin1().data(); - - if (fstHandle == 0) { - fstHandle = fst_load(path); - if (fstHandle == 0) { - printf("SynthIF:: cannot load vst plugin %s\n", path); - return 0; - } - } - pif->init(fstHandle); - return pif; - } - -//--------------------------------------------------------- -// parameter -//--------------------------------------------------------- - -int VstPlugin::parameter() const - { - return info->numParams; - } - -//--------------------------------------------------------- -// inports -//--------------------------------------------------------- - -int VstPlugin::inports() const - { - return info->numInputs; - } - -//--------------------------------------------------------- -// outports -//--------------------------------------------------------- - -int VstPlugin::outports() const - { - return info->numOutputs; - } - -//--------------------------------------------------------- -// id -//--------------------------------------------------------- - -unsigned long VstPlugin::id() const - { - return info->UniqueID; - } - -//--------------------------------------------------------- -// VstPluginIF -//--------------------------------------------------------- - -VstPluginIF::VstPluginIF(PluginI* pi) - : PluginIF(pi) - { - _fst = 0; - _guiVisible = false; - } - -VstPluginIF::~VstPluginIF() - { - if (_fst == 0) - return; - delete _fst; - } - -//--------------------------------------------------------- -// init -//--------------------------------------------------------- - -bool VstPluginIF::init(FSTHandle* h) - { - _fst = new FstPlugin(); - _fst->instantiate(h, this); - _fst->setSampleRate(AL::sampleRate); - _fst->setBlockSize(segmentSize); - _fst->mainsChanged(true); - _fst->setProgram(0); - return true; - } - -//--------------------------------------------------------- -// hasGui -//--------------------------------------------------------- - -bool VstPluginIF::hasGui() const - { - return _fst->hasGui(); - } - -//--------------------------------------------------------- -// showGui -//--------------------------------------------------------- - -void VstPluginIF::showGui(bool v) - { - if (v == guiVisible()) - return; - if (v) - _fst->runEditor(); - else - _fst->destroyEditor(); - _guiVisible = v; - } - -//--------------------------------------------------------- -// getParameterName -//--------------------------------------------------------- - -const char* VstPluginIF::getParameterName(int idx) const - { - return _fst->getParameterName(idx); - } - -//--------------------------------------------------------- -// getParameterLabel -//--------------------------------------------------------- - -const char* VstPluginIF::getParameterLabel(int idx) const - { - return _fst->getParameterLabel(idx); - } - -//--------------------------------------------------------- -// getParameterDisplay -//--------------------------------------------------------- - -const char* VstPluginIF::getParameterDisplay(int idx, float val) const - { - return _fst->getParameterDisplay(idx, val); - } - -//--------------------------------------------------------- -// apply -//--------------------------------------------------------- - -void VstPluginIF::apply(unsigned nframes, float** src, float** dst) - { - if (_fst->canReplacing()) - _fst->processReplacing(src, dst, nframes); - else { - int n = _fst->numOutputs(); - - for (int i = 0; i < n; ++i) - memset(dst[i], 0, sizeof(float) * nframes); - _fst->process(src, dst, nframes); - } - } - -//--------------------------------------------------------- -// setParam -//--------------------------------------------------------- - -void VstPluginIF::setParam(int i, double val) - { - _fst->setParameter(i, val); - } - -//--------------------------------------------------------- -// param -//--------------------------------------------------------- - -float VstPluginIF::param(int i) const - { - return _fst->getParameter(i); - } - -#else -void initVST() {} -#endif - diff --git a/muse/muse/vst.h b/muse/muse/vst.h deleted file mode 100644 index 0ecea974..00000000 --- a/muse/muse/vst.h +++ /dev/null @@ -1,172 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __VST_H__ -#define __VST_H__ - -#include "synth.h" -#include "plugin.h" - -struct _FSTHandle; -struct _FST; -class VstPluginIF; - -//--------------------------------------------------------- -// FstPlugin -//--------------------------------------------------------- - -class FstPlugin { - _FST* _fst; - int version; - - public: - FstPlugin(); - ~FstPlugin(); - void instantiate(FSTHandle* s, void*); - int numInputs() const; - int numOutputs() const; - int numParameter() const; - void setProgram(int p); - void mainsChanged(bool on); - void setBlockSize(int bs); - void setSampleRate(float sr); - bool runEditor(); - void destroyEditor(); - int getVstVersion(); - bool hasGui() const; - bool canReplacing(); - void setParameter(int idx, float value); - float getParameter(int idx); - void processReplacing(float**, float**, int); - void process(float**, float**, int); - void putEvent(const MidiEvent& ev); - const char* getParameterName(int idx) const; - const char* getParameterLabel(int idx) const; - const char* getParameterDisplay(int idx, float val) const; - }; - -//--------------------------------------------------------- -// VstSynth -//--------------------------------------------------------- - -class VstSynth : public Synth { - _FSTHandle* fstHandle; - int vstVersion; - - public: - VstSynth(const QFileInfo* fi) : Synth(fi, fi->baseName()) { - fstHandle = 0; - } - virtual ~VstSynth() {} - virtual void incInstances(int val); - virtual SynthIF* createSIF(SynthI*); - }; - -//--------------------------------------------------------- -// VstSynthIF -// VSTi synthesizer instance -//--------------------------------------------------------- - -class VstSynthIF : public SynthIF - { - FstPlugin* _fst; - bool _guiVisible; - - public: - VstSynthIF(SynthI* s) : SynthIF(s) { - _fst = 0; - _guiVisible = false; - } - virtual ~VstSynthIF(); - - virtual bool guiVisible() const; - virtual void showGui(bool v); - virtual bool hasGui() const; - virtual void getGeometry(int*, int*, int*, int*) const {} - virtual void setGeometry(int, int, int, int) {} - virtual void getData(MidiEventList*, unsigned pos, int ports, unsigned n, float** buffer) ; - virtual bool putEvent(const MidiEvent& ev); - virtual MidiEvent receiveEvent(); - virtual int eventsPending() const { return 0; } - virtual int channels() const; - virtual void deactivate3(); - virtual QString getPatchName(int, int) { return QString(""); } - virtual void populatePatchPopup(QMenu*, int) {}; - virtual void write(Xml& xml) const; - virtual void setParameter(int idx, float value); - virtual int getControllerInfo(int, const char**, int*, int*, int*) { return 0; } - bool init(FSTHandle*); - }; - -//--------------------------------------------------------- -// VstPlugin -//--------------------------------------------------------- - -class VstPlugin : public Plugin { - _FSTHandle* fstHandle; - FSTInfo* info; - - protected: - int vstVersion; - friend class VstPluginIF; - - public: - VstPlugin(const QFileInfo* fi, FSTInfo* i); - virtual ~VstPlugin(); - virtual PluginIF* createPIF(PluginI*); - virtual QString name() const { return QString(info->name); } - virtual QString label() const { return QString(info->name); } - - virtual int parameter() const; - virtual int inports() const; - virtual int outports() const; - virtual unsigned long id() const; - }; - -//--------------------------------------------------------- -// VstPluginIF -// Vst plugin instance interface -//--------------------------------------------------------- - -class VstPluginIF : public PluginIF { - FstPlugin* _fst; - bool _guiVisible; - - public: - VstPluginIF(PluginI*); - virtual ~VstPluginIF(); - - virtual void apply(unsigned nframes, float** src, float** dst); - virtual void activate() {} - virtual void deactivate() {} - virtual void cleanup() {} - virtual void setParam(int i, double val); - virtual float param(int i) const; - virtual const char* getParameterName(int k) const; - virtual const char* getParameterLabel(int) const; - virtual const char* getParameterDisplay(int, float) const; - virtual bool hasGui() const; - virtual bool guiVisible() const { return _guiVisible; } - virtual void showGui(bool f); - bool init(FSTHandle*); - }; - -#endif - diff --git a/muse/muse/wave.cpp b/muse/muse/wave.cpp deleted file mode 100644 index dca9843b..00000000 --- a/muse/muse/wave.cpp +++ /dev/null @@ -1,1087 +0,0 @@ - //============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include - -#include "al/xml.h" -#include "al/al.h" -#include "song.h" -#include "wave.h" -#include "muse.h" -#include "widgets/filedialog.h" -#include "arranger.h" -#include "globals.h" -#include "event.h" -#include "audio.h" -#include "part.h" - -const char* audioFilePattern[] = { - "Wave/Binary (*.wav *.bin)", - "Wave (*.wav)", - "Binary (*.bin)", - "All Files (*)", - 0 - }; -const int cacheMag = 128; - -QHash SndFile::sndFiles; -QList SndFile::createdFiles; -int SndFile::recFileNumber; - -//--------------------------------------------------------- -// copyWaveFileToProject -// - copy wave file to project directory -// - do sample rate conversion -// -// return false on error -//--------------------------------------------------------- - -static bool copyWaveFileToProject(const QString& path) - { - QFile srcFile(path); - QFileInfo srcInfo(srcFile); - - QString dst(song->absoluteProjectPath()); - QFile dstFile(dst + "/" + srcInfo.fileName()); - if (dstFile.exists()) { - // TODO: rename file or check for identity - // we cannot easily check for identity if destination - // file is sample rate converted - // - // for now we assume that the file has already - // be imported: - // - printf("File already exists\n"); - return true; - } - - SF_INFO sfinfoSrc; - memset(&sfinfoSrc, 0, sizeof(SF_INFO)); - SNDFILE* sfSrc = sf_open(path.toLatin1().data(), SFM_READ, &sfinfoSrc); - if (sfSrc == 0) { - printf("Cannot open source file: %s\n", strerror(errno)); - return false; - } - int channels = sfinfoSrc.channels; - sf_count_t size = sfinfoSrc.frames; - - SF_INFO sfinfoDst; - memset(&sfinfoDst, 0, sizeof(SF_INFO)); - sfinfoDst.samplerate = AL::sampleRate; - sfinfoDst.channels = channels; - sfinfoDst.format = SF_FORMAT_WAV | SF_FORMAT_FLOAT; - SNDFILE* sfDst = sf_open(dstFile.fileName().toLatin1().data(), - SFM_WRITE, &sfinfoDst); - if (sfDst == 0) { - printf("Cannot open destination file<%s>: %s\n", - dstFile.fileName().toLatin1().data(), strerror(errno)); - return false; - } - - bool showProgress = size > (1024LL * 1024LL * 8LL); - QProgressDialog* progress = 0; - if (showProgress) { - QString label(QWidget::tr("copy \n %1\nto\n %2")); - label = label.arg(path).arg(dst); - if (sfinfoSrc.samplerate != AL::sampleRate) { - QString cs(QWidget::tr("\nconverting sample rate\n" - "from %1 to %2")); - label += cs.arg(sfinfoSrc.samplerate).arg(AL::sampleRate); - } - int csize = size / 1024; - progress = new QProgressDialog(label, QWidget::tr("Abort"), 0, csize); - progress->setValue(0); - progress->setWindowTitle("MusE"); - progress->raise(); - progress->show(); - qApp->processEvents(); - } - sf_count_t inSize = 1024LL * 64LL; - sf_count_t samplesWritten = 0LL; - - bool returnValue = true; - if (sfinfoSrc.samplerate != AL::sampleRate) { - // TODO: convertsample rate - printf("wave file has samplerate of %d, our project has %d\n", - sfinfoSrc.samplerate,AL::sampleRate); - - int srcType = SRC_SINC_MEDIUM_QUALITY; - int error; - SRC_STATE* src = src_new(srcType, channels, &error); - if (src == 0) { - printf("creating sample rate converter failed: error %d\n", - error); - return false; - } - double ratio = double(AL::sampleRate) / double(sfinfoSrc.samplerate); - src_set_ratio(src, ratio); - sf_count_t outSize = int(inSize * ratio) + 1; - float inBuffer[inSize * channels]; - float* inPtr = inBuffer; - while (size) { - float outBuffer[outSize * channels]; - - // read buffer - sf_count_t framesToRead = (inBuffer + inSize) - inPtr; - if (framesToRead > size) - framesToRead = size; - sf_count_t nr = sf_readf_float(sfSrc, inPtr, framesToRead); - if (nr != framesToRead) { - printf("sound file read failed\n"); - src_delete(src); - returnValue = false; - break; - } - - // convert - SRC_DATA data; - data.data_in = inBuffer; - data.data_out = outBuffer; - data.input_frames = inSize; - data.output_frames = outSize; - data.end_of_input = framesToRead == size; - data.src_ratio = ratio; - - int rv = src_process(src, &data); - if (rv > 0) { - printf("error sampe rate conversion: %s\n", - src_strerror(rv)); - src_delete(src); - returnValue = false; - break; - } - - // write buffer - sf_count_t n = sf_writef_float(sfDst, outBuffer, data.output_frames_gen); - if (n != data.output_frames_gen) { - printf("sound write failed: returns %lld, should return %ld\n", - n, data.output_frames_gen); - returnValue = false; - break; - } - - int rest = (inPtr + nr - inBuffer) - data.input_frames_used; - rest *= (sizeof(float) * channels); - if (rest > 0) - memcpy(inBuffer, inBuffer + data.input_frames_used, rest); - - inPtr += framesToRead; - inPtr -= data.input_frames_used; - if (data.input_frames_used > size) - size = 0; - else - size -= data.input_frames_used; - framesToRead = data.input_frames_used; - samplesWritten += data.input_frames_used; - - if (framesToRead > size) - framesToRead = size; - if (showProgress) { - progress->setValue(samplesWritten / 1024LL); - progress->raise(); - qApp->processEvents(); - if (progress->wasCanceled()) { - returnValue = false; - break; - } - } - } - src_delete(src); - } - else { - while (size) { - float buffer[inSize * channels]; - - sf_count_t n = inSize > size ? size : inSize; - sf_count_t nn = sf_readf_float(sfSrc, buffer, n); - - if (nn != n) { - printf("sound file read failed\n"); - returnValue = false; - break; - } - // write buffer - nn = sf_writef_float(sfDst, buffer, n); - if (n != nn) { - printf("sound write failed: returns %lld, should return %lld\n", - nn, n); - returnValue = false; - break; - } - size -= n; - samplesWritten += n; - if (showProgress) { - progress->setValue(samplesWritten / 1024LL); - progress->raise(); - qApp->processEvents(); - if (progress->wasCanceled()) { - returnValue = false; - break; - } - } - } - } - if (progress) - delete progress; - sf_close(sfSrc); - sf_close(sfDst); - return returnValue; - } - -//--------------------------------------------------------- -// SndFile -//--------------------------------------------------------- - -SndFile::SndFile(const QString& name) - { - refCount = 0; - _finfo.setFile(name); - sfRT = 0; - sfUI = 0; - csize = 0; - cache = 0; - openFlag = false; - sndFiles[_finfo.absoluteFilePath()] = this; - } - -SndFile::~SndFile() - { - if (openFlag) - close(); - sndFiles.remove(_finfo.absoluteFilePath()); - if (cache) { - for (unsigned i = 0; i < channels(); ++i) - delete cache[i]; - delete[] cache; - cache = 0; - } - } - -//--------------------------------------------------------- -// openRead -//--------------------------------------------------------- - -bool SndFile::openRead() - { - if (openFlag) { - printf("SndFile:: alread open\n"); - return false; - } - QString p = _finfo.absoluteFilePath(); - sfinfo.format = 0; - sfUI = sf_open(p.toAscii().data(), SFM_READ, &sfinfo); - sfinfo.format = 0; - sfRT = sf_open(p.toAscii().data(), SFM_READ, &sfinfo); - if (sfUI == 0 || sfRT == 0) { - printf("SndFile::openRead(): failed\n"); - return true; - } - writeFlag = false; - openFlag = true; - QString cacheName = _finfo.absolutePath() + QString("/") + _finfo.baseName() + QString(".wca"); - readCache(cacheName, true); - return false; - } - -//--------------------------------------------------------- -// update -// called after recording to file -//--------------------------------------------------------- - -void SndFile::update() - { - close(); - - // force recreation of wca data - QString cacheName = _finfo.absolutePath() + - QString("/") + _finfo.baseName() + QString(".wca"); - ::remove(cacheName.toLatin1().data()); - if (openRead()) { - printf("SndFile::openRead(%s) failed: %s\n", _finfo.filePath().toLatin1().data(), strerror().toLatin1().data()); - } - } - -//--------------------------------------------------------- -// readCache -//--------------------------------------------------------- - -void SndFile::readCache(const QString& path, bool showProgress) - { -// printf("readCache %s for %d samples channel %d\n", -// path.toLatin1().data(), samples(), channels()); - - if (cache) { - for (unsigned i = 0; i < channels(); ++i) - delete cache[i]; - delete[] cache; - } - if (samples() == 0) { -// printf("SndFile::readCache: file empty\n"); - return; - } - csize = (samples() + cacheMag - 1)/cacheMag; - cache = new SampleV*[channels()]; - for (unsigned ch = 0; ch < channels(); ++ch) - cache[ch] = new SampleV[csize]; - - FILE* cfile = fopen(path.toAscii().data(), "r"); - if (cfile) { - for (unsigned ch = 0; ch < channels(); ++ch) - fread(cache[ch], csize * sizeof(SampleV), 1, cfile); - fclose(cfile); - return; - } - - //--------------------------------------------------- - // create cache - //--------------------------------------------------- - - QProgressDialog* progress = 0; - if (showProgress) { - QString label(QWidget::tr("create peakfile for ")); - label += _finfo.baseName(); - progress = new QProgressDialog(label, "Abort", 0, csize, 0); - qApp->processEvents(); - } - float data[channels()][cacheMag]; - float* fp[channels()]; - for (unsigned k = 0; k < channels(); ++k) - fp[k] = &data[k][0]; - int interval = csize / 10; - for (int i = 0; i < csize; i++) { - if (showProgress && ((i % interval) == 0)) { - progress->setValue(i); - progress->raise(); - qApp->processEvents(); - if (progress->wasCanceled()) { - // TODO - } - } - seek(i * cacheMag); - read(channels(), fp, cacheMag); - for (unsigned ch = 0; ch < channels(); ++ch) { - float rms = 0.0; - cache[ch][i].peak = 0; - for (int n = 0; n < cacheMag; n++) { - float fd = data[ch][n]; - rms += fd * fd; - int idata = lrint(fd * 255.0); - if (idata < 0) - idata = -idata; - if (idata > 255) - idata = 255; - if (cache[ch][i].peak < idata) - cache[ch][i].peak = idata; - } - // amplify rms value +12dB - int rmsValue = lrint((sqrt(rms/cacheMag) * 255.0)); - if (rmsValue > 255) - rmsValue = 255; - cache[ch][i].rms = rmsValue; - } - } - if (showProgress) { - progress->setValue(csize); - qApp->processEvents(); - } - writeCache(path); - if (showProgress) - delete progress; - } - -//--------------------------------------------------------- -// writeCache -//--------------------------------------------------------- - -void SndFile::writeCache(const QString& path) - { - FILE* cfile = fopen(path.toLatin1().data(), "w"); - if (cfile == 0) - return; - for (unsigned ch = 0; ch < channels(); ++ch) - fwrite(cache[ch], csize * sizeof(SampleV), 1, cfile); - fclose(cfile); - } - -//--------------------------------------------------------- -// read -// integrate "mag" samples, starting at position "pos" -// into "s" -//--------------------------------------------------------- - -void SndFile::read(SampleV* s, int mag, unsigned pos) - { - for (unsigned ch = 0; ch < channels(); ++ch) { - s[ch].peak = 0; - s[ch].rms = 0; - } - if (pos > samples()) - return; - - if (mag < cacheMag) { - float data[channels()][mag]; - float* fp[channels()]; - for (unsigned i = 0; i < channels(); ++i) - fp[i] = &data[i][0]; - sf_seek(sfUI, pos, SEEK_SET); - { - int srcChannels = channels(); - int dstChannels = sfinfo.channels; - float** dst = fp; - float buffer[mag * dstChannels]; - size_t rn = sf_readf_float(sfUI, buffer, mag); - float* src = buffer; - - if (srcChannels == dstChannels) { - for (size_t i = 0; i < rn; ++i) { - for (int ch = 0; ch < srcChannels; ++ch) - *(dst[ch]+i) = *src++; - } - } - else if ((srcChannels == 1) && (dstChannels == 2)) { - // stereo to mono - for (size_t i = 0; i < rn; ++i) - *(dst[0] + i) = src[i + i] + src[i + i + 1]; - } - else if ((srcChannels == 2) && (dstChannels == 1)) { - // mono to stereo - for (size_t i = 0; i < rn; ++i) { - float data = *src++; - *(dst[0]+i) = data; - *(dst[1]+i) = data; - } - } - } - - for (unsigned ch = 0; ch < channels(); ++ch) { - s[ch].peak = 0; - float rms = 0.0; - for (int i = 0; i < mag; i++) { - float fd = data[ch][i]; - rms += fd; - int idata = int(fd * 255.0); - if (idata < 0) - idata = -idata; - if (s[ch].peak < idata) - s[ch].peak = idata; - } - s[ch].rms = 0; // TODO rms / mag; - } - } - else { - mag /= cacheMag; - int rest = csize - (pos/cacheMag); - int end = mag; - if (rest < mag) - end = rest; - - for (unsigned ch = 0; ch < channels(); ++ch) { - int rms = 0; - int off = pos/cacheMag; - for (int offset = off; offset < off+end; offset++) { - rms += cache[ch][offset].rms; - if (s[ch].peak < cache[ch][offset].peak) - s[ch].peak = cache[ch][offset].peak; - } - s[ch].rms = rms / mag; - } - } - } - -//--------------------------------------------------------- -// openWrite -//--------------------------------------------------------- - -bool SndFile::openWrite() - { - if (openFlag) { - printf("SndFile:: alread open\n"); - return false; - } - QString p = _finfo.filePath(); - sfRT = sf_open(p.toLatin1().data(), SFM_RDWR, &sfinfo); - sfUI = 0; - if (sfRT) { - openFlag = true; - writeFlag = true; - QString cacheName = _finfo.absolutePath() + - QString("/") + _finfo.baseName() + QString(".wca"); - readCache(cacheName, true); - } - return sfRT == 0; - } - -//--------------------------------------------------------- -// close -//--------------------------------------------------------- - -void SndFile::close() - { - if (!openFlag) { - printf("SndFile:: alread closed\n"); - return; - } - sf_close(sfRT); - if (sfUI) - sf_close(sfUI); - openFlag = false; - } - -//--------------------------------------------------------- -// remove -//--------------------------------------------------------- - -void SndFile::remove() - { - if (openFlag) - close(); - QString cacheName = _finfo.absolutePath() + QString("/") + _finfo.baseName() + QString(".wca"); - // QFile::remove(_finfo.filePath()); - // QFile::remove(cacheName); - // DEBUG: - QFile::rename(_finfo.filePath(), _finfo.filePath() + ".del"); - QFile::rename(cacheName, cacheName + ".del"); - } - -//--------------------------------------------------------- -// samples -//--------------------------------------------------------- - -unsigned SndFile::samples() const - { - return sfinfo.frames; - } - -//--------------------------------------------------------- -// channels -//--------------------------------------------------------- - -unsigned SndFile::channels() const - { - return sfinfo.channels; - } - -//--------------------------------------------------------- -// samplerate -//--------------------------------------------------------- - -unsigned SndFile::samplerate() const - { - return sfinfo.samplerate; - } - -//--------------------------------------------------------- -// format -//--------------------------------------------------------- - -unsigned SndFile::format() const - { - return sfinfo.format; - } - -//--------------------------------------------------------- -// setFormat -//--------------------------------------------------------- - -void SndFile::setFormat(int fmt, int ch, int rate) - { - sfinfo.samplerate = rate; - sfinfo.channels = ch; - sfinfo.format = fmt; - sfinfo.seekable = true; - sfinfo.frames = 0; - } - -//--------------------------------------------------------- -// read -//--------------------------------------------------------- - -size_t SndFile::read(int srcChannels, float** dst, size_t n) - { - float buffer[n * sfinfo.channels]; - size_t rn = sf_readf_float(sfRT, buffer, n); - - float* src = buffer; - int dstChannels = sfinfo.channels; - - if (srcChannels == dstChannels) { - for (size_t i = 0; i < rn; ++i) { - for (int ch = 0; ch < srcChannels; ++ch) - *(dst[ch]+i) = *src++; - } - } - else if ((srcChannels == 1) && (dstChannels == 2)) { - // stereo to mono - for (size_t i = 0; i < rn; ++i) - *(dst[0] + i) = src[i + i] + src[i + i + 1]; - } - else if ((srcChannels == 2) && (dstChannels == 1)) { - // mono to stereo - for (size_t i = 0; i < rn; ++i) { - float data = *src++; - *(dst[0]+i) = data; - *(dst[1]+i) = data; - } - } - else { - printf("SndFile:read channel mismatch %d -> %d\n", - srcChannels, dstChannels); - } - return rn; - } - -//--------------------------------------------------------- -// write -//--------------------------------------------------------- - -size_t SndFile::write(int srcChannels, float** src, size_t n) - { - int dstChannels = sfinfo.channels; - float buffer[n * dstChannels]; - float* dst = buffer; - - if (srcChannels == dstChannels) { - for (size_t i = 0; i < n; ++i) { - for (int ch = 0; ch < dstChannels; ++ch) - *dst++ = *(src[ch]+i); - } - } - else if ((srcChannels == 1) && (dstChannels == 2)) { - // mono to stereo - for (size_t i = 0; i < n; ++i) { - float data = *(src[0]+i); - *dst++ = data; - *dst++ = data; - } - } - else if ((srcChannels == 2) && (dstChannels == 1)) { - // stereo to mono - for (size_t i = 0; i < n; ++i) - *dst++ = *(src[0]+i) + *(src[1]+i); - } - else { - printf("SndFile:write channel mismatch %d -> %d\n", - srcChannels, dstChannels); - return 0; - } - return sf_writef_float(sfRT, buffer, n) ; - } - -//--------------------------------------------------------- -// seek -//--------------------------------------------------------- - -off_t SndFile::seek(off_t frames) - { - return sf_seek(sfRT, frames, SEEK_SET); - } - -//--------------------------------------------------------- -// strerror -//--------------------------------------------------------- - -QString SndFile::strerror() const - { - char buffer[128]; - buffer[0] = 0; - sf_error_str(sfRT, buffer, 128); - return QString(buffer); - } - -//--------------------------------------------------------- -// getWave -//--------------------------------------------------------- - -SndFile* SndFile::getWave(const QString& inName, bool writeFlag) - { - QString name = song->absoluteProjectPath() + "/" + inName; - - SndFile* f = sndFiles.value(name); -// printf("SndFile::getWave: %p writeFlag %d %s %s\n", f, writeFlag, inName.toLatin1().data(), name.toLatin1().data()); - if (f == 0) { - if (!QFile::exists(name)) { - fprintf(stderr, "wave file <%s> not found\n", - name.toLatin1().data()); - return 0; - } - f = new SndFile(name); - bool error; - if (writeFlag) - error = f->openWrite(); - else - error = f->openRead(); - if (error) { - fprintf(stderr, "open wave file(%s) for %s failed: %s\n", - name.toLatin1().data(), - writeFlag ? "writing" : "reading", - f->strerror().toLatin1().data()); - delete f; - f = 0; - } - } - else { - if (writeFlag && ! f->isWritable()) { - if (f->isOpen()) - f->close(); - f->openWrite(); - } - } - return f; - } - -//--------------------------------------------------------- -// applyUndoFile -//--------------------------------------------------------- - -void SndFile::applyUndoFile(const QString& original, const QString& tmpfile, unsigned startframe, unsigned endframe) - { - // This one is called on both undo and redo of a wavfile - // For redo to be called, undo must have been called first, and we don't store both the original data and the modified data in separate - // files. Thus, each time this function is called the data in the "original"-file will be written to the tmpfile, after the data - // from the tmpfile has been applied. - // - // F.ex. if mute has been made on part of a wavfile, the unmuted data is stored in the tmpfile when - // the undo operation occurs. The unmuted data is then written back to the original file, and the mute data will be - // put in the tmpfile, and when redo is eventually called the data is switched again (causing the muted data to be written to the "original" - // file. The data is merely switched. - - //printf("Applying undofile: orig=%s tmpfile=%s startframe=%d endframe=%d\n", original.toLatin1().data(), tmpfile.toLatin1().data(), startframe, endframe); - SndFile* orig = sndFiles.value(original); - SndFile tmp = SndFile(tmpfile); - if (!orig) { - printf("Internal error: could not find original file: %s in filelist - Aborting\n", original.toLatin1().data()); - return; - } - - if (!orig->isOpen()) { - if (orig->openRead()) { - printf("Cannot open original file %s for reading - cannot undo! Aborting\n", original.toLatin1().data()); - return; - } - } - - if (!tmp.isOpen()) { - if (tmp.openRead()) { - printf("Could not open temporary file %s for writing - cannot undo! Aborting\n", tmpfile.toLatin1().data()); - return; - } - } - - audio->msgIdle(true); - tmp.setFormat(orig->format(), orig->channels(), orig->samplerate()); - - // Read data in original file to memory before applying tmpfile to original - unsigned file_channels = orig->channels(); - unsigned tmpdatalen = endframe - startframe; - float* data2beoverwritten[file_channels]; - - for (unsigned i=0; iseek(startframe); - orig->read(file_channels, data2beoverwritten, tmpdatalen); - - orig->close(); - - // Read data from temporary file to memory - float* tmpfiledata[file_channels]; - for (unsigned i=0; iopenWrite()) { - printf("Cannot open orig for write - aborting.\n"); - return; - } - - orig->seek(startframe); - orig->write(file_channels, tmpfiledata, tmpdatalen); - - // Delete dataholder for temporary file - for (unsigned i=0; imsgIdle(false); - return; - } - tmp.seek(0); - tmp.write(file_channels, data2beoverwritten, tmpdatalen); - tmp.close(); - - // Delete dataholder for replaced original file - for (unsigned i=0; iclose(); - orig->openRead(); - orig->update(); - audio->msgIdle(false); - } - -//--------------------------------------------------------- -// importAudio -//--------------------------------------------------------- - -void MusE::importWave() - { - Track* track = arranger->curTrack(); - if (track == 0 || track->type() != Track::WAVE) { - QMessageBox::critical(this, QString("MusE"), - tr("to import a audio file you have first to select" - "a wave track")); - return; - } - QStringList pattern; - const char** p = audioFilePattern; - while (*p) - pattern << *p++; - QString fn = getOpenFileName(lastWavePath, pattern, this, - tr("Import Wave File")); - if (!fn.isEmpty()) { - QFileInfo qf(fn); - lastWavePath = qf.path(); - importWave(fn); - } - } - -//--------------------------------------------------------- -// importWave -//--------------------------------------------------------- - -bool MusE::importWave(const QString& name) - { - return importWaveToTrack(name, (WaveTrack*)(arranger->curTrack()), - song->cPos()); - } - -//--------------------------------------------------------- -// importWaveToTrack -//--------------------------------------------------------- - -bool MusE::importWaveToTrack(const QString& wave, Track* track, const Pos& pos) - { - if (!copyWaveFileToProject(wave)) - return true; - QFileInfo srcInfo(wave); - SndFile* f = SndFile::getWave(srcInfo.fileName(), false); - - if (f == 0) { - printf("import audio file failed\n"); - return true; - } - int samples = f->samples(); - track->setChannels(f->channels()); - - Part* part = new Part((WaveTrack *)track); - part->ref(); - part->setType(AL::FRAMES); - part->setTick(pos.tick()); - part->setLenFrame(samples); - - Event event(Wave); - SndFileR sf(f); - event.setSndFile(sf); - event.setSpos(0); - event.setLenFrame(samples); - part->addEvent(event); - - part->setName(srcInfo.baseName()); - song->cmdAddPart(part); - unsigned endTick = part->tick() + part->lenTick(); - if (song->len() < endTick) - song->setLen(endTick); - return false; - } - -//--------------------------------------------------------- -// cmdChangeWave -// called from GUI context -//--------------------------------------------------------- - -void Song::cmdChangeWave(QString original, QString tmpfile, unsigned sx, unsigned ex) - { - char* original_charstr = new char[original.length() + 1]; - char* tmpfile_charstr = new char[tmpfile.length() + 1]; - strcpy(original_charstr, original.toLatin1().data()); - strcpy(tmpfile_charstr, tmpfile.toLatin1().data()); - song->undoOp(UndoOp::ModifyClip, original_charstr, tmpfile_charstr, sx, ex); - } - -//--------------------------------------------------------- -// SndFileR -//--------------------------------------------------------- - -SndFileR::SndFileR(SndFile* _sf) - { - sf = _sf; - if (sf) - (sf->refCount)++; - } - -SndFileR::SndFileR(const SndFileR& ed) - { - sf = ed.sf; - if (sf) - (sf->refCount)++; - } - -//--------------------------------------------------------- -// operator= -//--------------------------------------------------------- - -SndFileR& SndFileR::operator=(const SndFileR& ed) - { - if (sf == ed.sf) - return *this; - if (sf && --(sf->refCount) == 0) - delete sf; - sf = ed.sf; - if (sf) - (sf->refCount)++; - return *this; - } - -//--------------------------------------------------------- -// ~SndFileR -//--------------------------------------------------------- - -SndFileR::~SndFileR() - { - if (sf && --(sf->refCount) <= 0) - delete sf; - } - -//--------------------------------------------------------- -// createRecFile -// create soundfile for recording -//--------------------------------------------------------- - -SndFile* SndFile::createRecFile(int channels) - { - QString fileName("%1/rec%2.wav"); - QFileInfo fi; - do { - fi.setFile(fileName.arg(song->absoluteProjectPath()).arg(recFileNumber)); - ++recFileNumber; - } while (fi.exists()); - SndFile* recFile = new SndFile(fi.absoluteFilePath()); - recFile->setFormat(SF_FORMAT_WAV | SF_FORMAT_FLOAT, channels, - AL::sampleRate); - createdFiles.append(recFile); - return recFile; - } - -//--------------------------------------------------------- -// cleanupRecFiles -// remove all record files which are not referenced -// any more -// this is called on exit -//--------------------------------------------------------- - -void SndFile::cleanupRecFiles(bool removeAll) - { - QList* fl; - QList removeFiles; - - if (removeAll) - fl = &createdFiles; - else { - foreach (SndFile* s, createdFiles) { - bool remove = true; - WaveTrackList* wt = song->waves(); - for (iWaveTrack iwt = wt->begin(); iwt != wt->end(); ++iwt) { - WaveTrack* t = *iwt; - PartList* parts = t->parts(); - for (iPart ip = parts->begin(); ip != parts->end(); ++ip) { - Part* part = ip->second; - EventList* events = part->events(); - for (iEvent ie = events->begin(); ie != events->end(); ++ie) { - if (ie->second.sndFile() == s) { - remove = false; - break; - } - } - } - if (t->recFile() && t->recFile()->samples() == 0) { - t->recFile()->remove(); - } - } - if (remove) - removeFiles.append(s); - } - fl = &removeFiles; - } - foreach (SndFile* sf, *fl) { - printf("cleanup rec file <%s>\n", sf->finfo()->absoluteFilePath().toLatin1().data()); - sf->remove(); - } - createdFiles.clear(); - } - -//--------------------------------------------------------- -// updateRecFiles -// this is called on "save" -// remove all saved wave files from list of potentially -// to delete files -//--------------------------------------------------------- - -void SndFile::updateRecFiles() - { - QList removeFiles; - - foreach (SndFile* s, createdFiles) { - bool remove = true; - WaveTrackList* wt = song->waves(); - for (iWaveTrack iwt = wt->begin(); iwt != wt->end(); ++iwt) { - WaveTrack* t = *iwt; - PartList* parts = t->parts(); - for (iPart ip = parts->begin(); ip != parts->end(); ++ip) { - Part* part = ip->second; - EventList* events = part->events(); - for (iEvent ie = events->begin(); ie != events->end(); ++ie) { - if (ie->second.sndFile() == s) { - remove = false; - break; - } - } - if (!remove) - break; - } - if (t->recFile() && t->recFile()->samples() == 0) { - t->recFile()->remove(); - } - if (!remove) - break; - } - if (remove) - removeFiles.append(s); - } - createdFiles = removeFiles; - } - diff --git a/muse/muse/wave.h b/muse/muse/wave.h deleted file mode 100644 index 42054f87..00000000 --- a/muse/muse/wave.h +++ /dev/null @@ -1,162 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __WAVE_H__ -#define __WAVE_H__ - -#include - -//--------------------------------------------------------- -// SampleV -// peak file value -//--------------------------------------------------------- - -struct SampleV { - unsigned char peak; - unsigned char rms; - }; - -class SndFile; - -class SndFileList : public QHash { - public: - SndFile* search(const QString& name) { return (*this)[name]; } - }; - -//--------------------------------------------------------- -// SndFile -//--------------------------------------------------------- - -class SndFile { - static QHash sndFiles; - static QList createdFiles; - static int recFileNumber; - - QFileInfo _finfo; - SNDFILE* sfRT; // used by rt process (prefetch) - SNDFILE* sfUI; // used by ui process - SF_INFO sfinfo; - SampleV** cache; - int csize; // frames in cache - - void readCache(const QString& path, bool progress); - void writeCache(const QString& path); - - bool openFlag; - bool writeFlag; - - protected: - int refCount; - - public: - SndFile(const QString& name); - ~SndFile(); - - static void applyUndoFile(const QString& original, const QString& tmpfile, unsigned sx, unsigned ex); - - bool openRead(); // return true on error - bool openWrite(); // return true on error - void close(); - void remove(); - - bool isOpen() const { return openFlag; } - bool isWritable() const { return writeFlag; } - void update(); - - QFileInfo* finfo() { return &_finfo; } - - unsigned samples() const; - unsigned channels() const; - unsigned samplerate() const; - unsigned format() const; - int sampleBits() const; - void setFormat(int fmt, int ch, int rate); - - size_t read(int channel, float**, size_t); - size_t write(int channel, float**, size_t); - - off_t seek(off_t frames); - void read(SampleV* s, int mag, unsigned pos); - QString strerror() const; - - static SndFile* createRecFile(int); - static void cleanupRecFiles(bool); - static void updateRecFiles(); - static SndFile* search(const QString& name); - static SndFile* getWave(const QString& inName, bool writeFlag); - - friend class SndFileR; - }; - -//--------------------------------------------------------- -// SndFileR -// SndFile with reference count -//--------------------------------------------------------- - -class SndFileR { - SndFile* sf; - - public: - SndFileR() { sf = 0; } - SndFileR(SndFile* _sf); - SndFileR(const SndFileR& ed); - SndFileR& operator=(const SndFileR& ed); - bool operator==(const SndFileR& c) const { return sf == c.sf; } - bool operator==(SndFile* c) const { return sf == c; } - ~SndFileR(); - int getRefCount() const { return sf->refCount; } - bool isNull() const { return sf == 0; } - - bool openRead() { return sf->openRead(); } - bool openWrite() { return sf->openWrite(); } - void close() { sf->close(); } - void remove() { sf->remove(); } - - bool isOpen() const { return sf->isOpen(); } - bool isWritable() const { return sf->isWritable(); } - void update() { sf->update(); } - QFileInfo* finfo() { return sf->finfo(); } - const QFileInfo* finfo() const { return sf->finfo(); } - - unsigned samples() const { return sf->samples(); } - unsigned channels() const { return sf->channels(); } - unsigned samplerate() const { return sf->samplerate(); } - unsigned format() const { return sf->format(); } - int sampleBits() const { return sf->sampleBits(); } - void setFormat(int fmt, int ch, int rate) { - sf->setFormat(fmt, ch, rate); - } - size_t read(int channel, float** f, size_t n) { - return sf->read(channel, f, n); - } - size_t write(int channel, float** f, size_t n) { - return sf->write(channel, f, n); - } - off_t seek(off_t frames) { - return sf->seek(frames); - } - void read(SampleV* s, int mag, unsigned pos) { - sf->read(s, mag, pos); - } - QString strerror() const { return sf->strerror(); } - }; - -#endif - diff --git a/muse/muse/waveedit/CMakeLists.txt b/muse/muse/waveedit/CMakeLists.txt deleted file mode 100644 index 69ff19e3..00000000 --- a/muse/muse/waveedit/CMakeLists.txt +++ /dev/null @@ -1,34 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -QT4_WRAP_CPP ( waveedit_mocs - waveedit.h - waveview.h - ) - -add_library ( waveedit STATIC - ${waveedit_mocs} - waveedit.cpp - waveview.cpp - ) - -set_target_properties( waveedit - PROPERTIES COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all.h" - ) diff --git a/muse/muse/waveedit/waveedit.cpp b/muse/muse/waveedit/waveedit.cpp deleted file mode 100644 index 3bfbbe40..00000000 --- a/muse/muse/waveedit/waveedit.cpp +++ /dev/null @@ -1,289 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2000-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "waveedit.h" -#include "waveview.h" -#include "song.h" -#include "awl/poslabel.h" -#include "esettings.h" -#include "al/tempo.h" -#include "icons.h" -#include "shortcuts.h" -#include "wave.h" -#include "part.h" -#include "muse.h" - -int WaveEdit::initWidth = WaveEdit::INIT_WIDTH; -int WaveEdit::initHeight = WaveEdit::INIT_HEIGHT; - -//--------------------------------------------------------- -// WaveEdit -//--------------------------------------------------------- - -WaveEdit::WaveEdit(PartList* pl, bool init) - : Editor() - { - _parts = pl; - selPart = 0; - - //---------Pulldown Menu---------------------------- - QMenuBar* mb = menuBar(); - QAction* a; - - QMenu* menuFile = mb->addMenu(tr("&File")); - QMenu* menuEdit = mb->addMenu(tr("&Edit")); - menuFunctions = mb->addMenu(tr("Func&tions")); - - menuGain = menuFunctions->addMenu(tr("&Gain")); - a = menuGain->addAction(tr("200%")); - a->setData("gain200"); - a = menuGain->addAction(tr("150%")); - a->setData("gain150"); - a = menuGain->addAction(tr("75%")); - a->setData("gain75"); - a = menuGain->addAction(tr("50%")); - a->setData("gain50"); - a = menuGain->addAction(tr("25%")); - a->setData("gain25"); - a = menuGain->addAction(tr("Other")); - a->setData("gain_free"); - a = menuFunctions->addSeparator(); - - a = menuEdit->addAction(tr("Edit in E&xternal Editor")); - a->setData("exit_external"); - a = menuFunctions->addAction(tr("Mute Selection")); - a->setData("mute"); - a = menuFunctions->addAction(tr("Normalize Selection")); - a->setData("normalize"); - a = menuFunctions->addAction(tr("Fade In Selection")); - a->setData("fade_in"); - a = menuFunctions->addAction(tr("Fade Out Selection")); - a->setData("fade_out"); - a = menuFunctions->addAction(tr("Reverse Selection")); - a->setData("reverse"); - - select = menuEdit->addMenu(QIcon(*selectIcon), tr("Select")); - select->addAction(getAction("sel_all", this)); - select->addAction(getAction("sel_none", this)); - - connect(menuFunctions, SIGNAL(triggered(QAction*)), SLOT(cmd(QAction*))); - connect(menuFile, SIGNAL(triggered(QAction*)), SLOT(cmd(QAction*))); - connect(select, SIGNAL(triggered(QAction*)), SLOT(cmd(QAction*))); - connect(menuGain, SIGNAL(triggered(QAction*)), SLOT(cmd(QAction*))); - connect(menuEdit, SIGNAL(triggered(QAction*)), SLOT(cmd(QAction*))); - - //---------ToolBar---------------------------------- - tools = addToolBar(tr("waveedit-tools")); - tools->addAction(undoAction); - tools->addAction(redoAction); - - const int waveeditTools = PointerTool | PencilTool - | RubberTool | DrawTool; - EditToolBar* tools2 = new EditToolBar(this, waveeditTools); - addToolBar(tools2); - - //-------------------------------------------------- - // Transport Bar - QToolBar* transport = addToolBar(tr("Transport")); - muse->setupTransportToolbar(transport); - - //-------------------------------------------------- - // ToolBar: Solo Cursor1 Cursor2 - - addToolBarBreak(); - tb1 = addToolBar(tr("pianoroll-tools")); - solo = tb1->addAction(tr("Solo")); - solo->setCheckable(true); - connect(solo, SIGNAL(toggled(bool)), SLOT(soloChanged(bool))); - - tb1->addWidget(new QLabel(tr("Cursor"))); - pos1 = new PosLabel; - pos2 = new PosLabel; - pos2->setSmpte(true); - tb1->addWidget(pos1); - tb1->addWidget(pos2); - - //--------------------------------------------------- - // Rest - //--------------------------------------------------- - -// if (!parts()->empty()) { // Roughly match total size of part -// Part* firstPart = parts()->begin()->second; -// xscale = 0 - firstPart->lenFrame()/_widthInit; -// } - - view = new WaveView(this); - view->setRaster(0); - view->setFollow(INIT_FOLLOW); - - connect(muse, SIGNAL(configChanged()), SLOT(configChanged())); - connect(song, SIGNAL(posChanged(int,const AL::Pos&,bool)), view, SLOT(setLocatorPos(int,const AL::Pos&,bool))); - view->setLocatorPos(0, song->cpos(), true); - view->setLocatorPos(1, song->lpos(), false); - view->setLocatorPos(2, song->rpos(), false); -// connect(view, SIGNAL(cursorPos(unsigned)), SIGNAL(setTime(unsigned))); - connect(view, SIGNAL(posChanged(int,const AL::Pos&)), song, SLOT(setPos(int,const AL::Pos&))); - - setCentralWidget(view); - view->setCornerWidget(new QSizeGrip(view)); - setWindowTitle(view->getCaption()); - - Pos p1(0, AL::FRAMES), p2(0, AL::FRAMES); - view->range(p1, p2); - p2 += AL::sigmap.ticksMeasure(p2.tick()); // show one more measure - view->setTimeRange(p1, p2); - - connect(view, SIGNAL(toolChanged(int)), tools2, SLOT(set(int))); - connect(tools2, SIGNAL(toolChanged(int)), view, SLOT(setTool(int))); - -// view->selectFirst(); - configChanged(); - if (init) - ; // initFromPart(); - else { - resize(initWidth, initHeight); - } - } - -//--------------------------------------------------------- -// configChanged -//--------------------------------------------------------- - -void WaveEdit::configChanged() - { -// view->setBg(config.waveEditBackgroundColor); - } - -//--------------------------------------------------------- -// setTime -//--------------------------------------------------------- - -void WaveEdit::setTime(unsigned samplepos) - { -// printf("setTime %d %x\n", samplepos, samplepos); - unsigned tick = AL::tempomap.frame2tick(samplepos); - pos1->setValue(tick, true); - pos2->setValue(tick, true); -// time->setPos(3, tick, false); - } - -//--------------------------------------------------------- -// ~WaveEdit -//--------------------------------------------------------- - -WaveEdit::~WaveEdit() - { -// undoRedo->removeFrom(tools); - } - -//--------------------------------------------------------- -// cmd -//--------------------------------------------------------- - -void WaveEdit::cmd(QAction* a) - { - view->cmd(a->data().toString()); - } - -//--------------------------------------------------------- -// soloChanged -// signal from "song" -//--------------------------------------------------------- - -void WaveEdit::soloChanged(SNode*/* s*/) - { - Part* part = parts()->begin()->second; - solo->setChecked(part->track()->solo()); - } - -//--------------------------------------------------------- -// soloChanged -// signal from solo button -//--------------------------------------------------------- - -void WaveEdit::soloChanged(bool flag) - { - Part* part = parts()->begin()->second; - song->setSolo(part->track(), flag); - } - -//--------------------------------------------------------- -// viewKeyPressEvent -//--------------------------------------------------------- - -void WaveEdit::keyPressEvent(QKeyEvent* event) - { - int key = event->key(); - if (key == Qt::Key_Escape) { - close(); - return; - } - else { - event->ignore(); - } - } - -//--------------------------------------------------------- -// read -//--------------------------------------------------------- - -void WaveEdit::read(QDomNode node) - { - for (node = node.firstChild(); !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - QString tag(e.tagName()); - if (tag == "CtrlEdit") { - int id = e.attribute("id","0").toInt(); - int h = e.attribute("h","50").toInt(); - view->addController(id, h); - } - else - AL::readProperties(this, node); - } - view->layout1(); - } - - -//--------------------------------------------------------- -// write -//--------------------------------------------------------- - -void WaveEdit::write(Xml& xml) const - { - for (ciPart p = _parts->begin(); p != _parts->end(); ++p) { - Part* part = p->second; - Track* track = part->track(); - int trkIdx = song->tracks()->indexOf(track); - int partIdx = track->parts()->index(part); - xml.stag("part"); - xml.put(QString("%1:%2").arg(trkIdx).arg(partIdx)); - xml.etag("part"); - } - xml.stag(metaObject()->className()); - xml.writeProperties(this); - const CtrlEditList* el = view->getCtrlEditors(); - for (ciCtrlEdit i = el->begin(); i != el->end(); ++i) { - xml.tagE(QString("CtrlEdit h=\"%1\" id=\"%2\"") - .arg((*i)->height()).arg((*i)->ctrl()->id())); - } - xml.etag(metaObject()->className()); - } - - diff --git a/muse/muse/waveedit/waveedit.h b/muse/muse/waveedit/waveedit.h deleted file mode 100644 index f861587d..00000000 --- a/muse/muse/waveedit/waveedit.h +++ /dev/null @@ -1,88 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __WAVE_EDIT_H__ -#define __WAVE_EDIT_H__ - -#include "midiedit/midieditor.h" - -class PartList; -class WaveView; -class ScrollScale; -class SNode; - -namespace Awl { - class PosLabel; - }; -using Awl::PosLabel; - - -//--------------------------------------------------------- -// WaveEdit -//--------------------------------------------------------- - -class WaveEdit : public Editor { - Q_OBJECT - - PartList* _parts; - Part* selPart; - - WaveView* view; - QToolBar* tools; - QToolBar* tb1; - QAction* solo; - PosLabel* pos1; - PosLabel* pos2; - - static int _widthInit, _heightInit; - - virtual void keyPressEvent(QKeyEvent*); - - QMenu* menuFunctions, *select, *menuGain; - - private slots: - void cmd(QAction*); - void setTime(unsigned t); - void soloChanged(SNode* s); - void soloChanged(bool flag); - - public slots: - void configChanged(); - - public: - WaveEdit(PartList*, bool); - ~WaveEdit(); - PartList* parts() const { return _parts; } - void read(QDomNode node); - void write(Xml& xml) const; - - enum { CMD_MUTE=0, CMD_NORMALIZE, CMD_FADE_IN, CMD_FADE_OUT, CMD_REVERSE, - CMD_GAIN_FREE, CMD_GAIN_200, CMD_GAIN_150, CMD_GAIN_75, CMD_GAIN_50, CMD_GAIN_25, - CMD_EDIT_EXTERNAL, - CMD_SELECT_ALL, CMD_SELECT_NONE }; - static int initWidth, initHeight; - static const int INIT_WIDTH = 650; - static const int INIT_HEIGHT = 450; - }; - -static const bool INIT_FOLLOW = false; - -#endif - diff --git a/muse/muse/waveedit/waveview.cpp b/muse/muse/waveedit/waveview.cpp deleted file mode 100644 index eb5a744d..00000000 --- a/muse/muse/waveedit/waveview.cpp +++ /dev/null @@ -1,1124 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include - -#include "waveview.h" -#include "song.h" -#include "midiedit/midieditor.h" -#include "al/tempo.h" -#include "event.h" -#include "globals.h" -#include "waveedit.h" -#include "audio.h" -#include "gconfig.h" -#include "part.h" -#include "widgets/simplebutton.h" -#include "utils.h" - -static const int partLabelHeight = 13; - -//--------------------------------------------------------- -// WaveView -//--------------------------------------------------------- - -WaveView::WaveView(WaveEdit* pr) - : TimeCanvas(TIME_CANVAS_WAVEEDIT) - { - setMarkerList(song->marker()); - curSplitter = -1; - dragSplitter = false; - selectionStart = 0; - selectionStop = 0; - lastGainvalue = 100; - editor = pr; - - curPart = editor->parts()->begin()->second; - setMouseTracking(true); - - songChanged(SC_TRACK_INSERTED); - } - -//--------------------------------------------------------- -// drawWavePart -// y0 - start of track -// th - track height -// from - x pixel coordinate start drawing -// to - x end drawing -// -// redraw area is QRect(from, y0, to-from, th) -//--------------------------------------------------------- - -void WaveView::drawWavePart(QPainter& p, Part* wp, int y0, int th, int from, int to) - { - int h = th/2; - int y = y0 + 1 + h; - int cc = th % 2 ? 0 : 1; - - const Pos pos(pix2pos(from)); - EventList* el = wp->events(); - for (iEvent e = el->begin(); e != el->end(); ++e) { - Event event = e->second; - SndFileR f = event.sndFile(); - if (f.isNull()) - continue; - unsigned channels = f.channels(); - if (channels == 0) { - printf("drawWavePart: channels==0! %s\n", f.finfo()->fileName().toLatin1().data()); - continue; - } - - int x1 = pos2pix(event.pos() + *wp); - int x2 = pos2pix(event.end() + *wp); - int w = x2 - x1; - if (w == 0) - continue; - - int samples = event.lenFrame(); - int xScale = (samples + w/2)/w; - int frame = pos.frame() - wp->frame() - - event.pos().frame() + event.spos(); - - if (h < 20) { - // - // combine multi channels into one waveform - // - for (int i = from; i < to; i++) { - SampleV sa[channels]; - f.read(sa, xScale, frame); - frame += xScale; - int peak = 0; - int rms = 0; - for (unsigned k = 0; k < channels; ++k) { - if (sa[k].peak > peak) - peak = sa[k].peak; - rms += sa[k].rms; - } - rms /= channels; - peak = (peak * (th-2)) >> 9; - rms = (rms * (th-2)) >> 9; - p.setPen(QColor(Qt::darkGray)); - p.drawLine(i, y - peak - cc, i, y + peak); - p.setPen(QColor(Qt::black)); - p.drawLine(i, y - rms - cc, i, y + rms); - } - } - else { - // - // multi channel display - // - h = th / (channels * 2); - int cc = th % (channels * 2) ? 0 : 1; - for (int i = from; i < to; i++) { - y = y0 + 1 + h; - SampleV sa[channels]; - f.read(sa, xScale, frame); - frame += xScale; - for (unsigned k = 0; k < channels; ++k) { - int peak = (sa[k].peak * (h - 1)) >> 8; - int rms = (sa[k].rms * (h - 1)) >> 8; - p.setPen(QColor(Qt::darkGray)); - p.drawLine(i, y - peak - cc, i, y + peak); - p.setPen(QColor(Qt::black)); - p.drawLine(i, y - rms - cc, i, y + rms); - y += 2 * h; - } - } - } - } - } - -//--------------------------------------------------------- -// draw -//--------------------------------------------------------- - -void WaveView::paint(QPainter& p, QRect r) - { - QFont f = font(); - f.setPointSize(8); - p.setFont(f); - - int from = r.x(); - int to = from + r.width(); - - PartList* pl = editor->parts(); - for (iPart ip = pl->begin(); ip != pl->end(); ++ip) { - Part* part = ip->second; - int x1 = pos2pix(*part); - int x2 = pos2pix(part->end()); - int len = x2 - x1; - - if (x2 <= from) - continue; - if (x1 > to) - break; - - int h = rCanvasA.height(); - int xx1 = x1; - if (xx1 < from) - xx1 = from; - int xx2 = x2; - if (xx2 > to) - xx2 = to; - drawWavePart(p, part, 0, h, xx1, xx2); - int yy = h - partLabelHeight; - p.drawText(x1 + 3, yy, len - 6, - partLabelHeight-1, Qt::AlignVCenter | Qt::AlignLeft, - part->name()); - } - } - -//--------------------------------------------------------- -// getCaption -//--------------------------------------------------------- - -QString WaveView::getCaption() const - { - QString caption("MusE: WaveEditor"); - if (curPart) - return caption + QString(": ") + curPart->name(); - return caption; - } - -//--------------------------------------------------------- -// songChanged -//--------------------------------------------------------- - -void WaveView::songChanged(int flags) - { - if (flags & ~SC_SELECTION) { - startFrame = MAXINT; - endFrame = 0; - for (iPart p = editor->parts()->begin(); p != editor->parts()->end(); ++p) { - Part* part = p->second; - int sframe = part->frame(); - int eframe = sframe + part->lenFrame(); - if (sframe < startFrame) - startFrame = sframe; - if (eframe > endFrame) - endFrame = eframe; - } - } -// if (flags & SC_CLIP_MODIFIED) { -// update(); // Boring, but the only thing possible to do -// } - setPart(*curPart, curPart->end()); - widget()->update(); - } - -//--------------------------------------------------------- -// mousePress -//--------------------------------------------------------- - -void WaveView::mousePress(QMouseEvent* me) - { - QPoint pos(me->pos()); - - if (rCanvasA.contains(pos)) { -// mousePressCanvasA(me); - return; - } - if (curSplitter != -1) { - dragSplitter = true; - splitterY = pos.y(); - return; - } - - if (rCanvasB.contains(pos)) { - for (iCtrlEdit i = ctrlEditList.begin(); i != ctrlEditList.end(); ++i) { - CtrlEdit* c = *i; - QRect r(rCanvasB.x(), rCanvasB.y() + c->y + splitWidth, - rCanvasB.width(), c->cheight()); - if (r.contains(pos)) { - c->mousePress(pos - r.topLeft(), me); - break; - } - } - } - } - -//--------------------------------------------------------- -// mouseRelease -//--------------------------------------------------------- - -void WaveView::mouseRelease(QMouseEvent* me) - { - if (dragSplitter) { - dragSplitter = false; - return; - } - QPoint pos(me->pos()); - if (rCanvasA.contains(pos)) { - // mouseReleaseCanvasA(me); - return; - } - if (rCanvasB.contains(pos)) { - for (iCtrlEdit i = ctrlEditList.begin(); i != ctrlEditList.end(); ++i) { - CtrlEdit* c = *i; - QRect r(rCanvasB.x(), rCanvasB.y() + c->y + splitWidth, - rCanvasB.width(), c->cheight()); - if (r.contains(pos)) { - c->mouseRelease(); - break; - } - } - } - } - -//--------------------------------------------------------- -// mouseMove -//--------------------------------------------------------- - -void WaveView::mouseMove(QPoint pos) - { - if (dragSplitter) { - int deltaY = pos.y() - splitterY; - - iCtrlEdit i = ctrlEditList.begin(); - int y = 0; - if (curSplitter > 0) { - int k = 0; - CtrlEdit* c = 0; - for (; i != ctrlEditList.end(); ++i, ++k) { - c = *i; - y += c->height(); - if ((k+1) == curSplitter) - break; - } - if (i == ctrlEditList.end()) { - printf("unexpected edit list end, curSplitter %d\n", curSplitter); - return; - } - if (c->height() + deltaY < splitWidth) - deltaY = splitWidth - c->height(); - ++i; - int rest = 0; - for (iCtrlEdit ii = i; ii != ctrlEditList.end(); ++ii) - rest += (*ii)->cheight(); - if (rest < deltaY) - deltaY = rest; - c->setHeight(c->height() + deltaY); - layoutPanelB(c); - y += deltaY; - } - // - // layout rest, add deltaY vertical - // - int rest = 0; - for (iCtrlEdit ii = i; ii != ctrlEditList.end(); ++ii) { - CtrlEdit* c = *ii; - rest += c->cheight(); - } - if (rest < deltaY) - deltaY = rest; - rest = deltaY; - for (; i != ctrlEditList.end(); ++i) { - CtrlEdit* c = *i; - int d = c->cheight(); - if (d > deltaY) - d = deltaY; - c->setHeight(c->height() - d); - c->y = y; - layoutPanelB(c); - y += c->height(); - deltaY -= d; - if (deltaY == 0) - break; - } - if (i != ctrlEditList.end()) - ++i; - for (; i != ctrlEditList.end(); ++i) { - CtrlEdit* c = *i; - c->y = y; - y += c->height(); - } - if (curSplitter == 0) - resizeController(ctrlHeight - rest); - else - widget()->update(rPanelB | rCanvasB); - splitterY = pos.y(); - updatePartControllerList(); - return; - } - if (rCanvasA.contains(pos)) { - // mouseMoveCanvasA(pos - rCanvasA.topLeft()); - return; - } - if (button == 0) { - if (rPanelB.contains(pos) || rCanvasB.contains(pos)) { - int y = pos.y() - rPanelB.y(); - int k = 0; - for (iCtrlEdit i = ctrlEditList.begin(); i != ctrlEditList.end(); ++i, ++k) { - CtrlEdit* c = *i; - if (y >= c->y && y < (c->y + splitWidth)) { - curSplitter = k; - setCursor(); - return; - } - int ypos = y - c->y - splitWidth; - if (ypos >= 0) - emit yChanged(c->pixel2val(ypos)); - } - } - if (curSplitter != -1) { - curSplitter = -1; - setCursor(); - } - return; - } - if (rCanvasB.contains(pos)) { - for (iCtrlEdit i = ctrlEditList.begin(); i != ctrlEditList.end(); ++i) { - CtrlEdit* c = *i; - QRect r(rCanvasB.x(), rCanvasB.y() + c->y + splitWidth, - rCanvasB.width(), c->cheight()); - if (r.contains(pos)) { - c->mouseMove(pos - r.topLeft()); - break; - } - } - } - - } - -//--------------------------------------------------------- -// cmd -//--------------------------------------------------------- - -void WaveView::cmd(const QString&) - { -#if 0 - int modifyoperation = -1; - double paramA = 0.0; - - switch(n) { - case WaveEdit::CMD_SELECT_ALL: - if (!editor->parts()->empty()) { - iPart iBeg = editor->parts()->begin(); - iPart iEnd = editor->parts()->end(); - iEnd--; - Part* beg = iBeg->second; - Part* end = iEnd->second; - selectionStart = beg->frame(); - selectionStop = end->frame() + end->lenFrame(); - update(); - } - break; - - case WaveEdit::CMD_EDIT_EXTERNAL: - modifyoperation = EDIT_EXTERNAL; - break; - - case WaveEdit::CMD_SELECT_NONE: - selectionStart = selectionStop = 0; - update(); - break; - - case WaveEdit::CMD_MUTE: - modifyoperation = MUTE; - break; - - case WaveEdit::CMD_NORMALIZE: - modifyoperation = NORMALIZE; - break; - - case WaveEdit::CMD_FADE_IN: - modifyoperation = FADE_IN; - break; - - case WaveEdit::CMD_FADE_OUT: - modifyoperation = FADE_OUT; - break; - - case WaveEdit::CMD_REVERSE: - modifyoperation = REVERSE; - break; - - case WaveEdit::CMD_GAIN_FREE: { - /* - EditGain* editGain = new EditGain(this, lastGainvalue); - if (editGain->exec() == QDialog::Accepted) { - lastGainvalue = editGain->getGain(); - modifyoperation = GAIN; - paramA = (double)lastGainvalue / 100.0; - } - delete editGain; - */ - printf("Free gain - todo!\n"); - } - break; - - case WaveEdit::CMD_GAIN_200: - modifyoperation = GAIN; - paramA = 2.0; - break; - - case WaveEdit::CMD_GAIN_150: - modifyoperation = GAIN; - paramA = 1.5; - break; - - case WaveEdit::CMD_GAIN_75: - modifyoperation = GAIN; - paramA = 0.75; - break; - - case WaveEdit::CMD_GAIN_50: - modifyoperation = GAIN; - paramA = 0.5; - break; - - case WaveEdit::CMD_GAIN_25: - modifyoperation = GAIN; - paramA = 0.25; - break; - - default: - break; - } - - if (modifyoperation != -1) { - if (selectionStart == selectionStop) { - printf("No selection. Ignoring\n"); //@!TODO: Disable menu options when no selection - return; - } - modifySelection(modifyoperation, selectionStart, selectionStop, paramA); - } -#endif - } - -//--------------------------------------------------------- -// getSelection -//--------------------------------------------------------- - -WaveSelectionList WaveView::getSelection(unsigned /*startpos*/, unsigned /*stoppos*/) - { - WaveSelectionList selection; -#if 0 - for (iPart ip = editor->parts()->begin(); ip != editor->parts()->end(); ++ip) { - Part* wp = ip->second; - unsigned part_offset = wp->frame(); - EventList* el = wp->events(); - - for (iEvent e = el->begin(); e != el->end(); ++e) { - Event event = e->second; - if (event.empty()) - continue; - SndFileR file = event.sndFile(); - if (file.isNull()) - continue; - - unsigned event_offset = event.frame() + part_offset; - unsigned event_startpos = event.spos(); - unsigned event_length = event.lenFrame() + event.spos(); - unsigned event_end = event_offset + event_length; - //printf("startpos=%d stoppos=%d part_offset=%d event_offset=%d event_startpos=%d event_length=%d event_end=%d\n", startpos, stoppos, part_offset, event_offset, event_startpos, event_length, event_end); - - if (!(event_end <= startpos || event_offset >= stoppos)) { - int tmp_sx = startpos - event_offset + event_startpos; - int tmp_ex = stoppos - event_offset + event_startpos; - unsigned sx; - unsigned ex; - - tmp_sx < (int)event_startpos ? sx = event_startpos : sx = tmp_sx; - tmp_ex > (int)event_length ? ex = event_length : ex = tmp_ex; - - //printf("Event data affected: %d->%d filename:%s\n", sx, ex, file.name().toLatin1().data()); - WaveEventSelection s; - s.file = file; - s.startframe = sx; - s.endframe = ex; - selection.push_back(s); - } - } - } -#endif - return selection; - } - -//--------------------------------------------------------- -// modifySelection -//--------------------------------------------------------- - -void WaveView::modifySelection(int /*operation*/, unsigned /*startpos*/, unsigned /*stoppos*/, double /*paramA*/) - { -#if 0 - song->startUndo(); - - WaveSelectionList selection = getSelection(startpos, stoppos); - for (iWaveSelection i = selection.begin(); i != selection.end(); i++) { - WaveEventSelection w = *i; - SndFileR& file = w.file; - unsigned sx = w.startframe; - unsigned ex = w.endframe; - unsigned file_channels = file.channels(); - - QString tmpWavFile = QString::null; - if (!getUniqueTmpfileName(tmpWavFile)) { - break; - } - - audio->msgIdle(true); // Not good with playback during operations - SndFile tmpFile(tmpWavFile); - tmpFile.setFormat(file.format(), file_channels, file.samplerate()); - if (tmpFile.openWrite()) { - audio->msgIdle(false); - printf("Could not open temporary file...\n"); - break; - } - - // - // Write out data that will be changed to temp file - // - unsigned tmpdatalen = ex - sx; - off_t tmpdataoffset = sx; - float* tmpdata[file_channels]; - - for (unsigned i=0; icmdChangeWave(file.dirPath() + "/" + file.name(), tmpWavFile, sx, ex); - audio->msgIdle(false); // Not good with playback during operations - } - song->endUndo(SC_CLIP_MODIFIED); - update(); -#endif - } - -//--------------------------------------------------------- -// muteSelection -//--------------------------------------------------------- - -void WaveView::muteSelection(unsigned /*channels*/, float** /*data*/, unsigned /*length*/) - { -#if 0 - // Set everything to 0! - for (unsigned i=0; i loudest) - loudest = data[i][j]; - } - } - - double scale = 0.99 / (double)loudest; - - for (unsigned i=0; iabsolutePath(); - dir.remove(exttmpFileName); - dir.remove(exttmpFile.finfo()->baseName() + ".wca"); - } - } - -//--------------------------------------------------------- -// getUniqueTmpfileName -//--------------------------------------------------------- - -bool WaveView::getUniqueTmpfileName(QString& newFilename) - { - // Check if tmp-directory exists under project path - QString tmpWavDir = song->absoluteProjectPath() + "/tmp_musewav"; //!@TODO: Don't hardcode like this - QFileInfo tmpdirfi(tmpWavDir); - if (!tmpdirfi.isDir()) { - // Try to create a tmpdir - QDir projdir(song->absoluteProjectPath()); - if (!projdir.mkdir("tmp_musewav")) { - printf("Could not create undo dir!\n"); - return false; - } - } - - - tmpdirfi.setFile(tmpWavDir); - - if (!tmpdirfi.isWritable()) { - printf("Temp directory is not writable - aborting\n"); - return false; - } - - QDir tmpdir = tmpdirfi.dir(); - - // Find a new filename - for (int i=0; i<10000; i++) { - QString filename = "muse_tmp"; - filename.append(QString::number(i)); - filename.append(".wav"); - - if (!tmpdir.exists(tmpWavDir +"/" + filename)) { - newFilename = tmpWavDir + "/" + filename; - return true; - } - } - - printf("Could not find a suitable tmpfilename (more than 10000 tmpfiles in tmpdir - clean up!\n"); - return false; - } - -//--------------------------------------------------------- -// range -//--------------------------------------------------------- - -void WaveView::range(AL::Pos& s, AL::Pos& e) const - { - s.setFrame(startFrame); - e.setFrame(endFrame); - } - -//--------------------------------------------------------- -// layout -//--------------------------------------------------------- - -void WaveView::layout() - { - int n = ctrlEditList.size(); - if (n == 0) - return; - if (ctrlHeight == 0) { - int wh = widget()->height(); - resizeController(wh < 120 ? wh / 2 : 100); - } - // check, if layout is ok already; this happens after - // song load - int h = 0; - for (iCtrlEdit i = ctrlEditList.begin(); i != ctrlEditList.end(); ++i) { - CtrlEdit* c = *i; - h += c->height(); - } - if (h == ctrlHeight) { - for (iCtrlEdit i = ctrlEditList.begin(); i != ctrlEditList.end(); ++i) - layoutPanelB(*i); - return; - } - int y = 0; - int sch = ctrlHeight / n; - for (iCtrlEdit i = ctrlEditList.begin(); i != ctrlEditList.end(); ++i) { - CtrlEdit* c = *i; - c->y = y; - c->setHeight(sch); - layoutPanelB(c); - y += sch; - } - } - -//--------------------------------------------------------- -// layout1 -//--------------------------------------------------------- - -void WaveView::layout1() - { - int n = ctrlEditList.size(); - if (n == 0) - return; - int y = 0; - for (iCtrlEdit i = ctrlEditList.begin(); i != ctrlEditList.end(); ++i) { - CtrlEdit* c = *i; - c->y = y; - y += c->height(); - } - resizeController(y); - } - -//--------------------------------------------------------- -// layoutPanelB -//--------------------------------------------------------- - -void WaveView::layoutPanelB(CtrlEdit* c) - { - int y = c->y; - int h = c->height(); - int bx = rPanelB.x() + rPanelB.width() - 23; - int by = rPanelB.y() + y + h - 19; - c->minus->setGeometry(bx, by, 18, 18); - bx = rPanelB.x() + 1; - by = rPanelB.y() + y + 5; - c->sel->setGeometry(bx, by, rPanelB.width() - 5, 18); - } - -//--------------------------------------------------------- -// addController -//--------------------------------------------------------- - -void WaveView::addController() - { - int n = ctrlEditList.size(); - CtrlEdit* ce = new CtrlEdit(widget(), this, curPart->track()); - ce->setHeight(50); - ctrlEditList.push_back(ce); - - ce->minus->defaultAction()->setData(n); - connect(ce->minus, SIGNAL(triggered(QAction*)), SLOT(removeController(QAction*))); - ce->minus->show(); - ce->sel->show(); - - layout(); - widget()->update(); - updatePartControllerList(); - } - -void WaveView::addController(int id, int h) - { - ctrlHeight += h; - int n = ctrlEditList.size(); - - CtrlEdit* ce = new CtrlEdit(widget(), this, curPart->track()); - ce->setHeight(h); - ce->setCtrl(id); - ctrlEditList.push_back(ce); - - ce->minus->defaultAction()->setData(n); - connect(ce->minus, SIGNAL(triggered(QAction*)), SLOT(removeController(QAction*))); - } - -//--------------------------------------------------------- -// removeController -//--------------------------------------------------------- - -void WaveView::removeController(QAction* a) - { - int id = a->data().toInt(); - - int k = 0; - for (iCtrlEdit i = ctrlEditList.begin(); i != ctrlEditList.end(); ++i, ++k) { - if (k == id) { - CtrlEdit* c = *i; - delete c; - ctrlEditList.erase(i); - break; - } - } - k = 0; - for (iCtrlEdit i = ctrlEditList.begin(); i != ctrlEditList.end(); ++i, ++k) { - CtrlEdit* c = *i; - c->minus->defaultAction()->setData(k); - } - - if (ctrlEditList.empty()) - resizeController(0); - else - layout(); - widget()->update(); - updatePartControllerList(); - } - -//--------------------------------------------------------- -// updatePartControllerList -//--------------------------------------------------------- - -void WaveView::updatePartControllerList() - { - if (curPart == 0) - return; - CtrlCanvasList* cl = curPart->getCtrlCanvasList(); - cl->clear(); - for (iCtrlEdit i = ctrlEditList.begin(); i != ctrlEditList.end(); ++i) { - CtrlCanvas cc; - cc.ctrlId = (*i)->ctrlId; - cc.height = (*i)->height(); - cl->push_back(cc); - } - } - -//--------------------------------------------------------- -// paintControllerCanvas -// r(0, 0) is PanelB topLeft() -//--------------------------------------------------------- - -void WaveView::paintControllerCanvas(QPainter& p, QRect r) - { - int x1 = r.x(); - int x2 = x1 + r.width(); - - int xx2 = rCanvasB.width(); - if (xx2 >= x2) - x2 = xx2 - 2; - for (iCtrlEdit i = ctrlEditList.begin(); i != ctrlEditList.end(); ++i) { - CtrlEdit* c = *i; - int y = c->y; - paintHLine(p, x1, x2, y); - p.setPen(lineColor[0]); - p.drawLine(xx2-1, 1, xx2-1, splitWidth-2); - - QRect rc(0, y + splitWidth, rCanvasB.width(), c->cheight()); - QPoint pt(rc.topLeft()); - rc &= r; - if (!rc.isEmpty()) { - p.translate(pt); - c->paint(p, rc.translated(-pt)); - p.translate(-pt); - } - } - } - -//--------------------------------------------------------- -// paintControllerPanel -// panelB -//--------------------------------------------------------- - -void WaveView::paintControllerPanel(QPainter& p, QRect r) - { - p.fillRect(r, QColor(0xe0, 0xe0, 0xe0)); - int x1 = r.x(); - int x2 = x1 + r.width(); - - paintVLine(p, r.y() + splitWidth, r.y() + r.height(), - rPanelB.x() + rPanelB.width()); - - if (x1 == 0) - x1 = 1; - for (iCtrlEdit i = ctrlEditList.begin(); i != ctrlEditList.end(); ++i) { - CtrlEdit* c = *i; - paintHLine(p, x1, x2, c->y); - p.setPen(lineColor[0]); - p.drawLine(0, 1, 0, splitWidth-2); - } - } - -//--------------------------------------------------------- -// setCursor -//--------------------------------------------------------- - -void WaveView::setCursor() - { - if (curSplitter != -1) { - widget()->setCursor(Qt::SplitVCursor); - return; - } - TimeCanvas::setCursor(); - } - -//--------------------------------------------------------- -// enterB -//--------------------------------------------------------- - -void WaveView::enterB() - { - if ((button == 0) && curSplitter != -1) { - curSplitter = -1; - setCursor(); - } - } - -//--------------------------------------------------------- -// leaveB -//--------------------------------------------------------- - -void WaveView::leaveB() - { - if ((button == 0) && (curSplitter != -1)) { - curSplitter = -1; - setCursor(); - } - } - - diff --git a/muse/muse/waveedit/waveview.h b/muse/muse/waveedit/waveview.h deleted file mode 100644 index 462ce26d..00000000 --- a/muse/muse/waveedit/waveview.h +++ /dev/null @@ -1,127 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef WAVE_VIEW_H -#define WAVE_VIEW_H - -#include "al/pos.h" -#include "wave.h" -#include "awl/tcanvas.h" -#include "ctrl/ctrledit.h" - -class PartList; -class QPainter; -class QRect; -class Part; -class WaveEdit; -class GraphMidiEditor; - -//--------------------------------------------------------- -// WaveEventSelection -//--------------------------------------------------------- - -struct WaveEventSelection { - SndFileR file; - unsigned startframe; - unsigned endframe; - }; - -typedef std::list WaveSelectionList; -typedef std::list::iterator iWaveSelection; - -//--------------------------------------------------------- -// WaveView -//--------------------------------------------------------- - -class WaveView : public TimeCanvas { - Q_OBJECT - - WaveEdit* editor; - CtrlEditList ctrlEditList; - - int startFrame; - int endFrame; - - Part* curPart; - - enum { NORMAL, DRAG } mode; - enum { MUTE = 0, NORMALIZE, FADE_IN, FADE_OUT, REVERSE, GAIN, EDIT_EXTERNAL }; //!< Modify operations - - unsigned selectionStart, selectionStop, dragstartx; - int curSplitter; // -1 mouse not in splitter - bool dragSplitter; - int splitterY; - - virtual void paint(QPainter&, QRect); - virtual void mousePress(QMouseEvent*); - virtual void mouseMove(QPoint); - virtual void enterB(); - virtual void leaveB(); - virtual void mouseRelease(QMouseEvent*); - - bool getUniqueTmpfileName(QString& newFilename); //!< Generates unique filename for temporary SndFile - WaveSelectionList getSelection(unsigned startpos, unsigned stoppos); - - int lastGainvalue; //!< Stores the last used gainvalue when specifiying gain value in the editgain dialog - void modifySelection(int operation, unsigned startpos, unsigned stoppos, double paramA); //!< Modifies selection - - void muteSelection(unsigned channels, float** data, unsigned length); //!< Mutes selection - void normalizeSelection(unsigned channels, float** data, unsigned length); //!< Normalizes selection - void fadeInSelection(unsigned channels, float** data, unsigned length); //!< Linear fade in of selection - void fadeOutSelection(unsigned channels, float** data, unsigned length); //!< Linear fade out of selection - void reverseSelection(unsigned channels, float** data, unsigned length); //!< Reverse selection - void applyGain(unsigned channels, float** data, unsigned length, double gain); //!< Apply gain to selection - - void editExternal(unsigned file_format, unsigned file_samplerate, unsigned channels, float** data, unsigned length); - - //void applyLadspa(unsigned channels, float** data, unsigned length); //!< Apply LADSPA plugin on selection - - void drawWavePart(QPainter& p, Part* wp, int y0, int th, int from, int to); - virtual void addController(); - virtual void layout(); - void layoutPanelB(CtrlEdit*); - void updatePartControllerList(); - - virtual void paintControllerCanvas(QPainter&, QRect); - virtual void paintControllerPanel(QPainter&, QRect); - - void setCursor(); - - private slots: - void removeController(QAction*); - - public slots: - void songChanged(int type); - - signals: - void yChanged(int); // emitted from mouseMove in controller canvas - - public: - WaveView(WaveEdit*); - QString getCaption() const; - void cmd(const QString&); - void range(AL::Pos&, AL::Pos&) const; - void addController(int id, int h); - void layout1(); - const CtrlEditList* getCtrlEditors() const { return &ctrlEditList; } - }; - -#endif - diff --git a/muse/muse/waveevent.cpp b/muse/muse/waveevent.cpp deleted file mode 100644 index 4aff6a47..00000000 --- a/muse/muse/waveevent.cpp +++ /dev/null @@ -1,137 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "globals.h" -#include "event.h" -#include "waveevent.h" -#include "al/xml.h" -#include "wave.h" - -//--------------------------------------------------------- -// WaveEvent -//--------------------------------------------------------- - -WaveEventBase::WaveEventBase(EventType t) - : EventBase(t) - { - deleted = false; - } - -//--------------------------------------------------------- -// WaveEvent::mid -//--------------------------------------------------------- - -EventBase* WaveEventBase::mid(unsigned b, unsigned e) - { - WaveEventBase* ev = new WaveEventBase(*this); - - int offset = b - frame(); - unsigned end = endFrame(); - if (e < end) - end = e; - - int len = end - b; - ev->setFrame(b); - ev->setLenFrame(len); - ev->setSpos(spos() + offset); - return ev; - } - -//--------------------------------------------------------- -// dump -//--------------------------------------------------------- - -void WaveEventBase::dump(int n) const - { - EventBase::dump(n); - } - -//--------------------------------------------------------- -// WaveEventBase::read -//--------------------------------------------------------- - -void WaveEventBase::read(QDomNode node) - { - node = node.firstChild(); - while (!node.isNull()) { - QDomElement e = node.toElement(); - if (e.tagName() == "poslen") - PosLen::read(node); - else if (e.tagName() == "frame") - _spos = e.text().toInt(); - else if (e.tagName() == "file") { - SndFile* wf = SndFile::getWave(e.text(), false); - if (wf) - f = SndFileR(wf); - } - else - printf("MusE:WaveEventBase: unknown tag %s\n", e.tagName().toLatin1().data()); - node = node.nextSibling(); - } - Pos::setType(AL::FRAMES); - } - -//--------------------------------------------------------- -// write -//--------------------------------------------------------- - -void WaveEventBase::write(Xml& xml, const Pos& offset) const - { - if (f.isNull()) - return; - xml.stag("event"); - PosLen wpos(*this); - wpos += offset; -// if (offset) -// wpos.setTick(wpos.tick() + offset); - wpos.write(xml, "poslen"); - xml.tag("frame", _spos); // offset in wave file - xml.tag("file", f.finfo()->fileName()); - xml.etag("event"); - } - -//--------------------------------------------------------- -// read -//--------------------------------------------------------- - -void WaveEventBase::read(unsigned offset, float** buffer, int channel, int n) - { - if (f.isNull()) - return; - f.seek(offset + _spos); - f.read(channel, buffer, n); - } - -//--------------------------------------------------------- -// WaveEventBase::operator== -//--------------------------------------------------------- - -bool WaveEventBase::operator==(const EventBase& ev) const { - - const WaveEventBase* pev = dynamic_cast(&ev); - - if(pev) return operator==(*pev); - else return false; -} - -bool WaveEventBase::operator==(const WaveEventBase& /*ev*/) const { - //TODO - return false; -} diff --git a/muse/muse/waveevent.h b/muse/muse/waveevent.h deleted file mode 100644 index 476b3a03..00000000 --- a/muse/muse/waveevent.h +++ /dev/null @@ -1,61 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __WAVE_EVENT_H__ -#define __WAVE_EVENT_H__ - -#include "eventbase.h" - -//--------------------------------------------------------- -// WaveEvent -//--------------------------------------------------------- - -class WaveEventBase : public EventBase { - QString _name; - SndFileR f; - int _spos; // start sample position in WaveFile - bool deleted; - - virtual EventBase* clone() const { return new WaveEventBase(*this); } - - public: - WaveEventBase(EventType t); - virtual ~WaveEventBase() {} - - virtual void read(QDomNode); - virtual void write(Xml&, const Pos& offset) const; - virtual EventBase* mid(unsigned, unsigned); - virtual void dump(int n = 0) const; - - - virtual const QString name() const { return _name; } - virtual void setName(const QString& s) { _name = s; } - virtual int spos() const { return _spos; } - virtual void setSpos(int s) { _spos = s; } - virtual SndFileR sndFile() const { return f; } - virtual void setSndFile(SndFileR& sf) { f = sf; } - virtual void read(unsigned offset, float** bpp, int channels, int nn); - - virtual bool operator==(const EventBase&) const; - virtual bool operator==(const WaveEventBase&) const; - }; - -#endif - diff --git a/muse/muse/wavetrack.cpp b/muse/muse/wavetrack.cpp deleted file mode 100644 index e796c3f3..00000000 --- a/muse/muse/wavetrack.cpp +++ /dev/null @@ -1,427 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "wavetrack.h" -#include "event.h" -#include "audio.h" -#include "wave.h" -#include "al/xml.h" -#include "al/dsp.h" -#include "song.h" -#include "globals.h" -#include "part.h" -#include "audiowriteback.h" -#include "muse.h" -#include "audioprefetch.h" - -bool WaveTrack::firstWaveTrack = true; - -//--------------------------------------------------------- -// WaveTrack -//--------------------------------------------------------- - -WaveTrack::WaveTrack() - : AudioTrack() - { - // - // allocate prefetch buffer - // - float* p = new float[FIFO_BUFFER * segmentSize * MAX_CHANNELS]; - float** pp = new float*[FIFO_BUFFER * MAX_CHANNELS]; - - for (int i = 0; i < FIFO_BUFFER; ++i) { - readBuffer[i] = pp; - for (int k = 0; k < MAX_CHANNELS; ++k) { - *pp = p; - p += segmentSize; - ++pp; - } - } - - recordPart = 0; // part we are recording into - } - -//--------------------------------------------------------- -// WaveTrack -//--------------------------------------------------------- - -WaveTrack::~WaveTrack() - { - delete[] *readBuffer[0]; - delete[] readBuffer[0]; - } - -//--------------------------------------------------------- -// fetchData -// called from prefetch thread -//--------------------------------------------------------- - -void WaveTrack::fetchData(unsigned pos, unsigned samples, int widx) - { - float** bp = readBuffer[widx]; - for (int i = 0; i < channels(); ++i) - memset(bp[i], 0, samples * sizeof(float)); - - PartList* pl = parts(); - for (iPart ip = pl->begin(); ip != pl->end(); ++ip) { - Part* part = ip->second; - - if (part->mute()) - continue; - unsigned p_spos = part->frame(); - if (pos + samples <= p_spos) - break; - unsigned p_epos = p_spos + part->lenFrame(); - if (pos >= p_epos) - continue; - - EventList* events = part->events(); - for (iEvent ie = events->begin(); ie != events->end(); ++ie) { - Event& event = ie->second; - - unsigned e_spos = event.frame() + p_spos; - if (pos + samples <= e_spos) - break; - unsigned nn = event.lenFrame(); - unsigned e_epos = e_spos + nn; - if (pos >= e_epos) - continue; - - int offset = e_spos - pos; - - unsigned srcOffset, dstOffset; - if (offset > 0) { - nn = samples - offset; - srcOffset = 0; - dstOffset = offset; - } - else { - srcOffset = -offset; - dstOffset = 0; - nn -= offset; - if (nn > samples) - nn = samples; - } - if (dstOffset) { - float* bpp[channels()]; - for (int i = 0; i < channels(); ++i) - bpp[i] = bp[i] + dstOffset; - event.read(srcOffset, bpp, channels(), nn); - } - else - event.read(srcOffset, bp, channels(), nn); - } - } - } - -//--------------------------------------------------------- -// write -//--------------------------------------------------------- - -void WaveTrack::write(Xml& xml) const - { - xml.stag("wavetrack"); - AudioTrack::writeProperties(xml); - const PartList* pl = parts(); - for (ciPart p = pl->begin(); p != pl->end(); ++p) - p->second->write(xml); - xml.etag("wavetrack"); - } - -//--------------------------------------------------------- -// read -//--------------------------------------------------------- - -void WaveTrack::read(QDomNode node) - { - for (; !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - if (e.tagName() == "part") { - Part* p = newPart(); - p->read(node, false); - parts()->add(p); - } - else if (AudioTrack::readProperties(node)) - printf("MusE:WaveTrack: unknown tag %s\n", e.tagName().toLatin1().data()); - } - } - -//--------------------------------------------------------- -// newPart -//--------------------------------------------------------- - -Part* WaveTrack::newPart(Part*p, bool clone) - { - Part* part = new Part(this); - if (p) { - if (clone) - part->clone(p->events()); - else - part->ref(); - part->setName(p->name()); - part->setColorIndex(p->colorIndex()); - - *(AL::PosLen*)part = *(AL::PosLen*)p; - part->setMute(p->mute()); - } - else - part->ref(); - return part; - } - -//--------------------------------------------------------- -// setChannels -//--------------------------------------------------------- - -void WaveTrack::setChannels(int n) - { - AudioTrack::setChannels(n); - SndFile* sf = recFile(); - if (sf) { - if (sf->samples() == 0) { - sf->remove(); - sf->setFormat(sf->format(), _channels, - sf->samplerate()); - sf->openWrite(); - } - } - } - -//--------------------------------------------------------- -// startRecording -// gui context -//--------------------------------------------------------- - -void WaveTrack::startRecording() - { - AudioTrack::startRecording(); // create file - partCreated = false; - AL::Pos start = song->punchin() ? song->lPos() : song->cPos(); - - // search for recordPart - recordPart = 0; - for (iPart ip = parts()->begin(); ip != parts()->end(); ++ip) { - Part* part = ip->second; - unsigned partStart = part->tick(); - unsigned partEnd = partStart + part->lenTick(); - if (start.tick() >= partStart && start.tick() < partEnd) { - recordPart = part; - break; - } - } - if (recordPart == 0) { - // - // create new part for recording - // - recordPart = new Part(this); - recordPart->ref(); - recordPart->setType(AL::FRAMES); - Pos spos(start.downSnaped(muse->raster())); - Pos epos(start.upSnaped(muse->raster())); - recordPart->setPos(spos); - recordPart->setLenTick(epos.tick() - spos.tick()); - recordPart->setName(name()); - song->addPart(recordPart); - partCreated = true; - emit partsChanged(); - } - } - -//--------------------------------------------------------- -// recordBeat -// gui context -// update current recording -//--------------------------------------------------------- - -void WaveTrack::recordBeat() - { - if (partCreated) { - int cpos = song->cpos(); - int ptick = recordPart->tick(); - recordPart->setLenTick(cpos - ptick); - song->addUpdateFlags(SC_PART_MODIFIED); - } - } - -//--------------------------------------------------------- -// stopRecording -// gui context -//--------------------------------------------------------- - -void WaveTrack::stopRecording(const Pos& s, const Pos& e) - { - int updateFlags = 0; - - while(audioWriteback->active()) - sleep(1); - _recFile->update(); - - // create Event - Event event(Wave); - SndFileR sf(_recFile); - event.setSndFile(sf); - event.setPos(s - *recordPart); - event.setSpos(0); - event.setLenFrame(e.frame() - s.frame()); - // recordPart->addEvent(event); - audio->msgAddEvent(event, recordPart, false); - - _recFile = 0; - - // - // adjust part len && song len - // - unsigned etick = e.upSnaped(muse->raster()).tick(); - unsigned len = etick - recordPart->tick(); - - if (recordPart->lenTick() < len) { - recordPart->setLenTick(len); - updateFlags |= SC_PART_MODIFIED; - } - - if (song->len() < etick) - song->setLen(etick); - song->update(updateFlags); - } - -//--------------------------------------------------------- -// canEnableRecord -//--------------------------------------------------------- - -bool WaveTrack::canEnableRecord() const - { - return (!noInRoute() || (this == song->bounceTrack)); - } - -//--------------------------------------------------------- -// collectInputData -//--------------------------------------------------------- - -void WaveTrack::collectInputData() - { - bufferEmpty = false; - if (recordFlag() && (audio->isRecording() || !audio->isPlaying())) { - if (song->bounceTrack == this && audio->isPlaying()) { - OutputList* ol = song->outputs(); - if (!ol->empty()) { -//TODO AudioOutput* out = ol->front(); - } - } - else - AudioTrack::collectInputData(); - return; - } - if (!audio->isPlaying()) { - for (int i = 0; i < channels(); ++i) - memset(buffer[i], 0, sizeof(float) * segmentSize); - return; - } - - if (audio->freewheel()) { - // when freewheeling, read data direct from file: - // TODO: fetchData(framePos, segmentSize, buffer); - } - else { - int idx = audio->curReadIndex(); - if (idx == -1) { - for (int i = 0; i < channels(); ++i) - memset(buffer[i], 0, sizeof(float) * segmentSize); - } - else { - float** bpp = readBuffer[idx]; - for (int i = 0; i < channels(); ++i) - AL::dsp->cpy(buffer[i], bpp[i], segmentSize); - } - } - } - -//--------------------------------------------------------- -// process -//--------------------------------------------------------- - -void WaveTrack::process() - { - AudioTrack::process(); - - // - // record collected data for track - // - if (recordFlag() && audio->isRecording() && recFile()) { - unsigned framePos = audio->seqTime()->pos.frame(); - if (audio->freewheel()) { - // write data directly to file - _recFile->write(channels(), buffer, framePos); - } - else { - if (fifo.put(channels(), segmentSize, buffer, framePos)) { - printf("WaveTrack(%s)::getData: fifo overrun\n", - name().toLatin1().data()); - } - } - if (!_monitor) { - // - // end data processing here if monitor is not on - // - bufferEmpty = true; - } - return; - } - if (!audio->isPlaying() && !_monitor) - bufferEmpty = true; - } - -//--------------------------------------------------------- -// clone -//--------------------------------------------------------- - -void WaveTrack::clone(WaveTrack* t) - { - QString name; - for (int i = 1; ; ++i) { - name.sprintf("%s-%d", t->name().toLatin1().data(), i); - TrackList* tl = song->tracks(); - bool found = false; - for (iTrack it = tl->begin(); it != tl->end(); ++it) { - if ((*it)->name() == name) { - found = true; - break; - } - } - if (!found) - break; - } - setName(name); - - _recordFlag = t->_recordFlag; - _mute = t->_mute; - _solo = t->_solo; - _off = t->_off; - _monitor = t->_monitor; - _channels = t->_channels; - _locked = t->_locked; - _inRoutes = t->_inRoutes; - _outRoutes = t->_outRoutes; - _controller = t->_controller; - _autoRead = t->_autoRead; - _autoWrite = t->_autoWrite; - setPrefader(t->prefader()); - } - - diff --git a/muse/muse/wavetrack.h b/muse/muse/wavetrack.h deleted file mode 100644 index 0e195ddb..00000000 --- a/muse/muse/wavetrack.h +++ /dev/null @@ -1,84 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __WAVETRACK_H__ -#define __WAVETRACK_H__ - -#include "audiotrack.h" - -namespace AL { - class Pos; - }; - -class Part; - -//--------------------------------------------------------- -// WaveTrack -//--------------------------------------------------------- - -class WaveTrack : public AudioTrack { - Q_OBJECT - - float** readBuffer[FIFO_BUFFER]; - - Part* recordPart; // part we are recording into - bool partCreated; - - void getDummyInput(int, unsigned); - - protected: - virtual void collectInputData(); - - public: - static bool firstWaveTrack; - - WaveTrack(); - ~WaveTrack(); - virtual TrackType type() const { return WAVE; } - - void clone(WaveTrack*); - - virtual Part* newPart(Part*p=0, bool clone=false); - - virtual void read(QDomNode); - virtual void write(Xml&) const; - - virtual void fetchData(unsigned pos, unsigned frames, int); - - virtual void setChannels(int n); - virtual bool hasAuxSend() const { return true; } - bool canEnableRecord() const; - virtual bool canRecord() const { return true; } - - virtual void startRecording(); - void recordBeat(); - virtual void stopRecording(const AL::Pos&, const AL::Pos&); - virtual void process(); - }; - - -typedef QList WaveTrackList; -typedef WaveTrackList::iterator iWaveTrack; -typedef WaveTrackList::const_iterator ciWaveTrack; - -#endif - - - diff --git a/muse/muse/widgets/CMakeLists.txt b/muse/muse/widgets/CMakeLists.txt deleted file mode 100644 index 03866a0c..00000000 --- a/muse/muse/widgets/CMakeLists.txt +++ /dev/null @@ -1,88 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -QT4_WRAP_CPP (widget_mocs - doublelabel.h - noteinfo.h - dentry.h - siglabel.h - simplebutton.h - tb1.h - tools.h - fontsel.h - ctrlcombo.h - filedialog.h - outportcombo.h splitter.h - quantcombo.h rastercombo.h - comboQuant.h bigtime.h - midisync.h - mixdowndialog.h - comment.h - shortcutconfig.h - shortcutcapturedialog.h - greendotbutton.h recordbutton.h - ) - -QT4_WRAP_UI (widget_ui_headers - comment.ui - midisync.ui - mixdowndialog.ui - shortcutcapturedialog.ui - shortcutconfig.ui - ) - -# add_custom_command(OUTPUT ui_midisync.h -# COMMAND ${QT_UIC_EXECUTABLE} -# ARGS -o ${CMAKE_CURRENT_BINARY_DIR}/ui_midisync.h ${CMAKE_CURRENT_SOURCE_DIR}/midisync.ui -# DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/midisync.ui -# ) - -# ADD_FILE_DEPENDENCIES(moc_midisync.cxx ${CMAKE_CURRENT_BINARY_DIR}/ui_midisync.h) - -add_library ( widgets STATIC - ${widget_ui_headers} - ${widget_mocs} - - utils.cpp - shortcutconfig.cpp - shortcutconfig.h - shortcutcapturedialog.cpp - midisync.cpp - comment.cpp - mixdowndialog.cpp - tools.cpp - doublelabel.cpp - noteinfo.cpp - dentry.cpp - siglabel.cpp - simplebutton.cpp - tb1.cpp - fontsel.cpp - ctrlcombo.cpp - filedialog.cpp - outportcombo.cpp splitter.cpp - quantcombo.cpp rastercombo.cpp - comboQuant.cpp bigtime.cpp - ) - -set_target_properties( widgets - PROPERTIES COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all.h" - ) - diff --git a/muse/muse/widgets/action.h b/muse/muse/widgets/action.h deleted file mode 100644 index c71ac1bb..00000000 --- a/muse/muse/widgets/action.h +++ /dev/null @@ -1,42 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __ACTION_H__ -#define __ACTION_H__ - -//--------------------------------------------------------- -// Action -//--------------------------------------------------------- - -class Action : public QAction { - int _id; - - public: - Action(QObject* parent, int i, const char* name = 0, bool toggle = false) - : QAction(parent, name, toggle) { - _id = i; - } - void setId(int i) { _id = i; } - int id() const { return _id; } - }; - - -#endif - diff --git a/muse/muse/widgets/bigtime.cpp b/muse/muse/widgets/bigtime.cpp deleted file mode 100644 index 3d1c7b21..00000000 --- a/muse/muse/widgets/bigtime.cpp +++ /dev/null @@ -1,267 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "globals.h" -#include "bigtime.h" -#include "song.h" -#include "gconfig.h" - -#include "al/al.h" -#include "al/sig.h" -#include "al/tempo.h" - -// -// the bigtime widget -// display is split into several parts to avoid flickering. -// - -//--------------------------------------------------------- -// BigTime -//--------------------------------------------------------- - -BigTime::BigTime(QWidget* parent) - : QWidget(parent) - { - setWindowFlags(Qt::WindowStaysOnTopHint); - - barLabel = new QLabel(this); - beatLabel = new QLabel(this); - tickLabel = new QLabel(this); - hourLabel = new QLabel(this); - minLabel = new QLabel(this); - secLabel = new QLabel(this); - frameLabel = new QLabel(this); - sep1 = new QLabel(QString("."), this); - sep2 = new QLabel(QString("."), this); - sep3 = new QLabel(QString(":"), this); - sep4 = new QLabel(QString(":"), this); - sep5 = new QLabel(QString(":"), this); - - oldbar = oldbeat = oldtick = oldhour = oldmin = oldsec = oldframe = -1; - - setString(song->cPos()); - - configChanged(); - - QFont f(QString("Courier")); - f.setPixelSize(10); - setFont(f); - setWindowTitle(tr("MusE: Bigtime")); - } - -//--------------------------------------------------------- -// configChanged -//--------------------------------------------------------- - -void BigTime::configChanged() - { - setBgColor(config.bigTimeBackgroundColor); - setFgColor(config.bigTimeForegroundColor); - } - -//--------------------------------------------------------- -// closeEvent -//--------------------------------------------------------- - -void BigTime::closeEvent(QCloseEvent *ev) - { - emit closed(); - QWidget::closeEvent(ev); - } - -//--------------------------------------------------------- -// setString -//--------------------------------------------------------- - -bool BigTime::setString(AL::Pos pos) - { - int bar, beat, tick; - pos.mbt(&bar, &beat, &tick); - int min, sec, hour, frame, subframe; - pos.msf(&min, &sec, &frame, &subframe); - - hour = min / 60; - min %= 60; - - QString s; - - if(oldbar != bar) { - s.sprintf("%04d", bar+1); - barLabel->setText(s); - oldbar = bar; - } - - if(oldbeat != beat) { - s.sprintf("%02d", beat+1); - beatLabel->setText(s); - oldbeat = beat; - } - - if(oldtick != tick) { - s.sprintf("%03d", tick); - tickLabel->setText(s); - oldtick = tick; - } - - if(oldhour != hour) { - s.sprintf("%02d", hour); - hourLabel->setText(s); - oldhour = hour; - } - - if(oldmin != min) { - s.sprintf("%02d", min); - minLabel->setText(s); - oldmin = min; - } - - if(oldsec != sec) { - s.sprintf("%02d", sec); - secLabel->setText(s); - oldsec = sec; - } - - if(oldframe != frame) { - s.sprintf("%02d", frame); - frameLabel->setText(s); - oldframe = frame; - } - - return false; - } - -//--------------------------------------------------------- -// setPos -//--------------------------------------------------------- - -void BigTime::setPos(int idx, AL::Pos pos, bool) - { - if (idx == 0) - setString(pos); - } - -//--------------------------------------------------------- -// resizeEvent -//--------------------------------------------------------- - -void BigTime::resizeEvent(QResizeEvent *ev) - { - QFont f = font(); - QFontMetrics fm(f); - int fs = f.pixelSize(); - int hspace = 20; - int tw = fm.width(QString("00:00:00:00")); - fs = ((ev->size().width() - hspace*2)*fs) / tw; - -// printf("resize BigTime %d -> %d, w %d\n", fs, nfs, ev->size().width()); - - // set min/max - if (fs < 10) - fs = 10; - else if (fs > 256) - fs = 256; - f.setPixelSize(fs); - setFont(f); - - int digitWidth = fontMetrics().width(QString("0")); - - int vspace = (ev->size().height() - (fs*2)) / 3; - int tickY = vspace; - int timeY = vspace*2 + fs; - - barLabel->resize(digitWidth*4, fs); - beatLabel->resize(digitWidth*2, fs); - tickLabel->resize(digitWidth*3, fs); - hourLabel->resize(digitWidth*2, fs); - minLabel->resize(digitWidth*2, fs); - secLabel->resize(digitWidth*2, fs); - frameLabel->resize(digitWidth*2, fs); - - sep1->resize(digitWidth, fs); - sep2->resize(digitWidth, fs); - sep3->resize(digitWidth, fs); - sep4->resize(digitWidth, fs); - sep5->resize(digitWidth, fs); - - barLabel->move( hspace + (digitWidth*0), tickY); - sep1->move( hspace + (digitWidth*4), tickY); - beatLabel->move( hspace + (digitWidth*5), tickY); - sep2->move( hspace + (digitWidth*7), tickY); - tickLabel->move( hspace + (digitWidth*8), tickY); - - hourLabel->move( hspace + (digitWidth*0), timeY); - sep3->move( hspace + (digitWidth*2), timeY); - minLabel->move( hspace + (digitWidth*3), timeY); - sep4->move( hspace + (digitWidth*5), timeY); - secLabel->move( hspace + (digitWidth*6), timeY); - sep5->move( hspace + (digitWidth*8), timeY); - frameLabel->move( hspace + (digitWidth*9), timeY); - } - -//--------------------------------------------------------- -// setForegroundColor -//--------------------------------------------------------- - -void BigTime::setFgColor(QColor c) - { - QPalette cg = palette(); - cg.setColor(QPalette::Foreground, c); - setPalette(cg); - - barLabel->setPalette(cg); - beatLabel->setPalette(cg); - tickLabel->setPalette(cg); - hourLabel->setPalette(cg); - minLabel->setPalette(cg); - secLabel->setPalette(cg); - frameLabel->setPalette(cg); - - sep1->setPalette(cg); - sep2->setPalette(cg); - sep3->setPalette(cg); - sep4->setPalette(cg); - sep5->setPalette(cg); - } - -//--------------------------------------------------------- -// setBackgroundColor -//--------------------------------------------------------- - -void BigTime::setBgColor(QColor c) - { - QPalette cg = palette(); - cg.setColor(QPalette::Background, c); - setPalette(cg); - - barLabel->setPalette(cg); - beatLabel->setPalette(cg); - tickLabel->setPalette(cg); - hourLabel->setPalette(cg); - minLabel->setPalette(cg); - secLabel->setPalette(cg); - frameLabel->setPalette(cg); - - sep1->setPalette(cg); - sep2->setPalette(cg); - sep3->setPalette(cg); - sep4->setPalette(cg); - sep5->setPalette(cg); - } - diff --git a/muse/muse/widgets/bigtime.h b/muse/muse/widgets/bigtime.h deleted file mode 100644 index 82b054bf..00000000 --- a/muse/muse/widgets/bigtime.h +++ /dev/null @@ -1,64 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __BIGTIME_H__ -#define __BIGTIME_H__ - -#include "al/pos.h" - -class MusE; -class AL::Pos; - -//--------------------------------------------------------- -// BigTime -//--------------------------------------------------------- - -class BigTime : public QWidget { - bool tickmode; - MusE* seq; - Q_OBJECT - - bool setString(AL::Pos); - - QLabel *barLabel, *beatLabel, *tickLabel, - *hourLabel, *minLabel, *secLabel, *frameLabel, - *sep1, *sep2, *sep3, *sep4, *sep5; - int oldbar, oldbeat, oldhour, oldmin, oldsec, oldframe; - int oldtick; - - void setFgColor(QColor c); - void setBgColor(QColor c); - - protected: - virtual void resizeEvent(QResizeEvent*); - virtual void closeEvent(QCloseEvent*); - - public slots: - void setPos(int, AL::Pos, bool); - void configChanged(); - - signals: - void closed(); - - public: - BigTime(QWidget* parent); - }; - -#endif diff --git a/muse/muse/widgets/cliplisteditorbase.h b/muse/muse/widgets/cliplisteditorbase.h deleted file mode 100644 index 789edac6..00000000 --- a/muse/muse/widgets/cliplisteditorbase.h +++ /dev/null @@ -1,138 +0,0 @@ -#ifndef CLIPLISTEDITORBASE_H -#define CLIPLISTEDITORBASE_H - -#include - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "awl/posedit.h" -#include -#include - -class Ui_ClipListEditorBase -{ -public: - QVBoxLayout *vboxLayout; - Q3ListView *view; - Q3GroupBox *GroupBox1; - QHBoxLayout *hboxLayout; - QLabel *TextLabel1; - Awl::PosEdit *start; - QLabel *TextLabel2; - Awl::PosEdit *len; - QSpacerItem *spacerItem; - - void setupUi(QWidget *ClipListEditorBase) - { - ClipListEditorBase->setObjectName(QString::fromUtf8("ClipListEditorBase")); - ClipListEditorBase->resize(QSize(600, 480).expandedTo(ClipListEditorBase->minimumSizeHint())); - vboxLayout = new QVBoxLayout(ClipListEditorBase); - vboxLayout->setSpacing(6); - vboxLayout->setMargin(11); - vboxLayout->setObjectName(QString::fromUtf8("vboxLayout")); - view = new Q3ListView(ClipListEditorBase); - view->addColumn(QApplication::translate("ClipListEditorBase", "Name", 0, QApplication::UnicodeUTF8)); - view->header()->setClickEnabled(true, view->header()->count() - 1); - view->addColumn(QApplication::translate("ClipListEditorBase", "Refs", 0, QApplication::UnicodeUTF8)); - view->header()->setClickEnabled(true, view->header()->count() - 1); - view->addColumn(QApplication::translate("ClipListEditorBase", "Start", 0, QApplication::UnicodeUTF8)); - view->header()->setClickEnabled(true, view->header()->count() - 1); - view->addColumn(QApplication::translate("ClipListEditorBase", "Len", 0, QApplication::UnicodeUTF8)); - view->header()->setClickEnabled(true, view->header()->count() - 1); - view->addColumn(QApplication::translate("ClipListEditorBase", "Data", 0, QApplication::UnicodeUTF8)); - view->header()->setClickEnabled(true, view->header()->count() - 1); - view->setObjectName(QString::fromUtf8("view")); - view->setAllColumnsShowFocus(true); - view->setRootIsDecorated(true); - - vboxLayout->addWidget(view); - - GroupBox1 = new Q3GroupBox(ClipListEditorBase); - GroupBox1->setObjectName(QString::fromUtf8("GroupBox1")); - GroupBox1->setColumnLayout(0, Qt::Vertical); - GroupBox1->layout()->setSpacing(6); - GroupBox1->layout()->setMargin(11); - hboxLayout = new QHBoxLayout(GroupBox1->layout()); - hboxLayout->setAlignment(Qt::AlignTop); - hboxLayout->setObjectName(QString::fromUtf8("hboxLayout")); - hboxLayout->setMargin(11); - hboxLayout->setSpacing(6); - TextLabel1 = new QLabel(GroupBox1); - TextLabel1->setObjectName(QString::fromUtf8("TextLabel1")); - - hboxLayout->addWidget(TextLabel1); - - start = new Awl::PosEdit(GroupBox1); - start->setObjectName(QString::fromUtf8("start")); - start->setSmpte(true); - - hboxLayout->addWidget(start); - - TextLabel2 = new QLabel(GroupBox1); - TextLabel2->setObjectName(QString::fromUtf8("TextLabel2")); - - hboxLayout->addWidget(TextLabel2); - - len = new Awl::PosEdit(GroupBox1); - len->setObjectName(QString::fromUtf8("len")); - len->setSmpte(true); - - hboxLayout->addWidget(len); - - spacerItem = new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); - - hboxLayout->addItem(spacerItem); - - - vboxLayout->addWidget(GroupBox1); - - retranslateUi(ClipListEditorBase); - - QMetaObject::connectSlotsByName(ClipListEditorBase); - } // setupUi - - void retranslateUi(QWidget *ClipListEditorBase) - { - ClipListEditorBase->setWindowTitle(QApplication::translate("ClipListEditorBase", "MusE: ClipList", 0, QApplication::UnicodeUTF8)); - view->header()->setLabel(0, QApplication::translate("ClipListEditorBase", "Name", 0, QApplication::UnicodeUTF8)); - view->header()->setLabel(1, QApplication::translate("ClipListEditorBase", "Refs", 0, QApplication::UnicodeUTF8)); - view->header()->setLabel(2, QApplication::translate("ClipListEditorBase", "Start", 0, QApplication::UnicodeUTF8)); - view->header()->setLabel(3, QApplication::translate("ClipListEditorBase", "Len", 0, QApplication::UnicodeUTF8)); - view->header()->setLabel(4, QApplication::translate("ClipListEditorBase", "Data", 0, QApplication::UnicodeUTF8)); - GroupBox1->setTitle(QApplication::translate("ClipListEditorBase", "Clip Properties", 0, QApplication::UnicodeUTF8)); - TextLabel1->setText(QApplication::translate("ClipListEditorBase", "Pos:", 0, QApplication::UnicodeUTF8)); - TextLabel2->setText(QApplication::translate("ClipListEditorBase", "Len:", 0, QApplication::UnicodeUTF8)); - Q_UNUSED(ClipListEditorBase); - } // retranslateUi - -}; - -namespace Ui { - class ClipListEditorBase: public Ui_ClipListEditorBase {}; -} // namespace Ui - -class ClipListEditorBase : public QWidget, public Ui::ClipListEditorBase -{ - Q_OBJECT - -public: - ClipListEditorBase(QWidget* parent = 0, const char* name = 0, Qt::WFlags fl = 0); - ~ClipListEditorBase(); - -protected slots: - virtual void languageChange(); - -}; - -#endif // CLIPLISTEDITORBASE_H diff --git a/muse/muse/widgets/cliplisteditorbase.ui b/muse/muse/widgets/cliplisteditorbase.ui deleted file mode 100644 index 0dab43be..00000000 --- a/muse/muse/widgets/cliplisteditorbase.ui +++ /dev/null @@ -1,146 +0,0 @@ - - - - - ClipListEditorBase - - - - 0 - 0 - 600 - 480 - - - - MusE: ClipList - - - - 11 - - - 6 - - - - - true - - - true - - - - Name - - - - - Refs - - - - - Start - - - - - Len - - - - - Data - - - - - - - - Clip Properties - - - Qt::Vertical - - - - 11 - - - 6 - - - - - Pos: - - - - - - - - - - Len: - - - - - - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 20 - 20 - - - - - - - - - - - qPixmapFromMimeSource - - - Q3ListView - -
q3listview.h
- 0 - -
- - Q3GroupBox - -
Qt3Support/Q3GroupBox
- 1 - -
- - Awl::PosEdit - QWidget -
awl::posedit.h
- 1 - -
-
- - awl/posedit.h - - - -
diff --git a/muse/muse/widgets/comboQuant.cpp b/muse/muse/widgets/comboQuant.cpp deleted file mode 100644 index 1a95e3b6..00000000 --- a/muse/muse/widgets/comboQuant.cpp +++ /dev/null @@ -1,69 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "comboQuant.h" - -static int quantTable[] = { - 1, 16, 32, 64, 128, 256, 512, 1024, - 1, 24, 48, 96, 192, 384, 768, 1536, - 1, 36, 72, 144, 288, 576, 1152, 2304 - }; - -static const char* quantStrings[] = { - QT_TR_NOOP("Off"), "64T", "32T", "16T", "8T", "4T", "2T", "1T", - QT_TR_NOOP("Off"), "64", "32", "16", "8", "4", "2", "1", - QT_TR_NOOP("Off"), "64.", "32.", "16.", "8.", "4.", "2.", "1." - }; - -//--------------------------------------------------------- -// ComboQuant -//--------------------------------------------------------- - -ComboQuant::ComboQuant(QWidget* parent) - : QComboBox(parent) - { - for (int i = 0; i < 24; i++) - addItem(tr(quantStrings[i]), i); - connect(this, SIGNAL(activated(int)), SLOT(activated(int))); - } - -//--------------------------------------------------------- -// activated -//--------------------------------------------------------- - -void ComboQuant::activated(int index) - { - emit valueChanged(quantTable[index]); - } - -//--------------------------------------------------------- -// setQuant -//--------------------------------------------------------- - -void ComboQuant::setValue(int val) - { - for (int i = 0; i < 24; i++) { - if (val == quantTable[i]) { - setCurrentIndex(i); - return; - } - } - } - diff --git a/muse/muse/widgets/comboQuant.h b/muse/muse/widgets/comboQuant.h deleted file mode 100644 index de2a8d82..00000000 --- a/muse/muse/widgets/comboQuant.h +++ /dev/null @@ -1,43 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __COMBOQUANT_H__ -#define __COMBOQUANT_H__ - -//--------------------------------------------------------- -// ComboQuant -//--------------------------------------------------------- - -class ComboQuant : public QComboBox { - Q_OBJECT - - private slots: - void activated(int); - - signals: - void valueChanged(int); - - public: - ComboQuant(QWidget* parent = 0); - void setValue(int val); - }; - -#endif - diff --git a/muse/muse/widgets/combobox.cpp b/muse/muse/widgets/combobox.cpp deleted file mode 100644 index 8b6a5ea2..00000000 --- a/muse/muse/widgets/combobox.cpp +++ /dev/null @@ -1,81 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "combobox.h" - -//--------------------------------------------------------- -// ComboBox -//--------------------------------------------------------- - -ComboBox::ComboBox(QWidget* parent, const char* name) - : QLabel(parent, name) - { - _currentItem = 0; - _id = -1; - list = new Q3PopupMenu(0, "comboPopup"); - connect(list, SIGNAL(activated(int)), SLOT(activatedIntern(int))); - setFrameStyle(Q3Frame::Panel | Q3Frame::Raised); - setLineWidth(2); - } - -ComboBox::~ComboBox() - { - delete list; - } - -//--------------------------------------------------------- -// mousePressEvent -//--------------------------------------------------------- - -void ComboBox::mousePressEvent(QMouseEvent*) - { - list->exec(QCursor::pos()); - } - -//--------------------------------------------------------- -// activated -//--------------------------------------------------------- - -void ComboBox::activatedIntern(int n) - { - _currentItem = n; - emit activated(n, _id); - setText(list->text(_currentItem)); - } - -//--------------------------------------------------------- -// setCurrentItem -//--------------------------------------------------------- - -void ComboBox::setCurrentItem(int i) - { - _currentItem = i; - setText(list->text(list->idAt(_currentItem))); - } - -//--------------------------------------------------------- -// insertItem -//--------------------------------------------------------- - -void ComboBox::insertItem(const QString& s, int id, int idx) - { - list->insertItem(s, id, idx); - } - diff --git a/muse/muse/widgets/combobox.h b/muse/muse/widgets/combobox.h deleted file mode 100644 index 70d71030..00000000 --- a/muse/muse/widgets/combobox.h +++ /dev/null @@ -1,57 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __COMBOBOX_H__ -#define __COMBOBOX_H__ - -class Q3PopupMenu; - -//--------------------------------------------------------- -// ComboBox -//--------------------------------------------------------- - -class ComboBox : public QLabel { - Q_OBJECT - Q_PROPERTY(int id READ id WRITE setId) - - int _id; - int _currentItem; - Q3PopupMenu* list; - virtual void mousePressEvent(QMouseEvent*); - - private slots: - void activatedIntern(int); - - signals: - void activated(int val, int id); - - public: - ComboBox(QWidget* parent, const char* name = 0); - ~ComboBox(); - void setCurrentItem(int); - void insertItem(const QString& s, int id = -1, int idx=-1); - int id() const { return _id; } - void setId(int i) { _id = i; } - }; - -#endif - - - diff --git a/muse/muse/widgets/comment.cpp b/muse/muse/widgets/comment.cpp deleted file mode 100644 index 2bb981eb..00000000 --- a/muse/muse/widgets/comment.cpp +++ /dev/null @@ -1,91 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "comment.h" -#include "song.h" -#include "track.h" - -//--------------------------------------------------------- -// Comment -//--------------------------------------------------------- - -Comment::Comment(QWidget* parent) - : QWidget(parent) - { - setupUi(this); - } - -//--------------------------------------------------------- -// textChanged -//--------------------------------------------------------- - -void Comment::textChanged() - { - setText(textentry->document()->toPlainText()); - } - -//--------------------------------------------------------- -// TrackComment -//--------------------------------------------------------- - -TrackComment::TrackComment(Track* t, QWidget* parent) - : Comment(parent) - { - setWindowTitle(tr("MusE: Track Comment")); - track = t; - connect(song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); - textentry->setPlainText(track->comment()); - connect(textentry, SIGNAL(textChanged()), SLOT(textChanged())); - label1->setText(tr("Track Comment:")); - label2->setText(track->name()); - } - -//--------------------------------------------------------- -// songChanged -//--------------------------------------------------------- - -void TrackComment::songChanged(int flags) - { - if ((flags & (SC_TRACK_INSERTED|SC_TRACK_REMOVED|SC_TRACK_MODIFIED)) == 0) - return; - if (!song->trackExists(track)) { - close(); - return; - } - label2->setText(track->name()); - QString txt(textentry->document()->toPlainText()); - if (track->comment() != txt) { - disconnect(textentry, SIGNAL(textChanged()), this, SLOT(textChanged())); - textentry->setPlainText(track->comment()); -// textentry->setCursorPosition(1000, 1000); - connect(textentry, SIGNAL(textChanged()), this, SLOT(textChanged())); - } - } - -//--------------------------------------------------------- -// setText -//--------------------------------------------------------- - -void TrackComment::setText(const QString& s) - { - track->setComment(s); - song->update(SC_TRACK_MODIFIED); - } - diff --git a/muse/muse/widgets/comment.h b/muse/muse/widgets/comment.h deleted file mode 100644 index 9d356d7a..00000000 --- a/muse/muse/widgets/comment.h +++ /dev/null @@ -1,69 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __COMMENT_H__ -#define __COMMENT_H__ - -#include "ui_comment.h" - -namespace AL { - class Xml; - }; -using AL::Xml; - -class Track; - -//--------------------------------------------------------- -// Comment -//--------------------------------------------------------- - -class Comment : public QWidget, public Ui::CommentBase { - Q_OBJECT - - private: - virtual void setText(const QString& s) = 0; - - private slots: - void textChanged(); - - public: - Comment(QWidget* parent); - }; - -//--------------------------------------------------------- -// TrackComment -//--------------------------------------------------------- - -class TrackComment : public Comment { - Track* track; - Q_OBJECT - - private: - virtual void setText(const QString& s); - - private slots: - void songChanged(int); - - public: - TrackComment(Track*, QWidget*); - }; - -#endif - diff --git a/muse/muse/widgets/comment.ui b/muse/muse/widgets/comment.ui deleted file mode 100644 index fc1b8d64..00000000 --- a/muse/muse/widgets/comment.ui +++ /dev/null @@ -1,97 +0,0 @@ - - - - - CommentBase - - - - 0 - 0 - 387 - 205 - - - - Form1 - - - - 11 - - - 6 - - - - - 0 - - - 6 - - - - - - 4 - 1 - 0 - 0 - - - - Track Comment - - - - - - - - Arial - 12 - 75 - false - true - false - false - - - - QFrame::Box - - - QFrame::Sunken - - - 1 - - - Track 1 - - - - - - - - - - Arial - 12 - 75 - false - true - false - false - - - - - - - qPixmapFromMimeSource - - - diff --git a/muse/muse/widgets/ctrlcombo.cpp b/muse/muse/widgets/ctrlcombo.cpp deleted file mode 100644 index 3139265a..00000000 --- a/muse/muse/widgets/ctrlcombo.cpp +++ /dev/null @@ -1,68 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "ctrlcombo.h" - -//--------------------------------------------------------- -// CtrlComboBox -//--------------------------------------------------------- - -CtrlComboBox::CtrlComboBox(QWidget* parent) - : QComboBox(parent) - { - const char* ctxt[] = { - "No Ctrl", "BankSelMSB", "Modulation", "BreathCtrl", - "Control 3", "Foot Ctrl", "Porta Time", "DataEntMSB", - "MainVolume", "Balance", "Control 9", "Pan", - "Expression", "Control 12", "Control 13", "Control 14", - "Control 15", "Gen.Purp.1", "Gen.Purp.2", "Gen.Purp.3", - "Gen.Purp.4", "Control 20", "Control 21", "Control 22", - "Control 23", "Control 24", "Control 25", "Control 26", - "Control 27", "Control 28", "Control 29", "Control 30", - "Control 31", "BankSelLSB", "Modul. LSB", "BrthCt.LSB", - "Control 35", "FootCt.LSB", "Port.T LSB", "DataEntLSB", - "MainVolLSB", "BalanceLSB", "Control 41", "Pan LSB", - "Expr. LSB", "Control 44", "Control 45", "Control 46", - "Control 47", "Gen.P.1LSB", "Gen.P.2LSB", "Gen.P.3LSB", - "Gen.P.4LSB", "Control 52", "Control 53", "Control 54", - "Control 55", "Control 56", "Control 57", "Control 58", - "Control 59", "Control 60", "Control 61", "Control 62", - "Control 63", "Sustain", "Porta Ped", "Sostenuto", - "Soft Pedal", "Control 68", "Hold 2", "Control 70", - "HarmonicCo", "ReleaseTime", "Attack Time", "Brightness", - "Control 75", "Control 76", "Control 77", "Control 78", - "Control 79", "Gen.Purp.5", "Gen.Purp.6", "Gen.Purp.7", - "Gen.Purp.8", "Porta Ctrl", "Control 85", "Control 86", - "Control 87", "Control 88", "Control 89", "Control 90", - "Effect1Dep", "Effect2Dep", "Effect3Dep", "Effect4Dep", - "Phaser Dep", "Data Incr", "Data Decr", "NRPN LSB", - "NRPN MSB", "RPN LSB", "RPN MSB", "Control102", - "Control103", "Control104", "Control105", "Control106", - "Control107", "Control108", "Control109", "Control110", - "Control111", "Control112", "Control113", "Control114", - "Control115", "Control116", "Control117", "Control118", - "Control119", "AllSndOff", "Reset Ctrl", "Local Ctrl", - "AllNoteOff", "OmniModOff", "OmniModeOn", "MonoModeOn", - "PolyModeOn" - }; - for (unsigned int i = 0; i < sizeof(ctxt)/sizeof(*ctxt); ++i) - addItem(QString(ctxt[i])); - } - diff --git a/muse/muse/widgets/ctrlcombo.h b/muse/muse/widgets/ctrlcombo.h deleted file mode 100644 index 1eb59ab0..00000000 --- a/muse/muse/widgets/ctrlcombo.h +++ /dev/null @@ -1,32 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __CTRLGRP_H__ -#define __CTRLGRP_H__ - -class CtrlComboBox : public QComboBox { - Q_OBJECT - public: - CtrlComboBox(QWidget* parent); - }; - - -#endif - diff --git a/muse/muse/widgets/dentry.cpp b/muse/muse/widgets/dentry.cpp deleted file mode 100644 index b52d4363..00000000 --- a/muse/muse/widgets/dentry.cpp +++ /dev/null @@ -1,208 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "dentry.h" -#include "globals.h" - -#define TIMER1 400 -#define TIMER2 200 -#define TIMEC 7 -#define TIMER3 100 -#define TIMEC2 20 -#define TIMER4 50 - -//--------------------------------------------------------- -// Dentry -// lineedit double values -//--------------------------------------------------------- - -Dentry::Dentry(QWidget* parent) - : QLineEdit(parent) - { - _id = -1; - drawFrame = false; - QLineEdit::setFrame(drawFrame); - timer = new QTimer(this); - connect(timer, SIGNAL(timeout()), SLOT(repeat())); - val = 0.01; - connect(this, SIGNAL(returnPressed()), SLOT(endEdit())); - setCursor(QCursor(Qt::ArrowCursor)); - evx = 1.0; - } - -//--------------------------------------------------------- -// setFrame -//--------------------------------------------------------- - -void Dentry::setFrame(bool flag) - { - drawFrame = flag; - QLineEdit::setFrame(drawFrame); - update(); - } - -//--------------------------------------------------------- -// endEdit -//--------------------------------------------------------- - -void Dentry::endEdit() - { - if (isModified()) { - if (setSValue(text())) { - setString(val); - return; - } - } - setString(val); - clearFocus(); - if (!drawFrame) - QLineEdit::setFrame(false); - } - -//--------------------------------------------------------- -// mousePressEvent -//--------------------------------------------------------- - -void Dentry::mousePressEvent(QMouseEvent* event) - { - button = event->button(); - starty = event->y(); - evx = double(event->x()); - timecount = 0; - repeat(); - timer->start(TIMER1); - } - -//--------------------------------------------------------- -// wheelEvent -//--------------------------------------------------------- - -void Dentry::wheelEvent(QWheelEvent* event) - { - int delta = event->delta(); - - if (delta < 0) - decValue(-1.0); - else if (delta > 0) - incValue(1.0); - } - -//--------------------------------------------------------- -// repeat -//--------------------------------------------------------- - -void Dentry::repeat() - { - if (timecount == 1) { - ++timecount; - timer->stop(); - timer->start(TIMER2); - return; - } - ++timecount; - if (timecount == TIMEC) { - timer->stop(); - timer->start(TIMER3); - } - if (timecount == TIMEC2) { - timer->stop(); - timer->start(TIMER4); - } - - switch (button) { - case Qt::LeftButton: - return; - case Qt::MidButton: - decValue(evx); - break; - case Qt::RightButton: - incValue(evx); - break; - default: - break; - } - } - -//--------------------------------------------------------- -// mouseReleaseEvent -//--------------------------------------------------------- - -void Dentry::mouseReleaseEvent(QMouseEvent*) - { - button = Qt::NoButton; - timer->stop(); - } - -//--------------------------------------------------------- -// mouseMoveEvent -//--------------------------------------------------------- - -void Dentry::mouseMoveEvent(QMouseEvent*) - { - switch (button) { - case Qt::LeftButton: - break; - case Qt::MidButton: - break; - case Qt::RightButton: - break; - default: - break; - } - } - -//--------------------------------------------------------- -// mouseDoubleClickEvent -//--------------------------------------------------------- - -void Dentry::mouseDoubleClickEvent(QMouseEvent* event) - { - if (event->button() != Qt::LeftButton) { - mousePressEvent(event); - return; - } - setFocus(); - QLineEdit::setFrame(true); - update(); - } - -//--------------------------------------------------------- -// setValue -//--------------------------------------------------------- - -void Dentry::setValue(double v) - { - if (v == val) - return; - setString(v); -#if 0 - if (setString(v)) { - clearFocus(); - if (!drawFrame) - QLineEdit::setFrame(false); - setEnabled(false); - } - else { - setEnabled(true); - } -#endif - val = v; - } - diff --git a/muse/muse/widgets/dentry.h b/muse/muse/widgets/dentry.h deleted file mode 100644 index 5e2ba724..00000000 --- a/muse/muse/widgets/dentry.h +++ /dev/null @@ -1,79 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __DENTRY_H__ -#define __DENTRY_H__ - -class QTimer; - -//--------------------------------------------------------- -// Dentry -//--------------------------------------------------------- - -class Dentry : public QLineEdit { - Q_OBJECT - - Q_PROPERTY( int id READ id WRITE setId ) - Q_PROPERTY( double value READ value WRITE setValue ) - Q_PROPERTY( bool frame READ frame WRITE setFrame ) - - int button; - int starty; - bool drawFrame; - QTimer* timer; - double evx; - int timecount; - - virtual void wheelEvent(QWheelEvent*); - virtual void mousePressEvent(QMouseEvent*); - virtual void mouseMoveEvent(QMouseEvent*); - virtual void mouseDoubleClickEvent(QMouseEvent*); - virtual void mouseReleaseEvent(QMouseEvent*); - - protected: - int _id; - double val; - - virtual void incValue(double x) = 0; - virtual void decValue(double x) = 0; - virtual bool setString(double) = 0; - virtual bool setSValue(const QString&) = 0; - - private slots: - void repeat(); - - protected slots: - void endEdit(); - - signals: - void valueChanged(double, int); - - public slots: - virtual void setValue(double); - - public: - Dentry(QWidget* parent = 0); - double value() const { return val; } - bool frame() const { return drawFrame; } - void setFrame(bool); - int id() const { return _id; } - void setId(int i) { _id = i; } - }; -#endif diff --git a/muse/muse/widgets/doublelabel.cpp b/muse/muse/widgets/doublelabel.cpp deleted file mode 100644 index 4026800b..00000000 --- a/muse/muse/widgets/doublelabel.cpp +++ /dev/null @@ -1,144 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "doublelabel.h" -#include "utils.h" - -//--------------------------------------------------------- -// DoubleLabel -//--------------------------------------------------------- - -DoubleLabel::DoubleLabel(QWidget* parent) - : Dentry(parent), _specialText("---") - { - min = 0.0; - max = 1.0; - _precision = 3; - setValue(0.0); - } - -DoubleLabel::DoubleLabel(double _val, double m, double mx, QWidget* parent) - : Dentry(parent), _specialText("---") - { - min = m; - max = mx; - _precision = 3; - setValue(_val); - } - -//--------------------------------------------------------- -// setString -//--------------------------------------------------------- - -bool DoubleLabel::setString(double v) - { - QString s; - if (v < min || v > max) { - setText(_specialText); - return true; - } - s.setNum(v, 'f', _precision); - if (!_suffix.isEmpty()) { - s += " "; - s += _suffix; - } - - setText(s); - return false; - } - -//--------------------------------------------------------- -// setSValue -//--------------------------------------------------------- - -bool DoubleLabel::setSValue(const QString& s) - { - bool ok; - double v = s.toDouble(&ok); - if (ok && (v != val)) { - if (v < min) - v = min; - if (v > max) - v = max; - setValue(v); - emit valueChanged(val, _id); - } - return false; - } - -//--------------------------------------------------------- -// incValue -//--------------------------------------------------------- - -void DoubleLabel::incValue(double) - { - if (val + 1.0 < max) { - setValue(val + 1.0); - emit valueChanged(val, _id); - } - } - -//--------------------------------------------------------- -// decValue -//--------------------------------------------------------- - -void DoubleLabel::decValue(double) - { - if (val - 1.0 > min) { - setValue(val - 1.0); - emit valueChanged(val, _id); - } - } - -//--------------------------------------------------------- -// setPrecision -//--------------------------------------------------------- - -void DoubleLabel::setPrecision(int v) - { - _precision = v; - setString(val); - } - -//--------------------------------------------------------- -// sizeHint -//--------------------------------------------------------- - -QSize DoubleLabel::sizeHint() const - { - QFontMetrics fm = fontMetrics(); - int h = fm.height() + 4; - int n = _precision + 3; -#if 0 - double aval = fabs(val); - if (aval >= 10.0) - ++n; - if (aval >= 100.0) - ++n; - if (aval >= 1000.0) - ++n; - if (aval >= 10000.0) - ++n; - if (aval >= 100000.0) - ++n; -#endif - int w = fm.width(QString("-0.")) + fm.width('0') * n + 6; - return QSize(w, h); - } diff --git a/muse/muse/widgets/doublelabel.h b/muse/muse/widgets/doublelabel.h deleted file mode 100644 index 0ed72514..00000000 --- a/muse/muse/widgets/doublelabel.h +++ /dev/null @@ -1,68 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __DOUBLELABEL_H__ -#define __DOUBLELABEL_H__ - -#include "dentry.h" - -//--------------------------------------------------------- -// DoubleLabel -//--------------------------------------------------------- - -class DoubleLabel : public Dentry { - Q_PROPERTY( double minValue READ minValue WRITE setMinValue ) - Q_PROPERTY( double maxValue READ maxValue WRITE setMaxValue ) - Q_PROPERTY( QString specialText READ specialText WRITE setSpecialText ) - Q_PROPERTY( QString suffix READ suffix WRITE setSuffix ) - Q_PROPERTY( int precision READ precision WRITE setPrecision ) - - double min, max; - QString _specialText; // text to show if value outside min,max - QString _suffix; - int _precision; - Q_OBJECT - - virtual bool setSValue(const QString&); - virtual bool setString(double val); - virtual void incValue(double); - virtual void decValue(double); - - public: - DoubleLabel(QWidget* parent = 0); - DoubleLabel(double val, double min, double max, QWidget*); - virtual QSize sizeHint() const; - double minValue() const { return min; } - double maxValue() const { return max; } - void setMinValue(double v) { min = v; } - void setMaxValue(double v) { max = v; } - void setRange(double a, double b) { min = a; max = b; } - int precision() const { return _precision; } - void setPrecision(int val); - QString specialText() const { return _specialText; } - void setSpecialText(const QString& s) { - _specialText = s; - update(); - } - QString suffix() const { return _suffix; } - void setSuffix(const QString& s) { _suffix = s; } - }; - -#endif diff --git a/muse/muse/widgets/editmetadialogbase.cpp b/muse/muse/widgets/editmetadialogbase.cpp deleted file mode 100644 index 0bbe8dd1..00000000 --- a/muse/muse/widgets/editmetadialogbase.cpp +++ /dev/null @@ -1,110 +0,0 @@ -#include "editmetadialogbase.h" - -#include -#include -/* - * Constructs a EditMetaDialogBase as a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - * - * The dialog will by default be modeless, unless you set 'modal' to - * true to construct a modal dialog. - */ -EditMetaDialogBase::EditMetaDialogBase(QWidget* parent, const char* name, bool modal, Qt::WFlags fl) - : QDialog(parent, name, modal, fl) -{ - setupUi(this); - - - // signals and slots connections - connect(buttonOk, SIGNAL(clicked()), this, SLOT(accept())); - connect(buttonCancel, SIGNAL(clicked()), this, SLOT(reject())); -} - -/* - * Destroys the object and frees any allocated resources - */ -EditMetaDialogBase::~EditMetaDialogBase() -{ - // no need to delete child widgets, Qt does it all for us -} - -/* - * Sets the strings of the subwidgets using the current - * language. - */ -void EditMetaDialogBase::languageChange() -{ - retranslateUi(this); -} - -/**************************************************************************** -** Meta object code from reading C++ file 'editmetadialogbase.h' -** -** Created: Fri Sep 23 12:43:18 2005 -** by: The Qt Meta Object Compiler version 58 (Qt 4.0.1) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "editmetadialogbase.h" -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'editmetadialogbase.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 58 -#error "This file was generated using the moc from 4.0.1. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -static const uint qt_meta_data_EditMetaDialogBase[] = { - - // content: - 1, // revision - 0, // classname - 0, 0, // classinfo - 1, 10, // methods - 0, 0, // properties - 0, 0, // enums/sets - - // slots: signature, parameters, type, tag, flags - 20, 19, 19, 19, 0x09, - - 0 // eod -}; - -static const char qt_meta_stringdata_EditMetaDialogBase[] = { - "EditMetaDialogBase\0\0languageChange()\0" -}; - -const QMetaObject EditMetaDialogBase::staticMetaObject = { - { &QDialog::staticMetaObject, qt_meta_stringdata_EditMetaDialogBase, - qt_meta_data_EditMetaDialogBase, 0 } -}; - -const QMetaObject *EditMetaDialogBase::metaObject() const -{ - return &staticMetaObject; -} - -void *EditMetaDialogBase::qt_metacast(const char *_clname) -{ - if (!_clname) return 0; - if (!strcmp(_clname, qt_meta_stringdata_EditMetaDialogBase)) - return static_cast(const_cast(this)); - if (!strcmp(_clname, "Ui::EditMetaDialogBase")) - return static_cast(const_cast(this)); - return QDialog::qt_metacast(_clname); -} - -int EditMetaDialogBase::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QDialog::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - switch (_id) { - case 0: languageChange(); break; - } - _id -= 1; - } - return _id; -} diff --git a/muse/muse/widgets/editmetadialogbase.ui b/muse/muse/widgets/editmetadialogbase.ui deleted file mode 100644 index 3f5730de..00000000 --- a/muse/muse/widgets/editmetadialogbase.ui +++ /dev/null @@ -1,137 +0,0 @@ - - - - - EditMetaDialogBase - - - - 0 - 0 - 400 - 300 - - - - Dialog - - - - 8 - - - 6 - - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - - 131 - 31 - - - - - - - - OK - - - - - - - Cancel - - - - - - - - - - - - - - - Enter Hex - - - - - - - Meta Type: - - - - - - - Time Position: - - - - - - - TextLabel - - - - - - - - - - okButton - clicked() - EditMetaDialogBase - accept() - - - 278 - 253 - - - 96 - 254 - - - - - cancelButton - clicked() - EditMetaDialogBase - reject() - - - 369 - 253 - - - 179 - 282 - - - - - diff --git a/muse/muse/widgets/fdialogbuttons.ui b/muse/muse/widgets/fdialogbuttons.ui deleted file mode 100644 index 9d46cb59..00000000 --- a/muse/muse/widgets/fdialogbuttons.ui +++ /dev/null @@ -1,167 +0,0 @@ - - - - - FileDialogButtons - - - - 0 - 0 - 175 - 438 - - - - - 5 - 5 - 0 - 0 - - - - Form1 - - - - 11 - - - 6 - - - - - - - - true - - - Qt::Vertical - - - true - - - - 11 - - - 6 - - - - - Global - - - image0 - - - true - - - - - - - User - - - image1 - - - true - - - - - - - Project - - - image2 - - - true - - - - - - - - - - Qt::Vertical - - - QSizePolicy::Expanding - - - - 20 - 60 - - - - - - - - Load: - - - Qt::Vertical - - - true - - - - 11 - - - 6 - - - - - Songdata + -Cofiguration - - - - - - - only -Songdata - - - true - - - - - - - - - - - - - Q3ButtonGroup - -
Qt3Support/Q3ButtonGroup
- 1 - -
-
- - -
diff --git a/muse/muse/widgets/filedialog.cpp b/muse/muse/widgets/filedialog.cpp deleted file mode 100644 index eec678f5..00000000 --- a/muse/muse/widgets/filedialog.cpp +++ /dev/null @@ -1,193 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "filedialog.h" -#include "../globals.h" - -//--------------------------------------------------------- -// MFileDialog -//--------------------------------------------------------- - -MFileDialog::MFileDialog(const QString& dir, - const QString& filter, QWidget* parent, bool /*writeFlag*/) - : QFileDialog(parent, QString(), dir, filter) - { - } - -//--------------------------------------------------------- -// getOpenFileName -//--------------------------------------------------------- - -QString getOpenFileName(const QString &startWith, - const QStringList& filters, QWidget* parent, const QString& name) - { - MFileDialog *dlg = new MFileDialog(startWith, QString::null, parent); - dlg->setFilters(filters); - dlg->setWindowTitle(name); - dlg->setFileMode(QFileDialog::ExistingFile); - QString result; - if (dlg->exec() == QDialog::Accepted) { - QStringList sl = dlg->selectedFiles(); - result = sl.at(0); - } - delete dlg; - return result; - } - -//--------------------------------------------------------- -// getSaveFileName -//--------------------------------------------------------- - -QString getSaveFileName(const QString &startWith, - const QStringList& filters, QWidget* parent, const QString& name) - { - MFileDialog *dlg = new MFileDialog(startWith, QString::null, parent, true); - dlg->setFilters(filters); - dlg->setWindowTitle(name); - dlg->setFileMode(QFileDialog::AnyFile); - QString result; - if (dlg->exec() == QDialog::Accepted) { - QStringList sl = dlg->selectedFiles(); - result = sl.at(0); - } - delete dlg; - return result; - } - -//--------------------------------------------------------- -// getImageFileName -//--------------------------------------------------------- - -QString getImageFileName(const QString& startWith, - const QStringList& filters, QWidget* parent, const QString& name) - { - QString initialSelection; - QString* workingDirectory = new QString(QDir::current().absolutePath()); - if (!startWith.isEmpty() ) { - QFileInfo fi(startWith); - if (fi.exists() && fi.isDir()) { - *workingDirectory = startWith; - } - else if (fi.exists() && fi.isFile()) { - *workingDirectory = fi.absolutePath(); - initialSelection = fi.absolutePath(); - } - } - MFileDialog *dlg = new MFileDialog(*workingDirectory, QString::null, - parent); - -//TD dlg->setContentsPreviewEnabled(true); -// ContentsPreview* preview = new ContentsPreview(dlg); -// dlg->setContentsPreview(preview, preview); -// dlg->setPreviewMode(QFileDialog::Contents); - - dlg->setWindowTitle(name); - dlg->setFilters(filters); - dlg->setFileMode(QFileDialog::ExistingFile); - QString result; - if (!initialSelection.isEmpty()) - dlg->selectFile(initialSelection); - if (dlg->exec() == QDialog::Accepted) { - QStringList sl = dlg->selectedFiles(); - result = sl.at(0); - } - delete dlg; - return result; - } - -//--------------------------------------------------------- -// fileOpen -// opens file "name" with extension "ext" in mode "mode" -// -// mode = "r" or "w" -// noError show no error if file was not found in "r" -// mode. Has no effect in "w" mode -// overwriteWarning -// warn in "w" mode, if file exists -//--------------------------------------------------------- - -QFile* fileOpen(QWidget* parent, QString name, const QString& ext, - QIODevice::OpenMode mode, bool overwriteWarning) - { - QFileInfo info(name); - - if (info.completeSuffix() == "") { - name += ext; - info.setFile(name); - } - if (mode == QIODevice::WriteOnly && overwriteWarning && info.exists()) { - QString s(QWidget::tr("File\n") + name + QWidget::tr("\nexists")); - int rv = QMessageBox::warning(parent, - QWidget::tr("MusE: write"), - s, - QWidget::tr("Overwrite"), - QWidget::tr("Quit"), QString::null, 0, 1); - switch(rv) { - case 0: // overwrite - break; - case 1: // quit - return 0; - } - } - QFile* file = new QFile(name); - if (!file->open(mode)) { - QString s(QWidget::tr("Open File\n") + name + QWidget::tr("\nfailed: ") - + QString(strerror(errno))); - QMessageBox::critical(parent, QWidget::tr("MusE: Open File"), s); - } - return file; - } - -//--------------------------------------------------------- -// MFile -//--------------------------------------------------------- - -MFile::MFile(const QString& _path, const QString& _ext) - : path(_path), ext(_ext) - { - f = 0; - } - -MFile::~MFile() - { - if (f) { - f->close(); - delete f; - } - } - -//--------------------------------------------------------- -// open -//--------------------------------------------------------- - -QFile* MFile::open(QIODevice::OpenMode mode, const QStringList& pattern, - QWidget* parent, bool warnIfOverwrite, const QString& caption) - { - QString name; - if (mode == QIODevice::ReadOnly) - name = getOpenFileName(path, pattern, parent, caption); - else - name = getSaveFileName(path, pattern, parent, caption); - if (name.isEmpty()) - return 0; - f = fileOpen(parent, name, ext, mode, warnIfOverwrite); - return f; - } - diff --git a/muse/muse/widgets/filedialog.h b/muse/muse/widgets/filedialog.h deleted file mode 100644 index cb906e00..00000000 --- a/muse/muse/widgets/filedialog.h +++ /dev/null @@ -1,65 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -class FileDialogButtons; - -//--------------------------------------------------------- -// MFileDialog -//--------------------------------------------------------- - -class MFileDialog : public QFileDialog { - bool showButtons; - QString baseDir; - Q_OBJECT - - public: - MFileDialog(const QString& dir, const QString& filter = QString::null, - QWidget* parent = 0, bool writeFlag = false); - }; - -QString getSaveFileName(const QString& startWidth, const QStringList& filter, - QWidget* parent, const QString& name); -QString getOpenFileName(const QString& startWidth, const QStringList& filter, - QWidget* parent, const QString& name); -QString getImageFileName(const QString& startWith, const QStringList& filter, - QWidget* parent, const QString& name); - -QFile* fileOpen(QWidget*, QString, const QString&, - QIODevice::OpenMode, bool = false); - - -//--------------------------------------------------------- -// MFile -// "Muse" File -//--------------------------------------------------------- - -class MFile { - QFile* f; - QString path; - QString ext; - - public: - MFile(const QString& path, const QString& ext); - ~MFile(); - QFile* open(QIODevice::OpenMode, const QStringList& pattern, - QWidget* parent, - bool warnIfOverwrite, const QString& caption); - }; - diff --git a/muse/muse/widgets/floatlabel.cpp b/muse/muse/widgets/floatlabel.cpp deleted file mode 100644 index 75e81419..00000000 --- a/muse/muse/widgets/floatlabel.cpp +++ /dev/null @@ -1,144 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "doublelabel.h" -#include "utils.h" - -//--------------------------------------------------------- -// DoubleLabel -//--------------------------------------------------------- - -DoubleLabel::DoubleLabel(QWidget* parent, const char* name) - : Dentry(parent, name), _specialText("---") - { - min = 0.0; - max = 1.0; - _precision = 3; - setValue(0.0); - } - -DoubleLabel::DoubleLabel(double _val, double m, double mx, QWidget* parent) - : Dentry(parent), _specialText("---") - { - min = m; - max = mx; - _precision = 3; - setValue(_val); - } - -//--------------------------------------------------------- -// setString -//--------------------------------------------------------- - -bool DoubleLabel::setString(double v) - { - QString s; - if (v < min || v > max) { - setText(_specialText); - return true; - } - s.setNum(v, 'f', _precision); - if (!_suffix.isEmpty()) { - s += " "; - s += _suffix; - } - - setText(s); - return false; - } - -//--------------------------------------------------------- -// setSValue -//--------------------------------------------------------- - -bool DoubleLabel::setSValue(const QString& s) - { - bool ok; - double v = s.toDouble(&ok); - if (ok && (v != val)) { - if (v < min) - v = min; - if (v > max) - v = max; - setValue(v); - emit valueChanged(val, _id); - } - return false; - } - -//--------------------------------------------------------- -// incValue -//--------------------------------------------------------- - -void DoubleLabel::incValue(double) - { - if (val + 1.0 < max) { - setValue(val + 1.0); - emit valueChanged(val, _id); - } - } - -//--------------------------------------------------------- -// decValue -//--------------------------------------------------------- - -void DoubleLabel::decValue(double) - { - if (val - 1.0 > min) { - setValue(val - 1.0); - emit valueChanged(val, _id); - } - } - -//--------------------------------------------------------- -// setPrecision -//--------------------------------------------------------- - -void DoubleLabel::setPrecision(int v) - { - _precision = v; - setString(val); - } - -//--------------------------------------------------------- -// sizeHint -//--------------------------------------------------------- - -QSize DoubleLabel::sizeHint() const - { - QFontMetrics fm = fontMetrics(); - int h = fm.height() + 4; - int n = _precision + 3; -#if 0 - double aval = fabs(val); - if (aval >= 10.0) - ++n; - if (aval >= 100.0) - ++n; - if (aval >= 1000.0) - ++n; - if (aval >= 10000.0) - ++n; - if (aval >= 100000.0) - ++n; -#endif - int w = fm.width(QString("-0.")) + fm.width('0') * n + 6; - return QSize(w, h); - } diff --git a/muse/muse/widgets/floatlabel.h b/muse/muse/widgets/floatlabel.h deleted file mode 100644 index 9f51d7d4..00000000 --- a/muse/muse/widgets/floatlabel.h +++ /dev/null @@ -1,68 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __FLOATLABEL_H__ -#define __FLOATLABEL_H__ - -#include "dentry.h" - -//--------------------------------------------------------- -// FloatLabel -//--------------------------------------------------------- - -class FloatLabel : public Dentry { - Q_PROPERTY(float minValue READ minValue WRITE setMinValue ) - Q_PROPERTY(float maxValue READ maxValue WRITE setMaxValue ) - Q_PROPERTY(QString specialText READ specialText WRITE setSpecialText ) - Q_PROPERTY(QString suffix READ suffix WRITE setSuffix ) - Q_PROPERTY(int precision READ precision WRITE setPrecision ) - - float min, max; - QString _specialText; // text to show if value outside min,max - QString _suffix; - int _precision; - Q_OBJECT - - virtual bool setSValue(const QString&); - virtual bool setString(double val); - virtual void incValue(double); - virtual void decValue(double); - - public: - DoubleLabel(QWidget*, const char* name = 0); - DoubleLabel(double val, double min, double max, QWidget*); - virtual QSize sizeHint() const; - double minValue() const { return min; } - double maxValue() const { return max; } - void setMinValue(double v) { min = v; } - void setMaxValue(double v) { max = v; } - void setRange(double a, double b) { min = a; max = b; } - int precision() const { return _precision; } - void setPrecision(int val); - QString specialText() const { return _specialText; } - void setSpecialText(const QString& s) { - _specialText = s; - update(); - } - QString suffix() const { return _suffix; } - void setSuffix(const QString& s) { _suffix = s; } - }; - -#endif diff --git a/muse/muse/widgets/fontsel.cpp b/muse/muse/widgets/fontsel.cpp deleted file mode 100644 index b0d6c95b..00000000 --- a/muse/muse/widgets/fontsel.cpp +++ /dev/null @@ -1,138 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "icons.h" -#include "fontsel.h" - -//--------------------------------------------------------- -// FontSel -//--------------------------------------------------------- - -FontSel::FontSel(QWidget* parent, const QFont& f, const QString& name) - : QWidget(parent) - { - _font = f; - QHBoxLayout* box = new QHBoxLayout(this); - - cb = new QComboBox(this); - cb->setFixedWidth(80); - cb->addItem(QString("arial")); - cb->addItem(QString("avantgarde")); - cb->addItem(QString("charter")); - cb->addItem(QString("garamond")); - cb->addItem(QString("gillsans")); - cb->addItem(QString("helvetica")); - cb->addItem(QString("times")); - cb->addItem(QString("terminal")); - cb->addItem(QString("utopia")); - cb->addItem(QString("new century schoolbook")); - - QLabel* l1 = new QLabel(tr("Size:"), this); - s1 = new QSpinBox(this); - s1->setRange(8, 48); - - fcb1 = new QToolButton(this); - fcb1->setCheckable(true); - fcb1->setIcon(*boldIcon); - - fcb2 = new QToolButton(this); - fcb2->setCheckable(true); - fcb2->setIcon(*italicIcon); - - fcb3 = new QToolButton(this); - fcb3->setCheckable(true); - fcb3->setIcon(*underlinedIcon); - - QToolButton* pb = new QToolButton(this); - connect(pb, SIGNAL(pressed()), SLOT(fontSelect())); - pb->setText(QString("??")); - - QLabel* l2 = new QLabel(name, this); - - box->addWidget(cb); - box->addSpacing(8); - box->addWidget(l1); - box->addSpacing(5); - box->addWidget(s1); - box->addSpacing(5); - box->addWidget(fcb1); - box->addWidget(fcb2); - box->addWidget(fcb3); - box->addSpacing(2); - box->addWidget(pb); - box->addSpacing(5); - box->addWidget(l2); - box->addStretch(100); - setFixedHeight(18); - setFont(); - } - -//--------------------------------------------------------- -// fontSelect -//--------------------------------------------------------- - -void FontSel::fontSelect() - { - bool ok; - QFont f = QFontDialog::getFont(&ok, _font, this); - if (ok) { - _font = f; - setFont(); - } - } - -//--------------------------------------------------------- -// setFont -//--------------------------------------------------------- - -void FontSel::setFont() - { - s1->setValue(_font.pointSize()); - fcb1->setChecked(_font.weight() == QFont::Bold); - fcb2->setChecked(_font.italic()); - fcb3->setChecked(_font.underline()); - int i; - for (i = 0; i < cb->count(); ++i) { - QString s = cb->itemText(i); - if (s == _font.family()) { - cb->setCurrentIndex(i); - break; - } - } - if (i == cb->count()) { - cb->addItem(_font.family()); - cb->setCurrentIndex(i); - } - } - -//--------------------------------------------------------- -// font -//--------------------------------------------------------- - -const QFont& FontSel::font() - { - _font.setPointSize(s1->value()); - _font.setWeight(fcb1->isChecked() ? QFont::Bold : QFont::Normal); - _font.setItalic(fcb2->isChecked()); - _font.setUnderline(fcb3->isChecked()); - _font.setFamily(cb->currentText()); - return _font; - } - diff --git a/muse/muse/widgets/fontsel.h b/muse/muse/widgets/fontsel.h deleted file mode 100644 index 92d076b6..00000000 --- a/muse/muse/widgets/fontsel.h +++ /dev/null @@ -1,57 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __FONTSEL_H__ -#define __FONTSEL_H__ - -#include "song.h" - -class QFont; -class QSpinBox; -class QToolButton; -class QComboBox; - -//--------------------------------------------------------- -// FontSel -//--------------------------------------------------------- - -class FontSel : public QWidget { - QFont _font; - QSpinBox* s1; - QToolButton* fcb1; - QToolButton* fcb2; - QToolButton* fcb3; - QComboBox* cb; - - Q_OBJECT - - void setFont(); - - private slots: - void fontSelect(); - - public: - FontSel(QWidget* parent, const QFont&, const QString&); - const QFont& font(); - }; - - -#endif - diff --git a/muse/muse/widgets/greendotbutton.h b/muse/muse/widgets/greendotbutton.h deleted file mode 100644 index 84bfab96..00000000 --- a/muse/muse/widgets/greendotbutton.h +++ /dev/null @@ -1,38 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __GREENDOTBUTTON_H__ -#define __GREENDOTBUTTON_H__ - -#include "simplebutton.h" - -//--------------------------------------------------------- -// GreendotButton -//--------------------------------------------------------- - -class GreendotButton : public SimpleButton { - Q_OBJECT - - public: - GreendotButton(QWidget* parent = 0); - }; - -#endif - diff --git a/muse/muse/widgets/intlabel.h b/muse/muse/widgets/intlabel.h deleted file mode 100644 index c8919735..00000000 --- a/muse/muse/widgets/intlabel.h +++ /dev/null @@ -1,56 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __INTLABEL_H__ -#define __INTLABEL_H__ - -#include "nentry.h" - -class QString; - -//--------------------------------------------------------- -// IntLabel -//--------------------------------------------------------- - -class IntLabel : public Nentry { - int min, max, off; - QString suffix; - QString specialValue; - Q_OBJECT - - void init(); - - virtual bool setSValue(const QString&); - virtual bool setString(int val, bool editable = false); - virtual void incValue(int); - virtual void decValue(int); - - signals: - void valueChanged(int); - - public: - IntLabel(int, int, int, QWidget*, int _off = MAXINT, - const QString& = QString(""), int lpos = 0); - void setOff(int v); - void setSuffix(const QString& s) { suffix = s; } - void setSpecialValueText(const QString& s); - }; - -#endif diff --git a/muse/muse/widgets/menutitle.cpp b/muse/muse/widgets/menutitle.cpp deleted file mode 100644 index 0dd7ddab..00000000 --- a/muse/muse/widgets/menutitle.cpp +++ /dev/null @@ -1,50 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "menutitle.h" - -//--------------------------------------------------------- -// MenuTitleItem -//--------------------------------------------------------- - -MenuTitleItem::MenuTitleItem(QString ss) - : s(ss) - { - } - -//--------------------------------------------------------- -// sizeHint -//--------------------------------------------------------- - -QSize MenuTitleItem::sizeHint() - { - return QSize(60, 20); - } - -//--------------------------------------------------------- -// drawItem -//--------------------------------------------------------- - -void MenuTitleItem::paint(QPainter* p, const QColorGroup&, bool, - bool, int x, int y, int w, int h) - { - p->fillRect(x, y, w, h, QBrush(lightGray)); - p->drawText(x, y, w, h, AlignCenter, s); - } diff --git a/muse/muse/widgets/menutitle.h b/muse/muse/widgets/menutitle.h deleted file mode 100644 index f3e85849..00000000 --- a/muse/muse/widgets/menutitle.h +++ /dev/null @@ -1,41 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __MENUTITLE_H__ -#define __MENUTITLE_H__ - -//--------------------------------------------------------- -// MenuTitleItem -//--------------------------------------------------------- - -class MenuTitleItem : public QCustomMenuItem { - QString s; - virtual bool fullSpan() const { return true; } - virtual bool isSeparator() const { return true; } - virtual void paint(QPainter* p, const QColorGroup& cg, bool act, - bool, int, int, int, int); - virtual QSize sizeHint(); - - public: - MenuTitleItem(QString s); - }; - -#endif - diff --git a/muse/muse/widgets/midisync.cpp b/muse/muse/widgets/midisync.cpp deleted file mode 100644 index 7b6f69df..00000000 --- a/muse/muse/widgets/midisync.cpp +++ /dev/null @@ -1,128 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "al/al.h" -#include "midisync.h" -#include "sync.h" - -//--------------------------------------------------------- -// MidiSyncConfig -// Midi Sync Config -//--------------------------------------------------------- - -MidiSyncConfig::MidiSyncConfig(QWidget* parent) - : QDialog(parent) - { - setupUi(this); - connect(okButton, SIGNAL(clicked()), SLOT(ok())); - connect(applyButton, SIGNAL(clicked()), SLOT(apply())); - connect(cancelButton, SIGNAL(clicked()), SLOT(cancel())); - - connect(syncMaster, SIGNAL(toggled(bool)), SLOT(syncMasterChanged(bool))); - connect(syncSlave, SIGNAL(toggled(bool)), SLOT(syncSlaveChanged(bool))); - -// dstDevId->setValue(txDeviceId); -// srcDevId->setValue(rxDeviceId); - - mtcSync->setChecked(genMTCSync); - mcSync->setChecked(genMCSync); - midiMachineControl->setChecked(genMMC); - - acceptMTCCheckbox->setChecked(acceptMTC); - acceptMCCheckbox->setChecked(acceptMC); - acceptMMCCheckbox->setChecked(acceptMMC); - - mtcSyncType->setCurrentIndex(AL::mtcType); - - mtcOffH->setValue(mtcOffset.h()); - mtcOffM->setValue(mtcOffset.m()); - mtcOffS->setValue(mtcOffset.s()); - mtcOffF->setValue(mtcOffset.f()); - mtcOffSf->setValue(mtcOffset.sf()); - - syncSlaveChanged(extSyncFlag); - } - -//--------------------------------------------------------- -// ok Pressed -//--------------------------------------------------------- - -void MidiSyncConfig::ok() - { - apply(); - cancel(); - } - -//--------------------------------------------------------- -// cancel Pressed -//--------------------------------------------------------- - -void MidiSyncConfig::cancel() - { - close(); - } - -//--------------------------------------------------------- -// apply Pressed -//--------------------------------------------------------- - -void MidiSyncConfig::apply() - { -// txDeviceId = dstDevId->value(); -// rxDeviceId = srcDevId->value(); - - genMTCSync = mtcSync->isChecked(); - genMCSync = mcSync->isChecked(); - genMMC = midiMachineControl->isChecked(); - - AL::mtcType = mtcSyncType->currentIndex(); - extSyncFlag = syncSlave->isChecked(); - - mtcOffset.setH(mtcOffH->value()); - mtcOffset.setM(mtcOffM->value()); - mtcOffset.setS(mtcOffS->value()); - mtcOffset.setF(mtcOffF->value()); - mtcOffset.setSf(mtcOffSf->value()); - - acceptMC = acceptMCCheckbox->isChecked(); - acceptMMC = acceptMMCCheckbox->isChecked(); - acceptMTC = acceptMTCCheckbox->isChecked(); - emit syncChanged(); - } - -//--------------------------------------------------------- -// syncMasterChanged -//--------------------------------------------------------- - -void MidiSyncConfig::syncMasterChanged(bool val) - { - syncSlave->setChecked(!val); - } - -//--------------------------------------------------------- -// syncSlaveChanged -//--------------------------------------------------------- - -void MidiSyncConfig::syncSlaveChanged(bool val) - { - syncMaster->setChecked(!val); - } - - diff --git a/muse/muse/widgets/midisync.h b/muse/muse/widgets/midisync.h deleted file mode 100644 index c1db5fdd..00000000 --- a/muse/muse/widgets/midisync.h +++ /dev/null @@ -1,49 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __MIDISYNC_H__ -#define __MIDISYNC_H__ - -#include "ui_midisync.h" - -//--------------------------------------------------------- -// MidiSyncConfig -//--------------------------------------------------------- - -class MidiSyncConfig : public QDialog, private Ui::MidiSyncConfigBase { - Q_OBJECT - - private slots: - void syncMasterChanged(bool); - void syncSlaveChanged(bool); - void ok(); - void cancel(); - void apply(); - - signals: - void syncChanged(); - - public: - MidiSyncConfig(QWidget* parent=0); - MidiSyncConfig(); - }; - -#endif - diff --git a/muse/muse/widgets/midisync.ui b/muse/muse/widgets/midisync.ui deleted file mode 100644 index 6ea9ef1a..00000000 --- a/muse/muse/widgets/midisync.ui +++ /dev/null @@ -1,711 +0,0 @@ - - werner schweer - midi sync -configuration dialog - - MidiSyncConfigBase - - - - 0 - 0 - 530 - 359 - - - - - 4 - 4 - 0 - 0 - - - - MusE: Midi Sync - - - - 9 - - - 6 - - - - - Master - - - true - - - true - - - - 11 - - - 6 - - - - - true - - - Midi Time Code (MTC) - - - - - - - true - - - Midi Clock - - - - - - - true - - - Midi Machine Control (MMC) - - - - - - - 0 - - - 6 - - - - - true - - - - 5 - 0 - 0 - 0 - - - - Id: - - - - - - - true - - - - 5 - 0 - 0 - 0 - - - - device id - - - 127 - - - 0 - - - 127 - - - - - - - Qt::Horizontal - - - QSizePolicy::Preferred - - - - 30 - 20 - - - - - - - - - - - - - Slave - - - true - - - false - - - - 11 - - - 6 - - - - - false - - - accept MTC - - - - - - - false - - - accept Midi Clock - - - - - - - false - - - accept MMC - - - - - - - 0 - - - 6 - - - - - - 5 - 0 - 0 - 0 - - - - Id: - - - - - - - - 5 - 0 - 0 - 0 - - - - device id - - - 127 - - - 0 - - - 127 - - - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 40 - 20 - - - - - - - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 20 - 20 - - - - - - - - Apply - - - - - - - Ok - - - true - - - - - - - Cancel - - - - - - - - - true - - - - 5 - 5 - 0 - 0 - - - - MTC - - - - 9 - - - 6 - - - - - 0 - - - 6 - - - - - - 5 - 0 - 0 - 0 - - - - Type: - - - - - - - - 5 - 0 - 0 - 0 - - - - - 24 - - - - - 25 - - - - - 30D - - - - - 30N - - - - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 407 - 69 - - - - - - - - - - 0 - - - 6 - - - - - Offset: - - - - - - - false - - - hour - - - 23 - - - - - - - h - - - - - - - false - - - minute - - - 59 - - - - - - - m - - - - - - - false - - - second - - - 59 - - - - - - - s - - - - - - - false - - - frame - - - 30 - - - - - - - f - - - - - - - false - - - subframe - - - - - - - - - - - - qPixmapFromMimeSource - - acceptMTCCheckbox - acceptMCCheckbox - mtcSync - mcSync - midiMachineControl - dstDevId - mtcOffH - mtcOffM - mtcOffS - mtcOffF - mtcOffSf - applyButton - okButton - cancelButton - - - - - syncSlave - toggled(bool) - acceptMTCCheckbox - setEnabled(bool) - - - 377 - 79 - - - 341 - 67 - - - - - syncSlave - toggled(bool) - acceptMCCheckbox - setEnabled(bool) - - - 365 - 102 - - - 361 - 94 - - - - - syncSlave - toggled(bool) - acceptMMCCheckbox - setEnabled(bool) - - - 392 - 132 - - - 328 - 121 - - - - - syncSlave - toggled(bool) - srcDevId - setEnabled(bool) - - - 366 - 103 - - - 375 - 147 - - - - - mcSync - toggled(bool) - mcSync - setEnabled(bool) - - - 255 - 94 - - - 255 - 94 - - - - - mtcSync - toggled(bool) - mtcSync - setEnabled(bool) - - - 255 - 67 - - - 255 - 67 - - - - - syncMaster - toggled(bool) - midiMachineControl - setEnabled(bool) - - - 268 - 131 - - - 255 - 121 - - - - - syncMaster - toggled(bool) - dstDevId - setEnabled(bool) - - - 268 - 129 - - - 175 - 147 - - - - - syncMaster - toggled(bool) - mtcSync - setEnabled(bool) - - - 268 - 40 - - - 255 - 67 - - - - - syncMaster - toggled(bool) - GroupBox13 - setEnabled(bool) - - - 53 - 17 - - - 41 - 256 - - - - - diff --git a/muse/muse/widgets/mittransposebase.h b/muse/muse/widgets/mittransposebase.h deleted file mode 100644 index 531cb200..00000000 --- a/muse/muse/widgets/mittransposebase.h +++ /dev/null @@ -1,111 +0,0 @@ -#ifndef MITTRANSPOSEBASE_H -#define MITTRANSPOSEBASE_H - -#include - - -#include -#include -#include -#include -#include -#include -#include -#include -#include "awl/pitchedit.h" -#include -#include - -class Ui_MITTransposeBase -{ -public: - QHBoxLayout *hboxLayout; - QCheckBox *onCheckBox; - QLabel *TextLabel1; - Awl::PitchEdit *triggerKeySpinBox; - QLabel *TextLabel2; - QLabel *transposeLabel; - - void setupUi(QWidget *MITTransposeBase) - { - MITTransposeBase->setObjectName(QString::fromUtf8("MITTransposeBase")); - MITTransposeBase->resize(QSize(423, 50).expandedTo(MITTransposeBase->minimumSizeHint())); - hboxLayout = new QHBoxLayout(MITTransposeBase); - hboxLayout->setSpacing(6); - hboxLayout->setMargin(11); - hboxLayout->setObjectName(QString::fromUtf8("hboxLayout")); - onCheckBox = new QCheckBox(MITTransposeBase); - onCheckBox->setObjectName(QString::fromUtf8("onCheckBox")); - - hboxLayout->addWidget(onCheckBox); - - TextLabel1 = new QLabel(MITTransposeBase); - TextLabel1->setObjectName(QString::fromUtf8("TextLabel1")); - TextLabel1->setAlignment(Qt::AlignVCenter|Qt::AlignRight); - TextLabel1->setIndent(5); - - hboxLayout->addWidget(TextLabel1); - - triggerKeySpinBox = new Awl::PitchEdit(MITTransposeBase); - triggerKeySpinBox->setObjectName(QString::fromUtf8("triggerKeySpinBox")); - - hboxLayout->addWidget(triggerKeySpinBox); - - TextLabel2 = new QLabel(MITTransposeBase); - TextLabel2->setObjectName(QString::fromUtf8("TextLabel2")); - TextLabel2->setAlignment(Qt::AlignVCenter|Qt::AlignRight); - TextLabel2->setIndent(5); - - hboxLayout->addWidget(TextLabel2); - - transposeLabel = new QLabel(MITTransposeBase); - transposeLabel->setObjectName(QString::fromUtf8("transposeLabel")); - QSizePolicy sizePolicy((QSizePolicy::Policy)5, (QSizePolicy::Policy)0); - sizePolicy.setHorizontalStretch(0); - sizePolicy.setVerticalStretch(0); - sizePolicy.setHeightForWidth(transposeLabel->sizePolicy().hasHeightForWidth()); - transposeLabel->setSizePolicy(sizePolicy); - transposeLabel->setFrameShape(QFrame::Panel); - transposeLabel->setLineWidth(2); - transposeLabel->setMargin(2); - transposeLabel->setMidLineWidth(2); - transposeLabel->setAlignment(Qt::AlignVCenter|Qt::AlignRight); - transposeLabel->setIndent(5); - - hboxLayout->addWidget(transposeLabel); - - retranslateUi(MITTransposeBase); - - QMetaObject::connectSlotsByName(MITTransposeBase); - } // setupUi - - void retranslateUi(QWidget *MITTransposeBase) - { - MITTransposeBase->setWindowTitle(QApplication::translate("MITTransposeBase", "MusE: Midi Input Plugin: Transpose", 0, QApplication::UnicodeUTF8)); - onCheckBox->setText(QApplication::translate("MITTransposeBase", "On", 0, QApplication::UnicodeUTF8)); - TextLabel1->setText(QApplication::translate("MITTransposeBase", "TriggerKey", 0, QApplication::UnicodeUTF8)); - TextLabel2->setText(QApplication::translate("MITTransposeBase", "Transpose:", 0, QApplication::UnicodeUTF8)); - transposeLabel->setText(QApplication::translate("MITTransposeBase", "+0", 0, QApplication::UnicodeUTF8)); - Q_UNUSED(MITTransposeBase); - } // retranslateUi - -}; - -namespace Ui { - class MITTransposeBase: public Ui_MITTransposeBase {}; -} // namespace Ui - -class MITTransposeBase : public QWidget, public Ui::MITTransposeBase -{ - Q_OBJECT - -public: - MITTransposeBase(QWidget* parent = 0, const char* name = 0, Qt::WFlags fl = 0); - ~MITTransposeBase(); - -protected slots: - virtual void languageChange(); - -}; - -#endif // MITTRANSPOSEBASE_H diff --git a/muse/muse/widgets/mittransposebase.ui b/muse/muse/widgets/mittransposebase.ui deleted file mode 100644 index c1aad75a..00000000 --- a/muse/muse/widgets/mittransposebase.ui +++ /dev/null @@ -1,112 +0,0 @@ - - - - - MITTransposeBase - - - - 0 - 0 - 423 - 50 - - - - MusE: Midi Input Plugin: Transpose - - - - 11 - - - 6 - - - - - On - - - - - - - TriggerKey - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 5 - - - - - - - - - - Transpose: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 5 - - - - - - - - 5 - 0 - 0 - 0 - - - - QFrame::Panel - - - 2 - - - 2 - - - +0 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 2 - - - 5 - - - - - - - qPixmapFromMimeSource - - - Awl::PitchEdit - QWidget -
awl::pitchedit.h
- 1 - -
-
- - awl/pitchedit.h - - - -
diff --git a/muse/muse/widgets/mixdowndialog.cpp b/muse/muse/widgets/mixdowndialog.cpp deleted file mode 100644 index ac517d30..00000000 --- a/muse/muse/widgets/mixdowndialog.cpp +++ /dev/null @@ -1,133 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "al/al.h" -#include "mixdowndialog.h" -#include "globals.h" -#include "wave.h" -#include "song.h" -#include "gconfig.h" - -//--------------------------------------------------------- -// sndFileOpen -// sf - old soundfile, used to preset file parameters -//--------------------------------------------------------- - -SndFile* getSndFile(SndFile* sf, QWidget* parent) - { - MixdownFileDialog* dialog = new MixdownFileDialog(sf, parent); - dialog->exec(); - SndFile* sndFile = dialog->sndFile(); - delete dialog; - return sndFile; - } - -//--------------------------------------------------------- -// MixdownFileDialog -//--------------------------------------------------------- - -MixdownFileDialog::MixdownFileDialog(SndFile* _sf, QWidget* parent) - : QDialog(parent) - { - setupUi(this); - sf = 0; - connect(buttonPath, SIGNAL(clicked()), SLOT(fdialog())); - if (_sf) { - int channels = _sf->channels(); - int format = _sf->format(); - switch(channels) { - case 1: channels = 1; break; - case 2: channels = 0; break; - case 6: channels = 2; break; - } - editPath->setText(_sf->finfo()->filePath()); - comboChannel->setCurrentIndex(channels); - comboFormat->setCurrentIndex(format); - } - else { - // create unique mixdown file path - QString path = QDir::homePath() + "/" + config.projectPath + "/" + song->projectPath(); - - QDir dir(path); - for (int i = 1; i < 1000; ++i) { - QString fp = QString("md%2.wav").arg(i); - if (!dir.exists(fp)) { - path = dir.filePath(fp); - break; - } - } - editPath->setText(path); - } - } - -//--------------------------------------------------------- -// accept -//--------------------------------------------------------- - -void MixdownFileDialog::accept() - { - QString oldpath; - unsigned channel = comboChannel->currentIndex(); - unsigned format = comboFormat->currentIndex(); - switch (channel) { - case 0: channel = 2; break; - case 1: channel = 1; break; - case 2: channel = 6; break; // not implemented! - } - switch (format) { - case 0: // 16 bit wave - format = SF_FORMAT_WAV | SF_FORMAT_PCM_16; - break; - case 1: // 24 bit wave - format = SF_FORMAT_WAV | SF_FORMAT_PCM_24; - break; - case 2: // 32 bit float wave - format = SF_FORMAT_WAV | SF_FORMAT_FLOAT; - break; - } - QString path = editPath->text(); - if (path.isEmpty()) { - sf = 0; - reject(); - return; - } - if (path.right(4) != ".wav") - path += ".wav"; - sf = new SndFile(path); - sf->setFormat(format, channel, AL::sampleRate); - done(1); - } - -//--------------------------------------------------------- -// fdialog -//--------------------------------------------------------- - -void MixdownFileDialog::fdialog() - { - QString path = QFileDialog::getSaveFileName( - this, - tr("MusE: set mixdown file name"), - editPath->text(), - tr("Wave Files (*.wav);;All Files (*)") - ); - if (!path.isEmpty()) - editPath->setText(path); - } - diff --git a/muse/muse/widgets/mixdowndialog.h b/muse/muse/widgets/mixdowndialog.h deleted file mode 100644 index 58d1b970..00000000 --- a/muse/muse/widgets/mixdowndialog.h +++ /dev/null @@ -1,48 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __MIXDOWNDIALOG_H__ -#define __MIXDOWNDIALOG_H__ - -#include "ui_mixdowndialog.h" - -class SndFile; - -extern SndFile* getSndFile(SndFile* sf, QWidget* parent); - -//--------------------------------------------------------- -// MixdownFileDialog -//--------------------------------------------------------- - -class MixdownFileDialog : public QDialog, private Ui::MixdownFileDialogBase { - Q_OBJECT - SndFile* sf; - - private slots: - void fdialog(); - virtual void accept(); - - public: - MixdownFileDialog(SndFile* f, QWidget* parent = 0); - SndFile* sndFile() { return sf; } - }; - -#endif - diff --git a/muse/muse/widgets/mixdowndialog.ui b/muse/muse/widgets/mixdowndialog.ui deleted file mode 100644 index c1c3d4fa..00000000 --- a/muse/muse/widgets/mixdowndialog.ui +++ /dev/null @@ -1,212 +0,0 @@ - - MixdownFileDialogBase - - - - 0 - 0 - 381 - 116 - - - - MusE: Set Mixdown Wavefile - - - true - - - - 11 - - - 6 - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 20 - 20 - - - - - - - - &OK - - - true - - - true - - - - - - - &Cancel - - - true - - - - - - - - - File Path - - - - - - - Channel - - - - - - - 0 - - - 6 - - - - - - - - - - - :/xpm/fileopen.png - - - - - - - - - - Stereo - - - - - Mono - - - - - 5.1 - - - - - - - - - wav,16 Bit - - - - - wav, 24 Bit - - - - - wav, 32 Bit (float) - - - - - - - - Format - - - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 20 - 20 - - - - - - - - - - - - - buttonOk - clicked() - MixdownFileDialogBase - accept() - - - 248 - 93 - - - 99 - 89 - - - - - buttonCancel - clicked() - MixdownFileDialogBase - reject() - - - 318 - 94 - - - 170 - 105 - - - - - diff --git a/muse/muse/widgets/noteinfo.cpp b/muse/muse/widgets/noteinfo.cpp deleted file mode 100644 index 9ae02ab0..00000000 --- a/muse/muse/widgets/noteinfo.cpp +++ /dev/null @@ -1,207 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "noteinfo.h" -#include "song.h" -#include "globals.h" -#include "awl/posedit.h" -#include "awl/pitchedit.h" - -//--------------------------------------------------- -// NoteInfo -// ToolBar -// Start, Len, Note, Velo on, Velo off, Channel -//--------------------------------------------------- - -NoteInfo::NoteInfo(QMainWindow* parent) - : QToolBar(tr("Note Info"), parent) - { - deltaMode = false; - - QLabel* label = new QLabel(tr("Start")); - label->setAlignment(Qt::AlignRight | Qt::AlignVCenter); - label->setIndent(3); - addWidget(label); - - selTime = new Awl::PosEdit; - selTime->setFixedHeight(24); - addWidget(selTime); - - label = new QLabel(tr("Len"), this); - label->setAlignment(Qt::AlignRight | Qt::AlignVCenter); - label->setIndent(3); - addWidget(label); - - selLen = new QSpinBox(this); - selLen->setRange(0, 100000); - selLen->setFixedHeight(24); - addWidget(selLen); - - label = new QLabel(tr("Pitch"), this); - label->setAlignment(Qt::AlignRight | Qt::AlignVCenter); - label->setIndent(3); - addWidget(label); - selPitch = new Awl::PitchEdit(this); - selPitch->setFixedHeight(24); - addWidget(selPitch); - - label = new QLabel(tr("Velo On"), this); - label->setAlignment(Qt::AlignRight | Qt::AlignVCenter); - label->setIndent(3); - addWidget(label); - selVelOn = new QSpinBox(this); - selVelOn->setRange(0, 127); - selVelOn->setFixedHeight(24); - addWidget(selVelOn); - - label = new QLabel(tr("Velo Off"), this); - label->setAlignment(Qt::AlignRight | Qt::AlignVCenter); - label->setIndent(3); - addWidget(label); - selVelOff = new QSpinBox(this); - selVelOff->setRange(0, 127); - selVelOff->setFixedHeight(24); - addWidget(selVelOff); - - connect(selLen, SIGNAL(valueChanged(int)), SLOT(lenChanged(int))); - connect(selPitch, SIGNAL(valueChanged(int)), SLOT(pitchChanged(int))); - connect(selVelOn, SIGNAL(valueChanged(int)), SLOT(velOnChanged(int))); - connect(selVelOff, SIGNAL(valueChanged(int)), SLOT(velOffChanged(int))); - connect(selTime, SIGNAL(valueChanged(const Pos&)), SLOT(timeChanged(const Pos&))); - } - -//--------------------------------------------------------- -// setDeltaMode -//--------------------------------------------------------- - -void NoteInfo::setDeltaMode(bool val) - { - deltaMode = val; - selPitch->setDeltaMode(val); - if (val) { - selLen->setRange(-100000, 100000); - selVelOn->setRange(-127, 127); - selVelOff->setRange(-127, 127); - } - else { - selLen->setRange(0, 100000); - selVelOn->setRange(0, 127); - selVelOff->setRange(0, 127); - } - } - -//--------------------------------------------------------- -// lenChanged -//--------------------------------------------------------- - -void NoteInfo::lenChanged(int val) - { - if (!signalsBlocked()) - emit valueChanged(VAL_LEN, val); - } - -//--------------------------------------------------------- -// velOnChanged -//--------------------------------------------------------- - -void NoteInfo::velOnChanged(int val) - { - if (!signalsBlocked()) - emit valueChanged(VAL_VELON, val); - } - -//--------------------------------------------------------- -// velOffChanged -//--------------------------------------------------------- - -void NoteInfo::velOffChanged(int val) - { - if (!signalsBlocked()) - emit valueChanged(VAL_VELOFF, val); - } - -//--------------------------------------------------------- -// pitchChanged -//--------------------------------------------------------- - -void NoteInfo::pitchChanged(int val) - { - if (!signalsBlocked()) - emit valueChanged(VAL_PITCH, val); - } - -//--------------------------------------------------------- -// setValue -//--------------------------------------------------------- - -void NoteInfo::setValue(ValType type, int val) - { - blockSignals(true); - switch(type) { - case VAL_TIME: - selTime->setValue(val); - break; - case VAL_LEN: - selLen->setValue(val); - break; - case VAL_VELON: - selVelOn->setValue(val); - break; - case VAL_VELOFF: - selVelOff->setValue(val); - break; - case VAL_PITCH: - selPitch->setValue(val); - break; - } - blockSignals(false); - } - -//--------------------------------------------------------- -// setValue -//--------------------------------------------------------- - -void NoteInfo::setValues(unsigned tick, int val2, int val3, int val4, - int val5) - { - blockSignals(true); - if (selTime->pos().tick() != tick) - selTime->setValue(tick); - if (selLen->value() != val2) - selLen->setValue(val2); - if (selPitch->value() != val3) - selPitch->setValue(val3); - if (selVelOn->value() != val4) - selVelOn->setValue(val4); - if (selVelOff->value() != val5) - selVelOff->setValue(val5); - blockSignals(false); - } - -//--------------------------------------------------------- -// timeChanged -//--------------------------------------------------------- - -void NoteInfo::timeChanged(const Pos& pos) - { - if (!signalsBlocked()) - emit valueChanged(VAL_TIME, pos.tick()); - } - diff --git a/muse/muse/widgets/noteinfo.h b/muse/muse/widgets/noteinfo.h deleted file mode 100644 index afcb6d1f..00000000 --- a/muse/muse/widgets/noteinfo.h +++ /dev/null @@ -1,68 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __NOTE_INFO_H__ -#define __NOTE_INFO_H__ - -namespace Awl { - class PosEdit; - class PitchEdit; - }; -namespace AL { - class Pos; - } - -using AL::Pos; - -//--------------------------------------------------------- -// NoteInfo -//--------------------------------------------------------- - -class NoteInfo : public QToolBar { - Awl::PosEdit* selTime; - QSpinBox* selLen; - Awl::PitchEdit* selPitch; - QSpinBox* selVelOn; - QSpinBox* selVelOff; - bool deltaMode; - - Q_OBJECT - - public: - enum ValType {VAL_TIME, VAL_LEN, VAL_VELON, VAL_VELOFF, VAL_PITCH }; - NoteInfo(QMainWindow* parent); - void setValues(unsigned, int, int, int, int); - void setDeltaMode(bool); - - private slots: - void lenChanged(int); - void velOnChanged(int); - void velOffChanged(int); - void pitchChanged(int); - void timeChanged(const Pos&); - - public slots: - void setValue(ValType, int); - - signals: - void valueChanged(NoteInfo::ValType, int); - }; -#endif - diff --git a/muse/muse/widgets/outportcombo.cpp b/muse/muse/widgets/outportcombo.cpp deleted file mode 100644 index a3e55adc..00000000 --- a/muse/muse/widgets/outportcombo.cpp +++ /dev/null @@ -1,52 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "outportcombo.h" -#include "song.h" -#include "midioutport.h" - -//--------------------------------------------------------- -// OutportCombo -//--------------------------------------------------------- - -OutportCombo::OutportCombo(QWidget* parent) - : QComboBox(parent) - { - setToolTip(tr("Midi Output Port")); - populate(); - // midiPort names may change, when inserting/deleting syntis - connect(song, SIGNAL(trackAdded(Track*,int)), SLOT(populate())); - connect(song, SIGNAL(trackRemoved(Track*)), SLOT(populate())); - } - -//--------------------------------------------------------- -// populate -//--------------------------------------------------------- - -void OutportCombo::populate() - { - int cur = currentIndex(); - clear(); - MidiOutPortList* mpl = song->midiOutPorts(); - for (iMidiOutPort i = mpl->begin(); i != mpl->end(); ++i) - addItem((*i)->name()); - setCurrentIndex(cur); - } - diff --git a/muse/muse/widgets/outportcombo.h b/muse/muse/widgets/outportcombo.h deleted file mode 100644 index 8a49fc53..00000000 --- a/muse/muse/widgets/outportcombo.h +++ /dev/null @@ -1,39 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __OUTPORTCOMBO_H__ -#define __OUTPORTCOMBO_H__ - -//--------------------------------------------------------- -// OutportCombo -//--------------------------------------------------------- - -class OutportCombo : public QComboBox { - Q_OBJECT - - private slots: - void populate(); - - public: - OutportCombo(QWidget* parent = 0); - }; - -#endif - diff --git a/muse/muse/widgets/quantcombo.cpp b/muse/muse/widgets/quantcombo.cpp deleted file mode 100644 index 89cd27fc..00000000 --- a/muse/muse/widgets/quantcombo.cpp +++ /dev/null @@ -1,80 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "quantcombo.h" - -static int quantTable[] = { - 1, 24, 48, 96, 192, 384, 768, 1536, - 16, 32, 64, 128, 256, 512, 1024, - 36, 72, 144, 288, 576, 1152, 2304 - }; - -static const char* quantStrings[] = { - QT_TR_NOOP("Off"), "64", "32", "16", "8", "4", "2", "1", - "64T", "32T", "16T", "8T", "4T", "2T", "1T", - "64.", "32.", "16.", "8.", "4.", "2.", "1." - }; - -//--------------------------------------------------------- -// QuantCombo -//--------------------------------------------------------- - -QuantCombo::QuantCombo(QWidget* parent) - : QComboBox(parent) - { - for (unsigned i = 0; i < sizeof(quantStrings)/sizeof(*quantStrings); i++) - addItem(tr(quantStrings[i]), i); - connect(this, SIGNAL(activated(int)), SLOT(_quantChanged(int))); - } - -//--------------------------------------------------------- -// _quantChanged -//--------------------------------------------------------- - -void QuantCombo::_quantChanged(int idx) - { - emit quantChanged(quantTable[idx]); - } - -//--------------------------------------------------------- -// quant -//--------------------------------------------------------- - -int QuantCombo::quant() const - { - return quantTable[currentIndex()]; - } - -//--------------------------------------------------------- -// setQuant -//--------------------------------------------------------- - -void QuantCombo::setQuant(int val) - { - for (unsigned i = 0; i < sizeof(quantTable)/sizeof(*quantTable); i++) { - if (val == quantTable[i]) { - setCurrentIndex(i); - return; - } - } - printf("setQuant(%d) not defined\n", val); -abort(); - setCurrentIndex(0); - } diff --git a/muse/muse/widgets/quantcombo.h b/muse/muse/widgets/quantcombo.h deleted file mode 100644 index 6cdfb69d..00000000 --- a/muse/muse/widgets/quantcombo.h +++ /dev/null @@ -1,46 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __QUANTCOMBO_H__ -#define __QUANTCOMBO_H__ - -//--------------------------------------------------------- -// QuantCombo -//--------------------------------------------------------- - -class QuantCombo : public QComboBox { - Q_OBJECT - - private slots: - void _quantChanged(int); - - public slots: - void setQuant(int); - - signals: - void quantChanged(int); - - public: - QuantCombo(QWidget* parent = 0); - int quant() const; - }; - -#endif - diff --git a/muse/muse/widgets/rastercombo.cpp b/muse/muse/widgets/rastercombo.cpp deleted file mode 100644 index f5b3c7e6..00000000 --- a/muse/muse/widgets/rastercombo.cpp +++ /dev/null @@ -1,82 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "rastercombo.h" - -static int rasterTable[] = { - //------ 8 4 2 - 1, 6, 12, 24, 48, 96, 192, 384, 768, 1536, - 4, 8, 16, 32, 64, 128, 256, 512, 1024, - 9, 18, 36, 72, 144, 288, 576, 1152, 2304 - }; - -static const char* rasterStrings[] = { - QT_TR_NOOP("Off"), "3pp", "6pp", "64", "32", "16", "8", "4", "2", "1", - "2pp", "5pp", "64T", "32T", "16T", "8T", "4T", "2T", "1T", - "4pp", "7pp", "64.", "32.", "16.", "8.", "4.", "2.", "1." - }; - -//--------------------------------------------------------- -// RasterCombo -//--------------------------------------------------------- - -RasterCombo::RasterCombo(QWidget* parent) - : QComboBox(parent) - { - for (unsigned i = 0; i < sizeof(rasterStrings)/sizeof(*rasterStrings); i++) - addItem(tr(rasterStrings[i]), i); - connect(this, SIGNAL(activated(int)), SLOT(_rasterChanged(int))); - } - -//--------------------------------------------------------- -// _rasterChanged -//--------------------------------------------------------- - -void RasterCombo::_rasterChanged(int idx) - { - emit rasterChanged(rasterTable[idx]); - } - -//--------------------------------------------------------- -// raster -//--------------------------------------------------------- - -int RasterCombo::raster() const - { - return rasterTable[currentIndex()]; - } - -//--------------------------------------------------------- -// setRaster -//--------------------------------------------------------- - -void RasterCombo::setRaster(int val) - { - for (unsigned i = 0; i < sizeof(rasterTable)/sizeof(*rasterTable); i++) { - if (val == rasterTable[i]) { - setCurrentIndex(i); - return; - } - } - printf("setRaster(%d) not defined\n", val); - setCurrentIndex(0); - } - - diff --git a/muse/muse/widgets/rastercombo.h b/muse/muse/widgets/rastercombo.h deleted file mode 100644 index 9ae48ba6..00000000 --- a/muse/muse/widgets/rastercombo.h +++ /dev/null @@ -1,46 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __RASTERCOMBO_H__ -#define __RASTERCOMBO_H__ - -//--------------------------------------------------------- -// RasterCombo -//--------------------------------------------------------- - -class RasterCombo : public QComboBox { - Q_OBJECT - - private slots: - void _rasterChanged(int); - - public slots: - void setRaster(int); - - signals: - void rasterChanged(int); - - public: - RasterCombo(QWidget* parent = 0); - int raster() const; - }; - -#endif - diff --git a/muse/muse/widgets/recordbutton.h b/muse/muse/widgets/recordbutton.h deleted file mode 100644 index 9b30de01..00000000 --- a/muse/muse/widgets/recordbutton.h +++ /dev/null @@ -1,38 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __RECORDBUTTON_H__ -#define __RCORDBUTTON_H__ - -#include "simplebutton.h" - -//--------------------------------------------------------- -// RecordButton -//--------------------------------------------------------- - -class RecordButton : public SimpleButton { - Q_OBJECT - - public: - RecordButton(QWidget* parent = 0); - }; - -#endif - diff --git a/muse/muse/widgets/shortcutcapturedialog.cpp b/muse/muse/widgets/shortcutcapturedialog.cpp deleted file mode 100644 index dab3330f..00000000 --- a/muse/muse/widgets/shortcutcapturedialog.cpp +++ /dev/null @@ -1,97 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2003 Mathias Lundgren (lunar_shuttle@users.sourceforge.net) -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "shortcutcapturedialog.h" -#include "shortcuts.h" - -//--------------------------------------------------------- -// ShortcutCaptureDialog -//--------------------------------------------------------- - -ShortcutCaptureDialog::ShortcutCaptureDialog(Shortcut* _s, QWidget* parent) - : QDialog(parent) - { - setupUi(this); - s = _s; - - oshrtLabel->setText(s->key.toString(QKeySequence::NativeText)); - connect(clearButton, SIGNAL(clicked()), SLOT(clearClicked())); - clearClicked(); - grabKeyboard(); - } - -//--------------------------------------------------------- -// ShortcutCaptureDialog -//--------------------------------------------------------- - -ShortcutCaptureDialog::~ShortcutCaptureDialog() - { - releaseKeyboard(); - } - -//--------------------------------------------------------- -// keyPressEvent -//--------------------------------------------------------- - -void ShortcutCaptureDialog::keyPressEvent(QKeyEvent* e) - { - if (key.count() >= 4) - return; - int k = e->key(); - if (k == 0 || k == Qt::Key_Shift || k == Qt::Key_Control || - k == Qt::Key_Meta || k == Qt::Key_Alt || k == Qt::Key_AltGr - || k == Qt::Key_CapsLock || k == Qt::Key_NumLock - || k == Qt::Key_ScrollLock) - return; - - k += e->modifiers(); - switch(key.count()) { - case 0: key = QKeySequence(k); break; - case 1: key = QKeySequence(key[0], k); break; - case 2: key = QKeySequence(key[0], key[1], k); break; - case 3: key = QKeySequence(key[0], key[1], key[2], k); break; - } - - // Check against conflicting shortcuts - bool conflict = false; - QString msgString; - foreach (Shortcut* ss, shortcuts) { - if ((s != ss) && (ss->key == key) - && (ss->type & (s->type | GLOBAL_SHRT | INVIS_SHRT))) { - msgString = tr("Shortcut conflicts with ") + ss->descr; - conflict = true; - break; - } - } - messageLabel->setText(msgString); - okButton->setEnabled(conflict == false); - nshrtLabel->setText(key.toString(QKeySequence::NativeText)); - } - -//--------------------------------------------------------- -// clearClicked -//--------------------------------------------------------- - -void ShortcutCaptureDialog::clearClicked() - { - nshrtLabel->setText(tr("Undefined")); - key = 0; - } - diff --git a/muse/muse/widgets/shortcutcapturedialog.h b/muse/muse/widgets/shortcutcapturedialog.h deleted file mode 100644 index 4c2b5b6c..00000000 --- a/muse/muse/widgets/shortcutcapturedialog.h +++ /dev/null @@ -1,52 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2003 Mathias Lundgren -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -// -// C++ Interface: shortcutcapturedialog -// -// Description: -// Dialog window for capturing keyboard shortcuts -// - -#include "shortcuts.h" -#include "filedialog.h" -#include "ui_shortcutcapturedialog.h" - -//--------------------------------------------------------- -// ShortcutCaptureDialog -//--------------------------------------------------------- - -class ShortcutCaptureDialog : public QDialog, public Ui::ShortcutCaptureDialogBase - { - Q_OBJECT - private: - Shortcut* s; - void keyPressEvent(QKeyEvent* e); - QKeySequence key; - - private slots: - void clearClicked(); - - public: - ShortcutCaptureDialog(Shortcut* s = 0, QWidget* parent = 0); - ~ShortcutCaptureDialog(); - QKeySequence getKey() const { return key; } - }; - diff --git a/muse/muse/widgets/shortcutcapturedialog.ui b/muse/muse/widgets/shortcutcapturedialog.ui deleted file mode 100644 index 0df2338f..00000000 --- a/muse/muse/widgets/shortcutcapturedialog.ui +++ /dev/null @@ -1,162 +0,0 @@ - - ShortcutCaptureDialogBase - - - - 0 - 0 - 461 - 214 - - - - Enter shortcut sequence - - - true - - - - 9 - - - 6 - - - - - Press up to 4 keys to enter shortcut sequence! - - - Qt::AlignCenter - - - - - - - - - - - - - - Old shortcut: - - - - - - - true - - - - - - - New shortcut: - - - - - - - true - - - - - - - 0 - - - 6 - - - - - Clear - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - false - - - OK - - - - - - - - - - Cancel - - - - - - - - - - - - qPixmapFromMimeSource - - - - okButton - clicked() - ShortcutCaptureDialogBase - accept() - - - 337 - 189 - - - 242 - 194 - - - - - cancelButton - clicked() - ShortcutCaptureDialogBase - reject() - - - 425 - 194 - - - 350 - 153 - - - - - diff --git a/muse/muse/widgets/shortcutconfig.cpp b/muse/muse/widgets/shortcutconfig.cpp deleted file mode 100644 index 025f1494..00000000 --- a/muse/muse/widgets/shortcutconfig.cpp +++ /dev/null @@ -1,167 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2003 Mathias Lundgren (lunar_shuttle@users.sourceforge.net) -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "shortcutconfig.h" -#include "shortcutcapturedialog.h" -#include "shortcuts.h" - -//--------------------------------------------------------- -// ShortcutConfig -//--------------------------------------------------------- - -ShortcutConfig::ShortcutConfig(QWidget* parent) - : QDialog(parent) - { - setupUi(this); - connect(cgListView, SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), - this, SLOT(categorySelChanged(QTreeWidgetItem*))); - connect(scListView, SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), - this, SLOT(shortcutSelChanged(QTreeWidgetItem*))); - connect(defineButton, SIGNAL(pressed()), this, SLOT(assignShortcut())); - connect(clearButton, SIGNAL(pressed()), this, SLOT(clearShortcut())); - connect(applyButton, SIGNAL(pressed()), this, SLOT(assignAll())); - connect(scListView, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), this, SLOT(assignShortcut())); - - current_category = ALL_SHRT; -//TD cgListView->setSorting(SHRT_CATEGORY_COL, -1); - _config_changed = false; - - //Fill up category listview: - for (int i=0; i < SHRT_NUM_OF_CATEGORIES; i++) { - QTreeWidgetItem* newItem = new QTreeWidgetItem; - newItem->setText(SHRT_CATEGORY_COL, tr(shortcut_category[i].name)); - newItem->setData(0, Qt::UserRole, i); - cgListView->addTopLevelItem(newItem); - } - updateSCListView(); - } - -//--------------------------------------------------------- -// updateSCListView -//--------------------------------------------------------- - -void ShortcutConfig::updateSCListView(int category) - { - scListView->clear(); - foreach (Shortcut* s, shortcuts) { - if (s && (s->type & category)) { - QTreeWidgetItem* newItem; - newItem = new QTreeWidgetItem; - newItem->setText(SHRT_DESCR_COL, tr(s->descr)); - QKeySequence seq = s->key; - newItem->setText(SHRT_SHRTCUT_COL, s->key.toString(QKeySequence::NativeText)); - newItem->setData(0, Qt::UserRole, s->xml); - scListView->addTopLevelItem(newItem); - } - } - } - -//--------------------------------------------------------- -// assignShortcut -//--------------------------------------------------------- - -void ShortcutConfig::assignShortcut() - { - QTreeWidgetItem* active = scListView->currentItem(); - Shortcut* s = shortcuts[active->data(0, Qt::UserRole).toString()]; - ShortcutCaptureDialog sc(s, this); - if (sc.exec()) { - s->key = sc.getKey(); - active->setText(SHRT_SHRTCUT_COL, s->key.toString(QKeySequence::NativeText)); - _config_changed = true; - } - clearButton->setEnabled(true); - } - -//--------------------------------------------------------- -// clearShortcut -//--------------------------------------------------------- - -void ShortcutConfig::clearShortcut() - { - QTreeWidgetItem* active = scListView->currentItem(); - Shortcut* s = shortcuts[active->data(0, Qt::UserRole).toString()]; - s->key = 0; - active->setText(SHRT_SHRTCUT_COL, ""); - clearButton->setEnabled(false); - _config_changed = true; - } - -//--------------------------------------------------------- -// categorySelChanged -//--------------------------------------------------------- - -void ShortcutConfig::categorySelChanged(QTreeWidgetItem* i) - { - int idx = i->data(0, Qt::UserRole).toInt(); - current_category = shortcut_category[idx].id_flag; - updateSCListView(current_category); - } - -//--------------------------------------------------------- -// shortcutSelChanged -//--------------------------------------------------------- - -void ShortcutConfig::shortcutSelChanged(QTreeWidgetItem* active) - { - defineButton->setEnabled(active != 0); - if (active == 0) { - clearButton->setEnabled(false); - return; - } - Shortcut* s = shortcuts[active->data(0, Qt::UserRole).toString()]; - clearButton->setEnabled(s && !s->key.isEmpty()); - } - -//--------------------------------------------------------- -// closeEvent -//--------------------------------------------------------- - -void ShortcutConfig::closeEvent(QCloseEvent*) - { - done(_config_changed); - } - -//--------------------------------------------------------- -// assignAll -//--------------------------------------------------------- - -void ShortcutConfig::assignAll() - { - foreach(QWidget* w, QApplication::allWidgets()) { - foreach(QAction* a, w->actions()) { - QVariant v(a->data()); - if (v.type() == QVariant::String) { - QString name = v.toString(); - foreach (Shortcut* s, shortcuts) { - if (s->xml == name) { - if (a->shortcut() != s->key) { - printf("shortcut <%s> changed\n", s->xml); - a->setShortcuts(QList()); - a->setShortcut(s->key); - } - } - } - } - } - } - done(_config_changed); - } - diff --git a/muse/muse/widgets/shortcutconfig.h b/muse/muse/widgets/shortcutconfig.h deleted file mode 100644 index 0e9e24b2..00000000 --- a/muse/muse/widgets/shortcutconfig.h +++ /dev/null @@ -1,50 +0,0 @@ -// -// C++ Interface: shortcutconfig -// -// Description: -// Dialog for configuring keyboard shortcuts -// -// Author: Mathias Lundgren , (C) 2003 -// -// Copyright: Mathias Lundgren (lunar_shuttle@users.sourceforge.net) (C) 2003 -// -// -#ifndef __SHORTCUTCONFIG_H -#define __SHORTCUTCONFIG_H - -#include "ui_shortcutconfig.h" -#include "shortcuts.h" - -#define SHRT_CATEGORY_COL 0 -enum { - SHRT_DESCR_COL = 0, - SHRT_SHRTCUT_COL - }; - -//--------------------------------------------------------- -// ShortcutConfig -//--------------------------------------------------------- - -class ShortcutConfig : public QDialog, public Ui::ShortcutConfigBase { - Q_OBJECT - private: - int current_category; - void updateSCListView(int category); - void updateSCListView() { updateSCListView(current_category); } - void closeEvent(QCloseEvent *e); - - private slots: - void categorySelChanged(QTreeWidgetItem*); - void shortcutSelChanged(QTreeWidgetItem*); - void assignShortcut(); - void clearShortcut(); - void assignAll(); - - public: - ShortcutConfig(QWidget* parent = 0); - bool _config_changed; - static const shortcut_cg shortcut_category[]; - }; - -#endif - diff --git a/muse/muse/widgets/shortcutconfig.ui b/muse/muse/widgets/shortcutconfig.ui deleted file mode 100644 index 901e2cac..00000000 --- a/muse/muse/widgets/shortcutconfig.ui +++ /dev/null @@ -1,180 +0,0 @@ - - ShortcutConfigBase - - - - 0 - 0 - 661 - 403 - - - - Configure Keyboard Shortcuts - - - true - - - - 9 - - - 6 - - - - - Qt::Horizontal - - - - - 5 - 7 - 1 - 0 - - - - - 105 - 200 - - - - 0 - - - false - - - true - - - 1 - - - - Category - - - - - - - 7 - 7 - 2 - 0 - - - - - 170 - 230 - - - - true - - - 0 - - - false - - - true - - - true - - - true - - - 2 - - - - Description - - - - - Shortcut - - - - - - - - - 0 - - - 6 - - - - - false - - - &Clear - - - Alt+C - - - - - - - false - - - &Define - - - Alt+D - - - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 30 - 21 - - - - - - - - Ok - - - Alt+A - - - - - - - - - qPixmapFromMimeSource - - - diff --git a/muse/muse/widgets/siglabel.cpp b/muse/muse/widgets/siglabel.cpp deleted file mode 100644 index 2f8d3e84..00000000 --- a/muse/muse/widgets/siglabel.cpp +++ /dev/null @@ -1,165 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "siglabel.h" - -#define TIMER1 400 -#define TIMER2 200 -#define TIMEC 7 -#define TIMER3 100 -#define TIMEC2 20 -#define TIMER4 50 - -#include "globals.h" - -//--------------------------------------------------------- -// SigLabel -// edit Signature Values (4/4) -//--------------------------------------------------------- - -SigLabel::SigLabel(QWidget* parent) - : QLabel(parent) - { - z = n = 0; - setFocusPolicy(Qt::NoFocus); - setAlignment(Qt::AlignCenter); - } - -//--------------------------------------------------------- -// mousePressEvent -//--------------------------------------------------------- - -void SigLabel::mousePressEvent(QMouseEvent* event) - { - int button = event->button(); - bool zaehler = event->x() < width() /2; - - int zz = z, nn = n; - switch (button) { - case Qt::LeftButton: - return; - case Qt::MidButton: - incValue(zaehler, false, zz, nn); - break; - case Qt::RightButton: - incValue(zaehler, true, zz, nn); - break; - default: - break; - } - if ((zz != z) || (nn != n)) { - setValue(zz, nn); - emit valueChanged(zz, nn); - } - } - -//--------------------------------------------------------- -// incValue -//--------------------------------------------------------- - -void SigLabel::incValue(bool zaehler, bool up, int& zz, int& nn) - { - if (!up) { - if (zaehler) { - --zz; - if (zz < 1) - zz = 1; - } - else { - switch (nn) { - case 1: break; - case 2: nn = 1; break; - case 4: nn = 2; break; - case 8: nn = 4; break; - case 16: nn = 8; break; - case 32: nn = 16; break; - case 64: nn = 32; break; - case 128: nn = 64; break; - } - } - } - else { - if (zaehler) { - ++zz; - if (zz > 16) - zz = 16; - } - else { - switch (nn) { - case 1: nn = 2; break; - case 2: nn = 4; break; - case 4: nn = 8; break; - case 8: nn = 16; break; - case 16: nn = 32; break; - case 32: nn = 64; break; - case 64: nn = 128; break; - case 128: break; - } - } - } - } - -//--------------------------------------------------------- -// wheelEvent -//--------------------------------------------------------- - -void SigLabel::wheelEvent(QWheelEvent* event) - { - bool zaehler = event->x() < width() /2; - int delta = event->delta(); - int zz = z, nn = n; - - bool inc = delta >= 0; - incValue(zaehler, inc, zz, nn); - if ((zz != z) || (nn != n)) { - setValue(zz, nn); - emit valueChanged(zz, nn); - } - } - -//--------------------------------------------------------- -// setValue -//--------------------------------------------------------- - -void SigLabel::setValue(int a, int b) - { - if (a == z && b == n) - return; - z = a; - n = b; - QString sa; - sa.setNum(a); - - QString sb; - sb.setNum(b); - - QString s = sa + QString("/") + sb; - setText(s); - } - -//--------------------------------------------------------- -// setFrame -//--------------------------------------------------------- - -void SigLabel::setFrame(bool flag) - { - setFrameStyle(flag ? Panel | Sunken : NoFrame); - setLineWidth(2); - } diff --git a/muse/muse/widgets/siglabel.h b/muse/muse/widgets/siglabel.h deleted file mode 100644 index 8ffa317e..00000000 --- a/muse/muse/widgets/siglabel.h +++ /dev/null @@ -1,50 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __SIGLABEL_H__ -#define __SIGLABEL_H__ - -//--------------------------------------------------------- -// SigLabel -// show/edit time signature -//--------------------------------------------------------- - -class SigLabel : public QLabel { - Q_OBJECT - virtual void mousePressEvent(QMouseEvent*); - virtual void wheelEvent(QWheelEvent*); - void incValue(bool zaehler, bool inc, int&, int&); - - protected: - int z, n; - - signals: - void valueChanged(int, int); - - public slots: - virtual void setValue(int, int); - - public: - SigLabel(QWidget* parent = 0); - void value(int& a, int& b) const { a = z; b = n; } - void setFrame(bool); - }; -#endif - diff --git a/muse/muse/widgets/simplebutton.cpp b/muse/muse/widgets/simplebutton.cpp deleted file mode 100644 index 36ab7097..00000000 --- a/muse/muse/widgets/simplebutton.cpp +++ /dev/null @@ -1,65 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "simplebutton.h" -#include "gui.h" - -//--------------------------------------------------------- -// SimpleButton -//--------------------------------------------------------- - -SimpleButton::SimpleButton(const QString& on, const QString& off, QWidget* parent) - : QToolButton(parent) - { - setAutoRaise(true); - QIcon icon; - icon.addFile(on, ICON_SIZE, QIcon::Normal, QIcon::On); - icon.addFile(off, ICON_SIZE, QIcon::Normal, QIcon::Off); - QAction* a = new QAction(this); - a->setIcon(icon); - setDefaultAction(a); - } - -//--------------------------------------------------------- -// SimpleButton -//--------------------------------------------------------- - -SimpleButton::SimpleButton(QPixmap* on, QPixmap* off, QWidget* parent) - : QToolButton(parent) - { - setAutoRaise(true); - QIcon icon(*off); - icon.addPixmap(*on, QIcon::Normal, QIcon::On); - QAction* a = new QAction(this); - a->setIcon(icon); - setDefaultAction(a); - } - -//--------------------------------------------------------- -// SimpleButton -//--------------------------------------------------------- - -SimpleButton::SimpleButton(const QString& s, QWidget* parent) - : QToolButton(parent) - { - setAutoRaise(false); - setText(s); - } - diff --git a/muse/muse/widgets/simplebutton.h b/muse/muse/widgets/simplebutton.h deleted file mode 100644 index 469767ac..00000000 --- a/muse/muse/widgets/simplebutton.h +++ /dev/null @@ -1,41 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __SIMPLE_BUTTON_H__ -#define __SIMPLE_BUTTON_H__ - -//--------------------------------------------------------- -// SimpleButton -//--------------------------------------------------------- - -class SimpleButton : public QToolButton { - Q_OBJECT - - int _id; - virtual QSize minimumSizeHint() const { return QSize(0, 0); } - - public: - SimpleButton(QPixmap* on, QPixmap* off, QWidget* parent = 0); - SimpleButton(const QString& on, const QString& off, QWidget* parent = 0); - SimpleButton(const QString& s, QWidget* parent = 0); - }; - -#endif - diff --git a/muse/muse/widgets/splitter.cpp b/muse/muse/widgets/splitter.cpp deleted file mode 100644 index b95750ab..00000000 --- a/muse/muse/widgets/splitter.cpp +++ /dev/null @@ -1,107 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "splitter.h" -#include "utils.h" -#include "al/xml.h" - -//--------------------------------------------------------- -// SplitterHandle -//--------------------------------------------------------- - -void SplitterHandle::paintEvent(QPaintEvent* ev) - { - QPainter p(this); - QRect r(ev->rect()); - if (orientation() == Qt::Horizontal) { - int x = 0; - int y1 = r.y(); - int y2 = y1 + r.height(); - if (y1 == 0) - y1 = 1; - if (y2 == height()) - y2 = height() - 2; - for (int i = 0; i < splitWidth; ++i) { - p.setPen(lineColor[i]); - p.drawLine(x, y1, x, y2); - ++x; - } - p.setPen(lineColor[0]); - p.drawLine(1, 0, splitWidth - 2, 0); - p.drawLine(1, height()-1, splitWidth - 2, height()-1); - } - else { - int y = 0; - int x1 = r.x(); - int x2 = x1 + r.width(); - for (int i = 0; i < splitWidth; ++i) { - p.setPen(lineColor[i]); - p.drawLine(x1, y, x2, y); - ++y; - } - } - } - -//--------------------------------------------------------- -// Splitter -//--------------------------------------------------------- - -Splitter::Splitter(Qt::Orientation o) - : QSplitter(o) - { - setHandleWidth(splitWidth); - } - -//--------------------------------------------------------- -// writeStatus -//--------------------------------------------------------- - -void Splitter::writeStatus(const char* name, Xml& xml) - { - QList sl = sizes(); - xml.stag(name); - int n = sl.size(); - for (int i = 0; i < n; ++i) { - int n = sl.at(i); - xml.tag("size", n); - } - xml.etag(name); - } - -//--------------------------------------------------------- -// readStatus -//--------------------------------------------------------- - -void Splitter::readStatus(QDomNode node) - { - QList sl; - for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) { - QDomElement e = n.toElement(); - QString tag(e.tagName()); - int i = e.text().toInt(); - if (tag == "size") { - sl.push_back(i); - } - else - printf("Splitter::unknown tag <%s>\n", tag.toLatin1().data()); - } - setSizes(sl); - } - diff --git a/muse/muse/widgets/splitter.h b/muse/muse/widgets/splitter.h deleted file mode 100644 index 238031c3..00000000 --- a/muse/muse/widgets/splitter.h +++ /dev/null @@ -1,62 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __SPLITTER_H__ -#define __SPLITTER_H__ - -namespace AL { - class Xml; - }; - -using AL::Xml; - -//--------------------------------------------------------- -// SplitterHandle -//--------------------------------------------------------- - -class SplitterHandle : public QSplitterHandle { - Q_OBJECT - virtual void paintEvent(QPaintEvent*); - - public: - SplitterHandle(Qt::Orientation o, QSplitter* parent) - : QSplitterHandle(o, parent) { - } - }; - -//--------------------------------------------------------- -// Splitter -//--------------------------------------------------------- - -class Splitter : public QSplitter { - Q_OBJECT - - protected: - virtual QSplitterHandle* createHandle() { - return new SplitterHandle(orientation(), this); - } - public: - Splitter(Qt::Orientation); - void writeStatus(const char* name, Xml&); - void readStatus(QDomNode node); - }; - -#endif - diff --git a/muse/muse/widgets/synthwizardbase.h b/muse/muse/widgets/synthwizardbase.h deleted file mode 100644 index 590ff789..00000000 --- a/muse/muse/widgets/synthwizardbase.h +++ /dev/null @@ -1,58 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'synthwizardbase.ui' -** -** Created: Wed Nov 12 10:38:24 2003 -** by: The User Interface Compiler ($Id: synthwizardbase.h,v 1.6 2005/09/22 20:13:39 wschweer Exp $) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ - -#ifndef SYNTHCONFIGBASE_H -#define SYNTHCONFIGBASE_H - -#include -#include -//Added by qt3to4: -#include -#include -#include - -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QWidget; -class Q3GroupBox; -class Q3ListView; -class Q3ListViewItem; -class QPushButton; - -class SynthConfigBase : public Q3Wizard -{ - Q_OBJECT - -public: - SynthConfigBase( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, Qt::WFlags fl = 0 ); - ~SynthConfigBase(); - - QWidget* WizardPage; - Q3GroupBox* GroupBox2; - Q3ListView* synthList; - QPushButton* addInstance; - Q3GroupBox* GroupBox3; - Q3ListView* instanceList; - QPushButton* removeInstance; - QWidget* WizardPage_2; - -protected: - QVBoxLayout* WizardPageLayout; - QVBoxLayout* GroupBox2Layout; - QHBoxLayout* Layout1; - QVBoxLayout* GroupBox3Layout; - QHBoxLayout* Layout3; - -protected slots: - virtual void languageChange(); - -}; - -#endif // SYNTHCONFIGBASE_H diff --git a/muse/muse/widgets/tb1.cpp b/muse/muse/widgets/tb1.cpp deleted file mode 100644 index 33400420..00000000 --- a/muse/muse/widgets/tb1.cpp +++ /dev/null @@ -1,180 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "tb1.h" -#include "globals.h" -#include "awl/poslabel.h" -#include "awl/pitchlabel.h" -#include "rastercombo.h" -#include "quantcombo.h" - -//--------------------------------------------------------- -// genToolbar -// solo time pitch raster quant -//--------------------------------------------------------- - -Toolbar1::Toolbar1(int r, int q, bool showPitch) - { - solo = new QToolButton; - solo->setText(tr("Solo")); - solo->setCheckable(true); - addWidget(solo); - - //--------------------------------------------------- - // Cursor Position - //--------------------------------------------------- - - QLabel* label = new QLabel; - label->setText(tr("Cursor")); - label->setIndent(3); - addWidget(label); - pos = new Awl::PosLabel; - pos->setFixedHeight(24); - addWidget(pos); - if (showPitch) { - pitch = new Awl::PitchLabel; - pitch->setEnabled(false); - pitch->setFixedHeight(24); - addWidget(pitch); - } - else - pitch = 0; - - //--------------------------------------------------- - // Raster, Quant. - //--------------------------------------------------- - - QLabel* l = new QLabel(tr("Snap")); - l->setIndent(5); - addWidget(l); - raster = new RasterCombo; - addWidget(raster); - - l = new QLabel(tr("Quantize")); - l->setIndent(5); - addWidget(l); - quant = new QuantCombo; - addWidget(quant); - - raster->setFixedHeight(24); - quant->setFixedHeight(24); - - setRaster(r); - setQuant(q); - - //--------------------------------------------------- - // To Menu - //--------------------------------------------------- - - addWidget(new QLabel(tr("To"))); - toList = new QComboBox; - toList->setFixedHeight(24); - addWidget(toList); - toList->addItem(tr("All Events"), RANGE_ALL); - toList->addItem(tr("Looped Ev."), RANGE_LOOPED); - toList->addItem(tr("Selected Ev."), RANGE_SELECTED); - toList->addItem(tr("Looped+Sel."), RANGE_LOOPED | RANGE_SELECTED); - - connect(raster, SIGNAL(rasterChanged(int)), SIGNAL(rasterChanged(int))); - connect(quant, SIGNAL(quantChanged(int)), SIGNAL(quantChanged(int))); - connect(toList, SIGNAL(activated(int)), SIGNAL(toChanged(int))); - connect(solo, SIGNAL(toggled(bool)), SIGNAL(soloChanged(bool))); - pos->setEnabled(false); - } - -//--------------------------------------------------------- -// setApplyTo -//--------------------------------------------------------- - -void Toolbar1::setApplyTo(int val) - { - toList->setCurrentIndex(toList->findData(val)); - } - -//--------------------------------------------------------- -// setPitch -//--------------------------------------------------------- - -void Toolbar1::setPitch(int val) - { - if (pitch) { - pitch->setEnabled(val != -1); - pitch->setPitch(val); - } - } - -//--------------------------------------------------------- -// setInt -//--------------------------------------------------------- - -void Toolbar1::setInt(int val) - { - if (pitch) { - pitch->setEnabled(val != -1); - pitch->setInt(val); - } - } - -//--------------------------------------------------------- -// setTime -//--------------------------------------------------------- - -void Toolbar1::setTime(const AL::Pos& val, bool enable) - { - pos->setValue(val, enable); - } - -//--------------------------------------------------------- -// setRaster -//--------------------------------------------------------- - -void Toolbar1::setRaster(int val) - { - raster->setRaster(val); - } - -//--------------------------------------------------------- -// setQuant -//--------------------------------------------------------- - -void Toolbar1::setQuant(int val) - { - quant->setQuant(val); - } - -//--------------------------------------------------------- -// setSolo -//--------------------------------------------------------- - -void Toolbar1::setSolo(bool flag) - { - solo->setChecked(flag); - } - -//--------------------------------------------------------- -// setPitchMode -//--------------------------------------------------------- - -void Toolbar1::setPitchMode(bool flag) - { - if (pitch) - pitch->setPitchMode(flag); - } - diff --git a/muse/muse/widgets/tb1.h b/muse/muse/widgets/tb1.h deleted file mode 100644 index e10884d2..00000000 --- a/muse/muse/widgets/tb1.h +++ /dev/null @@ -1,71 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __TB1_H__ -#define __TB1_H__ - -namespace Awl { - class PosLabel; - class PitchLabel; - }; -namespace AL { - class Pos; - }; - -class RasterCombo; -class QuantCombo; - -enum { RANGE_ALL, RANGE_SELECTED, RANGE_LOOPED }; - -//--------------------------------------------------------- -// Toolbar1 -//--------------------------------------------------------- - -class Toolbar1 : public QToolBar { - QToolButton* solo; - Awl::PosLabel* pos; - Awl::PitchLabel* pitch; - QuantCombo* quant; - QComboBox* toList; - RasterCombo* raster; - Q_OBJECT - - public slots: - void setTime(const AL::Pos&, bool); - void setPitch(int); - void setInt(int); - void setRaster(int); - void setQuant(int); - - signals: - void rasterChanged(int); - void quantChanged(int); - void soloChanged(bool); - void toChanged(int); - - public: - Toolbar1(int r=96, int q=96, bool showPitch=true); - void setSolo(bool val); - void setPitchMode(bool flag); - void setApplyTo(int); - }; - -#endif - diff --git a/muse/muse/widgets/tools.cpp b/muse/muse/widgets/tools.cpp deleted file mode 100644 index 39d7aa4d..00000000 --- a/muse/muse/widgets/tools.cpp +++ /dev/null @@ -1,100 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "tools.h" -#include "icons.h" -#include "shortcuts.h" - -const char* toolList[TOOLS] = { - "pointer", "pencil", "eraser", "scissor", "glue", - "quantize", "draw", "mute_parts" - }; - -//--------------------------------------------------------- -// EditToolBar -//--------------------------------------------------------- - -EditToolBar::EditToolBar(QMainWindow* parent, int tools) - : QToolBar(tr("Edit Tools")) - { - actionGroup = new QActionGroup(parent); - actionGroup->setExclusive(true); - - bool first = true; - for (unsigned i = 0; i < sizeof(toolList)/sizeof(*toolList); ++i) { - if ((tools & (1 << i))==0) - continue; - QAction* a = getAction(toolList[i], this); - a->setData(1 << i); - a->setCheckable(true); - actionGroup->addAction(a); - addAction(a); - if (first) { - a->setChecked(true); - first = false; - } - } - connect(actionGroup, SIGNAL(triggered(QAction*)), SLOT(toolChanged(QAction*))); - } - -//--------------------------------------------------------- -// toolChanged -//--------------------------------------------------------- - -void EditToolBar::toolChanged(QAction* action) - { - emit toolChanged(action->data().toInt()); - } - -//--------------------------------------------------------- -// set -//--------------------------------------------------------- - -void EditToolBar::set(int id) - { - QList actions = actionGroup->actions(); - int n = actions.size(); - - for (int i = 0; i < n; ++i) { - QAction* action = actions.at(i); - if (action->data().toInt() == id) { - action->setChecked(true); - return; - } - } - } - -//--------------------------------------------------------- -// curTool -//--------------------------------------------------------- - -int EditToolBar::curTool() - { - QList actions = actionGroup->actions(); - int n = actions.size(); - - for (int i = 0; i < n; ++i) { - QAction* a = actions.at(i); - if (a->isChecked()) - return a->data().toInt(); - } - return -1; - } - diff --git a/muse/muse/widgets/tools.h b/muse/muse/widgets/tools.h deleted file mode 100644 index f05e1095..00000000 --- a/muse/muse/widgets/tools.h +++ /dev/null @@ -1,58 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __TOOLS_H__ -#define __TOOLS_H__ - -class Action; - -#include "awl/tcanvas.h" - -const int arrangerTools = PointerTool | PencilTool | RubberTool | DrawTool - | CutTool | GlueTool | MuteTool; - -const int TOOLS = 8; - -//--------------------------------------------------------- -// EditToolBar -//--------------------------------------------------------- - -class EditToolBar : public QToolBar { - Q_OBJECT - QActionGroup* actionGroup; - - private slots: - void toolChanged(QAction* action); - - signals: - void toolChanged(int); - - public slots: - void set(int id); - - public: - EditToolBar(QMainWindow*, int); - int curTool(); - }; - -extern const char* toolList[]; - -#endif - diff --git a/muse/muse/widgets/transformbase.ui b/muse/muse/widgets/transformbase.ui deleted file mode 100644 index 1365a0c9..00000000 --- a/muse/muse/widgets/transformbase.ui +++ /dev/null @@ -1,993 +0,0 @@ - - - - - MidiTransformDialogBase - - - - 0 - 0 - 843 - 659 - - - - MusE: Midi Transformator - - - true - - - - 11 - - - 6 - - - - - 0 - - - 6 - - - - - &New - - - true - - - - - - - &Delete - - - true - - - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 20 - 20 - - - - - - - - &Apply - - - true - - - - - - - &OK - - - true - - - true - - - - - - - &Cancel - - - true - - - - - - - - - 0 - - - 6 - - - - - PresetList - - - - - - - - 3 - 3 - 0 - 0 - - - - - - - - - - Processing - - - Qt::Vertical - - - - 11 - - - 6 - - - - - Event Type - - - - - - - - Keep - - - - - Fix - - - - - - - - - Note - - - - - Poly Pressure - - - - - Control Change - - - - - Aftertouch - - - - - Pitch Bend - - - - - NRPN - - - - - RPN - - - - - - - - - Keep - - - - - Plus - - - - - Minus - - - - - Multiply - - - - - Divide - - - - - Fix - - - - - Value 2 - - - - - Invert - - - - - ScaleMap - - - - - Flip - - - - - Dyn - - - - - Random - - - - - - - - Value 1 - - - - - - - Value 2 - - - - - - - Length - - - - - - - Position - - - - - - - - Keep - - - - - Plus - - - - - Minus - - - - - Multiply - - - - - Divide - - - - - Fix - - - - - Value 1 - - - - - Invert - - - - - Dyn - - - - - Random - - - - - - - - - Keep - - - - - Plus - - - - - Minus - - - - - Multiply - - - - - Divide - - - - - Fix - - - - - - - - 9999 - - - - - - - 9999 - - - - - - - - - - - Keep - - - - - Plus - - - - - Minus - - - - - Multiply - - - - - Divide - - - - - - - - - - - - - - - - - - - - Filter - - - Qt::Vertical - - - - 11 - - - 6 - - - - - - All - - - - - Equal - - - - - Unequal - - - - - - - - - Note - - - - - Control Change - - - - - Sysex - - - - - Poly Pressure - - - - - Aftertouch - - - - - Meta - - - - - - - - Value 2 - - - - - - - Value 1 - - - - - - - Event Type - - - - - - - - Ignore - - - - - Equal - - - - - Unequal - - - - - Higher - - - - - Lower - - - - - Inside - - - - - Outside - - - - - - - - Length - - - - - - - Bar Range - - - - - - - - Ignore - - - - - Equal - - - - - Unequal - - - - - Higher - - - - - Lower - - - - - Inside - - - - - Outside - - - - - - - - - Ignore - - - - - Equal - - - - - Unequal - - - - - Higher - - - - - Lower - - - - - Inside - - - - - Outside - - - - - - - - - Ignore - - - - - Equal - - - - - Unequal - - - - - Higher - - - - - Lower - - - - - Inside - - - - - Outside - - - - - - - - 127 - - - - - - - 127 - - - - - - - 127 - - - - - - - 127 - - - - - - - 127 - - - - - - - 127 - - - - - - - - - - - - - - - - 0 - - - 6 - - - - - Preset - - - Qt::Vertical - - - - 11 - - - 6 - - - - - 0 - - - 6 - - - - - Name: - - - - - - - - - - - - Comment: - - - - - - - - - - - - - Range - - - Qt::Vertical - - - - 11 - - - 6 - - - - - process all events - - - - - - - selected tracks - - - - - - - inside loop - - - - - - - - - - Function - - - Qt::Vertical - - - - 11 - - - 6 - - - - - - Select - - - - - Quantize - - - - - Delete - - - - - Transform - - - - - Insert - - - - - Copy - - - - - Extract - - - - - - - - Quantize Value - - - - - - - - - - - - - - - - - - Q3GroupBox - -
Qt3Support/Q3GroupBox
- 1 - -
- - Q3MultiLineEdit - QWidget -
q3multilineedit.h
- 1 - -
- - ComboQuant - -
comboQuant.h
- 0 - -
- - Q3ListBox - -
q3listbox.h
- 0 - -
-
- - selEventOp - selType - selVal1Op - selVal1a - selVal1b - selVal2Op - selVal2a - selVal2b - selLenOp - selLenA - selLenB - selRangeOp - procEventOp - procType - procVal1Op - procVal1b - procVal2Op - procVal2b - procLenOp - procPosOp - nameEntry - commentEntry - processAll - selectedTracks - insideLoop - funcOp - presetList - buttonNew - buttonDelete - buttonApply - buttonOk - buttonCancel - - - -
diff --git a/muse/muse/widgets/utils.cpp b/muse/muse/widgets/utils.cpp deleted file mode 100644 index b7fd9cee..00000000 --- a/muse/muse/widgets/utils.cpp +++ /dev/null @@ -1,451 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include -#include "utils.h" -#include "icons.h" -#include "gconfig.h" -#include "greendotbutton.h" -#include "recordbutton.h" - -static const int BFONT = 4; // simple button font - -//--------------------------------------------------------- -// RecordButton -//--------------------------------------------------------- - -RecordButton::RecordButton(QWidget* parent) - : SimpleButton(":/xpm/recordOn.svg", ":/xpm/recordOff.svg", parent) - { - setCheckable(true); - setToolTip(tr("record")); - } - -//--------------------------------------------------------- -// GreendotButton -//--------------------------------------------------------- - -GreendotButton::GreendotButton(QWidget* parent) - : SimpleButton(":/xpm/greendot.svg", ":/xpm/darkgreendot.svg", parent) - { - setCheckable(true); - setToolTip(tr("record")); - } - -//--------------------------------------------------------- -// curTime -//--------------------------------------------------------- - -double curTime() - { - struct timeval t; - gettimeofday(&t, 0); - return (double)((double)t.tv_sec + (t.tv_usec / 1000000.0)); - } - -//--------------------------------------------------------- -// dump -// simple debug output -//--------------------------------------------------------- - -void dump(const unsigned char* p, int n) - { - printf("dump %d\n", n); - for (int i = 0; i < n; ++i) { - printf("%02x ", *p++); - if ((i > 0) && (i % 16 == 0) && (i+1 < n)) - printf("\n"); - } - printf("\n"); - } - -//--------------------------------------------------------- -// num2cols -//--------------------------------------------------------- - -int num2cols(int min, int max) - { - int amin = abs(min); - int amax = abs(max); - int l = amin > amax ? amin : amax; - return int(log10(l)) + 1; - } - -//--------------------------------------------------------- -// hLine -//--------------------------------------------------------- - -QFrame* hLine(QWidget* w) - { - QFrame* delim = new QFrame(w); - delim->setFrameStyle(QFrame::HLine | QFrame::Sunken); - return delim; - } - -//--------------------------------------------------------- -// vLine -//--------------------------------------------------------- - -QFrame* vLine(QWidget* w) - { - QFrame* delim = new QFrame(w); - delim->setFrameStyle(QFrame::VLine | QFrame::Sunken); - return delim; - } - -//--------------------------------------------------------- -// bitmap2String -// 5c -> 1-4 1-6 -// -// 01011100 -// -//--------------------------------------------------------- - -QString bitmap2String(int bm) - { - QString s; -//printf("bitmap2string: bm %04x", bm); - if (bm == 0xffff) - s = "all"; - else if (bm == 0) - s = "none"; - else { - bool range = false; - int first = 0; - bool needSpace = false; - bm &= 0xffff; - for (int i = 0; i < 17; ++i) { - if ((1 << i) & bm) { - if (!range) { - range = true; - first = i; - } - } - else { - if (range) { - if (needSpace) - s += " "; - QString ns; - if (first == i-1) - ns.sprintf("%d", first+1); - else - ns.sprintf("%d-%d", first+1, i); - s += ns; - needSpace = true; - } - range = false; - } - } - } -//printf(" -> <%s>\n", s.toLatin1().data()); - return s; - } - -//--------------------------------------------------------- -// string2bitmap -//--------------------------------------------------------- - -int string2bitmap(const QString& str) - { - int val = 0; - QString ss(str.simplified()); - const char* s = ss.toLatin1().data(); -//printf("string2bitmap <%s>\n", s); - - if (s == 0) - return 0; - if (strcmp(s, "all") == 0) - return 0xffff; - if (strcmp(s, "none") == 0) - return 0; -// printf("str2bitmap: <%s> ", str.toLatin1().data()); - int tval = 0; - bool range = false; - int sval = 0; - while (*s == ' ') - ++s; - while (*s) { - if (*s >= '0' && *s <= '9') { - tval *= 10; - tval += *s - '0'; - } - else if (*s == ' ' || *s == ',') { - if (range) { - for (int i = sval-1; i < tval; ++i) - val |= (1 << i); - range = false; - } - else { - val |= (1 << (tval-1)); - } - tval = 0; - } - else if (*s == '-') { - range = true; - sval = tval; - tval = 0; - } - ++s; - } - if (range && tval) { - for (int i = sval-1; i < tval; ++i) - val |= (1 << i); - } - else if (tval) { - val |= (1 << (tval-1)); - } - return val & 0xffff; - } - -//--------------------------------------------------------- -// muteButton -//--------------------------------------------------------- - -SimpleButton* newMuteButton() - { - // SimpleButton* mute = new SimpleButton(parent, muteIconOff, muteIconOn); - SimpleButton* mute = new SimpleButton(QT_TR_NOOP("m")); - mute->setCheckable(true); - mute->setToolTip(QT_TR_NOOP("mute")); - mute->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); - return mute; - } - -//--------------------------------------------------------- -// soloButton -//--------------------------------------------------------- - -SimpleButton* newSoloButton() - { -// SimpleButton* solo = new SimpleButton(parent, soloIconOn, soloIconOff); - SimpleButton* solo = new SimpleButton(QT_TR_NOOP("s")); - solo->setCheckable(true); - solo->setToolTip(QT_TR_NOOP("solo")); - solo->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); - return solo; - } - -//--------------------------------------------------------- -// monitorButton -//--------------------------------------------------------- - -SimpleButton* newMonitorButton() - { - SimpleButton* monitor = new SimpleButton(QT_TR_NOOP("Mo")); - monitor->setCheckable(true); - monitor->setToolTip(QT_TR_NOOP("monitor")); - monitor->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); - return monitor; - } - -//--------------------------------------------------------- -// drumMapButton -//--------------------------------------------------------- - -SimpleButton* newDrumMapButton() - { - SimpleButton* dm = new SimpleButton(QT_TR_NOOP("Dr")); - dm->setCheckable(true); - dm->setToolTip(QT_TR_NOOP("use drum map")); - return dm; - } - -//--------------------------------------------------------- -// newOffButton -//--------------------------------------------------------- - -SimpleButton* newOffButton() - { - SimpleButton* off = new SimpleButton(":/xpm/off.svg", ":/xpm/on.svg"); - off->setCheckable(true); - off->setToolTip(QT_TR_NOOP("off")); - return off; - } - -//--------------------------------------------------------- -// newRecordButton -//--------------------------------------------------------- - -SimpleButton* newRecordButton() - { - SimpleButton* record = new RecordButton(); - record->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); - return record; - } - -//--------------------------------------------------------- -// newAutoReadButton -//--------------------------------------------------------- - -SimpleButton* newAutoReadButton() - { - SimpleButton* ar = new SimpleButton(QT_TR_NOOP("aR")); - ar->setCheckable(true); - ar->setToolTip(QT_TR_NOOP("automation read")); - return ar; - } - -//--------------------------------------------------------- -// newAutoWriteButton -//--------------------------------------------------------- - -SimpleButton* newAutoWriteButton() - { - SimpleButton* aw = new SimpleButton(QT_TR_NOOP("aW")); - aw->setCheckable(true); - aw->setToolTip(QT_TR_NOOP("automation write")); - return aw; - } - -//--------------------------------------------------------- -// syncButton -//--------------------------------------------------------- - -SimpleButton* newSyncButton() - { - SimpleButton* sync = new SimpleButton(QT_TR_NOOP("sync")); - sync->setCheckable(true); - sync->setToolTip(QT_TR_NOOP("send sync events")); - return sync; - } - -//--------------------------------------------------------- -// newMinusButton -//--------------------------------------------------------- - -SimpleButton* newMinusButton() - { - return new SimpleButton(minusIcon, minusIcon); - } - -//--------------------------------------------------------- -// newPlusButton -//--------------------------------------------------------- - -SimpleButton* newPlusButton() - { - SimpleButton* sync = new SimpleButton(plusIcon, plusIcon); - return sync; - } - -//--------------------------------------------------------- -// newStereoButton -//--------------------------------------------------------- - -SimpleButton* newStereoButton() - { - SimpleButton* stereo = new SimpleButton(":/xpm/stereo.svg", ":/xpm/mono.svg"); - stereo->setCheckable(true); - stereo->setToolTip(QT_TR_NOOP("1/2 channel")); - return stereo; - } - -//--------------------------------------------------------- -// newOutRouteButton -//--------------------------------------------------------- - -QToolButton* newOutRouteButton() - { - QToolButton* oR = new QToolButton; - oR->setObjectName("routeButton"); - oR->setFixedHeight(BUTTON_HEIGHT); - oR->setText(QT_TR_NOOP("oR")); - oR->setCheckable(false); - oR->setToolTip(QT_TR_NOOP("output routing")); - oR->setMenu(new QMenu); - oR->setPopupMode(QToolButton::InstantPopup); - oR->menu()->setSeparatorsCollapsible(false); - oR->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - return oR; - } - -//--------------------------------------------------------- -// newInRouteButton -//--------------------------------------------------------- - -QToolButton* newInRouteButton() - { - QToolButton* iR = new QToolButton; - iR->setObjectName("routeButton"); - iR->setFixedHeight(BUTTON_HEIGHT); - iR->setText(QT_TR_NOOP("iR")); - iR->setCheckable(false); - iR->setToolTip(QT_TR_NOOP("input routing")); - iR->setMenu(new QMenu); - iR->setPopupMode(QToolButton::InstantPopup); - iR->menu()->setSeparatorsCollapsible(false); - iR->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - return iR; - } - -//--------------------------------------------------------- -// fatalError -//--------------------------------------------------------- - -void fatalError(const char* s) - { - fprintf(stderr, "%s\n", s); - exit(-1); - } - -//--------------------------------------------------------- -// lineColor -//--------------------------------------------------------- - -QColor lineColor[splitWidth] = { - QColor(0x55, 0x55, 0x52), - QColor(0xc6, 0xc6, 0xbf), - QColor(0xee, 0xee, 0xe6), - QColor(0xff, 0xff, 0xfc), - QColor(0xff, 0xff, 0xff), - QColor(0x55, 0x55, 0x52), - }; - -//--------------------------------------------------------- -// paintHLine -//--------------------------------------------------------- - -void paintHLine(QPainter& p, int x1, int x2, int y) - { - for (int i = 0; i < splitWidth; ++i) { - p.setPen(lineColor[i]); - p.drawLine(x1, y, x2, y); - ++y; - } - } - -//--------------------------------------------------------- -// paintVLine -//--------------------------------------------------------- - -void paintVLine(QPainter& p, int y1, int y2, int x) - { - static QColor color[splitWidth] = { - QColor(0x55, 0x55, 0x52), - QColor(0xff, 0xff, 0xff), - }; - x -= 2; - for (int i = 0; i < 2; ++i) { - p.setPen(color[i]); - p.drawLine(x, y1, x, y2); - ++x; - } - } - diff --git a/muse/muse/widgets/utils.h b/muse/muse/widgets/utils.h deleted file mode 100644 index 360dd28e..00000000 --- a/muse/muse/widgets/utils.h +++ /dev/null @@ -1,58 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#ifndef __UTILS_H__ -#define __UTILS_H__ - -#include "gui.h" - -class SimpleButton; - -extern QString bitmap2String(int bm); -extern int string2bitmap(const QString& str); - -extern int num2cols(int min, int max); -extern QFrame* hLine(QWidget* parent); -extern QFrame* vLine(QWidget* parent); -extern void dump(const unsigned char* p, int n); -extern double curTime(); -extern SimpleButton* newMuteButton(); -extern SimpleButton* newSoloButton(); -extern SimpleButton* newMonitorButton(); -extern SimpleButton* newDrumMapButton(); -extern SimpleButton* newOffButton(); -extern SimpleButton* newRecordButton(); -extern SimpleButton* newAutoWriteButton(); -extern SimpleButton* newAutoReadButton(); -extern SimpleButton* newSyncButton(); -extern SimpleButton* newPlusButton(); -extern SimpleButton* newMinusButton(); -extern SimpleButton* newStereoButton(); -QToolButton* newOutRouteButton(); -QToolButton* newInRouteButton(); - -extern void fatalError(const char*); - -extern QColor lineColor[splitWidth]; -extern void paintHLine(QPainter& p, int x1, int x2, int y); -extern void paintVLine(QPainter& p, int y1, int y2, int x); - -#endif - diff --git a/muse/muse/widgets/wtrackinfobase.ui b/muse/muse/widgets/wtrackinfobase.ui deleted file mode 100644 index da341c74..00000000 --- a/muse/muse/widgets/wtrackinfobase.ui +++ /dev/null @@ -1,166 +0,0 @@ - - - - - WaveTrackInfoBase - - - - 0 - 0 - 129 - 548 - - - - - 3 - 3 - 0 - 0 - - - - - 0 - 0 - - - - - 32767 - 32767 - - - - MusE: TrackInfo - - - - - - - - - - 1 - - - 1 - - - - - - 7 - 0 - 0 - 0 - - - - QFrame::WinPanel - - - QFrame::Raised - - - 1 - - - 0 - - - Track Info - - - Qt::AlignCenter - - - - - - - - 7 - 0 - 0 - 0 - - - - Track Name - - - Track Name - - - - - - - Qt::Vertical - - - QSizePolicy::Expanding - - - - 20 - 30 - - - - - - - - - 5 - 0 - 0 - 0 - - - - Track Delay (ticks) - - - off - - - 1000 - - - -1000 - - - - - - - - 5 - 0 - 0 - 0 - - - - Delay (Frames) - - - Delay - - - - - - - qPixmapFromMimeSource - - iName - - - - diff --git a/muse/muse/xpm/activeoff.svg b/muse/muse/xpm/activeoff.svg deleted file mode 100644 index 8449f988..00000000 --- a/muse/muse/xpm/activeoff.svg +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - diff --git a/muse/muse/xpm/activeon.svg b/muse/muse/xpm/activeon.svg deleted file mode 100644 index c6426e54..00000000 --- a/muse/muse/xpm/activeon.svg +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - diff --git a/muse/muse/xpm/addtrack_addmiditrack.xpm b/muse/muse/xpm/addtrack_addmiditrack.xpm deleted file mode 100644 index cfeb255b..00000000 --- a/muse/muse/xpm/addtrack_addmiditrack.xpm +++ /dev/null @@ -1,26 +0,0 @@ -/* XPM */ -static const char *addtrack_addmiditrack_xpm[]={ -"16 16 7 1", -"a c #000000", -"e c #404000", -". c #800000", -"c c #808080", -"b c #c00000", -"d c #dcdcdc", -"# c #ffffff", -".......##aa###..", -".bbbbb###aaa#bb.", -".b#######aaaa#b.", -".b#######a#aa#b.", -".bc#c#c#dad#a#b.", -".eeeeeeedadeeee.", -".bc#c#c#dad#c#b.", -".bc#c#c#dad#c#b.", -".bc#c#d#dad#c#b.", -".bc#c#aaaad#c#b.", -".eeedaaaaadeeee.", -".bc#caaaaa##c#b.", -".b####aaa#####b.", -".b############b.", -".bbbbbbbbbbbbbb.", -"................"}; diff --git a/muse/muse/xpm/addtrack_audiogroup.xpm b/muse/muse/xpm/addtrack_audiogroup.xpm deleted file mode 100644 index 52a0b082..00000000 --- a/muse/muse/xpm/addtrack_audiogroup.xpm +++ /dev/null @@ -1,35 +0,0 @@ -/* XPM */ -static const char * addtrack_audiogroup_xpm[] = { -"16 16 16 1", -" c None", -". c #800000", -"+ c #C20000", -"@ c #FFFFFF", -"# c #363736", -"$ c #000100", -"% c #616161", -"& c #DBDDDA", -"* c #828282", -"= c #313231", -"- c #222322", -"; c #545454", -"> c #4E4F4E", -", c #323332", -"' c #454645", -") c #2E2F2E", -"................", -".++@@##$$$#@@++.", -".+@@#%@@@@#$&@+.", -".@@##@@@@@@##@@.", -"&&@$@@&@&@@@$@&&", -"@@***@@&@&@***@@", -"@*%$%@&&&@@%$$*@", -"*=-$*@@&&@@;$$$%", -">$#$#@&@&@@,$#$#", -"'$#$#@@&@@@#$#$#", -"*)$$%@@@&@@%$$$*", -"@*%$%@&&&@@*$$*@", -".@***@&&@&@***@.", -".+@@@@@@&&@@@@+.", -".++++++++++++++.", -"................"}; diff --git a/muse/muse/xpm/addtrack_audioinput.xpm b/muse/muse/xpm/addtrack_audioinput.xpm deleted file mode 100644 index 1f5cfd9a..00000000 --- a/muse/muse/xpm/addtrack_audioinput.xpm +++ /dev/null @@ -1,33 +0,0 @@ -/* XPM */ -static const char * addtrack_audioinput_xpm[] = { -"16 16 14 1", -" c None", -". c #800000", -"+ c #DBDDDA", -"@ c #555652", -"# c #FEFFFC", -"$ c #8D8E88", -"% c #9FA19E", -"& c #FCFCF5", -"* c #C2C4C0", -"= c #C20000", -"- c #313230", -"; c #BEBFBA", -"> c #000100", -", c #565856", -".+@##....###@+#.", -".#$%+#####+%$##.", -".+#@%@&##*%@+#=.", -".####++##+####=.", -".######-######=.", -"###+$$+-#+$%+##.", -"#+#$;##-##%$%##.", -"##$;+##-###+$%#.", -".#@###>>>######.", -".#####>>>#+####.", -".=####>>>##+##+#", -".=##+#>>>#######", -".=#+###,###+#,,,", -".=###+#,####,,##", -".==####,,##,,#=.", -"......##,,,,#..."}; diff --git a/muse/muse/xpm/addtrack_audiooutput.xpm b/muse/muse/xpm/addtrack_audiooutput.xpm deleted file mode 100644 index 9b3780c6..00000000 --- a/muse/muse/xpm/addtrack_audiooutput.xpm +++ /dev/null @@ -1,44 +0,0 @@ -/* XPM */ -static const char * addtrack_audiooutput_xpm[] = { -"16 16 25 1", -" c None", -". c #800000", -"+ c #FEFFFC", -"@ c #C20000", -"# c #DBDDDA", -"$ c #656664", -"% c #FDF7F6", -"& c #545654", -"* c #626361", -"= c #767775", -"- c #000100", -"; c #7B7C7A", -"> c #7C7D7A", -", c #838481", -"' c #D8D9D7", -") c #CFD0CE", -"! c #D6D8D5", -"~ c #FBFCF9", -"{ c #C0C1BE", -"] c #E7E8E5", -"^ c #F3F4F1", -"/ c #B7B8B6", -"( c #F8FEFF", -"_ c #B4B5B3", -": c #B3B0AF", -"................", -".+@@@@@@@@@@@@@.", -"##+$$$$$$$$$$#@.", -"$$$$++#++++#$$+.", -"$++++++++++%#$#.", -"++++++&*&++%=$+.", -"##+&*&---;>,=++.", -".++'''---)!=~+#.", -".@++##{{'##=#++.", -".@#+%+#+]-;=+++.", -".@++++%^---+++@.", -".@++++^---/++(@.", -".@++++*--_%++%@.", -".@+++&-:_++++(@.", -".@@@#-#%++@@@@@.", -"....+#+........."}; diff --git a/muse/muse/xpm/addtrack_auxsend.xpm b/muse/muse/xpm/addtrack_auxsend.xpm deleted file mode 100644 index d3528418..00000000 --- a/muse/muse/xpm/addtrack_auxsend.xpm +++ /dev/null @@ -1,28 +0,0 @@ -/* XPM */ -static const char * addtrack_auxsend_xpm[] = { -"16 16 9 1", -" c None", -". c #FFFFFF", -"+ c #F4F4F4", -"@ c #9FA19E", -"# c #797D7C", -"$ c #DEDFDE", -"% c #000000", -"& c #C9CAC8", -"* c #F1F1F1", -".+@..........@+.", -"+#$.+@....@..$#+", -"#%$+#$....$#.$%#", -"%&.#%$....$%#.&%", -"%$+%........%.$%", -"%$#%.$@..@$.%#$%", -"%$%$.#$..$#.$%$%", -"%$%$.#.%%.#.$%$%", -"%$%$.#$%%$#.$%$%", -"%$%$.#$.%$#.$%$%", -"%$#%.$@.%@$.%#$%", -"%$+%....%...%.$%", -"%&.#%$..%.$%#.&%", -"#%$+#$..%.$#.$##", -"+#$.*@..%.@..$%+", -"..@.....%....@+."}; diff --git a/muse/muse/xpm/addtrack_drumtrack.xpm b/muse/muse/xpm/addtrack_drumtrack.xpm deleted file mode 100644 index a2841740..00000000 --- a/muse/muse/xpm/addtrack_drumtrack.xpm +++ /dev/null @@ -1,41 +0,0 @@ -/* XPM */ -static const char * addtrack_drumtrack_xpm[] = { -"16 16 22 1", -" c None", -". c #800000", -"+ c #000100", -"@ c #C20000", -"# c #9FA19E", -"$ c #F8FEFF", -"% c #A29FA3", -"& c #FDF7F6", -"* c #FEFFFC", -"= c #2F312E", -"- c #797D7C", -"; c #FBF5F4", -"> c #C2C4C0", -", c #DBDDDA", -"' c #ACA5B1", -") c #DDE2E5", -"! c #D3D8DA", -"~ c #7F817E", -"{ c #E0CEC3", -"] c #F0F5F8", -"^ c #DEE0DD", -"/ c #CED7DF", -"...........+....", -".@@@@@@@@@++#@@.", -".@$$$$$$$++%%$+.", -".@&&&&&&++##*++.", -".@*****++%%$++#.", -".$*==+++==*++#%.", -"&*+-&++;;+++%#@.", -"*=>&,*--+++##$@.", -"&==->>>-++=%&$@.", -"&='=====++=%**$*", -"&=%))&)),%+++++*", -".=%-;);!%++>#>~+", -".&=){]^,~=+->>++", -".@/======%++++++", -".@@&'%%%%%+%~~+*", -"........**&+++**"}; diff --git a/muse/muse/xpm/addtrack_wavetrack.xpm b/muse/muse/xpm/addtrack_wavetrack.xpm deleted file mode 100644 index c67befb9..00000000 --- a/muse/muse/xpm/addtrack_wavetrack.xpm +++ /dev/null @@ -1,36 +0,0 @@ -/* XPM */ -static const char * addtrack_wavetrack_xpm[] = { -"16 16 17 1", -" c None", -". c #800000", -"+ c #FEFFFC", -"@ c #FDF7F6", -"# c #A29FA3", -"$ c #9FA19E", -"% c #C20000", -"& c #F9FBF8", -"* c #C2C4C0", -"= c #BAC5C6", -"- c #7F817E", -"; c #FFFFFF", -"> c #F8FEFF", -", c #000100", -"' c #797D7C", -") c #DBDDDA", -"! c #DDE2E5", -".........+++@#$#", -".%%%%%%%+++@+++#", -".%++&&&&++*=#-++", -".;>>>++,>@@@@$@+", -">>+@@+,,+=**@$++", -"+,,+,,,,++@#@-@+", -"+,,+,,+,**+#+'-@", -"+,,+,++,+#@-+@'@", -"+,,+,++,+$+'@+'@", -"+,,+,,+,**@$@--@", -"+,,+,,,,@@+#+#@+", -"++++)),,+***+*++", -".+)+@!),+@@@+*@+", -".%+@+@)!;+**#'@$", -".%%%%%%%;+@@+@+#", -".........@@+++$$"}; diff --git a/muse/muse/xpm/audio_bounce_to_file.xpm b/muse/muse/xpm/audio_bounce_to_file.xpm deleted file mode 100644 index ee645fdc..00000000 --- a/muse/muse/xpm/audio_bounce_to_file.xpm +++ /dev/null @@ -1,24 +0,0 @@ -/* XPM */ -static const char * audio_bounce_to_file_xpm[] = { -"16 16 5 1", -" c None", -". c #000000", -"+ c #C3C3C3", -"@ c #DCDCDC", -"# c #A0A0A0", -" ... ", -" ..+.. ", -" ..+@@.. ", -" ..+@#@@.. ", -" ..+@###@@.. ", -" ..+@####+@+.. ", -"..@@###+@+@.... ", -".+@###+@++.##...", -"..+##@@++.####..", -" ..++@++.###### ", -" ..+++..##### ", -" ..+.##.### ", -" ....##.# ", -" ....## ", -" ... ", -" . "}; diff --git a/muse/muse/xpm/audio_bounce_to_track.xpm b/muse/muse/xpm/audio_bounce_to_track.xpm deleted file mode 100644 index 3708b6bf..00000000 --- a/muse/muse/xpm/audio_bounce_to_track.xpm +++ /dev/null @@ -1,27 +0,0 @@ -/* XPM */ -static const char * audio_bounce_to_track_xpm[] = { -"16 16 8 1", -" c None", -". c #CECECE", -"+ c #FB0000", -"@ c #8A5C04", -"# c #9E772E", -"$ c #000000", -"% c #AE8E51", -"& c #2B2B2B", -" .++ ", -" .++ ", -" ...++ ", -" .++++++ ", -" ..++++ . ", -" ..++ . ", -" .... ", -" ", -" ", -" @# @# @# @# ", -"$$$$$$$$$$$$$$$$", -"@#. @%..@#..@#. ", -"#. @%..@#..@#. @", -". ##. @#. @#. @#", -"$$$$$$$&$$$$$$$$", -" @#. @#. @#. @# "}; diff --git a/muse/muse/xpm/audio_restartaudio.xpm b/muse/muse/xpm/audio_restartaudio.xpm deleted file mode 100644 index f74a3050..00000000 --- a/muse/muse/xpm/audio_restartaudio.xpm +++ /dev/null @@ -1,69 +0,0 @@ -/* XPM */ -static const char * audio_restartaudio_xpm[] = { -"16 16 50 1", -" c None", -". c #F5A630", -"+ c #F8B657", -"@ c #A98F5C", -"# c #F2B64F", -"$ c #BBBBBB", -"% c #323232", -"& c #0A0A0A", -"* c #D2D2D2", -"= c #292929", -"- c #101010", -"; c #191916", -"> c #B6B1AF", -", c #5C5C5C", -"' c #1C1C1D", -") c #C4C4C5", -"! c #B0B0B0", -"~ c #DADADA", -"{ c #C9C9C9", -"] c #808080", -"^ c #5A5A5A", -"/ c #3A3A3B", -"( c #929292", -"_ c #A4A4A4", -": c #949494", -"< c #39393B", -"[ c #1F1E22", -"} c #5A5A59", -"| c #3E3E3D", -"1 c #353537", -"2 c #18171B", -"3 c #060606", -"4 c #363636", -"5 c #393939", -"6 c #272727", -"7 c #29292B", -"8 c #141417", -"9 c #0B0B0B", -"0 c #1C1C1C", -"a c #252527", -"b c #2E2D2F", -"c c #262628", -"d c #1D1D1E", -"e c #19191B", -"f c #0A0A0B", -"g c #111114", -"h c #0F0F13", -"i c #0F0E11", -"j c #0E0E10", -"k c #0D0D0F", -" .. + ", -" ++...+++ ", -" ++.++ ", -" ++++@+#++ ", -" $%&&+ ++ ", -" * = -;>++ ", -" * ,'' ) + ", -" * ! ''&!+ ", -"* ~ {]^/'& ", -" (_: <[&& ", -"= }|123& ", -"=45 6789( ", -"!&0abcdef9! ", -" !&ghijk&! ", -" !&&&&&! ", -" !&& ! "}; diff --git a/muse/muse/xpm/back.xpm b/muse/muse/xpm/back.xpm deleted file mode 100644 index 917213c0..00000000 --- a/muse/muse/xpm/back.xpm +++ /dev/null @@ -1,27 +0,0 @@ -/* XPM */ -/* Drawn by Mark Donohoe for the K Desktop Environment */ -/* See http://www.kde.org */ -static const char*back_xpm[]={ -"16 16 5 1", -"# c #000000", -"a c #ffffff", -"c c #808080", -"b c #c0c0c0", -". c None", -"................", -".......#........", -"......##........", -".....#a#........", -"....#aa########.", -"...#aabaaaaaaa#.", -"..#aabbbbbbbbb#.", -"...#abbbbbbbbb#.", -"...c#ab########.", -"....c#a#ccccccc.", -".....c##c.......", -"......c#c.......", -".......cc.......", -"........c.......", -"................", -"......................"}; - diff --git a/muse/muse/xpm/bold.xpm b/muse/muse/xpm/bold.xpm deleted file mode 100644 index b5d786ac..00000000 --- a/muse/muse/xpm/bold.xpm +++ /dev/null @@ -1,16 +0,0 @@ -/* XPM */ -static const char * bold_xpm[] = { -"11 11 2 1", -" g None", -". g #000000", -" ", -" ....... ", -" .. ... ", -" .. .. ", -" .. .. ", -" ..... ", -" .. ... ", -" .. .. ", -" .. ... ", -" ....... ", -" "}; diff --git a/muse/muse/xpm/buttondown.xpm b/muse/muse/xpm/buttondown.xpm deleted file mode 100644 index a8cff668..00000000 --- a/muse/muse/xpm/buttondown.xpm +++ /dev/null @@ -1,27 +0,0 @@ -/* XPM */ -static const char * buttondown_xpm[] = { -"16 18 6 1", -" c None", -". c #F0F0F0", -"+ c #000000", -"@ c #F8FCF8", -"# c #484C48", -"$ c #D8DCD8", -"...............+", -".@@@@@@@@@@@@@#+", -".@$$$$$$$$$$$$#+", -".@$$$$$$$$$$$$#+", -".@$$$$$$$$$$$$#+", -".@$$$$$$$$$$$$#+", -".@$$$$$$$$$$$$#+", -".@$$+++++++$$$#+", -".@$$$+++++$$$$#+", -".@$$$$+++$$$$$#+", -".@$$$$$+$$$$$$#+", -".@$$$$$$$$$$$$#+", -".@$$$$$$$$$$$$#+", -".@$$$$$$$$$$$$#+", -".@$$$$$$$$$$$$#+", -".@$$$$$$$$$$$$#+", -".##############+", -"++++++++++++++++"}; diff --git a/muse/muse/xpm/cafter.xpm b/muse/muse/xpm/cafter.xpm deleted file mode 100644 index 3ab12692..00000000 --- a/muse/muse/xpm/cafter.xpm +++ /dev/null @@ -1,29 +0,0 @@ -/* XPM */ -static const char *cafter_xpm[] = { -"22 22 2 1", -". c None", -"# c #000000", -"######################", -"##...................#", -"#.#..................#", -"#..#.................#", -"#...#................#", -"#....#...............#", -"#.....#..............#", -"#......#.............#", -"#.......#............#", -"#........#...........#", -"#.........#..........#", -"#..........#.........#", -"#...........#........#", -"#............#.......#", -"#.............#......#", -"#..............#.....#", -"#...............#....#", -"#................#...#", -"#.................#..#", -"#..................#.#", -"#...................##", -"######################" -}; - diff --git a/muse/muse/xpm/cliplistS.xpm b/muse/muse/xpm/cliplistS.xpm deleted file mode 100644 index 6ba516fc..00000000 --- a/muse/muse/xpm/cliplistS.xpm +++ /dev/null @@ -1,28 +0,0 @@ -/* XPM */ -static const char *cliplistS_xpm[]={ -"16 16 9 1", -"# c #000000", -"f c #585858", -"e c #808080", -"d c #a0a0a0", -"c c #c000c0", -"g c #c3c3c3", -"a c #dcdcdc", -". c #ff00ff", -"b c #ffffff", -"................", -"..############..", -"..#aaaaaaaaaa#..", -"..#abbbbbbbba#c.", -"..#bbdeeeedbb#c.", -"..#bdbbbbbbdb#c.", -"..#bbbdffdbbb#c.", -"..#bbbbbbbbbb#c.", -"..#b#gggggg#b#c.", -"..#bb######gb#c.", -"..#bbb####gbb#c.", -"..#bbbb##gbbb#c.", -"..#bbbbggbbbb#c.", -"..############c.", -"....ccccccccccc.", -"................"}; diff --git a/muse/muse/xpm/cmark.xpm b/muse/muse/xpm/cmark.xpm deleted file mode 100644 index 5c8cf1fc..00000000 --- a/muse/muse/xpm/cmark.xpm +++ /dev/null @@ -1,23 +0,0 @@ -/* XPM */ -static const char* cmark_xpm[]={ -"18 18 2 1", -"# c #ff0000", -". c None", -"..................", -"..................", -"..................", -"..................", -"..................", -"..................", -"..................", -"##################", -".################.", -"..##############..", -"...############...", -"....##########....", -".....########.....", -"......######......", -".......####.......", -"........##........", -"........##........", -"........##........"}; diff --git a/muse/muse/xpm/config.xpm b/muse/muse/xpm/config.xpm deleted file mode 100644 index 727c4095..00000000 --- a/muse/muse/xpm/config.xpm +++ /dev/null @@ -1,36 +0,0 @@ -/* XPM */ -static const char * config_xpm[] = { -"16 16 17 1", -" c None", -". c #000000", -"+ c #808080", -"@ c #646464", -"# c #DCDCDC", -"$ c #C3C3C3", -"% c #A0A0A0", -"& c #B8B8B8", -"* c #787878", -"= c #FFFFFF", -"- c #EDEDED", -"; c #585858", -"> c #C2C2C2", -", c #B7B7B7", -"' c #E7E7E7", -") c #303030", -"! c #CFCFCF", -" ...... ", -" .+@#$%.. ", -" .&*@#$%. ", -"... ..&@#$. ", -".=$.. .@##%. ", -".=-#$.;@>##,. ", -".@=-######'$%.. ", -")=@*=--##'$!$%%.", -".$#=@@@*%$-#!$,%", -" ..$#$$$*@*=-#!$", -" ...%#$$%@*=-#", -" ....-#%@*=", -" ..-#%@", -" ..-#", -" ..", -" "}; diff --git a/muse/muse/xpm/configure.xpm b/muse/muse/xpm/configure.xpm deleted file mode 100644 index 5bcb079f..00000000 --- a/muse/muse/xpm/configure.xpm +++ /dev/null @@ -1,36 +0,0 @@ -/* XPM */ -static const char * configure_xpm[] = { -"16 16 17 1", -" c None", -". c #000000", -"+ c #808080", -"@ c #646464", -"# c #DCDCDC", -"$ c #C3C3C3", -"% c #A0A0A0", -"& c #B8B8B8", -"* c #787878", -"= c #FFFFFF", -"- c #EDEDED", -"; c #585858", -"> c #C2C2C2", -", c #B7B7B7", -"' c #E7E7E7", -") c #303030", -"! c #CFCFCF", -" ...... ", -" .+@#$%.. ", -" .&*@#$%. ", -"... ..&@#$. ", -".=$.. .@##%. ", -".=-#$.;@>##,. ", -".@=-######'$%.. ", -")=@*=--##'$!$%%.", -".$#=@@@*%$-#!$,%", -" ..$#$$$*@*=-#!$", -" ...%#$$%@*=-#", -" ....-#%@*=", -" ..-#%@", -" ..-#", -" ..", -" "}; diff --git a/muse/muse/xpm/ctrl.xpm b/muse/muse/xpm/ctrl.xpm deleted file mode 100644 index 01124b02..00000000 --- a/muse/muse/xpm/ctrl.xpm +++ /dev/null @@ -1,27 +0,0 @@ -/* XPM */ -static const char * ctrl_xpm[] = { -"22 22 2 1", -" c #FFFFFFFFFFFF", -". c #000000000000", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ... . .. ", -" .. .. . ", -" . . . . ", -" . ..... .. . ", -" . . .. . ", -" . . . . ", -" . . . . . ", -" .. .. . . . ", -" .... ..... ... ", -" ", -" ", -" ", -" ", -" ", -" "}; diff --git a/muse/muse/xpm/cut.xpm b/muse/muse/xpm/cut.xpm deleted file mode 100644 index b104bd1c..00000000 --- a/muse/muse/xpm/cut.xpm +++ /dev/null @@ -1,29 +0,0 @@ -/* XPM */ -static const char*cut_xpm[]={ -"18 18 7 1", -"# c #a0a0a4", -"a c #585858", -"b c #303030", -"d c #dcdcdc", -"e c #ffffff", -"c c #c0c0c0", -". c None", -"..................", -"..................", -"..#aba#...........", -"..bccca#.....ab#..", -"..accccb...#abaa#.", -"..#aacaa..#aba#...", -"...#bab#.#ab#.....", -".....#aaaba#......", -"aaaaaaaada#aaaaaa.", -".....#baaaaeeeeed.", -"...#aaa#.#dd#.....", -"..#abcba..daba#...", -"..accccb..e#abab#.", -"..bccca#.....aa#..", -"..#aba#...........", -"..................", -"..................", -".................."}; - diff --git a/muse/muse/xpm/darkgreendot.svg b/muse/muse/xpm/darkgreendot.svg deleted file mode 100644 index b673f1ae..00000000 --- a/muse/muse/xpm/darkgreendot.svg +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - diff --git a/muse/muse/xpm/delete.xpm b/muse/muse/xpm/delete.xpm deleted file mode 100644 index 7c337199..00000000 --- a/muse/muse/xpm/delete.xpm +++ /dev/null @@ -1,27 +0,0 @@ -/* XPM */ -static const char* delete_xpm[]={ -"18 18 5 1", -"# c #000000", -"a c #ffffff", -"b c #a0a0a4", -"c c #dcdcdc", -". c None", -"..................", -"..................", -"..................", -"..................", -"........########..", -".......#aaaaaa##b.", -"......#aaaaaa#c#b.", -".....#aaaaaa#cc#b.", -"....#aaaaaa#cc#bb.", -"...#aaaaaa#cc#bb..", -"..#aaaaaa#cc#bb...", -".########cc#bb....", -".#cccccc#c#bb.....", -".#cccccc##bb......", -".########bb.......", -"..bbbbbbbb........", -"..................", -".................."}; - diff --git a/muse/muse/xpm/down.xpm b/muse/muse/xpm/down.xpm deleted file mode 100644 index 9ac9f1f9..00000000 --- a/muse/muse/xpm/down.xpm +++ /dev/null @@ -1,15 +0,0 @@ -/* XPM */ -static const char* down_xpm[]={ -"14 10 2 1", -"# c #000000", -". c None", -"..............", -"......##......", -"......##......", -"......##......", -"......##......", -"...##.##.##...", -"....######....", -".....####.....", -"......##......", -".............."}; diff --git a/muse/muse/xpm/draw.xpm b/muse/muse/xpm/draw.xpm deleted file mode 100644 index 5bb771a3..00000000 --- a/muse/muse/xpm/draw.xpm +++ /dev/null @@ -1,25 +0,0 @@ -/* XPM */ -static const char *draw_xpm[]={ -"18 18 4 1", -". c None", -"# c #000040", -"b c #c3c3c3", -"a c #ffffff", -"..................", -"..........###.....", -"..........#a#.....", -".........####.....", -"........#b..#.....", -".......#b....#....", -"......#b.....#....", -".....#bb......#...", -"....#bb.......###.", -".###bb........#a#.", -".#a#b.........###.", -".###b.............", -"..................", -"..................", -"..................", -"..................", -"..................", -".................."}; diff --git a/muse/muse/xpm/edit_drumms.xpm b/muse/muse/xpm/edit_drumms.xpm deleted file mode 100644 index 8738f267..00000000 --- a/muse/muse/xpm/edit_drumms.xpm +++ /dev/null @@ -1,45 +0,0 @@ -/* XPM */ -static const char * edit_drumms_xpm[] = { -"16 16 26 1", -" c None", -". c #13A913", -"+ c #000100", -"@ c #0AD700", -"# c #496447", -"$ c #FEFFFC", -"% c #F8FEFF", -"& c #A29FA3", -"* c #9FA19E", -"= c #FDF7F6", -"- c #2F312E", -"; c #797D7C", -"> c #FBF5F4", -", c #C2C4C0", -"' c #DBDDDA", -") c #F9FBF8", -"! c #ACA5B1", -"~ c #DDE2E5", -"{ c #D3D8DA", -"] c #7F817E", -"^ c #E0CEC3", -"/ c #F0F5F8", -"( c #DEE0DD", -"_ c #CED7DF", -": c #078002", -"< c #00C100", -"...........+....", -".@@@@@@@@@++#@@.", -".@$$$$$$%++&*%+.", -".@======++**%++.", -".@%$%$%++&&$++*.", -".@$--+++--$++**.", -".@+;=++>>+++&&@.", -".-,='$;;+++**)@.", -".--;,,,;++-&%$@.", -".-!-----++-&%=@.", -".-&~~=~~'&+++++.", -".-&;>~>{&++,&,]+", -".@-~^/(']-+],,++", -".@_------&++++++", -".@@@::::::+*]]+.", -"...........+++<."}; diff --git a/muse/muse/xpm/edit_list.xpm b/muse/muse/xpm/edit_list.xpm deleted file mode 100644 index 19b62b41..00000000 --- a/muse/muse/xpm/edit_list.xpm +++ /dev/null @@ -1,31 +0,0 @@ -/* XPM */ -static const char * edit_list_xpm[] = { -"16 16 12 1", -" c None", -". c #13A913", -"+ c #0AD700", -"@ c #000100", -"# c #DBDDDA", -"$ c #FDF7F6", -"% c #D3D8DA", -"& c #078002", -"* c #F9FBF8", -"= c #F8FEFF", -"- c #DDE2E5", -"; c #DEE0DD", -"................", -".+@@@@@@@@@@@@+.", -".+@##########@+.", -".+@$@$@$@$@$%@&.", -".+@*=@=@=@=@#@&.", -".+@$$*$*$*$$%@&.", -".+@=@-@-@-@;#@&.", -".+@**@#@-@#@%@&.", -".+@$*$*$*$$$#@&.", -".+@=@-@#@-@#-@&.", -".+@**@#@#@-@#@&.", -".+@$$*$*$$$$%@&.", -".+@=$=$==*=$#@&.", -".+@@@@@@@@@@@@&.", -".+++&&&&&&&&&&&.", -"................"}; diff --git a/muse/muse/xpm/edit_mastertrack.xpm b/muse/muse/xpm/edit_mastertrack.xpm deleted file mode 100644 index e4f1a948..00000000 --- a/muse/muse/xpm/edit_mastertrack.xpm +++ /dev/null @@ -1,38 +0,0 @@ -/* XPM */ -static const char * edit_mastertrack_xpm[] = { -"16 16 19 1", -" c None", -". c #13A913", -"+ c #000100", -"@ c #0AD700", -"# c #F9FBF8", -"$ c #F8FEFF", -"% c #FEFFFC", -"& c #FDF7F6", -"* c #ED9E9D", -"= c #EA8B8B", -"- c #5B6062", -"; c #D78080", -"> c #EC9594", -", c #DA8A8A", -"' c #797D7C", -") c #747573", -"! c #FF9797", -"~ c #1C1D1C", -"{ c #C2C4C0", -"................", -"++@@@@@@@@@@@@@.", -".++##$%#%$%%&%@.", -".@++&&&&&&&&$&@.", -".@&++$**%$$%$%@.", -".@%%++%=*%%%$&@.", -".@%%%+-;;==++++.", -".@%%%%>,;;;+'++.", -".@%&&%%*=;;++++.", -".@%$%$%)*=!++++.", -".@%%&%$%%~$++++.", -".@%%%%%%%%%{{{{.", -".@%%%%%%%%&&&&@.", -".@%%%%%%%%%%%%@.", -".@@@@@@@@@@@@@@.", -"................"}; diff --git a/muse/muse/xpm/edit_midi.xpm b/muse/muse/xpm/edit_midi.xpm deleted file mode 100644 index 3c7071c0..00000000 --- a/muse/muse/xpm/edit_midi.xpm +++ /dev/null @@ -1,26 +0,0 @@ -/* XPM */ -static const char * edit_midi_xpm[] = { -"16 16 7 1", -" c None", -". c #57A8FE", -"+ c #A6DDFD", -"@ c #000100", -"# c #FDF7F6", -"$ c #2F312E", -"% c #FEFFFC", -"................", -".++++@@@@@@++++.", -".+##@$$$$$$@##+.", -".+%@$######$@#+.", -".+@$#%%$$%#%$@+.", -".@$#%%#$$%%%#$@.", -".@$%$$###%$$#$@.", -".@$#$$%%%#$$#$@.", -".@$###%%%####$@.", -".@$%$$%%%%$$#$@.", -".@$#$$#%%#$$#$@.", -".+@$##%%%###$@+.", -".+#@$%%%%%%$@#+.", -".+%%@$$$$$$@%#+.", -".++++@@@@@@++++.", -"................"}; diff --git a/muse/muse/xpm/edit_pianoroll.xpm b/muse/muse/xpm/edit_pianoroll.xpm deleted file mode 100644 index c2672271..00000000 --- a/muse/muse/xpm/edit_pianoroll.xpm +++ /dev/null @@ -1,28 +0,0 @@ -/* XPM */ -static const char * edit_pianoroll_xpm[] = { -"16 16 9 1", -" c None", -". c #13A913", -"+ c #0AD700", -"@ c #000100", -"# c #F8FEFF", -"$ c #FDF7F6", -"% c #FEFFFC", -"& c #DBDDDA", -"* c #006B00", -"................", -".++++++++++++++.", -".+@@@@@@@@@###+.", -".+@@@@@@@@@$$$+.", -".+%&&&&&&&&&%#+.", -".+@@@@@@@@@$%$+.", -".+@@@@@@@@@%%%+.", -".+%&&&&&&&&&#$+.", -".+@@@@@@@@@%##+.", -".+@@@@@@@@@%%$+.", -".+%&&&&&&&&&%%+.", -".+%$$$$$$$$$#$+.", -".+@@@@@@@@@%#%+.", -".+@@@@@@@@@%#$+.", -".++*********+++.", -"................"}; diff --git a/muse/muse/xpm/edit_track_add.xpm b/muse/muse/xpm/edit_track_add.xpm deleted file mode 100644 index 6f659f7f..00000000 --- a/muse/muse/xpm/edit_track_add.xpm +++ /dev/null @@ -1,24 +0,0 @@ -/* XPM */ -static const char *edit_track_add_xpm[]={ -"16 16 5 1", -"c c #404000", -". c #800000", -"b c #808080", -"# c #c00000", -"a c #ffffff", -"................", -".##############.", -".#aaaaaaaaaaaa#.", -".#aaaaaaaaaaaa#.", -".#babababababa#.", -".cccccccccccccc.", -".#babababababa#.", -".#babababababa#.", -".#babababababa#.", -".#babababababa#.", -".cccccccccccccc.", -".#babababababa#.", -".#aaaaaaaaaaaa#.", -".#aaaaaaaaaaaa#.", -".##############.", -"................"}; diff --git a/muse/muse/xpm/edit_track_del.xpm b/muse/muse/xpm/edit_track_del.xpm deleted file mode 100644 index 4ead97ff..00000000 --- a/muse/muse/xpm/edit_track_del.xpm +++ /dev/null @@ -1,25 +0,0 @@ -/* XPM */ -static const char * edit_track_del_xpm[] = { -"16 16 6 1", -" c None", -". c #800000", -"+ c #C00000", -"@ c #FFFFFF", -"# c #808080", -"$ c #404000", -"................", -".++++++++++++++.", -".+++@@@@@@@@@@+.", -".++++@@@@@@@@@+.", -".+#+++#@#@#@#@+.", -".$$$+++$$$$$$$$.", -".+#@#+++#@#@#@+.", -".+#@#@+++@#@#@+.", -".+#@#@#+++#@#@+.", -".+#@#@#@+++@#@+.", -".$$$$$$$$+++$$$.", -".+#@#@#@#@+++@+.", -".+@@@@@@@@@++++.", -".+@@@@@@@@@@+++.", -".++++++++++++++.", -"................"}; diff --git a/muse/muse/xpm/editcopy.xpm b/muse/muse/xpm/editcopy.xpm deleted file mode 100644 index 7823c06b..00000000 --- a/muse/muse/xpm/editcopy.xpm +++ /dev/null @@ -1,102 +0,0 @@ -/* XPM */ -static const char * editcopy_xpm[] = { -"22 22 77 1", -" c None", -". c #121212", -"+ c #FFFFFF", -"@ c #313131", -"# c #898989", -"$ c #3C3B3C", -"% c #C9C9C9", -"& c #828282", -"* c #C6C6C6", -"= c #474646", -"- c #5C5B5B", -"; c #FEFCFB", -"> c #A4A4A4", -", c #747474", -"' c #FDFBF9", -") c #FCF7F3", -"! c #FAF4EE", -"~ c #F0EAE6", -"{ c #C1BAB3", -"] c #C3C3C3", -"^ c #5A5552", -"/ c #7E7873", -"( c #9F958D", -"_ c #7D746E", -": c #D8D0C8", -"< c #FCF8F5", -"[ c #FBF5F0", -"} c #F9F1EA", -"| c #F8EEE5", -"1 c #F7EADF", -"2 c #F5E7DA", -"3 c #D6CABF", -"4 c #5B5959", -"5 c #C4C0BD", -"6 c #807C79", -"7 c #5A5653", -"8 c #C0B5AC", -"9 c #998778", -"0 c #7B6F65", -"a c #7A6D62", -"b c #D3C3B4", -"c c #FBF6F2", -"d c #FAF2EC", -"e c #F9EFE7", -"f c #F7EBE1", -"g c #F6E8DC", -"h c #F4E4D6", -"i c #F3E0D0", -"j c #F2DDCB", -"k c #D1BCAA", -"l c #4D4D4D", -"m c #7F7A76", -"n c #595551", -"o c #7B6F64", -"p c #564C45", -"q c #786A5C", -"r c #CEB6A0", -"s c #F8EDE3", -"t c #F6E9DD", -"u c #F5E5D8", -"v c #F3E2D2", -"w c #F2DECD", -"x c #F1DAC7", -"y c #EFD7C2", -"z c #EED3BC", -"A c #CCAF97", -"B c #DEDEDE", -"C c #D7CCC1", -"D c #D5C7BA", -"E c #D3C2B3", -"F c #D1BEAC", -"G c #CFB9A5", -"H c #CEB49F", -"I c #CCB097", -"J c #CAAB90", -"K c #C9A88C", -"L c #000000", -" ", -" ......... ", -" .++++++@#. ", -" .++++++$+%. ", -" .+&%&*+=%+#. ", -" .++++++==$@. ", -" .+&-%&%;*>,...... ", -" .+++++')!~{.]++@#. ", -" .+-&*&^/(_:.]++$+%. ", -" .++;<[}|123.&*+=%+#. ", -" .+4567890ab.]++==$@. ", -" .+cdefghijk.l&%+*>&. ", -" .+mn89op9qr.]+++++*. ", -" .+stuvwxyzA.>&-&>&B. ", -" .:CDEFGHIJK.]+++++B. ", -" ..........LL&-*>&&B. ", -" .]]]]+++++B. ", -" .+&-*>&->&B. ", -" .+++++++++B. ", -" .BBBBBBBBBB. ", -" ............ ", -" "}; diff --git a/muse/muse/xpm/editcut.xpm b/muse/muse/xpm/editcut.xpm deleted file mode 100644 index 4efcb43c..00000000 --- a/muse/muse/xpm/editcut.xpm +++ /dev/null @@ -1,33 +0,0 @@ -/* XPM */ -static const char * editcut_xpm[] = { -"22 22 8 1", -" c None", -". c #000000", -"+ c #080203", -"@ c #FFFFFF", -"# c #C3C3C3", -"$ c #010101", -"% c #A0A0A0", -"& c #303030", -" ", -" ", -" ..+. ", -" ... .. ... ", -" .. .. .@@#. ", -" .. .. .@@#. ", -" .. . .@@#. ", -" ... .. .@@#. ", -" ....$ .@@#. ", -" .....@@#. ", -" %.@@#. ", -" .@&#. ", -" ....@.#. ", -" ....$..@@#. ", -" ... .. .@@#. ", -" .. . .@@#. ", -" .. .. .@@#. ", -" .. .. .@@#. ", -" .. .. .@@#. ", -" ..+. ... ", -" ", -" "}; diff --git a/muse/muse/xpm/editcutS.xpm b/muse/muse/xpm/editcutS.xpm deleted file mode 100644 index 06031f4a..00000000 --- a/muse/muse/xpm/editcutS.xpm +++ /dev/null @@ -1,24 +0,0 @@ -/* XPM */ -static const char * editcutS_xpm[] = { -"16 16 5 1", -" g None", -". g #000000", -"+ g #FFFFFF", -"@ g #DCDCDC", -"# g #808080", -" ", -" .... .. ", -".. .. .+@.", -".. .. .+@. ", -" .. . .+@. ", -" ...... .+@. ", -" .....+@. ", -" ..+@. ", -" .+@.. ", -" .....#@. ", -" ...... .+@. ", -" .. . .+@. ", -".. .. .+@. ", -".. .. .+@.", -" .... .. ", -" "}; diff --git a/muse/muse/xpm/editmute.xpm b/muse/muse/xpm/editmute.xpm deleted file mode 100644 index ff0e22ac..00000000 --- a/muse/muse/xpm/editmute.xpm +++ /dev/null @@ -1,33 +0,0 @@ -/* XPM */ -static const char * editmute_xpm[] = { -"22 22 8 1", -" c None", -". c #000000", -"+ c #080203", -"@ c #FFFFFF", -"# c #C3C3C3", -"$ c #010101", -"% c #A0A0A0", -"& c #303030", -" ", -" ", -" ", -" ... ... ", -" .@@#. .@@#. ", -" .@@#. .@@#. ", -" .@@#. .@@#. ", -" .@@#. .@@#. ", -" .@@#. .@@#. ", -" .@@#..@@#. ", -" .@@@@@#. ", -" .#&&#. ", -" .@@@@@#. ", -" .@@#..@@#. ", -" .@@#. .@@#. ", -" .@@#. .@@#. ", -" .@@#. .@@#. ", -" .@@#. .@@#. ", -" .@@#. .@@#. ", -" ... ... ", -" ", -" "}; diff --git a/muse/muse/xpm/editpaste.xpm b/muse/muse/xpm/editpaste.xpm deleted file mode 100644 index 8793a955..00000000 --- a/muse/muse/xpm/editpaste.xpm +++ /dev/null @@ -1,210 +0,0 @@ -/* XPM */ -static const char * editpaste_xpm[] = { -"22 22 185 2", -" c None", -". c #161616", -"+ c #3A3616", -"@ c #6F681E", -"# c #625607", -"$ c #575006", -"% c #020202", -"& c #060A06", -"* c #262206", -"= c #807529", -"- c #FEFEFD", -"; c #CAC682", -"> c #A69E62", -", c #362E16", -"' c #EAEAEA", -") c #EEEEEE", -"! c #574D0A", -"~ c #FFFFFF", -"{ c #F6F6DE", -"] c #EEEECA", -"^ c #CECA96", -"/ c #9E964A", -"( c #4A462E", -"_ c #C5C5C5", -": c #C9C9C9", -"< c #CCCCCC", -"[ c #D4D4D4", -"} c #DBDBDB", -"| c #3A3636", -"1 c #D6D6D6", -"2 c #A6A6A6", -"3 c #989898", -"4 c #D6D29E", -"5 c #CAC686", -"6 c #B6B26A", -"7 c #AAA65A", -"8 c #7E721E", -"9 c #818181", -"0 c #888885", -"a c #8C8C8C", -"b c #262626", -"c c #DADADA", -"d c #A2A2A2", -"e c #A9A9A9", -"f c #B2B6B6", -"g c #3E3A32", -"h c #2E2E26", -"i c #26261A", -"j c #22221A", -"k c #222216", -"l c #161612", -"m c #626266", -"n c #727272", -"o c #6E6E6E", -"p c #7A7A7A", -"q c #222222", -"r c #D5D5D5", -"s c #999999", -"t c #9E9E9E", -"u c #AAAAAA", -"v c #BEBEBE", -"w c #9A9A9A", -"x c #828282", -"y c #6C6C6C", -"z c #5E5E5E", -"A c #656565", -"B c #5B5B5B", -"C c #2E2E2E", -"D c #B5B5B1", -"E c #AFAFAF", -"F c #9A9E9E", -"G c #969696", -"H c #7E7E7E", -"I c #432E1A", -"J c #372617", -"K c #2C1F14", -"L c #201711", -"M c #15110D", -"N c #1B1B1B", -"O c #1E1E1E", -"P c #939393", -"Q c #9F9F9F", -"R c #A4A4A4", -"S c #A2A29E", -"T c #313131", -"U c #898989", -"V c #121212", -"W c #B6B6B6", -"X c #9F9FA3", -"Y c #979797", -"Z c #8A8A8A", -"` c #797979", -" . c #676767", -".. c #3C3B3C", -"+. c #AEAEAE", -"@. c #949494", -"#. c #C6C6C6", -"$. c #474646", -"%. c #8E8E8E", -"&. c #D2D2D2", -"*. c #A2A2A6", -"=. c #868686", -"-. c #717171", -";. c #5C5B5B", -">. c #FEFCFB", -",. c #747474", -"'. c #868682", -"). c #FDFBF9", -"!. c #FCF7F3", -"~. c #FAF4EE", -"{. c #F0EAE6", -"]. c #C1BAB3", -"^. c #CACACA", -"/. c #6A6A6A", -"(. c #3A2818", -"_. c #5A5552", -":. c #7E7873", -"<. c #9F958D", -"[. c #7D746E", -"}. c #D8D0C8", -"|. c #CECECE", -"1. c #767676", -"2. c #636363", -"3. c #322316", -"4. c #FCF8F5", -"5. c #FBF5F0", -"6. c #F9F1EA", -"7. c #F8EEE5", -"8. c #F7EADF", -"9. c #F5E7DA", -"0. c #D6CABF", -"a. c #2A1E14", -"b. c #5B5959", -"c. c #C4C0BD", -"d. c #807C79", -"e. c #5A5653", -"f. c #C0B5AC", -"g. c #998778", -"h. c #7B6F65", -"i. c #7A6D62", -"j. c #D3C3B4", -"k. c #707070", -"l. c #595959", -"m. c #221811", -"n. c #FBF6F2", -"o. c #FAF2EC", -"p. c #F9EFE7", -"q. c #F7EBE1", -"r. c #F6E8DC", -"s. c #F4E4D6", -"t. c #F3E0D0", -"u. c #F2DDCB", -"v. c #D1BCAA", -"w. c #808080", -"x. c #4F4F4F", -"y. c #19140F", -"z. c #7F7A76", -"A. c #595551", -"B. c #7B6F64", -"C. c #564C45", -"D. c #786A5C", -"E. c #CEB6A0", -"F. c #6A6666", -"G. c #565656", -"H. c #494949", -"I. c #120F0C", -"J. c #F8EDE3", -"K. c #F6E9DD", -"L. c #F5E5D8", -"M. c #F3E2D2", -"N. c #F2DECD", -"O. c #F1DAC7", -"P. c #EFD7C2", -"Q. c #EED3BC", -"R. c #CCAF97", -"S. c #D7CCC1", -"T. c #D5C7BA", -"U. c #D3C2B3", -"V. c #D1BEAC", -"W. c #CFB9A5", -"X. c #CEB49F", -"Y. c #CCB097", -"Z. c #CAAB90", -"`. c #C9A88C", -" + c #000000", -" . + @ # $ ", -" % % % % % & * = - ; > , % % % % % % ", -"% ' ) ) ) ) ) ! ~ { ] ^ / ( _ : < [ } | ", -"% 1 2 2 2 3 = ~ 4 5 6 7 / 8 ( 9 0 9 a b ", -"% c d e f 2 g h i i j i j k l m n o p q ", -"% r s t u v u w x y z A B A z B A y w C ", -"% 1 D E u F t G H I I I J K L M N N y O ", -"% r P Q R S w G H I ~ ~ ~ ~ ~ ~ T U V O ", -"% 1 W u X Y Z ` .I ~ ~ ~ ~ ~ ~ ..~ : V ", -"% 1 G t t u +.@.x I ~ x : x #.~ $.: ~ U V ", -"% 1 w 2 t %.x x o I ~ ~ ~ ~ ~ ~ $.$...T V ", -"% &.%.G w 2 *.=.-.I ~ x ;.: x : >.#.R ,.V ", -"% &.2 u 2 '.=.=.-.I ~ ~ ~ ~ ~ ).!.~.{.].V ", -"% ^.H =.Z w G H /.(.~ ;.x #.x _.:.<.[.}.V ", -"% |.w G =.H p 1.2.3.~ ~ >.4.5.6.7.8.9.0.V ", -"% ^.=.%.%.=.x p .a.~ b.c.d.e.f.g.h.i.j.V ", -"% ^.H x H p k./.l.m.~ n.o.p.q.r.s.t.u.v.V ", -"% #.x =.=.w.w.z x.y.~ z.A.f.g.B.C.g.D.E.V ", -"% u o o o o F.G.H.I.~ J.K.L.M.N.O.P.Q.R.V ", -" % % % % % % % V N }.S.T.U.V.W.X.Y.Z.`.V ", -" V V V V V V V V V V + + ", -" "}; diff --git a/muse/muse/xpm/fforward.xpm b/muse/muse/xpm/fforward.xpm deleted file mode 100644 index 11bf7523..00000000 --- a/muse/muse/xpm/fforward.xpm +++ /dev/null @@ -1,17 +0,0 @@ -/* XPM */ -static const char * fforward_xpm[] = { -"17 12 2 1", -" c None", -". c #000000", -" . . ", -" ... ... ", -" ... ... ", -" .... .... ", -" .... .... ", -" ..... ..... ", -" ..... ..... ", -" .... .... ", -" .... .... ", -" ... ... ", -" ... ... ", -" . . "}; diff --git a/muse/muse/xpm/filenew.png b/muse/muse/xpm/filenew.png deleted file mode 100644 index 1214837b..00000000 Binary files a/muse/muse/xpm/filenew.png and /dev/null differ diff --git a/muse/muse/xpm/filenewS.xpm b/muse/muse/xpm/filenewS.xpm deleted file mode 100644 index 1980070a..00000000 --- a/muse/muse/xpm/filenewS.xpm +++ /dev/null @@ -1,29 +0,0 @@ -/* XPM */ -static const char * filenewS_xpm[] = { -"16 16 10 1", -" c None", -". c #000000", -"+ c #303030", -"@ c #DCDCDC", -"# c #C3C3C3", -"$ c #FFFFFF", -"% c #585858", -"& c #A0A0A0", -"* c #FFFFC0", -"= c #400000", -" ..+...+.. ", -" +@@@@@#+#. ", -" .@$$$$$%$@. ", -" .@$$$$$%@$#. ", -" .@$$$$$%%%+. ", -" .@$$$$$$@#&. ", -" .@$$$$$$*$@. ", -" .@$$$$$$$$$. ", -" .@$$$$*$*$*. ", -" .@$$$$$$$*$. ", -" .@$$*$*$*$*. ", -" .@$$$$$*$*$. ", -" +@*$*$*$*$*. ", -" .@$$$*$*$**. ", -" .@*$*$*$***. ", -" ......=..+.. "}; diff --git a/muse/muse/xpm/fileopen.png b/muse/muse/xpm/fileopen.png deleted file mode 100644 index bb35ee03..00000000 Binary files a/muse/muse/xpm/fileopen.png and /dev/null differ diff --git a/muse/muse/xpm/filesave.png b/muse/muse/xpm/filesave.png deleted file mode 100644 index d69158ee..00000000 Binary files a/muse/muse/xpm/filesave.png and /dev/null differ diff --git a/muse/muse/xpm/flag.xpm b/muse/muse/xpm/flag.xpm deleted file mode 100644 index f8bcf244..00000000 --- a/muse/muse/xpm/flag.xpm +++ /dev/null @@ -1,28 +0,0 @@ -/* XPM */ -static const char* flag_xpm[] = { -"22 22 3 1", -". c None", -"+ c #000000", -"@ c #00FF00", -"......................", -"......................", -"......................", -"......................", -"........++............", -"........+@++..........", -"........+@@@+.........", -"........+@@@@+........", -"........+@@@@@+.......", -"........+@@@@+........", -"........+@@@+.........", -"........+@++..........", -"........++............", -"........+.............", -"........+.............", -"........+.............", -"........+.............", -"........+.............", -"........+.............", -"......................", -"......................", -"......................"}; diff --git a/muse/muse/xpm/flagS.xpm b/muse/muse/xpm/flagS.xpm deleted file mode 100644 index 741528e1..00000000 --- a/muse/muse/xpm/flagS.xpm +++ /dev/null @@ -1,19 +0,0 @@ -/* XPM */ -static const char* flagS_xpm[] = { -"8 12 3 1", -". c None", -"+ c #000000", -"@ c #00FF00", -"+.......", -"+@+.....", -"+@@@+...", -"+@@@@@+.", -"+@@@@+..", -"+@@@+...", -"+@+.....", -"+.......", -"+.......", -"+.......", -"+.......", -"+......."}; - diff --git a/muse/muse/xpm/folder_new.png b/muse/muse/xpm/folder_new.png deleted file mode 100644 index 1277281f..00000000 Binary files a/muse/muse/xpm/folder_new.png and /dev/null differ diff --git a/muse/muse/xpm/forward.xpm b/muse/muse/xpm/forward.xpm deleted file mode 100644 index c2104314..00000000 --- a/muse/muse/xpm/forward.xpm +++ /dev/null @@ -1,28 +0,0 @@ -/* XPM */ -/* Drawn by Mark Donohoe for the K Desktop Environment */ -/* See http://www.kde.org */ -static const char*forward_xpm[]={ -"16 16 5 1", -"# c #000000", -"a c #ffffff", -"c c #808080", -"b c #c0c0c0", -". c None", -"................", -"................", -".........#......", -".........##.....", -".........#a#....", -"..########aa#...", -"..#aaaaaaabaa#..", -"..#bbbbbbbbbaa#.", -"..#bbbbbbbbba#..", -"..########ba#c..", -"..ccccccc#a#c...", -"........c##c....", -"........c#c.....", -"........cc......", -"........c.......", -"................", -"................"}; - diff --git a/muse/muse/xpm/frewind.xpm b/muse/muse/xpm/frewind.xpm deleted file mode 100644 index 8c11fc3a..00000000 --- a/muse/muse/xpm/frewind.xpm +++ /dev/null @@ -1,17 +0,0 @@ -/* XPM */ -static const char * frewind_xpm[] = { -"17 12 2 1", -" c None", -". c #000000", -" . . ", -" ... ... ", -" ... ... ", -" .... .... ", -" .... .... ", -" ..... ..... ", -" ..... ..... ", -" .... .... ", -" .... .... ", -" ... ... ", -" ... ... ", -" . . "}; diff --git a/muse/muse/xpm/glue.xpm b/muse/muse/xpm/glue.xpm deleted file mode 100644 index caff2484..00000000 --- a/muse/muse/xpm/glue.xpm +++ /dev/null @@ -1,49 +0,0 @@ -/* XPM */ -static const char * glue_xpm[] = { -"22 22 24 1", -" c None", -". c #A0A0A4", -"+ c #8C9BBA", -"@ c #BBC4D6", -"# c #7C8BAA", -"$ c #A3ACBE", -"% c #7D8EAE", -"& c #98A6C0", -"* c #8895B0", -"= c #4F6693", -"- c #0D1628", -"; c #7586A6", -"> c #4A566E", -", c #000000", -"' c #6D7FA2", -") c #63779D", -"! c #9B9B9F", -"~ c #6A7A99", -"{ c #687B9F", -"] c #374664", -"^ c #424F6A", -"/ c #5C7199", -"( c #3B4967", -"_ c #3E4C68", -" ", -" ", -" . ", -" . ", -" .+. ", -" .+.. ", -" .@+#. ", -" .@+#.. ", -" .@@@$#. ", -" .@@@@@##. ", -" .@@@@@$%.. ", -" .&@@@@$*#=- ", -" .&@@@@$;#>,. ", -" .'*@@@*;'),. ", -" !~;$$*{')],. ", -" ,^;{*//(,.. ", -" ,_#))_,.. ", -" ,,,,,.. ", -" ..... ", -" ", -" ", -" "}; diff --git a/muse/muse/xpm/greendot.svg b/muse/muse/xpm/greendot.svg deleted file mode 100644 index 823240de..00000000 --- a/muse/muse/xpm/greendot.svg +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - diff --git a/muse/muse/xpm/gv.xpm b/muse/muse/xpm/gv.xpm deleted file mode 100644 index cf4a2ed1..00000000 --- a/muse/muse/xpm/gv.xpm +++ /dev/null @@ -1,23 +0,0 @@ -/* XPM */ -static const char * gv_xpm[] = { -"16 16 4 1", -" g None", -". g #000000", -"+ g #FFFFFF", -"@ g #C0C0C0", -" ........... ", -".+++++++++++. ", -".+@@@@+@@@++. ", -".+++++++++++. ", -".+@++@...@++. ", -".+++@.+++.@+. ", -".+@+.++@++.+. ", -".+++.++@@+.+. ", -".+++.+++++.+. ", -".+++@.+++..+. ", -".@@+@@....+.. ", -".@+@@@++++.+. ", -".@@++@+++++.+. ", -".@+@@+++++++.+. ", -" ........... .+.", -" . "}; diff --git a/muse/muse/xpm/home.xpm b/muse/muse/xpm/home.xpm deleted file mode 100644 index de96eea3..00000000 --- a/muse/muse/xpm/home.xpm +++ /dev/null @@ -1,27 +0,0 @@ -/* XPM */ -/* Drawn by Mark Donohoe for the K Desktop Environment */ -/* See http://www.kde.org */ -static const char *home_xpm[]={ -"16 16 4 1", -"# c #000000", -"a c #ffffff", -"b c #c0c0c0", -". c None", -"........... ....", -" ....##.......", -"..#...####......", -"..#..#aabb#.....", -"..#.#aaaabb#....", -"..##aaaaaabb#...", -"..#aaaaaaaabb#..", -".#aaaaaaaaabbb#.", -"###aaaaaaaabb###", -"..#aaaaaaaabb#..", -"..#aaa###aabb#..", -"..#aaa#.#aabb#..", -"..#aaa#.#aabb#..", -"..#aaa#.#aabb#..", -"..#aaa#.#aabb#..", -"..#####.######..", -"................"}; - diff --git a/muse/muse/xpm/initS.xpm b/muse/muse/xpm/initS.xpm deleted file mode 100644 index 998b02fe..00000000 --- a/muse/muse/xpm/initS.xpm +++ /dev/null @@ -1,23 +0,0 @@ -/* XPM */ -static const char * initS_xpm[] = { -"16 16 4 1", -" c None", -". c #C00000", -"+ c #FFFFFF", -"@ c #000000", -"................", -"................", -"..++++++++++++..", -"..+@@++++++@@+..", -"..+@@@++++@@@+..", -"..++@@@++@@@++..", -"..+++@@@@@@+++..", -"..++++@@@@++++..", -"..++++@@@@++++..", -"..+++@@@@@@+++..", -"..++@@@++@@@++..", -"..+@@@++++@@@+..", -"..+@@++++++@@+..", -"..++++++++++++..", -"................", -"................"}; diff --git a/muse/muse/xpm/inputpluginS.xpm b/muse/muse/xpm/inputpluginS.xpm deleted file mode 100644 index 33e8e578..00000000 --- a/muse/muse/xpm/inputpluginS.xpm +++ /dev/null @@ -1,22 +0,0 @@ -/* XPM */ -static const char *inputpluginS_xpm[]={ -"16 16 3 1", -"a c #000000", -". c #00ff00", -"# c #ffffff", -"................", -"................", -"..############..", -"..#aaaaa######a.", -".aaaaaaaaaa##a.a", -"a.#aaaaa######a.", -"..############..", -"..#aaaaa######a.", -"aaaaaaaaaaa##a.a", -"..#aaaaa######a.", -"..############..", -"a.#aaaaa######a.", -".aaaaaaaaaa##a.a", -"..#aaaaa######a.", -"................", -"................"}; diff --git a/muse/muse/xpm/italic.xpm b/muse/muse/xpm/italic.xpm deleted file mode 100644 index e21ebbff..00000000 --- a/muse/muse/xpm/italic.xpm +++ /dev/null @@ -1,16 +0,0 @@ -/* XPM */ -static const char * italic_xpm[] = { -"11 11 2 1", -" g None", -". g #000000", -" ", -" .... ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .... ", -" "}; diff --git a/muse/muse/xpm/listS.xpm b/muse/muse/xpm/listS.xpm deleted file mode 100644 index cc561f06..00000000 --- a/muse/muse/xpm/listS.xpm +++ /dev/null @@ -1,26 +0,0 @@ -/* XPM */ -static const char *listS_xpm[]={ -"16 16 7 1", -"# c #000000", -"e c #008000", -". c #00ff00", -"b c #dbdbdb", -"a c #dcdcdc", -"d c #fafafa", -"c c #fbfbfb", -"................", -"..############..", -"..#aaaaaaaabb#..", -"..#c#c#c#c#db#e.", -"..#cc#c#c#c#b#e.", -"..#cccccccccb#e.", -"..#c#a#a#a#ab#e.", -"..#cc#a#a#a#b#e.", -"..#cccccccccb#e.", -"..#c#a#a#a#ab#e.", -"..#cc#a#a#a#b#e.", -"..#cccccccccb#e.", -"..#cccccccccb#e.", -"..############e.", -"....eeeeeeeeeee.", -"................"}; diff --git a/muse/muse/xpm/lmark.xpm b/muse/muse/xpm/lmark.xpm deleted file mode 100644 index 2da119b9..00000000 --- a/muse/muse/xpm/lmark.xpm +++ /dev/null @@ -1,23 +0,0 @@ -/* XPM */ -static const char* lmark_xpm[]={ -"18 18 2 1", -"# c #0000ff", -". c None", -"..................", -"..................", -"..................", -"..................", -"..................", -"..................", -"..................", -"##########........", -".#########........", -"..########........", -"...#######........", -"....######........", -".....#####........", -"......####........", -".......###........", -"........##........", -"........##........", -"........##........"}; diff --git a/muse/muse/xpm/localoffS.xpm b/muse/muse/xpm/localoffS.xpm deleted file mode 100644 index 312793a5..00000000 --- a/muse/muse/xpm/localoffS.xpm +++ /dev/null @@ -1,22 +0,0 @@ -/* XPM */ -static const char *localoffS_xpm[]={ -"16 16 3 1", -"a c #000000", -". c #c00000", -"# c #ffffff", -"................", -"................", -"..############..", -"..############..", -"..####aaaa####..", -"..##aaaaaaaa##..", -"..##aaaaaaaa##..", -"..############..", -"..############..", -"..##aaaaaaaa##..", -"..##aaaaaaaa##..", -"..####aaaa####..", -"..############..", -"..############..", -"................", -"................"}; diff --git a/muse/muse/xpm/lock.xpm b/muse/muse/xpm/lock.xpm deleted file mode 100644 index 9c38103b..00000000 --- a/muse/muse/xpm/lock.xpm +++ /dev/null @@ -1,86 +0,0 @@ -/* XPM */ -static const char * lock_xpm[] = { -"15 15 68 1", -" c None", -". c #747474", -"+ c #838383", -"@ c #727272", -"# c #808080", -"$ c #929292", -"% c #7F7F7F", -"& c #7A7A7A", -"* c #6A6A6A", -"= c #8C8C8C", -"- c #F3F3F3", -"; c #DEDEDE", -"> c #2F2F2F", -", c #2C2C2C", -"' c #191919", -") c #242424", -"! c #3A3A3A", -"~ c #6D6D6D", -"{ c #CBCBCB", -"] c #212121", -"^ c #B6B6B6", -"/ c #D1D1D1", -"( c #C6C6C6", -"_ c #1D1D1D", -": c #787878", -"< c #C1C1C1", -"[ c #757575", -"} c #1F1F1F", -"| c #404040", -"1 c #BDBDBD", -"2 c #878787", -"3 c #CFCFCF", -"4 c #282828", -"5 c #1C1C1C", -"6 c #DCDCDC", -"7 c #7C7C7C", -"8 c #B5B5B5", -"9 c #262626", -"0 c #202020", -"a c #232323", -"b c #A3A3A3", -"c c #2D2D2D", -"d c #C4C4C4", -"e c #1E1E1E", -"f c #D8D8D8", -"g c #272727", -"h c #292929", -"i c #E3E3E3", -"j c #D4D4D4", -"k c #B8B8B8", -"l c #EBEBEB", -"m c #444444", -"n c #323232", -"o c #3B3B3B", -"p c #414141", -"q c #383838", -"r c #434343", -"s c #EFEFEF", -"t c #ABABAB", -"u c #E7E7E7", -"v c #A0A0A0", -"w c #353535", -"x c #363636", -"y c #373737", -"z c #C3C3C3", -"A c #969696", -"B c #1B1B1B", -"C c #8F8F8F", -".+@#$.@%&+%%@+*", -"=--;;>,')!;;--$", -"~{;;]!^;/(_;{/:", -"=<;)[^}_)/+|1<2", -"&3/41);;;56}(/%", -"73;)89;;;06_(/+", -"2(5abc;;;]d)e/%", -"7f5)90g]g0ahe3+", -"+;ai<(j(<x|yp(g-+", -".jn6z6ukeiC", -"@%@%=22@@%&+#=~"}; diff --git a/muse/muse/xpm/loop.xpm b/muse/muse/xpm/loop.xpm deleted file mode 100644 index acd999c8..00000000 --- a/muse/muse/xpm/loop.xpm +++ /dev/null @@ -1,29 +0,0 @@ -/* XPM */ -static char *loop[]={ -"22 22 4 1", -". c None", -"a c #000000", -"b c #7f7f7f", -"# c #ffffff", -"......................", -"......................", -".......########.......", -"......#aaaaaaaab......", -".....#abbbbbbbbab.....", -"....#ab........#ab....", -"....#ab........#ab....", -"....#ab........#ab....", -"....#ab.......#aaa....", -"....#ab.......#aaab...", -"....#ab......#aaaaa...", -"....#ab......#aaaaa...", -"....#ab......#ababa...", -"....#ab........bab....", -"....#ab........#ab....", -"....#ab........#ab....", -"....#ab........#ab....", -".....ba......##ab.....", -"......baaaaaaaab......", -"........bbbbbbb.......", -"......................", -"......................"}; diff --git a/muse/muse/xpm/master.xpm b/muse/muse/xpm/master.xpm deleted file mode 100644 index 8d241c9f..00000000 --- a/muse/muse/xpm/master.xpm +++ /dev/null @@ -1,15 +0,0 @@ -/* XPM */ -static const char*master_xpm[]={ -"10 10 2 1", -"# c #000000", -". c None", -"..........", -".#.,....#.", -".##....##.", -".###..###.", -".########.", -".##.##.##.", -".##....##.", -".##....##.", -".##....##.", -".........."}; diff --git a/muse/muse/xpm/mastertrackS.xpm b/muse/muse/xpm/mastertrackS.xpm deleted file mode 100644 index 3f1dfcb9..00000000 --- a/muse/muse/xpm/mastertrackS.xpm +++ /dev/null @@ -1,25 +0,0 @@ -/* XPM */ -static const char *mastertrackS_xpm[]={ -"16 16 6 1", -"# c #000000", -". c #00ff00", -"c c #808080", -"d c #c3c3c3", -"b c #ffc0c0", -"a c #ffffff", -"................", -"................", -"..#aaaaaaaaaaa..", -"..##aaaaaaaaaa..", -"..a##abbaaaaaa..", -"..aa##abbaaaaa..", -"..aaa#cbbbb####.", -"..aaaabcbbb#c##.", -"..aaaaabbbb####.", -"..aaaaacbbb####.", -"..aaaaaaa#a####.", -"..aaaaaaaaadddd.", -"..aaaaaaaaaaaa..", -"..aaaaaaaaaaaa..", -"................", -"................"}; diff --git a/muse/muse/xpm/mastertrack_graphic.xpm b/muse/muse/xpm/mastertrack_graphic.xpm deleted file mode 100644 index 0651619c..00000000 --- a/muse/muse/xpm/mastertrack_graphic.xpm +++ /dev/null @@ -1,28 +0,0 @@ -/* XPM */ -static const char * mastertrack_graphic_xpm[] = { -"16 16 9 1", -" c None", -". c #13A913", -"+ c #0AD700", -"@ c #800000", -"# c #FEFFFC", -"$ c #C2C4C0", -"% c #C20000", -"& c #FF0000", -"* c #078002", -"................", -".++@@++++++++++.", -".+#@@$########+.", -".+#%%$########+.", -".+#%%$########+.", -".+#&&$#@@#####+.", -".+#&&$#@@####@@.", -".@@&&$#%%####@@*", -".@@&&@@%%$###%%*", -".%%&&@@&&@@##%%*", -".%%&&%%&&@@@@&&*", -".&&&&%%&&%%@@&&*", -".&&&&&&&&%%%%&&*", -".&&&&&&&&&&%%&&*", -".+**************", -"................"}; diff --git a/muse/muse/xpm/mastertrack_list.xpm b/muse/muse/xpm/mastertrack_list.xpm deleted file mode 100644 index e8ed00db..00000000 --- a/muse/muse/xpm/mastertrack_list.xpm +++ /dev/null @@ -1,27 +0,0 @@ -/* XPM */ -static const char * mastertrack_list_xpm[] = { -"16 16 8 1", -" c None", -". c #13A913", -"+ c #0AD700", -"@ c #000100", -"# c #FEFFFC", -"$ c #DBDDDA", -"% c #078002", -"& c #C2C4C0", -"................", -".+@@@@@@@@@@@@+.", -".+@#$$$####$$@%.", -".+@$@&@&@&@&#@%.", -".+@##@&@&@&@#@%.", -".+@#$##$#####@%.", -".+@$@@#@#@#@#@%.", -".+@$@@#$@#@##@%.", -".+@$$##$#####@%.", -".+@#@@#@$@#@#@%.", -".+@#@@##@$@##@%.", -".+@$#@@#@#@##@%.", -".+@#@##@@#@@#@%.", -".+@$#####$$#$@%.", -".+@@@@@@@@@@@@%.", -"...%%%%%%%%%%%%."}; diff --git a/muse/muse/xpm/meta.xpm b/muse/muse/xpm/meta.xpm deleted file mode 100644 index c424c23c..00000000 --- a/muse/muse/xpm/meta.xpm +++ /dev/null @@ -1,27 +0,0 @@ -/* XPM */ -static const char * meta_xpm[] = { -"22 22 2 1", -" c #FFFFFFFFFFFF", -". c #000000000000", -" ", -" ", -" ", -" ", -" ........ .... ", -" .. .. .. .. .. ", -" .. .. .. ...... ", -" .. .. .. .. ", -" .. .. .. .. . ", -" ... .. ... .... ", -" ", -" ", -" .. ", -" .. ", -" .... .... ", -" .. .. ", -" .. ..... ", -" .. .. .. ", -" .. .. .. ", -" ... ....... ", -" ", -" "}; diff --git a/muse/muse/xpm/midi_edit_instrument.xpm b/muse/muse/xpm/midi_edit_instrument.xpm deleted file mode 100644 index 90e3df49..00000000 --- a/muse/muse/xpm/midi_edit_instrument.xpm +++ /dev/null @@ -1,27 +0,0 @@ -/* XPM */ -static const char * midi_edit_instrument_xpm[] = { -"16 16 8 1", -" c None", -". c #000000", -"+ c #FFFFFF", -"@ c #FF0000", -"# c #A0A0A0", -"$ c #808000", -"% c #404000", -"& c #585858", -" ", -" ........... ", -" .+++++++++. @@", -" .+########.@@@", -" .+++++++++$%@ ", -" .+#######$%$ ", -" .+++++++$%$ ", -" .+####+$%$. ", -" .+++++$%$+. ", -" .+#++$%$++. ", -" .+++&$$+++. ", -" .+++&&++++. ", -" .+++++++++. ", -" .+#######+. ", -" .+++++++++. ", -" ........... "}; diff --git a/muse/muse/xpm/midi_init_instr.xpm b/muse/muse/xpm/midi_init_instr.xpm deleted file mode 100644 index a64dc56f..00000000 --- a/muse/muse/xpm/midi_init_instr.xpm +++ /dev/null @@ -1,28 +0,0 @@ -/* XPM */ -static const char * midi_init_instr_xpm[] = { -"16 16 9 1", -" c None", -". c #800000", -"+ c #C00000", -"@ c #E1DDDA", -"# c #C7C0BB", -"$ c #FFFFFF", -"% c #0E0702", -"& c #080401", -"* c #000000", -"................", -".++++++++++++++.", -".+@###$$$$@##$+.", -".+@%&#@$$##&&#+.", -".+@%*&#@@@&*&#+.", -".+@#&*&#@&**##+.", -".+@$#&*&*&%@@@+.", -".+@$$#&***#@@@+.", -".+@$$#****#@$@+.", -".+@@#%*%&&%#@@+.", -".+@#&*%#@&*&#@+.", -".+#&*%##$@**%#+.", -".+#%%#@$$@#%%#+.", -".+@@@@$$$$$##$+.", -".++++++++++++++.", -"................"}; diff --git a/muse/muse/xpm/midi_local_off.xpm b/muse/muse/xpm/midi_local_off.xpm deleted file mode 100644 index 80dd1268..00000000 --- a/muse/muse/xpm/midi_local_off.xpm +++ /dev/null @@ -1,105 +0,0 @@ -/* XPM */ -static const char * midi_local_off_xpm[] = { -"16 16 86 1", -" c None", -". c #800000", -"+ c #C00000", -"@ c #FFFFFF", -"# c #F2F2F2", -"$ c #3D3D3D", -"% c #414141", -"& c #FEFEFE", -"* c #F1F1F1", -"= c #BFBFBF", -"- c #E7E7E7", -"; c #EEEEEE", -"> c #363636", -", c #353535", -"' c #D1D1D1", -") c #B5B5B5", -"! c #FAFAFA", -"~ c #878787", -"{ c #040404", -"] c #636363", -"^ c #E9E9E9", -"/ c #6B6B6B", -"( c #0E0E0E", -"_ c #999999", -": c #C4C4C4", -"< c #1E1E1E", -"[ c #1C1C1C", -"} c #B7B7B7", -"| c #ECECEC", -"1 c #F7F7F7", -"2 c #9E9E9E", -"3 c #121212", -"4 c #2E2E2E", -"5 c #DFDFDF", -"6 c #535353", -"7 c #070707", -"8 c #EFEFEF", -"9 c #E5E5E5", -"0 c #4C4C4C", -"a c #0A0A0A", -"b c #949494", -"c c #212121", -"d c #B8B8B8", -"e c #979797", -"f c #454545", -"g c #171717", -"h c #3C3C3C", -"i c #DADADA", -"j c #494949", -"k c #BEBEBE", -"l c #292929", -"m c #242424", -"n c #101010", -"o c #A8A8A8", -"p c #4B4B4B", -"q c #FDFDFD", -"r c #868686", -"s c #373737", -"t c #828282", -"u c #090909", -"v c #5C5C5C", -"w c #F0F0F0", -"x c #F4F4F4", -"y c #FBFBFB", -"z c #404040", -"A c #0F0F0F", -"B c #A5A5A5", -"C c #111111", -"D c #4E4E4E", -"E c #B4B4B4", -"F c #EBEBEB", -"G c #ACACAC", -"H c #464646", -"I c #E8E8E8", -"J c #131313", -"K c #484848", -"L c #2D2D2D", -"M c #0D0D0D", -"N c #5A5A5A", -"O c #CECECE", -"P c #FCFCFC", -"Q c #CCCCCC", -"R c #7F7F7F", -"S c #262626", -"T c #A7A7A7", -"U c #E2E2E2", -"................", -".++++++++++++++.", -".+@@@@#$%&@@@@+.", -".+@*=-;>,&')!@+.", -".+!~{]^>,^/(_@+.", -".+:<[}|>,12345+.", -".+67/8;>,&90ab+.", -".+,&@eaf+.", -".+ghi@;>j&@k c #E1E1E1", -", c #AE0000", -"' c #A3A3A3", -") c #909090", -"! c #474747", -"~ c #D1D1D1", -"{ c #E6E6E6", -"] c #B3B3B3", -"^ c #B0B0B0", -"/ c #C0C0C0", -"( c #CBCBCB", -"_ c #B5B5B5", -": c #DCDCDC", -"< c #DBDBDB", -"[ c #E4E4E4", -"} c #2A2A2A", -"| c #1E1E1E", -"1 c #C2C2C2", -"2 c #D3D3D3", -"3 c #4E4E4E", -"4 c #252525", -"5 c #EAEAEA", -"6 c #D7D7D7", -"7 c #CCCCCC", -"................", -".++++++++++++++.", -".+@@@@#$#@@@@@+.", -".+@@@#%%#@@@@@+.", -".+&@#%%%#####@+.", -".+&*%%%%%%=$#@+.", -".+&-%%%%%%%%;>,.", -".+@@#%%%');%!~,.", -".+@@{]%%']^%%]+.", -".+@@@@]$/(_=%/+.", -".+@@@:<]##;%=@+.", -".+@@[}|%%%%=!1+.", -".+@@234%%!$$]@+.", -".+@@@5677777@{+.", -".++++++++++++++.", -"................"}; diff --git a/muse/muse/xpm/midi_transform.xpm b/muse/muse/xpm/midi_transform.xpm deleted file mode 100644 index d354191f..00000000 --- a/muse/muse/xpm/midi_transform.xpm +++ /dev/null @@ -1,30 +0,0 @@ -/* XPM */ -static const char * midi_transform_xpm[] = { -"16 16 11 1", -" c None", -". c #58A8FF", -"+ c #A8DCFF", -"@ c #363636", -"# c #FFFFFF", -"$ c #CACACA", -"% c #626262", -"& c #000000", -"* c #85AECA", -"= c #010101", -"- c #4685CA", -"................", -".+++++++++@@+++.", -".+##@#####@@##+.", -".+##@$####@@##+.", -".+##@$####@@##+.", -".+#%&%##%@&&@%+.", -".+#%&%$#%@&&@%*.", -".+#%&%$#%@&&@%*.", -".+#%&%$#%@&&@%*.", -".+##&$$#%@&&@%*.", -".+#&=$##%@&&@%*.", -".+&&$$###$=&$$*.", -".&&$$####&&&$#+.", -"&&$$####&&&$$#+.", -"&**++++&&&**+++.", -"--....&&&--....."}; diff --git a/muse/muse/xpm/midi_transpose.xpm b/muse/muse/xpm/midi_transpose.xpm deleted file mode 100644 index 0fdf5ac0..00000000 --- a/muse/muse/xpm/midi_transpose.xpm +++ /dev/null @@ -1,31 +0,0 @@ -/* XPM */ -static const char * midi_transpose_xpm[] = { -"16 16 12 1", -" c None", -". c #58A8FF", -"+ c #000000", -"@ c #A8DCFF", -"# c #FFFFFF", -"$ c #CACACA", -"% c #797C7E", -"& c #808080", -"* c #545454", -"= c #7E7F7F", -"- c #6F91A8", -"; c #3A6FA8", -"......+.........", -".@@@@++@@@@@@@@.", -".@##+++#######@.", -".@#++$+$######@.", -".@#+$$+$##++##@.", -".@##$#+$#++++#@.", -".%&&&&+*&++++*=.", -".@####+$#+++$$@.", -".@##+++$#+$$$#@.", -".@#++++$#+$###@.", -".&&++++*&+*&&&&.", -".@##++$$#+$#+#@.", -".@###$$##+$++$@.", -".@#######+++$$@.", -".@@@@@@@@++--@@.", -".........+;;...."}; diff --git a/muse/muse/xpm/midiin.xpm b/muse/muse/xpm/midiin.xpm deleted file mode 100644 index 15b906ac..00000000 --- a/muse/muse/xpm/midiin.xpm +++ /dev/null @@ -1,23 +0,0 @@ -/* XPM */ -static const char* midiin_xpm[] ={ -"18 18 2 1", -". c None", -"# c #000000", -"......#####.......", -"....##.....##.....", -"...#...##....#....", -"..#....##.....#...", -".#..##.....##..#..", -".#..##.....##..#..", -"#...............#.", -"#...............#.", -"#..##.......##..#.", -"#..##.......##..#.", -"#...............#.", -".#....#####....#..", -".#....#####....#..", -"..#...##.##...#...", -"...#.........#....", -"....##.....##.....", -"......#####.......", -".................."}; diff --git a/muse/muse/xpm/miditransformS.xpm b/muse/muse/xpm/miditransformS.xpm deleted file mode 100644 index 3e43e097..00000000 --- a/muse/muse/xpm/miditransformS.xpm +++ /dev/null @@ -1,22 +0,0 @@ -/* XPM */ -static const char *miditransformS_xpm[]={ -"16 16 3 1", -"a c #303030", -". c #58a8ff", -"# c #ffffff", -"................", -"................", -"..###aaaaaa###..", -"..##a######a##..", -"..#a###aa###a#..", -"..a####aa####a..", -"..a#aa####aa#a..", -"..a#aa####aa#a..", -"..a##########a..", -"..a#aa####aa#a..", -"..a#aa####aa#a..", -"..#a########a#..", -"..##a######a##..", -"..###aaaaaa###..", -"................", -"................"}; diff --git a/muse/muse/xpm/miditransposeS.xpm b/muse/muse/xpm/miditransposeS.xpm deleted file mode 100644 index fa4593f4..00000000 --- a/muse/muse/xpm/miditransposeS.xpm +++ /dev/null @@ -1,25 +0,0 @@ -/* XPM */ -static const char *miditransposeS_xpm[]={ -"16 16 6 1", -"a c #303030", -". c #58a8ff", -"c c #800000", -"b c #ff0000", -"d c #ffc0c0", -"# c #ffffff", -"................", -"................", -"..###aaaaab###..", -"..##a#####bb##..", -"..#a###aa#bbb#..", -"..a####aa#bbbb..", -"..a#aabbbbccbbb.", -"..a#aabbbbccbbb.", -"..a###bb##bbbbd.", -"..a#aabb##ccbd..", -"..a#aabb##ccda..", -"..#a##bb##bda#..", -"..##a#bb##da##..", -"..###abbaaa###..", -"......bb........", -"................"}; diff --git a/muse/muse/xpm/minus.xpm b/muse/muse/xpm/minus.xpm deleted file mode 100644 index 7533722a..00000000 --- a/muse/muse/xpm/minus.xpm +++ /dev/null @@ -1,24 +0,0 @@ -/* XPM */ -static const char * minus_xpm[] = { -"16 16 5 1", -" c None", -". c #000000", -"+ c #FFFFFF", -"@ c #DCDCDC", -"# c #A0A0A4", -" ", -" ..... ", -" ..+++++.. ", -" .++@@@@@@@. ", -" .+@@@@@@@@. ", -" .+@@@@@@@@@#. ", -" .+@@@@@@@@@#. ", -" .+@.......@#. ", -" .+@@@@@@@@@#. ", -" .+@@@@@@@@@#. ", -" .@@@@@@@@#. ", -" .@@@@@@@##. ", -" ..#####.. ", -" ..... ", -" ", -" "}; diff --git a/muse/muse/xpm/mixerS.xpm b/muse/muse/xpm/mixerS.xpm deleted file mode 100644 index b7b19735..00000000 --- a/muse/muse/xpm/mixerS.xpm +++ /dev/null @@ -1,21 +0,0 @@ -/* XPM */ -static const char * mixerS_xpm[] = { -"16 16 2 1", -" c None", -". c #000000", -" ", -" ", -" ", -" . . . . ", -" ... . ... . ", -" ... . ... . ", -" . . . . ", -" . . . ... ", -" . . . ... ", -" . . . . ", -" . . . . ", -" . ... . . ", -" . ... . . ", -" ", -" ", -" "}; diff --git a/muse/muse/xpm/mixeraudioS.xpm b/muse/muse/xpm/mixeraudioS.xpm deleted file mode 100644 index bc02fc72..00000000 --- a/muse/muse/xpm/mixeraudioS.xpm +++ /dev/null @@ -1,22 +0,0 @@ -/* XPM */ -static const char *mixerAudioS_xpm[]={ -"16 16 3 1", -"a c #000000", -". c #ff00ff", -"# c #ffffff", -"................", -"................", -"..############..", -"..#a##a##a##a#..", -"..aaa#a#aaa#a#..", -"..aaa#a#aaa#a#..", -"..#a##a##a##a#..", -"..#a##a##a#aaa..", -"..#a##a##a#aaa..", -"..#a##a##a##a#..", -"..#a#aaa#a##a#..", -"..#a#aaa#a##a#..", -"..############..", -"..############..", -"................", -"................"}; diff --git a/muse/muse/xpm/mono.svg b/muse/muse/xpm/mono.svg deleted file mode 100644 index ac764181..00000000 --- a/muse/muse/xpm/mono.svg +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - image/svg+xml - - - - - - - - diff --git a/muse/muse/xpm/muse_icon.xpm b/muse/muse/xpm/muse_icon.xpm deleted file mode 100644 index a7621e34..00000000 --- a/muse/muse/xpm/muse_icon.xpm +++ /dev/null @@ -1,411 +0,0 @@ -/* XPM */ -static const char * muse_icon_xpm[] = { -"32 32 376 2", -" c None", -". c #616161", -"+ c #626262", -"@ c #8E4B33", -"# c #7C7B65", -"$ c #C6C4A3", -"% c #9F984E", -"& c #B46C17", -"* c #E6A34D", -"= c #EBB268", -"- c #E59F3C", -"; c #BC7A1B", -"> c #AB741E", -", c #B6AB8B", -"' c #E5E3B8", -") c #C4C07B", -"! c #BAAC17", -"~ c #778E33", -"{ c #87877C", -"] c #DA9235", -"^ c #E9B168", -"/ c #E9B97A", -"( c #E9AD5E", -"_ c #E8A855", -": c #E08B1D", -"< c #75584E", -"[ c #636363", -"} c #BF8E48", -"| c #EBDEB6", -"1 c #ECE9BB", -"2 c #C4BC75", -"3 c #D2981B", -"4 c #B57614", -"5 c #6C6C6C", -"6 c #6B6B6B", -"7 c #979560", -"8 c #FAFADD", -"9 c #F7F6E4", -"0 c #E3DAC2", -"a c #CEBC9F", -"b c #D59E56", -"c c #E69E41", -"d c #E0A045", -"e c #9D794A", -"f c #6A6A6A", -"g c #696969", -"h c #666666", -"i c #646464", -"j c #BE791F", -"k c #D2BF9B", -"l c #FDF9CE", -"m c #E2E0B1", -"n c #C2BC5D", -"o c #C6941B", -"p c #D1821C", -"q c #B76F1A", -"r c #6D6D6D", -"s c #A7A164", -"t c #C7C38F", -"u c #C5C074", -"v c #C5C06E", -"w c #C5C380", -"x c #CDCAA2", -"y c #C9C09E", -"z c #C5A772", -"A c #E29A3D", -"B c #E1AA5C", -"C c #C89347", -"D c #6F6A68", -"E c #957548", -"F c #C4A471", -"G c #F6EBC1", -"H c #F3F1C2", -"I c #CDCB9C", -"J c #C6BE3B", -"K c #B8C300", -"L c #CA8119", -"M c #D4831B", -"N c #BC7315", -"O c #6E6E6E", -"P c #6F6F6F", -"Q c #717171", -"R c #B7B342", -"S c #E5DD18", -"T c #EBE30C", -"U c #E2DA11", -"V c #E3DB0E", -"W c #E0D521", -"X c #CBC650", -"Y c #C6C38D", -"Z c #C7C19F", -"` c #C29B63", -" . c #E0A44F", -".. c #DEAA5F", -"+. c #D8953F", -"@. c #CEA25D", -"#. c #E7D7AC", -"$. c #F7F4C8", -"%. c #DDDAAA", -"&. c #B5AE36", -"*. c #6A6D62", -"=. c #8C643D", -"-. c #DA8B1B", -";. c #727272", -">. c #737373", -",. c #A69F55", -"'. c #BDB53E", -"). c #EAE30F", -"!. c #C1BB16", -"~. c #7C784F", -"{. c #ABA13C", -"]. c #CEC533", -"^. c #DDDBB0", -"/. c #E0DBBD", -"(. c #E6DBBB", -"_. c #F2E9C5", -":. c #FAFACF", -"<. c #E3E0B0", -"[. c #C5C180", -"}. c #CCC333", -"|. c #8F8B4E", -"1. c #686868", -"2. c #A8702D", -"3. c #D7861E", -"4. c #CC7F1B", -"5. c #B77813", -"6. c #747474", -"7. c #AEAA3F", -"8. c #B7AA10", -"9. c #9F9C48", -"0. c #C3BC4C", -"a. c #D0CD9D", -"b. c #CDCA9A", -"c. c #CFC634", -"d. c #A8A23D", -"e. c #B17126", -"f. c #CE7C1B", -"g. c #C07719", -"h. c #AF5A16", -"i. c #BFB730", -"j. c #D5CF28", -"k. c #A6411D", -"l. c #777664", -"m. c #7C7C7C", -"n. c #7B7B7B", -"o. c #797979", -"p. c #777777", -"q. c #8A8761", -"r. c #A39E4A", -"s. c #A5A148", -"t. c #91915A", -"u. c #73746F", -"v. c #9F692A", -"w. c #B77210", -"x. c #C13200", -"y. c #C9C430", -"z. c #C4BB31", -"A. c #A7621E", -"B. c #8D8A5C", -"C. c #7A7A7A", -"D. c #787878", -"E. c #757575", -"F. c #C6801D", -"G. c #CCC337", -"H. c #BDAF34", -"I. c #B2771B", -"J. c #928E63", -"K. c #767676", -"L. c #707070", -"M. c #8D734E", -"N. c #C2B669", -"O. c #BDB048", -"P. c #A29B45", -"Q. c #968E3B", -"R. c #7F7248", -"S. c #CCC43B", -"T. c #C2B635", -"U. c #BF971E", -"V. c #81826D", -"W. c #BC9E4D", -"X. c #C8C25D", -"Y. c #CFC746", -"Z. c #DFD424", -"`. c #D6CB1F", -" + c #6B754E", -".+ c #CDC538", -"++ c #C9BA36", -"@+ c #BF9D28", -"#+ c #997448", -"$+ c #C0B65F", -"%+ c #CEC949", -"&+ c #D9CF30", -"*+ c #EADD0B", -"=+ c #A49D2B", -"-+ c #CFC632", -";+ c #CDC13C", -">+ c #BF9B2C", -",+ c #B29743", -"'+ c #CAC355", -")+ c #D4CE3B", -"!+ c #E7E016", -"~+ c #EEE609", -"{+ c #C2BC19", -"]+ c #CDC42E", -"^+ c #CEC343", -"/+ c #C09B2B", -"(+ c #95764A", -"_+ c #C6B44F", -":+ c #D1C840", -"<+ c #DDD328", -"[+ c #D9D110", -"}+ c #656565", -"|+ c #C5BC2E", -"1+ c #D3CA3C", -"2+ c #C6A32B", -"3+ c #7C7B5F", -"4+ c #BA9337", -"5+ c #CDC54A", -"6+ c #D8CE31", -"7+ c #E7DF0A", -"8+ c #867C47", -"9+ c #B7AC34", -"0+ c #D8D231", -"a+ c #C8AA2F", -"b+ c #8B8754", -"c+ c #676767", -"d+ c #9D7940", -"e+ c #C6B949", -"f+ c #D6CC35", -"g+ c #E5D918", -"h+ c #ABA32C", -"i+ c #9E9945", -"j+ c #CFBB34", -"k+ c #977F46", -"l+ c #837056", -"m+ c #B99A3C", -"n+ c #D2C93F", -"o+ c #DFD824", -"p+ c #CCC617", -"q+ c #7C7C5B", -"r+ c #E4D819", -"s+ c #D4CB37", -"t+ c #B27A2B", -"u+ c #A47A39", -"v+ c #CCC441", -"w+ c #DAD02D", -"x+ c #DED20F", -"y+ c #756E58", -"z+ c #D8CD17", -"A+ c #DCD629", -"B+ c #C99F2C", -"C+ c #80744D", -"D+ c #976E3E", -"E+ c #C0AF3B", -"F+ c #E8DB15", -"G+ c #EAE20B", -"H+ c #989B34", -"I+ c #BFB622", -"J+ c #E5D91A", -"K+ c #D4BE2D", -"L+ c #BC7C21", -"M+ c #73625C", -"N+ c #AF8E36", -"O+ c #D3CA3A", -"P+ c #BFBA1E", -"Q+ c #847C4B", -"R+ c #E7DB10", -"S+ c #DCD129", -"T+ c #C89025", -"U+ c #AB742C", -"V+ c #A1793A", -"W+ c #E0D523", -"X+ c #EADD0F", -"Y+ c #D3CD16", -"Z+ c #D3C812", -"`+ c #E8DB13", -" @ c #CD7F1A", -".@ c #A78034", -"+@ c #6A6D60", -"@@ c #8A7451", -"#@ c #C4B941", -"$@ c #E8E013", -"%@ c #77755E", -"&@ c #89864A", -"*@ c #E9DC0E", -"=@ c #C4AC57", -"-@ c #DD8E28", -";@ c #C3A358", -">@ c #ADA86E", -",@ c #8F8E78", -"'@ c #8C7E69", -")@ c #BEB591", -"!@ c #DBD8A8", -"~@ c #DCD127", -"{@ c #95944A", -"]@ c #B7AF30", -"^@ c #DDD728", -"/@ c #C6C06B", -"(@ c #C7B17C", -"_@ c #DC963B", -":@ c #D99A38", -"<@ c #B6AC75", -"[@ c #BDB592", -"}@ c #E8E6B5", -"|@ c #D8D6A7", -"1@ c #C6C367", -"2@ c #AFA946", -"3@ c #6F716A", -"4@ c #CCC625", -"5@ c #D5CF38", -"6@ c #C5C384", -"7@ c #DBD0A4", -"8@ c #D3A966", -"9@ c #C3AF7A", -"0@ c #DCD9AB", -"a@ c #C3BB3E", -"b@ c #757671", -"c@ c #7E7E7E", -"d@ c #7F7F7F", -"e@ c #7D7D7D", -"f@ c #717467", -"g@ c #D4C521", -"h@ c #C5C288", -"i@ c #EFECC6", -"j@ c #EFEED0", -"k@ c #C2C0A1", -"l@ c #B4AE6F", -"m@ c #C4A92F", -"n@ c #A77D3A", -"o@ c #837766", -"p@ c #818181", -"q@ c #838383", -"r@ c #707366", -"s@ c #D0C621", -"t@ c #C5C078", -"u@ c #E1DEB2", -"v@ c #C6BBA1", -"w@ c #DA9945", -"x@ c #DE9639", -"y@ c #E19426", -"z@ c #D4881B", -"A@ c #937C5E", -"B@ c #808080", -"C@ c #858585", -"D@ c #888888", -"E@ c #696D5C", -"F@ c #D0C50B", -"G@ c #D8D21F", -"H@ c #B2A945", -"I@ c #AB7622", -"J@ c #A57536", -"K@ c #746863", -"L@ c #848484", -"M@ c #828282", -"N@ c #8B8B8B", -"O@ c #8E8E8E", -"P@ c #919191", -"Q@ c #959595", -"R@ c #979797", -"S@ c #898989", -"T@ c #878787", -"U@ c #868686", -"V@ c #8C8C8C", -"W@ c #9A9A9A", -"X@ c #9E9E9E", -"Y@ c #A3A3A3", -"Z@ c #A8A8A8", -"`@ c #ABABAB", -" # c #A0A0A0", -".# c #989898", -"+# c #9C9C9C", -"@# c #969696", -"## c #949494", -"$# c #939393", -"%# c #9B9B9B", -"&# c #8F8F8F", -". . . . . . . . . . . . . . . . . . . . . . . . . . + + . . . . ", -". . . . . . . . @ . . . . . . . . . . . . . . . . # $ % . . . . ", -". . . . . . & * = - ; . . . . . . . . . . . . > , ' ) ! . . . . ", -". . . . ~ { ] ^ / ( _ : < [ [ + . . . . . . } | 1 2 3 4 . . . . ", -"5 5 5 6 7 8 9 0 a b c * d e 5 6 f g h i j k l m n o p q . . . . ", -"r r r 5 s t u v w x y z A B C D 5 f E F G H I J K L M N . . . . ", -"O O P Q R S T U V W X Y Z ` ...+.@.#.$.%.v &.*.=.-.p q . . . . ", -"P ;.;.>.,.'.).!.. ~.{.].u ^./.(._.:.<.[.}.|.1.5 2.3.4.5.. . . . ", -"Q ;.;.>.6.7.S 8.i ;.Q Q 9.0.[.a.b.u c.d.*.r r 5 e.f.g.h.. . . . ", -"Q ;.;.>.6.i.j.k.l.m.n.n.o.p.q.r.s.t.u.P r O 5 6 v.N w.x.+ + . . ", -"Q ;.;.>.6.y.z.A.B.m.m.C.n.o.D.p.E.6.;.;.Q P r 6 F.A.. + + + + + ", -"Q Q ;.;.>.G.H.I.J.C.o.n.o.D.p.K.E.6.;.Q L.P r M.N.O.P.Q.R.+ + + ", -"Q Q Q ;.;.S.T.U.V.D.o.p.o.p.K.E.6.>.;.Q P 5 5 W.X.Y.Z.S `. ++ + ", -"L.L.Q Q Q .+++@+>.>.;.>.>.K.K.6.>.;.Q P O 5 #+$+%+&+T *+=+[ + + ", -"P P L.Q Q -+;+>+Q 5 Q Q ;.Q ;.>.;.Q L.P O r ,+'+)+!+~+{+i i [ + ", -"P P P P L.]+^+/+O g 5 L.P Q L.L.Q L.P O r (+_+:+<+~+[+}+i i [ [ ", -"P O O P P |+1+2+3+1.g O P P P O O P O r D 4+5+6+).7+8+}+i i i [ ", -"O r O O O 9+0+a+b+c+1.f 5 O O r 5 5 r 5 d+e+f+g+~+h+}+}+i i [ [ ", -"O 5 r r r i+<+j+k+c+c+g f f 5 5 5 6 6 l+m+n+o+~+p+h }+}+i i [ [ ", -"r 5 5 5 5 q+r+s+t+c+c+c+g g g g f f f u+v+w+).x+y+}+}+i i [ [ [ ", -"r 6 6 6 5 g z+A+B+C+h h 1.1.g 1.c+c+D+E+6+F+G+H+i i i [ i i i i ", -"5 f f f 6 1.I+J+K+L+}+}+h 1.c+c+c+M+N+O+W ~+P+h c+c+c+c+c+h h }+", -"5 g f f f 1.Q+R+S+T+U+}+}+c+c+h c+V+;+W+X+Y+g f f f f g g 1.c+c+", -"5 g g g f c+c+Z+`+K+ @.@+@g f 5 @@#@S+$@V %@f f g f 6 6 f g g 1.", -"6 1.1.g g c+h &@*@6+=@-@;@>@,@'@)@!@[.~@{@r 5 r 5 5 O O 6 6 f f ", -"6 f 5 P Q O 5 5 ]@^@/@(@_@:@<@[@}@|@1@2@>.;.;.Q ;.O O f f f f f ", -"K.D.p.p.D.K.5 O 3@4@5@6@7@8@9@m 0@[.a@b@K.6.6.;.;.L.O 5 6 f f g ", -"D.n.c@d@c@e@K.O 5 f@g@:+h@i@j@k@l@m@n@o@>.6.6.6.6.;.Q L.P P 6 f ", -"p.o.n.c@p@q@p@n.E.P r@s@5@t@u@v@w@x@y@z@A@B@d@n.D.K.6.;.Q L.O r ", -"C.m.c@B@q@C@D@D@q@o.Q E@F@G@H@I@L J@K@;.6.o.L@d@d@m.m.n.o.o.p.K.", -"e@d@M@L@D@N@O@P@Q@R@P@S@m.5 + g [ h ;.m.p@T@N@S@D@U@L@p@d@m.n.o.", -"B@q@U@S@V@P@Q@W@X@Y@Z@`@Z@ #.#+#.#@###$#W@%#.#$#&#N@D@L@M@d@e@n."}; diff --git a/muse/muse/xpm/muse_icon_64x64.png b/muse/muse/xpm/muse_icon_64x64.png deleted file mode 100644 index 5a1acb96..00000000 Binary files a/muse/muse/xpm/muse_icon_64x64.png and /dev/null differ diff --git a/muse/muse/xpm/mutebutton_off.xpm b/muse/muse/xpm/mutebutton_off.xpm deleted file mode 100644 index 37c50f1c..00000000 --- a/muse/muse/xpm/mutebutton_off.xpm +++ /dev/null @@ -1,165 +0,0 @@ -/* XPM */ -static const char * mutebutton_off_xpm[] = { -"22 22 140 2", -" c #000000", -". c #720000", -"+ c #7B0000", -"@ c #810000", -"# c #840000", -"$ c #870000", -"% c #8D0000", -"& c #930000", -"* c #980000", -"= c #9C0000", -"- c #9B0000", -"; c #970000", -"> c #900000", -", c #8C0000", -"' c #850000", -") c #800000", -"! c #760000", -"~ c #730000", -"{ c #710000", -"] c #770000", -"^ c #A10000", -"/ c #A90000", -"( c #AE0000", -"_ c #B10000", -": c #B60000", -"< c #B50000", -"[ c #B30000", -"} c #AC0000", -"| c #A70000", -"1 c #9E0000", -"2 c #8F0000", -"3 c #890000", -"4 c #7F0000", -"5 c #7A0000", -"6 c #7C0000", -"7 c #8E0000", -"8 c #A00000", -"9 c #AD0000", -"0 c #B80000", -"a c #C00000", -"b c #C60000", -"c c #C80000", -"d c #CB0000", -"e c #C70000", -"f c #BB0000", -"g c #B20000", -"h c #A30000", -"i c #960000", -"j c #860000", -"k c #920000", -"l c #BA0000", -"m c #C50000", -"n c #CE0000", -"o c #D40000", -"p c #D80000", -"q c #D70000", -"r c #DA0000", -"s c #D10000", -"t c #C90000", -"u c #C30000", -"v c #B40000", -"w c #A40000", -"x c #910000", -"y c #7D0000", -"z c #950000", -"A c #AB0000", -"B c #BD0000", -"C c #CC0000", -"D c #D60000", -"E c #DF0000", -"F c #E30000", -"G c #E10000", -"H c #DC0000", -"I c #D00000", -"J c #C20000", -"K c #BC0000", -"L c #A50000", -"M c #AF0000", -"N c #E40000", -"O c #E70000", -"P c #E60000", -"Q c #3F3F3F", -"R c #DD0200", -"S c #D90300", -"T c #D40200", -"U c #CD0000", -"V c #B90000", -"W c #AA0000", -"X c #9A0000", -"Y c #D20000", -"Z c #D90000", -"` c #DE0000", -" . c #E20000", -".. c #3B3B3B", -"+. c #313131", -"@. c #E00300", -"#. c #DD0300", -"$. c #D10100", -"%. c #A80000", -"&. c #880000", -"*. c #C40000", -"=. c #454545", -"-. c #E40200", -";. c #E10300", -">. c #DC0100", -",. c #D50100", -"'. c #D50000", -"). c #121212", -"!. c #E90000", -"~. c #CA0000", -"{. c #4C4C4C", -"]. c #525252", -"^. c #1E0700", -"/. c #E80000", -"(. c #BE0000", -"_. c #030A1D", -":. c #000F00", -"<. c #7E0000", -"[. c #CF0000", -"}. c #DB0000", -"|. c #0B0017", -"1. c #000700", -"2. c #BF0000", -"3. c #DD0000", -"4. c #D30000", -"5. c #990000", -"6. c #B00000", -"7. c #C10000", -"8. c #E00000", -"9. c #940000", -"0. c #7A0100", -"a. c #A60000", -"b. c #9D0000", -"c. c #9D0101", -"d. c #7B0200", -"e. c #8C0100", -"f. c #9E0101", -"g. c #8F0101", -"h. c #7F0101", -"i. c #720101", -" ", -" . + @ # $ % & & * = - ; > , ' ) + ! ~ { ", -" ] $ & - ^ / ( _ : < [ } | 1 * 2 3 # 4 5 ", -" 6 7 8 9 0 a b b c d e a f g / h - i 7 j ", -" 6 k | l m n o p q r q s t u f v 9 w - x ", -" y z A B C D r E F F G H q I d J K g L z ", -" ) * M J n D H E N O P Q R S T U m V W i ", -" # X _ u C Y Z ` .P ..+.@.#.S $.t f %.& ", -" &.8 : *.n Y p r E Q =. -.;.>.,.C f L % ", -" % L l c n '.Z r Q Q ). !.P F q d 0 ^ 3 ", -" > / K ~.s p Q {.].).^. /./.F p ~.< - @ ", -" > / (.U q H Q +. _.:. P /. .Z t g X <. ", -" x %.(.[.q }.+. |.1. E F ` p t [ i 6 ", -" 2 %.2.U '.}. 3.3.}.q c _ i y ", -" % w f d 4.p }.D r H 3.q t g i <. ", -" &.8 : c I 4.D 4.s H E ` D e g ; <. ", -" # 5.6.7.~.U n n U n H 8.3.o e 6.; <. ", -" 4 & / l a J m e t c n r }.Z n J 9 9.y ", -" 0.x h g l f 2.(.a m t U 4.4.I c f a.> + ", -" 0.% b.W M [ [ v 0 f 2.u e b u l 6.c.$ ! ", -" d.e.5.8 a.L L a.W A 6.[ < v M %.f.g.h.i. ", -" "}; diff --git a/muse/muse/xpm/mutebutton_on.xpm b/muse/muse/xpm/mutebutton_on.xpm deleted file mode 100644 index d66647d5..00000000 --- a/muse/muse/xpm/mutebutton_on.xpm +++ /dev/null @@ -1,352 +0,0 @@ -/* XPM */ -static const char * mutebutton_on_xpm[] = { -"22 22 327 2", -" c #000000", -". c #066714", -"+ c #056613", -"@ c #076915", -"# c #076A15", -"$ c #076A16", -"% c #086B17", -"& c #096C18", -"* c #066B15", -"= c #066B14", -"- c #076F17", -"; c #0C751C", -"> c #107B20", -", c #0F7C1F", -"' c #0D791D", -") c #097318", -"! c #066E15", -"~ c #066C14", -"{ c #066814", -"] c #086B16", -"^ c #0A6F19", -"/ c #0B711A", -"( c #0B721B", -"_ c #0C731C", -": c #0C731B", -"< c #0A731A", -"[ c #097219", -"} c #077318", -"| c #0A781B", -"1 c #0E7E1F", -"2 c #118522", -"3 c #128722", -"4 c #0F8321", -"5 c #0B7D1B", -"6 c #077517", -"7 c #067016", -"8 c #056713", -"9 c #066914", -"0 c #086D17", -"a c #0A721A", -"b c #0F771E", -"c c #107A20", -"d c #117D21", -"e c #127E21", -"f c #117F21", -"g c #0E7D1F", -"h c #0D801E", -"i c #0F8620", -"j c #128F25", -"k c #159627", -"l c #169828", -"m c #159427", -"n c #0F8B21", -"o c #0B821C", -"p c #087718", -"q c #086E17", -"r c #0B731A", -"s c #0F791F", -"t c #138223", -"u c #168727", -"v c #188A29", -"w c #178D28", -"x c #168D27", -"y c #158C26", -"z c #128D25", -"A c #129125", -"B c #313131", -"C c #17A22B", -"D c #19AA2D", -"E c #1AAC2E", -"F c #19A82C", -"G c #159E29", -"H c #119122", -"I c #0C831D", -"J c #066D15", -"K c #0A7119", -"L c #0C7A1D", -"M c #118323", -"N c #178D29", -"O c #1B952E", -"P c #1B9C2E", -"Q c #1A9E2E", -"R c #199C2B", -"S c #3F3F3F", -"T c #189E2B", -"U c #17A32C", -"V c #18AC2E", -"W c #222222", -"X c #1CC033", -"Y c #1DC334", -"Z c #1BBE32", -"` c #18B22F", -" . c #16A22A", -".. c #129025", -"+. c #097519", -"@. c #0F801F", -"#. c #158E27", -"$. c #1A992E", -"%. c #1DA633", -"&. c #1EAD35", -"*. c #1CAE32", -"=. c #3B3B3B", -"-. c #19AF2F", -";. c #1ABE32", -">. c #1CC835", -",. c #1DD537", -"'. c #1DCF37", -"). c #1CC335", -"!. c #19B130", -"~. c #179C2A", -"{. c #067015", -"]. c #097A1A", -"^. c #108922", -"/. c #17982A", -"(. c #1CA831", -"_. c #1DB636", -":. c #1DBB35", -"<. c #454545", -"[. c #1ABD31", -"}. c #1AC332", -"|. c #1BD435", -"1. c #1BDE37", -"2. c #1CDA38", -"3. c #1DD038", -"4. c #1BB832", -"5. c #19A22D", -"6. c #067215", -"7. c #0A7F1B", -"8. c #119124", -"9. c #18A22D", -"0. c #1BB635", -"a. c #1BC336", -"b. c #121212", -"c. c #18C833", -"d. c #18CC33", -"e. c #19D934", -"f. c #1AE236", -"g. c #1BDF37", -"h. c #1CD136", -"i. c #1CBD35", -"j. c #19A42E", -"k. c #087618", -"l. c #0B821D", -"m. c #129725", -"n. c #4C4C4C", -"o. c #525252", -"p. c #1E0700", -"q. c #19CE33", -"r. c #17D232", -"s. c #18DA34", -"t. c #19E036", -"u. c #070707", -"v. c #19DB36", -"w. c #1ACF36", -"x. c #1BBB33", -"y. c #1AA22E", -"z. c #087818", -"A. c #0C861E", -"B. c #129B26", -"C. c #18B12F", -"D. c #030A1D", -"E. c #000F00", -"F. c #17D231", -"G. c #17D733", -"H. c #18DB35", -"I. c #19D534", -"J. c #1ACB34", -"K. c #1AB832", -"L. c #199F2D", -"M. c #087918", -"N. c #0D891F", -"O. c #129C26", -"P. c #17B22F", -"Q. c #0B0017", -"R. c #000700", -"S. c #16D230", -"T. c #16D531", -"U. c #16D731", -"V. c #010101", -"W. c #19D034", -"X. c #18C432", -"Y. c #19B230", -"Z. c #169A2A", -"`. c #087A19", -" + c #0D881F", -".+ c #139C27", -"++ c #17AF2D", -"@+ c #17CF30", -"#+ c #14CF2F", -"$+ c #14D130", -"%+ c #15D330", -"&+ c #16CC31", -"*+ c #18C132", -"=+ c #18B02E", -"-+ c #159828", -";+ c #0A7A1A", -">+ c #149C27", -",+ c #17AE2D", -"'+ c #18BB31", -")+ c #18C232", -"!+ c #16CD31", -"~+ c #14CC2F", -"{+ c #14CE30", -"]+ c #14CD2F", -"^+ c #17CA31", -"/+ c #15BF2F", -"(+ c #15AE2B", -"_+ c #129624", -":+ c #0E8821", -"<+ c #17AD2E", -"[+ c #18BA31", -"}+ c #19C331", -"|+ c #17C730", -"1+ c #15CC30", -"2+ c #15CA30", -"3+ c #14CB2E", -"4+ c #15CD2F", -"5+ c #14C72E", -"6+ c #14BD2C", -"7+ c #11AD29", -"8+ c #0F9423", -"9+ c #0B7B1A", -"0+ c #0F8720", -"a+ c #139B26", -"b+ c #16AA2B", -"c+ c #17B82D", -"d+ c #17C130", -"e+ c #17C72F", -"f+ c #15CB30", -"g+ c #16C730", -"h+ c #15C82F", -"i+ c #12C82B", -"j+ c #11C52C", -"k+ c #10BA29", -"l+ c #0FA825", -"m+ c #0C9020", -"n+ c #0B791C", -"o+ c #0D871F", -"p+ c #119625", -"q+ c #15A82A", -"r+ c #16B52C", -"s+ c #17C12E", -"t+ c #16C82E", -"u+ c #14CA30", -"v+ c #15C92F", -"w+ c #15C52F", -"x+ c #14C42F", -"y+ c #10C32A", -"z+ c #10C02A", -"A+ c #0EB526", -"B+ c #0DA322", -"C+ c #0A8D1D", -"D+ c #097419", -"E+ c #0E9121", -"F+ c #11A126", -"G+ c #14AF29", -"H+ c #14BC2C", -"I+ c #14C12D", -"J+ c #14C32D", -"K+ c #13C32E", -"L+ c #14C22D", -"M+ c #13C12D", -"N+ c #13BA2B", -"O+ c #10B928", -"P+ c #10B828", -"Q+ c #0EB426", -"R+ c #0DAA23", -"S+ c #0B9A20", -"T+ c #08871B", -"U+ c #077217", -"V+ c #0A871D", -"W+ c #0D9521", -"X+ c #10A425", -"Y+ c #11AE27", -"Z+ c #11B228", -"`+ c #12B529", -" @ c #11B628", -".@ c #10B429", -"+@ c #10B227", -"@@ c #10AF27", -"#@ c #10AC27", -"$@ c #0FAB26", -"%@ c #0EA824", -"&@ c #0DA624", -"*@ c #0CA221", -"=@ c #0B9C20", -"-@ c #088F1C", -";@ c #068018", -">@ c #056D13", -",@ c #057214", -"'@ c #067A17", -")@ c #09841B", -"!@ c #0C911E", -"~@ c #0D9921", -"{@ c #0E9F22", -"]@ c #0EA123", -"^@ c #0DA222", -"/@ c #0DA123", -"(@ c #0C9C21", -"_@ c #0B981F", -":@ c #0C971F", -"<@ c #0C951F", -"[@ c #0B931F", -"}@ c #0A911E", -"|@ c #088E1C", -"1@ c #07891A", -"2@ c #058218", -"3@ c #047715", -"4@ c #036812", -"5@ c #046C12", -"6@ c #047014", -"7@ c #057615", -"8@ c #077D19", -"9@ c #09831B", -"0@ c #09871C", -"a@ c #08891C", -"b@ c #088A1B", -"c@ c #078619", -"d@ c #078419", -"e@ c #078018", -"f@ c #067D18", -"g@ c #067C18", -"h@ c #067D17", -"i@ c #057B16", -"j@ c #047815", -"k@ c #037313", -"l@ c #036D12", -" ", -" . + + . @ # $ % & % * = - ; > , ' ) ! ~ ", -" . + { ] ^ / ( _ : < [ } | 1 2 3 4 5 6 7 ", -" 8 9 0 a b c d e f g 1 h i j k l m n o p ", -" { q r s t u v w x y z A B C D E F G H I ", -" J K L M N O P Q R S T U V W X Y Z ` ... ", -" J +.@.#.$.%.&.*.=.B -.B ;.>.B ,.'.).!.~. ", -" {.].^./.(._.:.S <. [.}.S |.1.B 2.3.4.5. ", -" 6.7.8.9.0.a.S S b. c.d.W e.f. g.h.i.j. ", -" k.l.m.V S n.o.b.p. q.r. s.t.u.v.w.x.y. ", -" z.A.B.C.S B D.E. r.F. G.H. I.J.K.L. ", -" M.N.O.P.B Q.R. F.S. T.U.V.W.X.Y.Z. ", -" `. +.+++ @+#+ $+%+ &+*+=+-+ ", -" ;+N.>+,+'+)+ !+~+ {+]+ ^+/+(+_+ ", -" ;+:+>+<+[+}+|+ 1+2+ 3+4+ 5+6+7+8+ ", -" 9+0+a+b+c+d+e+f+ 2+ g+h+ i+j+k+l+m+ ", -" n+o+p+q+r+s+t+u+v+ v+w+x+ j+y+z+A+B+C+ ", -" D+l.E+F+G+H+I+J+K+L+M+6+ N+O+P+Q+R+S+T+ ", -" U+`.V+W+X+Y+Z+`+ @.@+@@@#@$@%@&@*@=@-@;@ ", -" >@,@'@)@!@~@{@]@^@/@(@_@:@<@[@}@|@1@2@3@ ", -" 4@5@6@7@8@9@0@a@b@1@c@d@e@f@g@h@i@j@k@l@ ", -" "}; diff --git a/muse/muse/xpm/newmutebutton.xpm b/muse/muse/xpm/newmutebutton.xpm deleted file mode 100644 index 994e3321..00000000 --- a/muse/muse/xpm/newmutebutton.xpm +++ /dev/null @@ -1,69 +0,0 @@ -/* XPM */ -static const char * newmutebutton_xpm[] = { -"22 22 44 1", -" c None", -". c #000000", -"+ c #313131", -"@ c #E5141A", -"# c #E1180D", -"$ c #3F3F3F", -"% c #222222", -"& c #9E000D", -"* c #FB1300", -"= c #E91900", -"- c #3B3B3B", -"; c #EB1420", -"> c #A9010C", -", c #454545", -"' c #E10E08", -") c #DD1F0F", -"! c #121212", -"~ c #ED0014", -"{ c #FF0603", -"] c #F7001C", -"^ c #4C4C4C", -"/ c #525252", -"( c #1E0700", -"_ c #ED021A", -": c #F00018", -"< c #E21C19", -"[ c #070707", -"} c #030A1D", -"| c #000F00", -"1 c #E90412", -"2 c #0B0017", -"3 c #000700", -"4 c #010101", -"5 c #EC141D", -"6 c #EA0900", -"7 c #DE0B09", -"8 c #E01000", -"9 c #E81400", -"0 c #F10E1C", -"a c #EE0E16", -"b c #E50300", -"c c #FF0316", -"d c #E70816", -"e c #FF1901", -"......................", -". .", -". .", -". .", -". + @# .", -". $ %&*= .", -". -+ + ;+> .", -". $,. $')+ .", -". $$!. ~%{]. .", -". $^/!(._:.< [ .", -". $+.}|.'1. . .", -". +..23.{]. 4 .", -". ......< . . .", -". .... . . .", -". 56... . . .", -". 7890.. . . .", -". abcd . . .", -". 6e~ . .", -". .", -". .", -". .", -"......................"}; diff --git a/muse/muse/xpm/off.svg b/muse/muse/xpm/off.svg deleted file mode 100644 index 7b24c60c..00000000 --- a/muse/muse/xpm/off.svg +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/muse/muse/xpm/off.xpm b/muse/muse/xpm/off.xpm deleted file mode 100644 index 64ddd452..00000000 --- a/muse/muse/xpm/off.xpm +++ /dev/null @@ -1,25 +0,0 @@ -/* XPM */ -static const char * off_xpm[] = { -"16 16 6 1", -" c None", -". c #000000", -"+ c #FFFFFF", -"@ c #DCDCDC", -"# c #A0A0A4", -"$ c #808080", -" ", -" ..... ", -" ..+++++.. ", -" .++@@@@@@@. ", -" .+@@@.@@@@. ", -" .+@@@@.@@@@#. ", -" .+@@@@.@@@@#. ", -" .+@@@@.@@@@#. ", -" .+@@@@.@@@@#. ", -" .+@@@@.@@@@#. ", -" .@@@@.@@@#.$ ", -" .@@@@@@@##. ", -" ..#####.. ", -" ..... ", -" ", -" "}; diff --git a/muse/muse/xpm/on.svg b/muse/muse/xpm/on.svg deleted file mode 100644 index 5bb8ef4e..00000000 --- a/muse/muse/xpm/on.svg +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/muse/muse/xpm/pafter.xpm b/muse/muse/xpm/pafter.xpm deleted file mode 100644 index a39ed901..00000000 --- a/muse/muse/xpm/pafter.xpm +++ /dev/null @@ -1,29 +0,0 @@ -/* XPM */ -static const char *pafter_xpm[] = { -"22 22 2 1", -". c None", -"# c #000000", -"######################", -"##...................#", -"#.#..................#", -"#..#.................#", -"#...#................#", -"#....#...............#", -"#.....#..............#", -"#......#.............#", -"#.......#............#", -"#........#...........#", -"#.........#..........#", -"#..........#.........#", -"#...........#........#", -"#............#.......#", -"#.............#......#", -"#..............#.....#", -"#...............#....#", -"#................#...#", -"#.................#..#", -"#..................#.#", -"#...................##", -"######################" -}; - diff --git a/muse/muse/xpm/panic.xpm b/muse/muse/xpm/panic.xpm deleted file mode 100644 index 9b8f937c..00000000 --- a/muse/muse/xpm/panic.xpm +++ /dev/null @@ -1,50 +0,0 @@ -/* XPM */ -static const char * panic_xpm[] = { -"18 18 29 1", -" c None", -". c #F7001C", -"+ c #EB1420", -"@ c #FB1300", -"# c #E10E08", -"$ c #E21C19", -"% c #DD1F0F", -"& c #313131", -"* c #ED0014", -"= c #FF0603", -"- c #F00018", -"; c #3F3F3F", -"> c #222222", -", c #ED021A", -"' c #3B3B3B", -") c #E90412", -"! c #454545", -"~ c #000000", -"{ c #525252", -"] c #121212", -"^ c #4C4C4C", -"/ c #1E0700", -"( c #070707", -"_ c #030A1D", -": c #0B0017", -"< c #000700", -"[ c #010101", -"} c #E1180D", -"| c #E50300", -".. +@", -"#.$ +#%", -"$... & *#=.", -" .-$ ; >#-=$ ", -" #,. '& & .&) ", -" # ;!~ ;#=& ", -" {;]~ > ~ ", -" ;^{~/~ ~ ( ", -" ;&~_~~ ~ ~ ", -" &~~:<~ ~ [ ", -" ~~~~~~ ~ ~ ", -" ~~~~ ~ ~ ", -" }~~~ ~##~ ", -" #% ~~ ~ #~# ", -" *|$ ~ ~#$. ", -" ,-% ~ $... ", -"*$). $$$.", -"-$. .$$"}; diff --git a/muse/muse/xpm/pencil.xpm b/muse/muse/xpm/pencil.xpm deleted file mode 100644 index 16c06603..00000000 --- a/muse/muse/xpm/pencil.xpm +++ /dev/null @@ -1,27 +0,0 @@ -/* XPM */ -static const char*pencil_xpm[]={ -"18 18 5 1", -"# c #000000", -"c c #ffffff", -"b c #a0a0a4", -"a c #dcdcdc", -". c None", -"..................", -"........####......", -"........#aaa#.....", -".......#aaaa#b....", -".......##aa#bb....", -"......#cc###b.....", -"......#caa#bb.....", -".....#ccaa#b......", -".....#caa#bb......", -"....#ccaa#b.......", -"....#caa#bb.......", -"....##aa#b........", -"....####bb........", -"....###bb.........", -"....##bb..........", -"....#bb...........", -".....b............", -".................."}; - diff --git a/muse/muse/xpm/piano.xpm b/muse/muse/xpm/piano.xpm deleted file mode 100644 index 3649919e..00000000 --- a/muse/muse/xpm/piano.xpm +++ /dev/null @@ -1,24 +0,0 @@ -/* XPM */ -static const char *pianoS_xpm[]={ -"16 16 5 1", -"# c #000000", -"c c #00c000", -". c #00ff00", -"b c #dcdcdc", -"a c #ffffff", -"................", -"................", -"..#########aaa..", -"..#########aaa..", -"..abbbbbbbbaaa..", -"..#########aaa..", -"..#########aaa..", -"..abbbbbbbbaaa..", -"..#########aaa..", -"..#########aaa..", -"..abbbbbbbbaaa..", -"..aaaaaaaaaaaa..", -"..#########aaa..", -"..#########aaa..", -"...ccccccccc....", -"................"}; diff --git a/muse/muse/xpm/pitch.xpm b/muse/muse/xpm/pitch.xpm deleted file mode 100644 index e8f67efb..00000000 --- a/muse/muse/xpm/pitch.xpm +++ /dev/null @@ -1,28 +0,0 @@ -/* XPM */ -static const char *pitch_xpm[]={ -"22 22 3 1", -"a c #303030", -"# c #808080", -". c None", -"..............#..#....", -"...............#..#...", -"................#.#...", -".......a......a.#.#...", -".......a......a.#.#...", -".......a......a.#.#...", -".......a......a.#.#...", -".......a......a.#.#...", -".......a......a#..#...", -".......a......a..#....", -"........a....a..#.....", -".........aaaa.........", -"..........aa..........", -"..........aa..........", -"..........aa..........", -".........aaaa.........", -"........aaaaaa........", -"........aaaaaa........", -".........aaaa.........", -"..........aa..........", -"......................", -"......................"}; diff --git a/muse/muse/xpm/play.xpm b/muse/muse/xpm/play.xpm deleted file mode 100644 index b38afc78..00000000 --- a/muse/muse/xpm/play.xpm +++ /dev/null @@ -1,17 +0,0 @@ -/* XPM */ -static const char * play_xpm[] = { -"12 12 2 1", -" c None", -". c #000000", -" . ", -" ... ", -" ... ", -" .... ", -" .... ", -" ..... ", -" ..... ", -" .... ", -" .... ", -" ... ", -" ... ", -" . "}; diff --git a/muse/muse/xpm/plus.xpm b/muse/muse/xpm/plus.xpm deleted file mode 100644 index e68e8db2..00000000 --- a/muse/muse/xpm/plus.xpm +++ /dev/null @@ -1,21 +0,0 @@ -/* XPM */ -static const char * plus_xpm[] = { -"13 13 5 1", -" c None", -". c #000000", -"+ c #FFFFFF", -"@ c #DCDCDC", -"# c #A0A0A4", -" ..... ", -" ..+++++.. ", -" .++@@@@@@@. ", -" .+@@@.@@@@. ", -".+@@@@.@@@@#.", -".+@@@@.@@@@#.", -".+@.......@#.", -".+@@@@.@@@@#.", -".+@@@@.@@@@#.", -" .@@@@.@@@#. ", -" .@@@@@@@##. ", -" ..#####.. ", -" ..... " }; diff --git a/muse/muse/xpm/pointer.xpm b/muse/muse/xpm/pointer.xpm deleted file mode 100644 index 87801aa7..00000000 --- a/muse/muse/xpm/pointer.xpm +++ /dev/null @@ -1,28 +0,0 @@ -/* XPM */ -/* Drawn by Mark Donohoe for the K Desktop Environment */ -/* See http://www.kde.org */ -static const char*pointer_xpm[]={ -"18 18 4 1", -"# c #000000", -"a c #000080", -"b c #808080", -". c None", -"..................", -"..................", -".....#............", -".....##...........", -".....###..........", -".....####.........", -".....#####........", -".....######.......", -".....#######......", -".....########.....", -".....#####........", -".....##.##........", -".....#...##.......", -".........##.......", -"..........##......", -"..........##......", -"..................", -".................."}; - diff --git a/muse/muse/xpm/punchin.xpm b/muse/muse/xpm/punchin.xpm deleted file mode 100644 index 2bd3ce7f..00000000 --- a/muse/muse/xpm/punchin.xpm +++ /dev/null @@ -1,17 +0,0 @@ -/* XPM */ -static char *punchin[]={ -"12 12 2 1", -". c None", -"# c #000000", -"............", -"####........", -"######......", -"....##......", -"....##......", -"....##......", -"....##......", -"....##......", -"....########", -"......######", -"............", -"............"}; diff --git a/muse/muse/xpm/punchout.xpm b/muse/muse/xpm/punchout.xpm deleted file mode 100644 index d176ed5d..00000000 --- a/muse/muse/xpm/punchout.xpm +++ /dev/null @@ -1,18 +0,0 @@ -/* XPM */ -static const char* punchout_xpm[]={ -"12 12 3 1", -"a c #c0c0c0", -"# c #000000", -". c None", -"............", -"............", -"......######", -"....########", -"....##......", -"....##......", -"....##......", -"....##......", -"######......", -"####........", -"............", -"............"}; diff --git a/muse/muse/xpm/quant.xpm b/muse/muse/xpm/quant.xpm deleted file mode 100644 index 70d763dd..00000000 --- a/muse/muse/xpm/quant.xpm +++ /dev/null @@ -1,28 +0,0 @@ -/* XPM */ -static const char* quant_xpm[]={ -"22 22 2 1", -"x c #000000", -". c None", -"......................", -"......................", -"......................", -".........xxxx.........", -".......xx....xx.......", -".....xx........xx.....", -"....x............x....", -"...x..............x...", -"...x..............x...", -"..x................x..", -"..x................x..", -"..x................x..", -"..x................x..", -"...x..............x...", -"...x.......x......x...", -"....x.......x....x....", -".....xx......x.xx.....", -".......xx....xx.......", -".........xxxx..x......", -"................x.....", -"......................", -"......................"}; - diff --git a/muse/muse/xpm/recordOff.svg b/muse/muse/xpm/recordOff.svg deleted file mode 100644 index 05c88a04..00000000 --- a/muse/muse/xpm/recordOff.svg +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - diff --git a/muse/muse/xpm/recordOn.svg b/muse/muse/xpm/recordOn.svg deleted file mode 100644 index d97f8249..00000000 --- a/muse/muse/xpm/recordOn.svg +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - diff --git a/muse/muse/xpm/redo.xpm b/muse/muse/xpm/redo.xpm deleted file mode 100644 index 24771785..00000000 --- a/muse/muse/xpm/redo.xpm +++ /dev/null @@ -1,92 +0,0 @@ -/* XPM */ -static const char * redo_xpm[] = { -"22 22 67 1", -" c None", -". c #275F0B", -"+ c #9AC589", -"@ c #CDE2C1", -"# c #E5EEDF", -"$ c #FFFFFF", -"% c #91D56B", -"& c #79BE53", -"* c #C7E0BA", -"= c #F5F9F4", -"- c #1C4408", -"; c #47AB29", -"> c #3FA21C", -", c #4AA721", -"' c #87C86A", -") c #C8E1BE", -"! c #000000", -"~ c #020202", -"{ c #53B529", -"] c #5BC930", -"^ c #6FD63D", -"/ c #8AC963", -"( c #35691B", -"_ c #2B6A0E", -": c #E4ECDF", -"< c #79B658", -"[ c #41821F", -"} c #0E2005", -"| c #060D03", -"1 c #102806", -"2 c #42A01E", -"3 c #A7C49A", -"4 c #7FAA67", -"5 c #3A8816", -"6 c #1C4508", -"7 c #0B1B05", -"8 c #72C24F", -"9 c #7FCC67", -"0 c #67A050", -"a c #40A513", -"b c #275E0D", -"c c #122B06", -"d c #469D24", -"e c #51B929", -"f c #38AA18", -"g c #3F9524", -"h c #173807", -"i c #081204", -"j c #63C53E", -"k c #41AE20", -"l c #48B227", -"m c #53A82F", -"n c #071003", -"o c #5B973A", -"p c #50932F", -"q c #4A8D2D", -"r c #428727", -"s c #428525", -"t c #15260E", -"u c #070D04", -"v c #0F1C09", -"w c #102009", -"x c #12230A", -"y c #13250A", -"z c #234413", -"A c #15270C", -"B c #13200C", -" ", -" ", -" ..... ", -" ..+@#@+.. ", -" .+$%&&&&*=-- ", -" .#%;>>>>,,')=! ~ ", -" .+%>{]^^^^]>,/=! -! ", -" .$>{(_!!!!{^]>/=!-:! ", -"-+<[_}| 1!{^2/3:4! ", -"-$567 !{^2890! ", -"-abc !de2fg! ", -" -hi -:jklm! ", -" !-n -:opqrs! ", -" -t ~!!!!!!!! ", -" u-v ", -" w-x ", -" yzA ", -" !-B ", -" !!! ", -" ", -" ", -" "}; diff --git a/muse/muse/xpm/resetS.xpm b/muse/muse/xpm/resetS.xpm deleted file mode 100644 index 261af17e..00000000 --- a/muse/muse/xpm/resetS.xpm +++ /dev/null @@ -1,22 +0,0 @@ -/* XPM */ -static const char *resetS_xpm[]={ -"16 16 3 1", -"a c #000000", -". c #c00000", -"# c #ffffff", -"................", -"................", -"..############..", -"..####aa######..", -"..###aaa######..", -"..##aaaaaaaa##..", -"..##aaaaaaaaa#..", -"..###aaa##aaa#..", -"..####aa###aa#..", -"..#########aa#..", -"..########aaa#..", -"..##aaaaaaaaa#..", -"..##aaaaaaaa##..", -"..############..", -"................", -"................"}; diff --git a/muse/muse/xpm/rmark.xpm b/muse/muse/xpm/rmark.xpm deleted file mode 100644 index c0dbd780..00000000 --- a/muse/muse/xpm/rmark.xpm +++ /dev/null @@ -1,23 +0,0 @@ -/* XPM */ -static const char* rmark_xpm[]={ -"18 18 2 1", -"# c #0000ff", -". c None", -"..................", -"..................", -"..................", -"..................", -"..................", -"..................", -"..................", -"........##########", -"........#########.", -"........########..", -"........#######...", -"........######....", -"........#####.....", -"........####......", -"........###.......", -"........##........", -"........##........", -"........##........"}; diff --git a/muse/muse/xpm/select.xpm b/muse/muse/xpm/select.xpm deleted file mode 100644 index a29f3370..00000000 --- a/muse/muse/xpm/select.xpm +++ /dev/null @@ -1,21 +0,0 @@ -/* XPM */ -static const char *select_xpm[]={ -"16 16 2 1", -". c #000000", -"# c #ffffff", -"..#..#..#..#..#.", -"###############.", -".###############", -".##############.", -"###############.", -".###############", -".##############.", -"###############.", -".###############", -".##############.", -"###############.", -".###############", -".##############.", -"###############.", -".###############", -".#..#..#..#..#.."}; diff --git a/muse/muse/xpm/select_all.xpm b/muse/muse/xpm/select_all.xpm deleted file mode 100644 index b0133636..00000000 --- a/muse/muse/xpm/select_all.xpm +++ /dev/null @@ -1,21 +0,0 @@ -/* XPM */ -static const char *select_all_xpm[]={ -"16 16 2 1", -". c #000000", -"# c #ffffff", -"..#..#..#..#..#.", -"###############.", -".###############", -".##############.", -"###############.", -".###############", -".##############.", -"###############.", -".###############", -".##############.", -"###############.", -".###############", -".##############.", -"###############.", -".###############", -".#..#..#..#..#.."}; diff --git a/muse/muse/xpm/select_all_parts_on_track.xpm b/muse/muse/xpm/select_all_parts_on_track.xpm deleted file mode 100644 index 4761a256..00000000 --- a/muse/muse/xpm/select_all_parts_on_track.xpm +++ /dev/null @@ -1,39 +0,0 @@ -/* XPM */ -static const char * select_all_parts_on_track_xpm[] = { -"16 16 20 1", -" c None", -". c #000100", -"+ c #FEFFFC", -"@ c #FDF7F6", -"# c #FFFFFF", -"$ c #F8FEFF", -"% c #F4F1E9", -"& c #AA8747", -"* c #9E772E", -"= c #8A5C04", -"- c #0F0F0F", -"; c #000000", -"> c #95702B", -", c #CECECE", -"' c #F3F3F3", -") c #AE8E51", -"! c #FDFDFD", -"~ c #FCFCFC", -"{ c #926716", -"] c #2B2B2B", -"..+..+..+..+..+.", -"+++++++++++++++.", -".@#############+", -".+#############.", -"$%#############.", -".&*##=*##=*##=*#", -"-;;;;;;;;;;;;;;;", -">*,'=),,=*,,=*,#", -"*,!=),,=*,,=*,#=", -",~{*,#=*,#=*##=;", -";;;;;;;];;;;;;;;", -"#=*,#=*,#=*##=*#", -".##############;", -"###############;", -".###############", -".+..+..+..+..+.."}; diff --git a/muse/muse/xpm/select_deselect_all.xpm b/muse/muse/xpm/select_deselect_all.xpm deleted file mode 100644 index d3a9bce9..00000000 --- a/muse/muse/xpm/select_deselect_all.xpm +++ /dev/null @@ -1,22 +0,0 @@ -/* XPM */ -static const char *select_deselect_all[]={ -"16 16 3 1", -". c #000000", -"a c #ff0000", -"# c #ffffff", -"..#..#..#..#..#.", -"###############.", -".#aa########aa##", -".#aaa######aaa#.", -"###aaa####aaa##.", -".###aaa##aaa####", -".####aaaaaa####.", -"######aaaa#####.", -".#####aaaa######", -".####aaaaaa####.", -"####aaa##aaa###.", -".##aaa####aaa###", -".#aaa######aaa#.", -"##aa########aa#.", -".###############", -".#..#..#..#..#.."}; diff --git a/muse/muse/xpm/select_inside_loop.xpm b/muse/muse/xpm/select_inside_loop.xpm deleted file mode 100644 index 46d57b28..00000000 --- a/muse/muse/xpm/select_inside_loop.xpm +++ /dev/null @@ -1,21 +0,0 @@ -/* XPM */ -static const char *select_inside_loop_xpm[]={ -"16 16 2 1", -". c #000000", -"# c #ffffff", -"................", -"................", -"....########....", -"....#......#....", -"....#......#....", -".#######...#....", -"..#####....#....", -"...###.....#....", -"....#.....###...", -"....#....#####..", -"....#...#######.", -"....#......#....", -"....#......#....", -"....########....", -"................", -"................"}; diff --git a/muse/muse/xpm/select_invert_selection.xpm b/muse/muse/xpm/select_invert_selection.xpm deleted file mode 100644 index c2f11b55..00000000 --- a/muse/muse/xpm/select_invert_selection.xpm +++ /dev/null @@ -1,21 +0,0 @@ -/* XPM */ -static const char *select_invert_selection[]={ -"16 16 2 1", -". c #000000", -"# c #ffffff", -"................", -"...............#", -"..............##", -"......#####..###", -".....#######.###", -"....#######..###", -"...#######....##", -"...######.....##", -"...#####......##", -"...####.......##", -"...###........##", -"....#........###", -"............####", -"...###.....#####", -"..##############", -".###############"}; diff --git a/muse/muse/xpm/select_outside_loop.xpm b/muse/muse/xpm/select_outside_loop.xpm deleted file mode 100644 index 555b6157..00000000 --- a/muse/muse/xpm/select_outside_loop.xpm +++ /dev/null @@ -1,21 +0,0 @@ -/* XPM */ -static const char *select_outside_loop_xpm[]={ -"16 16 2 1", -"# c #000000", -". c #ffffff", -"................", -"................", -"....########....", -"....#......#....", -"....#......#....", -".#######...#....", -"..#####....#....", -"...###.....#....", -"....#.....###...", -"....#....#####..", -"....#...#######.", -"....#......#....", -"....#......#....", -"....########....", -"................", -"................"}; diff --git a/muse/muse/xpm/settings_appearance_settings.xpm b/muse/muse/xpm/settings_appearance_settings.xpm deleted file mode 100644 index 46dcc335..00000000 --- a/muse/muse/xpm/settings_appearance_settings.xpm +++ /dev/null @@ -1,66 +0,0 @@ -/* XPM */ -static const char * settings_appearance_settings_xpm[] = { -"16 16 47 1", -" c None", -". c #000000", -"+ c #A80000", -"@ c #B60000", -"# c #D40000", -"$ c #93440B", -"% c #A44C0C", -"& c #B7550D", -"* c #E56A10", -"= c #CD5F0E", -"- c #C9CC00", -"; c #FCFF00", -"> c #B4B600", -", c #A1A300", -"' c #CC0000", -") c #E40000", -"! c #E1E400", -"~ c #909200", -"{ c #4E8F00", -"] c #61B300", -"^ c #57A000", -"/ c #B000B6", -"( c #6CC800", -"_ c #79E000", -": c #DC00E4", -"< c #C500CC", -"[ c #9D00A3", -"} c #009836", -"| c #468000", -"1 c #7D0083", -"2 c #1B687D", -"3 c #008830", -"4 c #22829D", -"5 c #00D44B", -"6 c #00AA3C", -"7 c #250492", -"8 c #3304CB", -"9 c #2E04B6", -"0 c #3905E3", -"a c #2904A3", -"b c #2691B0", -"c c #2AA2C5", -"d c #00ED54", -"e c #00BE43", -"f c #2FB5DC", -"g c #185D70", -"h c #1E748C", -"................", -".+@#.$%&*=.-;>,.", -".'').==*=.--!->.", -".')).===.~!-!;-.", -".))).=&.........", -"..)'.&....{]^]{.", -"./.).......((_].", -".:<.........(((.", -".:::.........]^.", -"./[::.......}.|.", -".1<:<[....2.}3..", -".........44.556.", -".78908a.bbc.d5e.", -".88888.4fbc.6de.", -".aa09.ghcc4.3e6.", -"................"}; diff --git a/muse/muse/xpm/settings_configureshortcuts.xpm b/muse/muse/xpm/settings_configureshortcuts.xpm deleted file mode 100644 index bd858629..00000000 --- a/muse/muse/xpm/settings_configureshortcuts.xpm +++ /dev/null @@ -1,36 +0,0 @@ -/* XPM */ -static const char *settings_configureshortcuts_xpm[] = { -"16 16 17 1", -" c None", -". c #000000", -"+ c #808080", -"@ c #646464", -"# c #DCDCDC", -"$ c #C3C3C3", -"% c #A0A0A0", -"& c #B8B8B8", -"* c #787878", -"= c #FFFFFF", -"- c #EDEDED", -"; c #585858", -"> c #C2C2C2", -", c #B7B7B7", -"' c #E7E7E7", -") c #303030", -"! c #CFCFCF", -" ...... ", -" .+@#$%.. ", -" .&*@#$%. ", -"... ..&@#$. ", -".=$.. .@##%. ", -".=-#$.;@>##,. ", -".@=-######'$%.. ", -")=@*=--##'$!$%%.", -".$#=@@@*%$-#!$,%", -" ..$#$$$*@*=-#!$", -" ...%#$$%@*=-#", -" ....-#%@*=", -" ..-#%@", -" ..-#", -" ..", -" "}; diff --git a/muse/muse/xpm/settings_follow_song.xpm b/muse/muse/xpm/settings_follow_song.xpm deleted file mode 100644 index 9a066715..00000000 --- a/muse/muse/xpm/settings_follow_song.xpm +++ /dev/null @@ -1,30 +0,0 @@ -/* XPM */ -static const char * settings_follow_song_xpm[] = { -"16 16 11 1", -" c None", -". c #545454", -"+ c #202020", -"@ c #696969", -"# c #7C7C7C", -"$ c #000000", -"% c #3C3C3C", -"& c #C3C3C3", -"* c #CBCBCB", -"= c #8C8C8C", -"- c #DCDCDC", -" ", -" .+@ ", -" #$+%& ", -" .$$+&#%% ", -" .$$+&@$.. ", -" .$$$&%$+@& ", -" +$$$&%$+%& ", -" $$$$&$$+%& ", -" $$$+&+$$$& ", -" $+@&++$$& ", -" **&+$$$& ", -" .$@&=.+&& ", -" +$$& &&& ", -" &&&.$@ ", -" -- $++ ", -" --- -- "}; diff --git a/muse/muse/xpm/settings_globalsettings.xpm b/muse/muse/xpm/settings_globalsettings.xpm deleted file mode 100644 index 2593ee83..00000000 --- a/muse/muse/xpm/settings_globalsettings.xpm +++ /dev/null @@ -1,89 +0,0 @@ -/* XPM */ -static const char * settings_globalsettings_xpm[] = { -"16 16 70 1", -" c None", -". c #BDBDBD", -"+ c #000000", -"@ c #B0B0B0", -"# c #ABABAB", -"$ c #CAC8C1", -"% c #B5B5B5", -"& c #EBEBE8", -"* c #D7D7D7", -"= c #D8D8D8", -"- c #C4C4C4", -"; c #F9F8F8", -"> c #BBBBBB", -", c #828282", -"' c #D2D0CC", -") c #F7F7F7", -"! c #DEDBD6", -"~ c #9C9C9C", -"{ c #7B7B7B", -"] c #7D7D7D", -"^ c #D2D2D2", -"/ c #D3D2CF", -"( c #E3E2E1", -"_ c #DFDEDC", -": c #DBDAD7", -"< c #A4A19C", -"[ c #5F5F5F", -"} c #292929", -"| c #D3D3D3", -"1 c #1C1C1C", -"2 c #D2D1D0", -"3 c #50504F", -"4 c #101010", -"5 c #3A3A3A", -"6 c #494746", -"7 c #D1D1D1", -"8 c #DADADA", -"9 c #363636", -"0 c #C8C7C6", -"a c #6C6967", -"b c #CCCCCC", -"c c #708295", -"d c #CFD6DD", -"e c #7C91A7", -"f c #D6D5D5", -"g c #8A8784", -"h c #C9C9C9", -"i c #7D8C9C", -"j c #788DA4", -"k c #7F99B3", -"l c #1F272F", -"m c #ECEBEA", -"n c #72706D", -"o c #CBCBCB", -"p c #8D99A5", -"q c #748AA2", -"r c #849EB9", -"s c #4D5F73", -"t c #D5D4D3", -"u c #6B6A69", -"v c #7D91A7", -"w c #849EBA", -"x c #D6D6D6", -"y c #525252", -"z c #717171", -"A c #484848", -"B c #66798F", -"C c #CACACA", -"D c #6F6F6F", -"E c #8D8D8D", -" ", -" .+@ #+#", -" +$+# #+%+", -" +&+* +=+#", -" -+ +;+> ,++# ", -" +'++)!+~ {+] ", -" ^+/(_:<+[}{ ", -" |+1++23+[ ", -" 456+78 ", -" +++9+0a+b ", -" +cde+ +fg+h8 ", -" +idjkl -+mn+o ", -" +pdqrs+ +tu+b", -" +dvws+^ x+2yz", -" AvBs+C ++D", -" EA++> "}; diff --git a/muse/muse/xpm/settings_metronome.xpm b/muse/muse/xpm/settings_metronome.xpm deleted file mode 100644 index 985b1910..00000000 --- a/muse/muse/xpm/settings_metronome.xpm +++ /dev/null @@ -1,99 +0,0 @@ -/* XPM */ -static const char * settings_metronome_xpm[] = { -"16 16 80 1", -" c None", -". c #C4B71A", -"+ c #BAAE17", -"@ c #B4AA40", -"# c #D1C440", -"$ c #E0D123", -"% c #87824B", -"& c #E9D926", -"* c #F8E407", -"= c #F9E60D", -"- c #752D08", -"; c #9D3D0B", -"> c #82330A", -", c #6D2B08", -"' c #FCEE4E", -") c #612607", -"! c #813308", -"~ c #DCD05F", -"{ c #EADC49", -"] c #933A09", -"^ c #712D07", -"/ c #6F5E58", -"( c #2A1006", -"_ c #C04B0C", -": c #FCEB2D", -"< c #6D2B07", -"[ c #4E3826", -"} c #FCEF5D", -"| c #F7EA49", -"1 c #470A31", -"2 c #7A3108", -"3 c #752F07", -"4 c #704517", -"5 c #F1E132", -"6 c #FBED4A", -"7 c #F1E141", -"8 c #7C3B3A", -"9 c #BC6130", -"0 c #7F3F0A", -"a c #482B0E", -"b c #F5E537", -"c c #ECDB33", -"d c #51142E", -"e c #8E5C41", -"f c #A8420A", -"g c #612D07", -"h c #43260A", -"i c #50350F", -"j c #673013", -"k c #A95A2E", -"l c #693208", -"m c #281003", -"n c #341403", -"o c #C1500D", -"p c #B9541A", -"q c #B85C29", -"r c #706914", -"s c #120803", -"t c #331608", -"u c #774A33", -"v c #62290A", -"w c #B6AA20", -"x c #131307", -"y c #2C1103", -"z c #662F12", -"A c #743008", -"B c #7D3E1B", -"C c #251309", -"D c #331809", -"E c #BA6334", -"F c #B75D2C", -"G c #73300B", -"H c #793A17", -"I c #7F3208", -"J c #903909", -"K c #883609", -"L c #622809", -"M c #371908", -"N c #4D2108", -"O c #722E07", -" .+ ", -" @#$% ", -" &*=& ", -" -;;> ", -" ,'') ", -" !,~{]^ /( ", -" ^_:~_< [}|1", -" 2^_{~_345678", -" ^]9{{_0abcd ", -" e;_f'{_ghid ", -" jf_k{:lmno ", -" j_pq_{rstq_u ", -" vf_f_wxy]f_z ", -" AApqpBCDEFpqGA ", -" HHIJKLMNOOO^HH ", -" aaaaaaaaaaaaaa"}; diff --git a/muse/muse/xpm/settings_midifileexport.xpm b/muse/muse/xpm/settings_midifileexport.xpm deleted file mode 100644 index ec65b59d..00000000 --- a/muse/muse/xpm/settings_midifileexport.xpm +++ /dev/null @@ -1,30 +0,0 @@ -/* XPM */ -static const char * settings_midifileexport_xpm[] = { -"16 16 11 1", -" c None", -". c #292929", -"+ c #000000", -"@ c #676767", -"# c #C9C9C9", -"$ c #793C11", -"% c #994C15", -"& c #C2611B", -"* c #4F270B", -"= c #371B07", -"- c #5F2F0D", -" ", -" . ", -" ++ ", -" +@+ ", -" +#+# ", -" +### ", -" +# ++++++++", -" +# +$%&&%$++", -" +# +$%&&%$+$+", -" +++#++++++++$$+", -"++++#+$$%&%$+%&+", -"++++#+*$$$$%+&$+", -" ####+&$$=$%+$+#", -" +$$%&%-++##", -" ++++++++## ", -" ######## "}; diff --git a/muse/muse/xpm/settings_midiport_softsynths.xpm b/muse/muse/xpm/settings_midiport_softsynths.xpm deleted file mode 100644 index b637e5c1..00000000 --- a/muse/muse/xpm/settings_midiport_softsynths.xpm +++ /dev/null @@ -1,29 +0,0 @@ -/* XPM */ -static const char * settings_midiport_softsynths_xpm[] = { -"16 16 10 1", -" c None", -". c #000000", -"+ c #CECECE", -"@ c #313131", -"# c #939393", -"$ c #797979", -"% c #595959", -"& c #282828", -"* c #A6A6A6", -"= c #484848", -" .... ", -" . . ", -" .. ..+ ", -" @..@+ ", -" #..$+ ", -" ...... ", -" ..+++ ", -" ..+ ", -" $$ ..+$$ ", -" ... ..+ ... ", -" ..$ ..+ $.. ", -" $.%.. ..+..$.$ ", -" $ +&......@++$ ", -" *=....%++ ", -" =..=++ ", -" ++++ "}; diff --git a/muse/muse/xpm/settings_midisync.xpm b/muse/muse/xpm/settings_midisync.xpm deleted file mode 100644 index 3bfdb180..00000000 --- a/muse/muse/xpm/settings_midisync.xpm +++ /dev/null @@ -1,53 +0,0 @@ -/* XPM */ -static const char * settings_midisync_xpm[] = { -"16 16 34 1", -" c None", -". c #7C7C7C", -"+ c #787878", -"@ c #818181", -"# c #747474", -"$ c #757575", -"% c #000000", -"& c #636363", -"* c #8C8C8C", -"= c #909090", -"- c #939393", -"; c #8A8A8A", -"> c #7F7F7F", -", c #9A9A9A", -"' c #777777", -") c #949494", -"! c #828282", -"~ c #9E9E9E", -"{ c #999999", -"] c #888888", -"^ c #979797", -"/ c #929292", -"( c #969696", -"_ c #9B9B9B", -": c #858585", -"< c #848484", -"[ c #898989", -"} c #7A7A7A", -"| c #7E7E7E", -"1 c #808080", -"2 c #838383", -"3 c #737373", -"4 c #6A6A6A", -"5 c #676767", -" ", -" ", -" .+@#$% ", -" & **% ", -" =% ", -" +% #% ", -" -;>% >% ", -" +;,'.% )!-~{)]%", -"^/(_{-]% :,<[!% ", -" }@% .|>% ", -" 12% <% ", -" }<%% ", -" 34% 4% ", -" }55}% ", -" ", -" "}; diff --git a/muse/muse/xpm/solobutton.xpm b/muse/muse/xpm/solobutton.xpm deleted file mode 100644 index e0c1002a..00000000 --- a/muse/muse/xpm/solobutton.xpm +++ /dev/null @@ -1,39 +0,0 @@ -/* XPM */ -static const char * solobutton_xpm[] = { -"22 22 14 1", -" c None", -". c #000000", -"+ c #F10606", -"@ c #414141", -"# c #852A2A", -"$ c #473E3E", -"% c #723030", -"& c #CB1212", -"* c #4E3C3C", -"= c #E20A0A", -"- c #A51F1F", -"; c #9E2121", -"> c #832A2A", -", c #9C2222", -"......................", -". .", -". .", -". .", -". + .", -". ++ .", -". +++ .", -". @@@@@@@@@#+++ .", -". $@@@@@@@%++& .", -". *$ ++=@ .", -". +- +++;@ .", -". >++ ++++@@ .", -". @+++ +++ @@ .", -". @@+++++++ @@ .", -". @@ +++++ @@ .", -". @@ ++++ @@ .", -". @@ ++ @@ .", -". @@@@@,+@@@@@ .", -". @@@@@@@@@@@@ .", -". .", -". .", -"......................"}; diff --git a/muse/muse/xpm/solobutton_off.xpm b/muse/muse/xpm/solobutton_off.xpm deleted file mode 100644 index 31cc8e5a..00000000 --- a/muse/muse/xpm/solobutton_off.xpm +++ /dev/null @@ -1,146 +0,0 @@ -/* XPM */ -static const char * solobutton_off_xpm[] = { -"22 22 121 2", -" c #000000", -". c #720000", -"+ c #7B0000", -"@ c #810000", -"# c #840000", -"$ c #870000", -"% c #8D0000", -"& c #930000", -"* c #980000", -"= c #9C0000", -"- c #9B0000", -"; c #970000", -"> c #900000", -", c #8C0000", -"' c #850000", -") c #800000", -"! c #760000", -"~ c #730000", -"{ c #710000", -"] c #770000", -"^ c #A10000", -"/ c #A90000", -"( c #AE0000", -"_ c #B10000", -": c #B60000", -"< c #B50000", -"[ c #B30000", -"} c #AC0000", -"| c #A70000", -"1 c #9E0000", -"2 c #8F0000", -"3 c #890000", -"4 c #7F0000", -"5 c #7A0000", -"6 c #7C0000", -"7 c #8E0000", -"8 c #A00000", -"9 c #AD0000", -"0 c #B80000", -"a c #C00000", -"b c #C60000", -"c c #C80000", -"d c #CB0000", -"e c #C70000", -"f c #BB0000", -"g c #B20000", -"h c #A30000", -"i c #960000", -"j c #860000", -"k c #920000", -"l c #BA0000", -"m c #C50000", -"n c #CE0000", -"o c #D40000", -"p c #D80000", -"q c #D70000", -"r c #DA0000", -"s c #D10000", -"t c #C90000", -"u c #C30000", -"v c #B40000", -"w c #A40000", -"x c #910000", -"y c #7D0000", -"z c #950000", -"A c #AB0000", -"B c #BD0000", -"C c #CC0000", -"D c #D60000", -"E c #DF0000", -"F c #E30000", -"G c #E10000", -"H c #DC0000", -"I c #D00000", -"J c #C20000", -"K c #BC0000", -"L c #A50000", -"M c #AF0000", -"N c #414141", -"O c #CD0000", -"P c #B90000", -"Q c #AA0000", -"R c #9A0000", -"S c #473E3E", -"T c #D10100", -"U c #A80000", -"V c #880000", -"W c #D20000", -"X c #E50000", -"Y c #E80000", -"Z c #E40200", -"` c #D50100", -" . c #D50000", -".. c #D90000", -"+. c #DE0000", -"@. c #E20000", -"#. c #E40000", -"$. c #E70000", -"%. c #E90000", -"&. c #DB0000", -"*. c #CA0000", -"=. c #BE0000", -"-. c #E00000", -";. c #E60000", -">. c #7E0000", -",. c #DD0000", -"'. c #BF0000", -"). c #D30000", -"!. c #990000", -"~. c #B00000", -"{. c #940000", -"]. c #7A0100", -"^. c #A60000", -"/. c #9D0000", -"(. c #9D0101", -"_. c #7B0200", -":. c #8C0100", -"<. c #9E0101", -"[. c #8F0101", -"}. c #7F0101", -"|. c #720101", -" ", -" . + @ # $ % & & * = - ; > , ' ) + ! ~ { ", -" ] $ & - ^ / ( _ : < [ } | 1 * 2 3 # 4 5 ", -" 6 7 8 9 0 a b b c d e a f g / h - i 7 j ", -" 6 k | l m n o p q r q s t u f v 9 w - x ", -" y z A B C D r E F F G H q I d J K g L z ", -" ) * M N N N N N N N N N N N N O m P Q i ", -" # R _ S N N N N N N N N N N N T t f U & ", -" V 8 : N N W p r E X Y X Z N N ` C f L % ", -" % L l N N ...r +.@.#.$.%.N N q d 0 ^ 3 ", -" > / K N N p p r &.+.@.#.Y N N p *.< - @ ", -" > / =.N N H &.&.&.&.E -.;.N N ..t g R >. ", -" x U =.N N &.,.&.p ..r H E N N p t [ i 6 ", -" 2 U '.N N &.+...D . ...,.N N q c _ i y ", -" % w f N N p &.D ).).). .r N N q t g i >. ", -" V 8 : N N ).D ).s I ).D H N N D e g ; >. ", -" # !.~.N N N N N N N N N N N N o e ~.; >. ", -" 4 & / N N N N N N N N N N N N n J 9 {.y ", -" ].x h g l f '.=.a m t O ).).I c f ^.> + ", -" ].% /.Q M [ [ v 0 f '.u e b u l ~.(.$ ! ", -" _.:.!.8 ^.L L ^.Q A ~.[ < v M U <.[.}.|. ", -" "}; diff --git a/muse/muse/xpm/solobutton_on.xpm b/muse/muse/xpm/solobutton_on.xpm deleted file mode 100644 index c53e5884..00000000 --- a/muse/muse/xpm/solobutton_on.xpm +++ /dev/null @@ -1,300 +0,0 @@ -/* XPM */ -static const char * solobutton_on_xpm[] = { -"22 22 275 2", -" c #000000", -". c #066714", -"+ c #056613", -"@ c #076915", -"# c #076A15", -"$ c #076A16", -"% c #086B17", -"& c #096C18", -"* c #066B15", -"= c #066B14", -"- c #076F17", -"; c #0C751C", -"> c #107B20", -", c #0F7C1F", -"' c #0D791D", -") c #097318", -"! c #066E15", -"~ c #066C14", -"{ c #066814", -"] c #086B16", -"^ c #0A6F19", -"/ c #0B711A", -"( c #0B721B", -"_ c #0C731C", -": c #0C731B", -"< c #0A731A", -"[ c #097219", -"} c #077318", -"| c #0A781B", -"1 c #0E7E1F", -"2 c #118522", -"3 c #128722", -"4 c #0F8321", -"5 c #0B7D1B", -"6 c #077517", -"7 c #067016", -"8 c #056713", -"9 c #066914", -"0 c #086D17", -"a c #0A721A", -"b c #0F771E", -"c c #107A20", -"d c #117D21", -"e c #127E21", -"f c #117F21", -"g c #0E7D1F", -"h c #0D801E", -"i c #0F8620", -"j c #128F25", -"k c #159627", -"l c #169828", -"m c #159427", -"n c #F10606", -"o c #0B821C", -"p c #087718", -"q c #086E17", -"r c #0B731A", -"s c #0F791F", -"t c #138223", -"u c #168727", -"v c #188A29", -"w c #178D28", -"x c #168D27", -"y c #158C26", -"z c #128D25", -"A c #129125", -"B c #149926", -"C c #17A22B", -"D c #19AA2D", -"E c #1AAC2E", -"F c #119122", -"G c #0C831D", -"H c #066D15", -"I c #0A7119", -"J c #0C7A1D", -"K c #118323", -"L c #178D29", -"M c #1B952E", -"N c #1B9C2E", -"O c #1A9E2E", -"P c #199C2B", -"Q c #189D2B", -"R c #189E2B", -"S c #17A32C", -"T c #18AC2E", -"U c #19B630", -"V c #1CC033", -"W c #16A22A", -"X c #129025", -"Y c #097519", -"Z c #0F801F", -"` c #158E27", -" . c #414141", -".. c #852A2A", -"+. c #1CC335", -"@. c #19B130", -"#. c #179C2A", -"$. c #067015", -"%. c #097A1A", -"&. c #108922", -"*. c #17982A", -"=. c #473E3E", -"-. c #723030", -";. c #CB1212", -">. c #1CDA38", -",. c #1DD038", -"'. c #1BB832", -"). c #19A22D", -"!. c #067215", -"~. c #0A7F1B", -"{. c #119124", -"]. c #18A22D", -"^. c #4E3C3C", -"/. c #1BCB35", -"(. c #1ACD35", -"_. c #19CB34", -":. c #1AC932", -"<. c #18C833", -"[. c #18CC33", -"}. c #E20A0A", -"|. c #1BDF37", -"1. c #1CD136", -"2. c #1CBD35", -"3. c #19A42E", -"4. c #087618", -"5. c #0B821D", -"6. c #129725", -"7. c #A51F1F", -"8. c #18D435", -"9. c #18D433", -"0. c #18D333", -"a. c #18D033", -"b. c #19CE33", -"c. c #9E2121", -"d. c #19DB36", -"e. c #1ACF36", -"f. c #1BBB33", -"g. c #1AA22E", -"h. c #087818", -"i. c #0C861E", -"j. c #129B26", -"k. c #18B12F", -"l. c #832A2A", -"m. c #19D833", -"n. c #17D433", -"o. c #19D534", -"p. c #1ACB34", -"q. c #1AB832", -"r. c #199F2D", -"s. c #087918", -"t. c #0D891F", -"u. c #129C26", -"v. c #17B22F", -"w. c #17D232", -"x. c #16D531", -"y. c #19D034", -"z. c #18C432", -"A. c #19B230", -"B. c #169A2A", -"C. c #087A19", -"D. c #0D881F", -"E. c #139C27", -"F. c #17AF2D", -"G. c #14D130", -"H. c #16CC31", -"I. c #18C132", -"J. c #18B02E", -"K. c #159828", -"L. c #0A7A1A", -"M. c #149C27", -"N. c #17AE2D", -"O. c #16C830", -"P. c #14CD2E", -"Q. c #14CE30", -"R. c #17CA31", -"S. c #15BF2F", -"T. c #15AE2B", -"U. c #129624", -"V. c #0E8821", -"W. c #17AD2E", -"X. c #17C730", -"Y. c #16CA31", -"Z. c #15C92E", -"`. c #14CB2E", -" + c #14C72E", -".+ c #14BD2C", -"++ c #11AD29", -"@+ c #0F9423", -"#+ c #0B7B1A", -"$+ c #0F8720", -"%+ c #139B26", -"&+ c #16AA2B", -"*+ c #17C72F", -"=+ c #15CB30", -"-+ c #15CC31", -";+ c #15C82F", -">+ c #16C730", -",+ c #11C52C", -"'+ c #10BA29", -")+ c #0FA825", -"!+ c #0C9020", -"~+ c #0B791C", -"{+ c #0D871F", -"]+ c #119625", -"^+ c #15A82A", -"/+ c #9C2222", -"(+ c #10C02A", -"_+ c #0EB526", -":+ c #0DA322", -"<+ c #0A8D1D", -"[+ c #097419", -"}+ c #0E9121", -"|+ c #11A126", -"1+ c #0EB426", -"2+ c #0DAA23", -"3+ c #0B9A20", -"4+ c #08871B", -"5+ c #077217", -"6+ c #0A871D", -"7+ c #0D9521", -"8+ c #10A425", -"9+ c #11AE27", -"0+ c #11B228", -"a+ c #12B529", -"b+ c #11B628", -"c+ c #10B429", -"d+ c #10B227", -"e+ c #10AF27", -"f+ c #10AC27", -"g+ c #0FAB26", -"h+ c #0EA824", -"i+ c #0DA624", -"j+ c #0CA221", -"k+ c #0B9C20", -"l+ c #088F1C", -"m+ c #068018", -"n+ c #056D13", -"o+ c #057214", -"p+ c #067A17", -"q+ c #09841B", -"r+ c #0C911E", -"s+ c #0D9921", -"t+ c #0E9F22", -"u+ c #0EA123", -"v+ c #0DA222", -"w+ c #0DA123", -"x+ c #0C9C21", -"y+ c #0B981F", -"z+ c #0C971F", -"A+ c #0C951F", -"B+ c #0B931F", -"C+ c #0A911E", -"D+ c #088E1C", -"E+ c #07891A", -"F+ c #058218", -"G+ c #047715", -"H+ c #036812", -"I+ c #046C12", -"J+ c #047014", -"K+ c #057615", -"L+ c #077D19", -"M+ c #09831B", -"N+ c #09871C", -"O+ c #08891C", -"P+ c #088A1B", -"Q+ c #078619", -"R+ c #078419", -"S+ c #078018", -"T+ c #067D18", -"U+ c #067C18", -"V+ c #067D17", -"W+ c #057B16", -"X+ c #047815", -"Y+ c #037313", -"Z+ c #036D12", -" ", -" . + + . @ # $ % & % * = - ; > , ' ) ! ~ ", -" . + { ] ^ / ( _ : < [ } | 1 2 3 4 5 6 7 ", -" 8 9 0 a b c d e f g 1 h i j k l m n o p ", -" { q r s t u v w x y z A B C D E n n F G ", -" H I J K L M N O P Q R S T U V n n n W X ", -" H Y Z ` . . . . . . . . ...n n n +.@.#. ", -" $.%.&.*.=. . . . . . . .-.n n ;.>.,.'.). ", -" !.~.{.].^.=./.(._.:.<.[.n n }. .|.1.2.3. ", -" 4.5.6.T n 7.8.9.0.a.b.n n n c. .d.e.f.g. ", -" h.i.j.k.l.n n m.n.0.n n n n . .o.p.q.r. ", -" s.t.u.v. .n n n w.w.n n n x. . .y.z.A.B. ", -" C.D.E.F. . .n n n n n n n G. . .H.I.J.K. ", -" L.t.M.N. . .O.n n n n n P.Q. . .R.S.T.U. ", -" L.V.M.W. . .X.Y.n n n n Z.`. . . +.+++@+ ", -" #+$+%+&+ . .*+=+-+n n ;+>+;+ . .,+'+)+!+ ", -" ~+{+]+^+ . . . . ./+n . . . . .(+_+:+<+ ", -" [+5.}+|+ . . . . . . . . . . . .1+2+3+4+ ", -" 5+C.6+7+8+9+0+a+b+c+d+e+f+g+h+i+j+k+l+m+ ", -" n+o+p+q+r+s+t+u+v+w+x+y+z+A+B+C+D+E+F+G+ ", -" H+I+J+K+L+M+N+O+P+E+Q+R+S+T+U+V+W+X+Y+Z+ ", -" "}; diff --git a/muse/muse/xpm/speaker.xpm b/muse/muse/xpm/speaker.xpm deleted file mode 100644 index 1595e298..00000000 --- a/muse/muse/xpm/speaker.xpm +++ /dev/null @@ -1,23 +0,0 @@ -/* XPM */ -static const char * speaker_xpm[] = { -"18 18 2 1", -" c None", -". c #000000", -" ", -" .. ", -" . . ", -" . . ", -" . . ", -" ..... . ", -" . . ", -" . . ", -" . . ", -" . . ", -" . . ", -" . . ", -" ..... . ", -" . . ", -" . . ", -" . . ", -" .. ", -" "}; diff --git a/muse/muse/xpm/splash.png b/muse/muse/xpm/splash.png deleted file mode 100644 index 077e305e..00000000 Binary files a/muse/muse/xpm/splash.png and /dev/null differ diff --git a/muse/muse/xpm/start.xpm b/muse/muse/xpm/start.xpm deleted file mode 100644 index cc5b8f9c..00000000 --- a/muse/muse/xpm/start.xpm +++ /dev/null @@ -1,17 +0,0 @@ -/* XPM */ -static const char * start_xpm[] = { -"17 12 2 1", -" c None", -". c #000000", -" .... . ", -" .... ... ", -" .... ... ", -" .... .... ", -" .... .... ", -" .... ..... ", -" .... ..... ", -" .... .... ", -" .... .... ", -" .... ... ", -" .... ... ", -" .... . "}; diff --git a/muse/muse/xpm/steprec.xpm b/muse/muse/xpm/steprec.xpm deleted file mode 100644 index 4c606c15..00000000 --- a/muse/muse/xpm/steprec.xpm +++ /dev/null @@ -1,24 +0,0 @@ -/* XPM */ -static const char* steprec_xpm[]={ -"18 18 3 1", -". c None", -"a c #ffffff", -"# c #ff0000", -"......#####.......", -"....##aaaaa##.....", -"...#aaa####aa#....", -"..#aa########a#...", -".#aaa##aaaa##aa#..", -".#aaa##aaaaaaaa#..", -"#aaaa##aaaaaaaaa#.", -"#aaaaa#####aaaaa#.", -"#aaaaaa#####aaaa#.", -"#aaaaaaaaaa##aaa#.", -"#aaaa#aaaaa##aaa#.", -".#aaa##aaaa##aa#..", -".#aaaa#######aa#..", -"..#aaaa#####aa#...", -"...#aaaaaaaaa#....", -"....##aaaaa##.....", -"......#####.......", -".................."}; diff --git a/muse/muse/xpm/stereo.svg b/muse/muse/xpm/stereo.svg deleted file mode 100644 index 2d222f61..00000000 --- a/muse/muse/xpm/stereo.svg +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/muse/muse/xpm/stick.xpm b/muse/muse/xpm/stick.xpm deleted file mode 100644 index b5817f1f..00000000 --- a/muse/muse/xpm/stick.xpm +++ /dev/null @@ -1,33 +0,0 @@ -/* XPM */ -static const char * stick_xpm[] = { -"16 16 14 1", -" c None", -". c #000100", -"+ c #9FA19E", -"@ c #A29FA3", -"# c #2F312E", -"$ c #878A8A", -"% c #ABAFB0", -"& c #DDE2E5", -"* c #6D706F", -"= c #6D6F6C", -"- c #D3D8DA", -"; c #C2C4C0", -"> c #7F817E", -", c #868885", -" . ", -" ..+ ", -" ..@+ . ", -" ..++ ..+", -" ..@@ ..++", -" ##...## ..++ ", -" .$%..$$...@@ ", -" #$%&&&%...++ ", -" ##$%&%$..#@ ", -" #*#####..#@ ", -" #*$&&%$=#..... ", -" #*%&&&-*..;@;>.", -" #$&&%,##.>;;..", -" ###### ......", -" .+>>. ", -" ... "}; diff --git a/muse/muse/xpm/stop.xpm b/muse/muse/xpm/stop.xpm deleted file mode 100644 index c4c5dbe2..00000000 --- a/muse/muse/xpm/stop.xpm +++ /dev/null @@ -1,17 +0,0 @@ -/* XPM */ -static const char * stop_xpm[] = { -"12 12 2 1", -" c None", -". c #000000", -" ", -" .......... ", -" .......... ", -" .......... ", -" .......... ", -" .......... ", -" .......... ", -" .......... ", -" .......... ", -" .......... ", -" .......... ", -" "}; diff --git a/muse/muse/xpm/sysex.xpm b/muse/muse/xpm/sysex.xpm deleted file mode 100644 index 3cc5734e..00000000 --- a/muse/muse/xpm/sysex.xpm +++ /dev/null @@ -1,27 +0,0 @@ -/* XPM */ -static const char * sysex_xpm[] = { -"22 22 2 1", -" c None", -". c #000000000000", -" ... . ", -" . .. ", -" . . ", -" .. .. .. ... ", -" ... . . . . ", -" .. . .. .. ", -" . . . . .. ", -" .. .. .. . . ", -" . ... . ... ", -" . ", -" . ", -" .. ", -" ....... ", -" . . ", -" . ", -" . . .. .. ", -" ..... . . ", -" . . . ", -" . . ", -" . . . . ", -" ....... .. .. ", -" "}; diff --git a/muse/muse/xpm/toc.xpm b/muse/muse/xpm/toc.xpm deleted file mode 100644 index e8791dbc..00000000 --- a/muse/muse/xpm/toc.xpm +++ /dev/null @@ -1,27 +0,0 @@ -/* XPM */ -static const char*toc_xpm[]={ -"18 18 6 1", -"d c #a0a0a0", -"# c #c0c0c0", -"a c #000000", -". c None", -"c c #00c000", -"b c #ffffff", -"..................", -"..................", -".#aaaaaaaaaaa.....", -".#a...abbba#a#....", -".#a#c#abbba#.aa#..", -".#a.c.abbba###a#..", -".#a.c.abbbaaaaa#..", -".#a#c#abbbbbbba#..", -".#a.c.abdddbbba#..", -".#a.c.abbbbbbba#..", -".#a#c.abbddddba##.", -".#a#c.abbbbbbba##.", -".#a#c.abbbbbbba##.", -".#a#c.abddddbba##.", -".#a...abbbbbbba#..", -".#aaaaaaaaaaaaa#..", -"..............###.", -".................."}; diff --git a/muse/muse/xpm/track_add.xpm b/muse/muse/xpm/track_add.xpm deleted file mode 100644 index 0d78d13b..00000000 --- a/muse/muse/xpm/track_add.xpm +++ /dev/null @@ -1,23 +0,0 @@ -/* XPM */ -static const char *track_add_xpm[]={ -"16 16 4 1", -"b c #404000", -"a c #808080", -". c #c00000", -"# c #ffffff", -"................", -"................", -"..############..", -"..############..", -"..a#a#a#a#a#a#..", -".bbbbbbbbbbbbbb.", -"..a#a#a#a#a#a#..", -"..a#a#a#a#a#a#..", -"..a#a#a#a#a#a#..", -"..a#a#a#a#a#a#..", -".bbbbbbbbbbbbbb.", -"..a#a#a#a#a#a#..", -"..############..", -"..############..", -"................", -"................"}; diff --git a/muse/muse/xpm/track_delete.xpm b/muse/muse/xpm/track_delete.xpm deleted file mode 100644 index e8a60338..00000000 --- a/muse/muse/xpm/track_delete.xpm +++ /dev/null @@ -1,23 +0,0 @@ -/* XPM */ -static const char *track_delete_xpm[]={ -"16 16 4 1", -"b c #404000", -"a c #808080", -". c #c00000", -"# c #ffffff", -"................", -"................", -"....##########..", -".....#########..", -"..a...a#a#a#a#..", -".bbb...bbbbbbbb.", -"..a#a...a#a#a#..", -"..a#a#...#a#a#..", -"..a#a#a...a#a#..", -"..a#a#a#...#a#..", -".bbbbbbbb...bbb.", -"..a#a#a#a#...#..", -"..#########.....", -"..##########....", -"................", -"................"}; diff --git a/muse/muse/xpm/underlined.xpm b/muse/muse/xpm/underlined.xpm deleted file mode 100644 index a84a1e7d..00000000 --- a/muse/muse/xpm/underlined.xpm +++ /dev/null @@ -1,16 +0,0 @@ -/* XPM */ -static const char * underlined_xpm[] = { -"11 11 2 1", -" g None", -". g #000000", -" .... ... ", -" .. . ", -" .. . ", -" .. . ", -" .. . ", -" .. . ", -" .. . ", -" ... .. ", -" ..... ", -" ", -" ......... "}; diff --git a/muse/muse/xpm/undo.xpm b/muse/muse/xpm/undo.xpm deleted file mode 100644 index 4ba2b07b..00000000 --- a/muse/muse/xpm/undo.xpm +++ /dev/null @@ -1,93 +0,0 @@ -/* XPM */ -static const char * undo_xpm[] = { -"22 22 68 1", -" c None", -". c #275F0B", -"+ c #9AC589", -"@ c #CDE2C1", -"# c #E5EEDF", -"$ c #F5F9F4", -"% c #C7E0BA", -"& c #79BE53", -"* c #91D56B", -"= c #C8E1BE", -"- c #87C86A", -"; c #4AA721", -"> c #3FA21C", -", c #47AB29", -"' c #000000", -") c #8AC963", -"! c #5BC930", -"~ c #6FD63D", -"{ c #53B529", -"] c #D4E4CB", -"^ c #2B6A0E", -"/ c #35691B", -"( c #FFFFFF", -"_ c #E4ECDF", -": c #A7C49A", -"< c #42A01E", -"[ c #102806", -"} c #060D03", -"| c #0E2005", -"1 c #41821F", -"2 c #79B658", -"3 c #1C4408", -"4 c #ECF3E8", -"5 c #7FCC67", -"6 c #72C24F", -"7 c #0B1B05", -"8 c #1C4508", -"9 c #3A8816", -"0 c #38AA18", -"a c #34A814", -"b c #51B929", -"c c #469D24", -"d c #122B06", -"e c #275E0D", -"f c #40A513", -"g c #CCE5C2", -"h c #48B227", -"i c #4BB626", -"j c #79D54B", -"k c #081204", -"l c #173807", -"m c #88BE71", -"n c #3F8222", -"o c #478824", -"p c #5B923C", -"q c #3E8320", -"r c #529033", -"s c #071003", -"t c #020202", -"u c #15260E", -"v c #0F1C09", -"w c #070D04", -"x c #12230A", -"y c #102009", -"z c #15270C", -"A c #234413", -"B c #13250A", -"C c #13200C", -" ", -" ", -" ..... ", -" ..+@#@+.. ", -" ..$%&&&&*#+. ", -" . .$=-;;>>>>,*#' ", -" .. .$);>!~~~~!{>*+' ", -" .]..$)>!~{''''^/{>(' ", -" .]_:)<~{'[ }|^12+3", -" .456<~{' 789(3", -" .40abc' def3", -" .ghaij3 kl3 ", -" .mnopqr3 s3' ", -" .'''''''t u3 ", -" v3w ", -" x3y ", -" zAB ", -" C3' ", -" ''' ", -" ", -" ", -" "}; diff --git a/muse/muse/xpm/up.xpm b/muse/muse/xpm/up.xpm deleted file mode 100644 index 94ad7cd5..00000000 --- a/muse/muse/xpm/up.xpm +++ /dev/null @@ -1,15 +0,0 @@ -/* XPM */ -static const char* up_xpm[]={ -"14 10 2 1", -"# c #000000", -". c None", -"..............", -"......##......", -".....####.....", -"....######....", -"...##.##.##...", -"......##......", -"......##......", -"......##......", -"......##......", -".............."}; diff --git a/muse/muse/xpm/view_bigtime_window.xpm b/muse/muse/xpm/view_bigtime_window.xpm deleted file mode 100644 index 9ff59a5a..00000000 --- a/muse/muse/xpm/view_bigtime_window.xpm +++ /dev/null @@ -1,22 +0,0 @@ -/* XPM */ -static const char * view_bigtime_window_xpm[] = { -"16 16 3 1", -" c None", -". c #D4D4D4", -"+ c #000000", -" .++. ", -" .++..++. ", -" +. ++ .+ ", -" +. ++ .+ ", -" .. ++. .. ", -" + ++. + ", -".+ ++. +.", -"+. ++. .+", -"+. + .. .+", -".+ + . +.", -" + + . + ", -" ..+ . .. ", -" +.. .+ ", -" +. .+ ", -" .++..++. ", -" .++. "}; diff --git a/muse/muse/xpm/view_cliplist.xpm b/muse/muse/xpm/view_cliplist.xpm deleted file mode 100644 index 6217b397..00000000 --- a/muse/muse/xpm/view_cliplist.xpm +++ /dev/null @@ -1,32 +0,0 @@ -/* XPM */ -static const char * view_cliplist_xpm[] = { -"16 16 13 1", -" c None", -". c #5E2ABF", -"+ c #945BFD", -"@ c #000000", -"# c #DCDCDC", -"$ c #CACACA", -"% c #E6E6E6", -"& c #EAEAEA", -"* c #FFFFFF", -"= c #FCFCFC", -"- c #461F8E", -"; c #FBFBFB", -"> c #F9F9F9", -"................", -".+@@@@@@@@@@+++.", -".+@####$###@@++.", -".+@%&@***@*@@@+.", -".+@%@@#&@@#*=@-.", -".+@%@@#*@@#@=@-.", -".+@;&@#**@#*@@-.", -".+@;&&#&&*#@=@-.", -".+@;&@***@*=@@-.", -".+@%@@#&@@#@>@-.", -".+@%@@#*@@#=@@-.", -".+@%%@#;;@#@=@-.", -".+@;%%#;%;#;#@-.", -".+@@@@@@@@@@@@-.", -".++------------.", -"................"}; diff --git a/muse/muse/xpm/view_marker.xpm b/muse/muse/xpm/view_marker.xpm deleted file mode 100644 index 26dba09a..00000000 --- a/muse/muse/xpm/view_marker.xpm +++ /dev/null @@ -1,37 +0,0 @@ -/* XPM */ -static const char * view_marker_xpm[] = { -"16 16 18 1", -" c None", -". c #DCDCDC", -"+ c #0C0C0C", -"@ c #253B52", -"# c #395B7F", -"$ c #588DC4", -"% c #531228", -"& c #C3B2E5", -"* c #240E16", -"= c #5F132A", -"- c #828282", -"; c #542838", -"> c #232323", -", c #020202", -"' c #BDBDBD", -") c #4C4C4C", -"! c #A6A6A6", -"~ c #331B5F", -" ... ", -" ... . ", -". ++++ . ", -".+@#$#++. ... ", -".+#$$$$#+. . ..", -" ++$$$$#++++++++", -"..+$$$$#+#$$#++.", -" .+$$##@%$$++ &", -" +**+=$$+. . ", -" +- . *; . ", -" -> ", -" ,' ", -" +) ", -" !+ ", -" ++ ", -" ~ "}; diff --git a/muse/muse/xpm/view_mixer.xpm b/muse/muse/xpm/view_mixer.xpm deleted file mode 100644 index ec64f3c8..00000000 --- a/muse/muse/xpm/view_mixer.xpm +++ /dev/null @@ -1,26 +0,0 @@ -/* XPM */ -static const char * view_mixer_xpm[] = { -"16 16 7 1", -" c None", -". c #5E2ABF", -"+ c #945BFD", -"@ c #FFFFFF", -"# c #000000", -"$ c #CACACA", -"% c #5727B0", -"................", -".++++++++++++++.", -".+@@@@@@@@@@@@+.", -".+@#@@#@@#@@#@+.", -".+###@#$###@#$+.", -".+###$#$###$#$+.", -".+@#$$#$@#$$#$+.", -".+@#$@#$@#$###+.", -".+@#$@#$@#$###%.", -".+@#$@#$@#$@#$%.", -".+@#$###@#$@#$+.", -".+@#$###$#$@#$+.", -".+@@$@@@$@$@@$+.", -".+@@@@@@@@@@@@+.", -".++++++++++++++.", -"................"}; diff --git a/muse/muse/xpm/view_transport_window.xpm b/muse/muse/xpm/view_transport_window.xpm deleted file mode 100644 index fba8696f..00000000 --- a/muse/muse/xpm/view_transport_window.xpm +++ /dev/null @@ -1,24 +0,0 @@ -/* XPM */ -static const char * view_transport_window_xpm[] = { -"16 16 5 1", -" c None", -". c #575757", -"+ c #000000", -"@ c #D4D4D4", -"# c #D1CFD5", -" .+. ", -" .+++. ", -" .+++.@ ", -" .+.@@ ", -" ", -" ", -" .+++.@ ", -" .+++++@ ", -" .@++++@ ", -" @++.@@ ", -" ++ ", -" .++@@ ", -" +++@++ ", -" .+++++.@ ", -" .++++.@# ", -" @@@@@@ "}; diff --git a/muse/muse/xpm/wave.xpm b/muse/muse/xpm/wave.xpm deleted file mode 100644 index f2a93c66..00000000 --- a/muse/muse/xpm/wave.xpm +++ /dev/null @@ -1,33 +0,0 @@ -/* XPM */ -static const char * wave_xpm[] = { -"16 16 14 1", -" c None", -". c #828282", -"+ c #000000", -"@ c #7F7F7F", -"# c #8A8A8A", -"$ c #4B4B4B", -"% c #444444", -"& c #E50000", -"* c #290000", -"= c #FF0000", -"- c #1E0000", -"; c #F20000", -"> c #1B0000", -", c #D50000", -" ", -" . ", -" .+. ", -" @@ #+@+# ", -" $++$ +@ @+ ", -" +@@+ + + @", -" + + + + %", -" + + + + +", -" + + + + +", -" + + + + +", -"&*==-&;&>,==+;=+", -"%+ + + + +", -"+@ +@ @+ + +", -"% #+@+# +@@+", -"@ .+. $++$", -" . @@ "}; diff --git a/muse/packaging/muse_icon.png b/muse/packaging/muse_icon.png deleted file mode 100644 index 5a1acb96..00000000 Binary files a/muse/packaging/muse_icon.png and /dev/null differ diff --git a/muse/packaging/muse_mdk.spec b/muse/packaging/muse_mdk.spec deleted file mode 100755 index 1a7a68ff..00000000 --- a/muse/packaging/muse_mdk.spec +++ /dev/null @@ -1,274 +0,0 @@ -%define name muse -%define museversion 0.7.0pre3 -%define release 1thac -%define alsa_version 0.9.8 -%define jackit_version 0.93.11 -%define libjack0_version 0.93.11 -%define libsndfile1_version 1.0.5 -%define ladspa_version 1.12 -%define glib2_0_version 2.2.3 -%define qtversion 3.2 -%define dssslver 1.78 -%define musever 0.7.0pre3 -%define musedir 0.7.0pre3 -%define capver 1.0 -%define fluidsynth_version 1.0.3 -%define graphviz_version 1.9.0 -%define jade_version 1.3.1 -%define doxy_version 1.2.17 -%define ladccaver 0.4.0 - -%define major 0 -%define libname %mklibname %name %major - - -Name: %{name} -Summary: MusE is a MIDI/Audio sequencer with recording and editing capabilities. -Version: %{museversion} -Release: %{release} -URL: http://muse.sourceforge.net/ -Source0: %{name}-%{musever}.tar.bz2 -Source1: %{name}-ardour-tutorial.tar.bz2 -Group: Sound -BuildRoot: %{_tmppath}/%{name}-buildroot -License: GPL -Requires: libqt3 >= %{qtversion} -Requires: libsndfile1 >= %{libsndfile1_version} -Requires: libalsa2 >= %{alsa_version} -Requires: jackit >= %{jackit_version} -Requires: libjack0 >= %{libjack0_version} -BuildRequires: graphviz >= %{graphviz_version} -BuildRequires: libgraphviz7 >= %{graphviz_version} -BuildRequires: openjade >= %{jade_version} -BuildRequires: doxygen >= %{doxy_version} -BuildRequires: libfluidsynth1 >= %{fluidsynth_version} -BuildRequires: libfluidsynth1-devel >= %{fluidsynth_version} -BuildRequires: fluidsynth >= %{fluidsynth_version} -BuildRequires: libalsa2-devel >= %{alsa_version} -BuildRequires: docbook-style-dsssl >= %{dssslver} -BuildRequires: libjack0-devel >= %{libjack0_version} -BuildRequires: libsndfile1-devel >= %{libsndfile1_version} -BuildRequires: libgraphviz7-devel >= %{graphviz_version} -BuildRequires: libcap1-devel >= %{capver} -BuildRequires: ladcca >= %{ladccaver} -BuildRequires: docbook-dtd41-sgml -BuildRequires: libext2fs2-devel - -%description -MusE is a MIDI/Audio sequencer with recording and editing capabilities. -Some Highlights: - - * standard midifile (smf) import-/export - * organizes songs in tracks and parts which you can arrange - with the part editor - * midi editors: pianoroll, drum, list, controller - * score editor with high quality postscript printer output - * realtime: editing while playing - * unlimited number of open editors - * unlimited undo/redo - * realtime and step-recording - * multiple midi devices - * unlimited number of tracks - * audio playback/recording - * Sync to external devices: MTC/MMC, Midi Clock, - Master/Slave (currently only partial implemented) - * LADSPA host - * ALSA and JACK audio driver - * uses raw midi devices (ALSA, OSS & serial ports) - * XML project file - * project file contains complete app state (session data) - * Application spanning Cut/Paste Drag/Drop - * uses C++, QT2 GUI Library, STL - * GPL Licenced - -%package -n %libname -Summary: Main libraries for %name. -Group: System/Libraries - -%description -n %{libname} -This package contains the dynamic library of plugins from %name. - -%package -n %{libname}-static -Summary: Static libraries for %name plugins. -Group: System/Libraries - -%description -n %{libname}-static -This package contains the dynamic library of plugins from %name. - - -Group: Development/C++ -%package -n givertcap -Summary: Give applications real-time capabilities -Version: %{capver} -Group: Sound -URL: http://www.tml.hut.fi/~tilmonen/givertcap/ - -%description -n givertcap -Givertcap is a small Linux application that is used to give other -application real-time capabilities. With the aid of givertcap you can -run real-time applications (audio and video -processing apps for -example) with high priority without running the application as root. - -%prep -rm -rf $RPM_BUILD_ROOT - -%setup -n %{name}-%{musever} -a 1 -#perl -p -i -e 's|version="3.2.3"|version="3.1"||g' widgets/*.ui - - -%build - -export QTDIR=/usr/lib/qt3 -export KDEDIR=%_prefix -export LD_LIBRARY_PATH=$QTDIR/lib:$KDEDIR/lib:$LD_LIBRARY_PATH -export PATH=$QTDIR/bin:$KDEDIR/bin:$PATH - -%configure2_5x --prefix=%{_prefix} --datadir=%{_datadir} --libdir=%{_libdir} --with-jack \ - --disable-suid-install --disable-suid-build --enable-patchbay --disable-rtcap \ - --with-docbook-stylesheets=/usr/share/sgml/docbook/dsssl-stylesheets-%{dssslver} \ - --enable-arch=i586 --enable-laddca -# --disable-static --enable-shared --disable-qttest - -%make - -%install -rm -rf $RPM_BUILD_ROOT - -%makeinstall - -mkdir -p $RPM_BUILD_ROOT%_menudir - -# (mandrake) menu support -cat << EOF > %{buildroot}%{_menudir}/%{name} -?package(%{name}): longtitle="MusE audio editor" \ -command="/usr/bin/muse" title="MusE audio editor" needs="x11" \ -section="Multimedia/Sound" \ -icon="sound_section.png" -EOF - - -%post -%update_menus -/sbin/ldconfig - -%postun -%clean_menus - /sbin/ldconfig - -%post -n %{libname} -p /sbin/ldconfig - -%postun -n %{libname} -p /sbin/ldconfig - -%clean -rm -rf $RPM_BUILD_ROOT - -%files -%defattr(-,root,root,0755) -%doc AUTHORS COPYING INSTALL ChangeLog NEWS README* SECURITY -%doc html -%{_bindir}/muse -%{_bindir}/grepmidi -%{_libdir}/%name -%{_datadir}/%name -%{_menudir}/* - -%files -n %{libname} -%defattr(-,root,root) -%{_libdir}/%name/plugins/*.so* -%{_libdir}/%name/synthi/*.so* - -%files -n %{libname}-static -%defattr(-,root,root) -%{_libdir}/%name/plugins/*.la -%{_libdir}/%name/plugins/*.a -%{_libdir}/%name/synthi/*.a -%{_libdir}/%name/synthi/*.la - -#%files -n givertcap -#%attr(4755, root, root) -#%{_bindir}/givertcap - - - -%changelog -* Thu May 27 2004 Torbjorn Turpeinen 0.7.0pre3-1thac -- Updated to latest version - -* Wed May 05 2004 Torbjorn Turpeinen 0.7.0pre2-1thac -- Updated to latest version - -* Tue Apr 20 2004 Torbjorn Turpeinen 0.7.0pre1-1thac -- Updated to latest version - -* Tue Apr 20 2004 Torbjorn Turpeinen 0.6.3-2thac -- Rebuilt against Mandrake 10.0 official - -* Mon Jan 12 2004 Torbjorn Turpeinen 0.6.3-1thac -- Updated to latest version - -* Mon Nov 17 2003 Torbjorn Turpeinen 0.6.2-2thac -- Rebuilt for jackit-0.9.0 - -* Fri Nov 07 2003 Torbjorn Turpeinen 0.6.2-1thac -- Rebuilt for Mandrake 9.2 - -* Thu Oct 30 2003 Torbjorn Turpeinen 0.6.1-1thac -- Rebuilt for Mandrake 9.2 - -* Tue Sep 09 2003 Torbjorn Turpeinen 0.6.1-1thac -- Added muse-softsynth-fix - on muse 0.6.1, it results in a dead lock when muse starts a softsynth - without RT. the patch is an adhoc fix for this problem. -- Added jackit 0.80.0 type patch -- Changed naming to differ from Mandrake cooker - -* Fri Jul 25 2003 Torbjorn Turpeinen 0.6.1-1mdk -- Updated to 0.6.1 final built against fluidsynth-1.0.2 -- Built with qt-3.1.2 patch - -* Sat May 17 2003 Torbjorn Turpeinen 0.6.0-1mdk -- Updated to 0.6.0 final built against fluidsynth-1.0.1 - -* Sat May 03 2003 Torbjorn Turpeinen 0.6.0pre8.3mdk -- Rebuilt with rpmmacro patch that removes nvidia dependency. - -* Tue Apr 22 2003 Torbjorn Turpeinen 0.6.0pre8.2mdk -- Rebuilt against latest version of jackit 0.67.2 - -* Fri Apr 04 2003 Torbjorn Turpeinen 0.6.0pre8.1mdk -- Updated to latest version - -* Wed Mar 26 2003 Torbjorn Turpeinen 0.6.0pre7.2mdk -- Rebuilt for Mandrake 9.1 - -* Sun Mar 23 2003 Torbjorn Turpeinen 0.6.0pre7.2mdk -- Updated to latest version -- Compiled against jackit-0.62.0 and iiwusynth-0.2.5 - -* Sun Feb 16 2003 Torbjorn Turpeinen 0.6.0pre5.4mdk -- Recompiled against jackit-0.51.0. - -* Fri Feb 14 2003 Torbjorn Turpeinen 0.6.0pre5.3mdk -- Recompiled against libsndfile-1.0.4. - -* Sat Feb 08 2003 Torbjorn Turpeinen 0.6.0pre5.2mdk -- Recompiled against jack-0.44,graphviz and i586 optimized. - -* Wed Dec 11 2002 Torbjorn Turpeinen 0.6.0pre5.1mdk -- Removed jack dependency again - -* Mon Dec 09 2002 Torbjorn Turpeinen 0.6.0pre5mdk -- Rebuilt for Mandrake 9.0 - -* Fri Nov 15 2002 Lenny Cartier 0.6.0-0.pre3.2mdk -- remove jack dependency - -* Wed Nov 13 2002 Lenny Cartier 0.6.0-0.pre3.1mdk -- 0.6.0pre3 -- clean filelist -- disable-suid-build for now -- from James Gregory : - - fixed file locations to use macros rather than absolute paths - -* Thu Oct 3 2002 James Gregory 0.6.0-0.pre2.2mdk -- First version to build. diff --git a/muse/pch.txt b/muse/pch.txt deleted file mode 100644 index 11e9ab5f..00000000 --- a/muse/pch.txt +++ /dev/null @@ -1,68 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2007 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -add_custom_command( - OUTPUT ${PROJECT_BINARY_DIR}/all.h - COMMAND cp ${PROJECT_SOURCE_DIR}/all.h ${PROJECT_BINARY_DIR}/all.h - DEPENDS ${PROJECT_SOURCE_DIR}/all.h - WORKING_DIRECTORY ${PROJECT_BINARY_DIR} - ) - -add_custom_command( - OUTPUT ${PROJECT_BINARY_DIR}/all-pic.h - COMMAND cp ${PROJECT_SOURCE_DIR}/all.h ${PROJECT_BINARY_DIR}/all-pic.h - DEPENDS ${PROJECT_SOURCE_DIR}/all.h - WORKING_DIRECTORY ${PROJECT_BINARY_DIR} - ) - -add_custom_command( - OUTPUT ${PROJECT_BINARY_DIR}/all.h.pch - COMMAND ${CMAKE_CXX_COMPILER} - -g -Wextra -fno-exceptions -Wall - -I${QT_INCLUDE_DIR} - -I${QT_QTCORE_INCLUDE_DIR} - -I${QT_QTGUI_INCLUDE_DIR} - -o all.h.pch all.h - DEPENDS ${PROJECT_BINARY_DIR}/all.h - WORKING_DIRECTORY ${PROJECT_BINARY_DIR} - ) - -add_custom_command( - OUTPUT ${PROJECT_BINARY_DIR}/all-pic.h.pch - COMMAND ${CMAKE_CXX_COMPILER} - -fPIC - -Dawlplugin_EXPORTS -DQT_CORE_LIB -DQT_GUI_LIB -DQT_XML_LIB - -DQT_PLUGIN -DQT_SHARED -DQT_NO_DEBUG - -g -Wextra -fno-exceptions -Wall - -I${QT_INCLUDE_DIR} - -I${QT_QTCORE_INCLUDE_DIR} - -I${QT_QTGUI_INCLUDE_DIR} - -o all-pic.h.pch all-pic.h - DEPENDS ${PROJECT_BINARY_DIR}/all-pic.h - WORKING_DIRECTORY ${PROJECT_BINARY_DIR} - ) - -set_source_files_properties( - ${PROJECT_BINARY_DIR}/all.h - ${PROJECT_BINARY_DIR}/all.h.pch - ${PROJECT_BINARY_DIR}/all-pic.h.pch - PROPERTIES generated true - ) - diff --git a/muse/plugins/CMakeLists.txt b/muse/plugins/CMakeLists.txt deleted file mode 100644 index 1293902f..00000000 --- a/muse/plugins/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -subdirs( freeverb doublechorus pandelay ) - diff --git a/muse/plugins/doublechorus/CMakeLists.txt b/muse/plugins/doublechorus/CMakeLists.txt deleted file mode 100644 index ecb6dbe0..00000000 --- a/muse/plugins/doublechorus/CMakeLists.txt +++ /dev/null @@ -1,33 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -add_library ( doublechorus SHARED - doublechorus.cpp doublechorusmodel.cpp simplechorusmodel.cpp - ) - -# tell cmake to name the target doublechorus.so instead of -# libdoublechorus.so -# -set_target_properties (doublechorus - PROPERTIES PREFIX "" - #COMPILE_FLAGS "-O3" - ) - -install_targets ( /lib/${MusE_INSTALL_NAME}/plugins doublechorus) diff --git a/muse/plugins/doublechorus/doublechorus.cpp b/muse/plugins/doublechorus/doublechorus.cpp deleted file mode 100644 index 27d84336..00000000 --- a/muse/plugins/doublechorus/doublechorus.cpp +++ /dev/null @@ -1,173 +0,0 @@ -//========================================================= -// DoubleChorus for MusE -// -// (C) Copyright 2006 Nil Geisweiller -//========================================================= - -#include "doublechorusmodel.h" -#include - -//--------------------------------------------------------- -// instantiate doublechorus -// Construct a new plugin instance. -//--------------------------------------------------------- - -LADSPA_Handle instantiate(const LADSPA_Descriptor* /*Descriptor*/, - unsigned long samplerate) -{ - return new DoubleChorusModel(samplerate); -} - -//--------------------------------------------------------- -// connect PortTo doublechorus -// Connect a port to a data location. -//--------------------------------------------------------- - -void connect(LADSPA_Handle Instance, unsigned long port, - LADSPA_Data* data) -{ - ((DoubleChorusModel *)Instance)->port[port] = data; -} - -//--------------------------------------------------------- -// activate -//--------------------------------------------------------- - -void activate(LADSPA_Handle instance) -{ - ((DoubleChorusModel *)instance)->activate(); -} - -//--------------------------------------------------------- -// deactivate -//--------------------------------------------------------- - -void deactivate(LADSPA_Handle /*Instance*/) -{ -} - -//--------------------------------------------------------- -// run doublechorus -//--------------------------------------------------------- - -void run(LADSPA_Handle Instance, unsigned long n) -{ - ((DoubleChorusModel *)Instance)->processReplace(n); -} - -//--------------------------------------------------------- -// runAdding doublechorus -// *ADD* the output to the output buffer. -//--------------------------------------------------------- - -void runAdding(LADSPA_Handle Instance, unsigned long n) -{ - ((DoubleChorusModel *)Instance)->processMix(n); -} - -//--------------------------------------------------------- -// set doublechorus RunAddingGain -//--------------------------------------------------------- - -void setGain(LADSPA_Handle /*Instance*/, LADSPA_Data /*Gain*/) -{ - printf("TEST setGain\n"); - // ((DoubleChorusModel *)Instance)->m_fRunAddingGain = Gain; -} - -//--------------------------------------------------------- -// cleanup doublechorus -//--------------------------------------------------------- - -void cleanup(LADSPA_Handle Instance) -{ - delete (DoubleChorusModel *)Instance; -} - -static const char* portNames[] = { - "Input (Left)", - "Input (Right)", - "Output (Left)", - "Output (Right)", - "Pan 1", - "LFOFreq 1", - "Depth 1", - "Pan 2", - "LFOFreq 2", - "Depth 2", - "Dry/Wet" -}; - -LADSPA_PortDescriptor portDescriptors[] = { - LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO, - LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO, - LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO, - LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO, - LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL, - LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL, - LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL, - LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL, - LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL, - LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL, - LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL -}; - -LADSPA_PortRangeHint portRangeHints[] = { - { 0, 0.0, 0.0 }, - { 0, 0.0, 0.0 }, - { 0, 0.0, 0.0 }, - { 0, 0.0, 0.0 }, - { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_DEFAULT_HIGH, 0.0, 1.0 }, - { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_LOGARITHMIC | LADSPA_HINT_DEFAULT_HIGH, MINFREQ, MAXFREQ }, - { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_DEFAULT_LOW, 0.0, 1.0 }, - { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_DEFAULT_LOW, 0.0, 1.0 }, - { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_LOGARITHMIC | LADSPA_HINT_DEFAULT_MIDDLE, MINFREQ, MAXFREQ }, - { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_DEFAULT_LOW, 0.0, 1.0 }, - { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_DEFAULT_MIDDLE, 0.0, 1.0 }, -}; - -LADSPA_Descriptor descriptor = { - 1051, - "doublechorus1", - LADSPA_PROPERTY_HARD_RT_CAPABLE, - "DoubleChorus", - "Nil Geisweiller", - "GPL", - NBRPARAM + 4, - portDescriptors, - portNames, - portRangeHints, - 0, // impl. data - instantiate, - connect, - activate, - run, - runAdding, - setGain, - deactivate, - cleanup -}; - -//--------------------------------------------------------- -// _init -// called automatically when the plugin library is first -// loaded. -//--------------------------------------------------------- -void _init() { -} - -//--------------------------------------------------------- -// _fini -// called automatically when the library is unloaded. -//--------------------------------------------------------- -void _fini() { -} - -//--------------------------------------------------------- -// ladspa_descriptor -// Return a descriptor of the requested plugin type. -//--------------------------------------------------------- -const LADSPA_Descriptor* ladspa_descriptor(unsigned long i) { - return (i == 0) ? &descriptor : 0; -} - diff --git a/muse/plugins/doublechorus/doublechorusmodel.cpp b/muse/plugins/doublechorus/doublechorusmodel.cpp deleted file mode 100644 index 01def026..00000000 --- a/muse/plugins/doublechorus/doublechorusmodel.cpp +++ /dev/null @@ -1,214 +0,0 @@ -//=========================================================================== -// -// doublechorusmodel -// -// Version 0.0.1 -// -// -// -// -// Copyright (c) 2006 Nil Geisweiller -// -// -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -// 02111-1307, USA or point your web browser to http://www.gnu.org. -//=========================================================================== - -#include "doublechorusmodel.h" - -//--------------------------------------------------------- -// DoubleChorusModel -//--------------------------------------------------------- - -DoubleChorusModel::DoubleChorusModel(unsigned long samplerate) { - _simpleChorus1 = new SimpleChorusModel((float)samplerate); - _simpleChorus2 = new SimpleChorusModel((float)samplerate); - - param[0] = getPan1(); - param[1] = getLFOFreq1(); - param[2] = getDepth1(); - param[3] = getPan2(); - param[4] = getLFOFreq2(); - param[5] = getDepth2(); - param[6] = getDryWet(); -} - -DoubleChorusModel::~DoubleChorusModel() { - delete(_simpleChorus1); - delete(_simpleChorus2); -} - -//--------------------------------------------------------- -// activate -//--------------------------------------------------------- - -void DoubleChorusModel::activate() { - *port[4] = param[0]; - *port[5] = param[1]; - *port[6] = param[2]; - *port[7] = param[3]; - *port[8] = param[4]; - *port[9] = param[5]; - *port[10] = param[6]; -} - -//--------------------------------------------------------- -// processReplace -//--------------------------------------------------------- - -void DoubleChorusModel::processReplace(long n) { - float tmpLeftOutput1; - float tmpRightOutput1; - float tmpLeftOutput2; - float tmpRightOutput2; - //update parameters - if (param[0] != *port[4]) { - param[0] = *port[4]; - setPan1(param[0]); - } - if (param[1] != *port[5]) { - param[1] = *port[5]; - setLFOFreq1(param[1]); - } - if (param[2] != *port[6]) { - param[2] = *port[6]; - setDepth1(param[2]); - } - if (param[3] != *port[7]) { - param[3] = *port[7]; - setPan2(param[3]); - } - if (param[4] != *port[8]) { - param[4] = *port[8]; - setLFOFreq2(param[4]); - } - if (param[5] != *port[9]) { - param[5] = *port[9]; - setDepth2(param[5]); - } - if (param[6] != *port[10]) { - param[6] = *port[10]; - setDryWet(param[6]); - } - //process the effect - for (int i = 0; i < n; ++i) { - _simpleChorus1->process_chorus(port[0][i], port[1][i], - &tmpLeftOutput1, &tmpRightOutput1); - _simpleChorus2->process_chorus(port[0][i], port[1][i], - &tmpLeftOutput2, &tmpRightOutput2); - port[2][i] = _dryWet * (tmpLeftOutput1 + tmpLeftOutput2) - + (1.0 - _dryWet) * port[0][i]; - port[3][i] = _dryWet * (tmpRightOutput1 + tmpRightOutput2) - + (1.0 - _dryWet) * port[1][i]; - } -} - -void DoubleChorusModel::processMix(long n) { - float tmpLeftOutput1; - float tmpRightOutput1; - float tmpLeftOutput2; - float tmpRightOutput2; - //update parameters - if (param[0] != *port[4]) { - param[0] = *port[4]; - setPan1(param[0]); - } - if (param[1] != *port[5]) { - param[1] = *port[5]; - setLFOFreq1(param[1]); - } - if (param[2] != *port[6]) { - param[2] = *port[6]; - setDepth1(param[2]); - } - if (param[3] != *port[7]) { - param[3] = *port[7]; - setPan2(param[3]); - } - if (param[4] != *port[8]) { - param[4] = *port[8]; - setLFOFreq2(param[4]); - } - if (param[5] != *port[9]) { - param[5] = *port[9]; - setDepth2(param[5]); - } - if (param[6] != *port[10]) { - param[6] = *port[10]; - setDryWet(param[6]); - } - //process the effect - for (int i = 0; i < n; ++i) { - _simpleChorus1->process_chorus(port[0][i], port[1][i], - &tmpLeftOutput1, &tmpRightOutput1); - _simpleChorus2->process_chorus(port[0][i], port[1][i], - &tmpLeftOutput2, &tmpRightOutput2); - port[2][i] += _dryWet * (tmpLeftOutput1 + tmpLeftOutput2) - + (1.0 - _dryWet) * port[0][i]; - port[3][i] += _dryWet * (tmpRightOutput1 + tmpRightOutput2) - + (1.0 - _dryWet) * port[1][i]; - } -} - -//------------------------------------------------------------------ -// set parameters -//------------------------------------------------------------------ -void DoubleChorusModel::setPan1(float value) { - _simpleChorus1->setPan(value); -} -void DoubleChorusModel::setLFOFreq1(float value) { - _simpleChorus1->setLFOFreq(value); -} -void DoubleChorusModel::setDepth1(float value) { - _simpleChorus1->setDepth(value); -} -void DoubleChorusModel::setPan2(float value) { - _simpleChorus2->setPan(value); -} -void DoubleChorusModel::setLFOFreq2(float value) { - _simpleChorus2->setLFOFreq(value); -} -void DoubleChorusModel::setDepth2(float value) { - _simpleChorus2->setDepth(value); -} -void DoubleChorusModel::setDryWet(float value) { - _dryWet = value; -} - -//---------------------------------------------------------------- -// get parameters -//---------------------------------------------------------------- -float DoubleChorusModel::getPan1() { - return _simpleChorus1->getPan(); -} -float DoubleChorusModel::getLFOFreq1() { - return _simpleChorus1->getLFOFreq(); -} -float DoubleChorusModel::getDepth1() { - return _simpleChorus1->getDepth(); -} -float DoubleChorusModel::getPan2() { - return _simpleChorus2->getPan(); -} -float DoubleChorusModel::getLFOFreq2() { - return _simpleChorus2->getLFOFreq(); -} -float DoubleChorusModel::getDepth2() { - return _simpleChorus2->getDepth(); -} -float DoubleChorusModel::getDryWet() { - return _dryWet; -} diff --git a/muse/plugins/doublechorus/doublechorusmodel.h b/muse/plugins/doublechorus/doublechorusmodel.h deleted file mode 100644 index 40ce9f3f..00000000 --- a/muse/plugins/doublechorus/doublechorusmodel.h +++ /dev/null @@ -1,72 +0,0 @@ -//=========================================================================== -// -// doublechorusmodel -// -// Version 0.0.1 -// -// -// -// -// Copyright (c) 2006 Nil Geisweiller -// -// -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -// 02111-1307, USA or point your web browser to http://www.gnu.org. -//=========================================================================== - -#ifndef __DOUBLECHORUSMODEL_H -#define __DOUBLECHORUSMODEL_H - -#include "simplechorusmodel.h" -#include "../../muse/ladspa.h" - -#define NBRPARAM 7 - -class SimpleChorusModel; - -class DoubleChorusModel { - SimpleChorusModel* _simpleChorus1; - SimpleChorusModel* _simpleChorus2; - - float _dryWet; //0.0 : dry, 1.0 : wet - - public: - LADSPA_Data* port[NBRPARAM + 4]; - float param[NBRPARAM]; - - DoubleChorusModel(unsigned long samplerate); - ~DoubleChorusModel(); - void processMix(long numsamples); - void processReplace(long numsamples); - void setPan1(float value); - void setLFOFreq1(float value); - void setDepth1(float value); - void setPan2(float value); - void setLFOFreq2(float value); - void setDepth2(float value); - void setDryWet(float value); - float getPan1(); - float getLFOFreq1(); - float getDepth1(); - float getPan2(); - float getLFOFreq2(); - float getDepth2(); - float getDryWet(); - - void activate(); -}; - -#endif diff --git a/muse/plugins/doublechorus/simplechorusmodel.cpp b/muse/plugins/doublechorus/simplechorusmodel.cpp deleted file mode 100644 index 72015465..00000000 --- a/muse/plugins/doublechorus/simplechorusmodel.cpp +++ /dev/null @@ -1,157 +0,0 @@ -//=========================================================================== -// -// simplechorus -// -// Version 0.0.1 -// -// -// -// -// Copyright (c) 2006 Nil Geisweiller -// -// -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -// 02111-1307, USA or point your web browser to http://www.gnu.org. -//=========================================================================== - -#include "simplechorusmodel.h" -#include -#include - -#define ABS(x) (x>=0?x:-x) - -// Linearly interpolate [ = a * (1 - f) + b * f] -inline float lin_interp(float f, float a, float b) { - return a + f * (b - a); -} - -// Cubic interpolation function -inline float cube_interp(const float fr, - const float inm1, - const float in, - const float inp1, - const float inp2) { - return in + 0.5f * fr * (inp1 - inm1 + - fr * (4.0f * inp1 + 2.0f * inm1 - 5.0f * in - inp2 + - fr * (3.0f * (in - inp1) - inm1 + inp2))); -} - -float SimpleChorusModel::sinus[MAXSINUSRESOLUTION]; -int SimpleChorusModel::useCount = 0; - -SimpleChorusModel::SimpleChorusModel(float samplerate) { - _sampleRate = samplerate; - //sinus - if (useCount++ == 0) - for(int i = 0; i < MAXSINUSRESOLUTION; i++) - sinus[i] = (float)(sin(((double)i * 2.0 * M_PI) / - (double)MAXSINUSRESOLUTION)); - _index = 0.0; - //init buffer - for(int i = 0; i < MAXBUFFERLENGTH; i++) { - _leftBuffer[i] = 0.0; - _rightBuffer[i] = 0.0; - } - _position = 0; - //initial parameters - _pan = 0.5; - _LFOFreq = 1.0; - _depth = 0.5; - setChorus(); -} - -SimpleChorusModel::~SimpleChorusModel() { -} - -void SimpleChorusModel::process_chorus(float leftInput, float rightInput, - float* leftOutput, float* rightOutput) { - float ocsDiff; - - _ocsDistance = _depthAmp * sinus[(int)_index]; - - ocsDiff = _ocsDistance - floorf(_ocsDistance); - - _past_position_left = MAXBUFFERLENGTH //to be sure that _past_position_left>0 - + _position - _leftMidDistance + (int)_ocsDistance; - _past_position_right = MAXBUFFERLENGTH - + _position - _rightMidDistance + (int)_ocsDistance; - - *leftOutput = _leftAmp * - lin_interp(ocsDiff, _leftBuffer[_past_position_left%MAXBUFFERLENGTH], - _leftBuffer[(_past_position_left+1)%MAXBUFFERLENGTH]); - *rightOutput = _rightAmp * - lin_interp(ocsDiff, _rightBuffer[_past_position_right%MAXBUFFERLENGTH], - _rightBuffer[(_past_position_right+1)%MAXBUFFERLENGTH]); - - _leftBuffer[_position] = leftInput; - _rightBuffer[_position] = rightInput; - - _position++; - _position %= MAXBUFFERLENGTH; - - _index += _inct; - _index = (_index= bufsize) - bufidx = 0; -// bufidx = ++bufidx % bufsize; - return output; - } - void mute() { - for (int i=0; i= bufsize) - bufidx = 0; -// bufidx = ++bufidx % bufsize; - return output; - } - void mute() { - for (int i=0; iport[port] = data; - } - -//--------------------------------------------------------- -// activate -//--------------------------------------------------------- - -void activate(LADSPA_Handle instance) - { - ((Revmodel *)instance)->activate(); - } - -//--------------------------------------------------------- -// deactivate -//--------------------------------------------------------- - -void deactivate(LADSPA_Handle /*Instance*/) - { - } - -//--------------------------------------------------------- -// runFreeverb -//--------------------------------------------------------- - -void run(LADSPA_Handle Instance, unsigned long n) - { - ((Revmodel*)Instance)->processreplace(n); - } - -//--------------------------------------------------------- -// runAddingFreeverb -// *ADD* the output to the output buffer. -//--------------------------------------------------------- - -void runAdding(LADSPA_Handle Instance, unsigned long n) - { - ((Revmodel*)Instance)->processmix(n); - } - -//--------------------------------------------------------- -// setFreeverbRunAddingGain -//--------------------------------------------------------- - -void setGain(LADSPA_Handle /*Instance*/, LADSPA_Data /*Gain*/) - { -// ((Freeverb *)Instance)->m_fRunAddingGain = Gain; - } - -//--------------------------------------------------------- -// cleanupFreeverb -//--------------------------------------------------------- - -void cleanup(LADSPA_Handle Instance) - { - delete (Revmodel *)Instance; - } - -static const char* portNames[] = { - "Input (Left)", - "Input (Right)", - "Output (Left)", - "Output (Right)", - "Room Size", - "Damping", - "Wet Level", - }; - -LADSPA_PortDescriptor portDescriptors[] = { - LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO, - LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO, - LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO, - LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO, - LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL, - LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL, - LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL, - }; - -LADSPA_PortRangeHint portRangeHints[] = { - { 0, 0.0, 0.0 }, - { 0, 0.0, 0.0 }, - { 0, 0.0, 0.0 }, - { 0, 0.0, 0.0 }, - { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW, 0.0, 1.0 }, - { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_LOGARITHMIC, 0.0, 1.0 }, - { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_LOGARITHMIC, 0.0, 1.0 }, - }; - -LADSPA_Descriptor descriptor = { - 1050, - "freeverb1", - LADSPA_PROPERTY_HARD_RT_CAPABLE, - "Freeverb", - "Werner Schweer", - "None", - 7, - portDescriptors, - portNames, - portRangeHints, - 0, // impl. data - instantiate, - connect, - activate, - run, - runAdding, - setGain, - deactivate, - cleanup - }; - -//--------------------------------------------------------- -// _init -// called automatically when the plugin library is first -// loaded. -//--------------------------------------------------------- - -void _init() - { - } - -//--------------------------------------------------------- -// _fini -// called automatically when the library is unloaded. -//--------------------------------------------------------- - -void _fini() - { - } - -//--------------------------------------------------------- -// ladspa_descriptor -// Return a descriptor of the requested plugin type. -//--------------------------------------------------------- - -const LADSPA_Descriptor* ladspa_descriptor(unsigned long i) - { - return (i == 0) ? &descriptor : 0; - } - diff --git a/muse/plugins/freeverb/readme.txt b/muse/plugins/freeverb/readme.txt deleted file mode 100644 index 2c1349a3..00000000 --- a/muse/plugins/freeverb/readme.txt +++ /dev/null @@ -1,147 +0,0 @@ -readme from original freeverb-source: -============================================== - - -Freeverb - Free, studio-quality reverb SOURCE CODE in the public domain ------------------------------------------------------------------------ - -Written by Jezar at Dreampoint - http://www.dreampoint.co.uk - - -Introduction ------------- - -Hello. - -I'll try to keep this "readme" reasonably small. -There are few things in the world that I hate more than long "readme" files. -Except "coding conventions" - but more on that later... - -In this zip file you will find two folders of C++ source code: - -"Components" - Contains files that should clean-compile - ON ANY TYPE OF COMPUTER OR SYSTEM WHATSOEVER. It should not be necessary - to make ANY changes to these files to get them to compile, except to make - up for inadequacies of certain compilers. These files create three classes - - a comb filter, an allpass filter, and a reverb model made up of a number - of instances of the filters, with some features to control the filters at - a macro level. You will need to link these classes into another program that - interfaces with them. The files in the components drawer are completely - independant, and can be built without dependancies on anything else. - Because of the simple interface, it should be possible to interface - these files to any system - VST, DirectX, anything - without changing - them AT ALL. - -"FreeverbVST" - Contains a Steinberg VST implementation of this version of - Freeverb, using the components in (surprise) the components folder. - It was built on a PC but may compile properly for the Macintosh with - no problems. I don't know - I don't have a Macintosh. If you've - figured out how to compile the examples in the Steinberg VST - Development Kit, then you should easilly figure out how to bring the - files into a project and get it working in a few minutes. It should - be very simple. - -Note that this version of Freeverb doesn't contain predelay, or any EQ. -I thought that might make it difficult to understand the "reverb" part of -the code. Once you figure out how Freeverb works, you should find it trivial -to add such features with little CPU overhead. - -Also, the code in this version of Freeverb has been optimised. This has changed -the sound *slightly*, but not significantly compared to how much processing -power it saves. - -Finally, note that there is also a built copy of this version of Freeverb called -"Freeverb3.dll" - this is a VST plugin for the PC. If you want a version for -the Mac or anything else, then you'll need to build it yourself from the code. - - -Technical Explanation ---------------------- - -Freeverb is a simple implementation of the standard Schroeder/Moorer reverb -model. I guess the only reason why it sounds better than other reverbs, -is simply because I spent a long while doing listening tests in order to create -the values found in "tuning.h". It uses 8 comb filters on both the left and right -channels), and you might possibly be able to get away with less if CPU power -is a serious constraint for you. It then feeds the result of the reverb through -4 allpass filters on both the left and right channels. These "smooth" the sound. -Adding more than four allpasses doesn't seem to add anything significant -to the sound, and if you use less, the sound gets a bit "grainy". -The filters on the right channel are slightly detuned compared to the left channel -in order to create a stereo effect. - -Hopefully, you should find the code in the components drawer a model of -brevity and clarity. Notice that I don't use any "coding conventions". -Personally, I think that coding conventions suck. They are meant to make -the code "clearer", but they inevitably do the complete opposite, making -the code completely unfathomable. Anyone whose done Windows programming -with its - frankly stupid - "Hungarian notation" will know exactly what -I mean. Coding conventions typically promote issues that are irrelevant -up to the status of appearing supremely important. It may have helped back -people in the days when compilers where somewhat feeble in their type-safety, -but not in the new millenium with advanced C++ compilers. - -Imagine if we rewrote the English language to conform to coding conventions. -After all, The arguments should be just as valid for the English language as -they are for a computer language. For example, we could put a lower-case "n" -in front of every noun, a lower-case "p" in front of a persons name, -a lower-case "v" in front of every verb, and a lower-case "a" in front -of every adjective. Can you imagine what the English language would look like? -All in the name of "clarity". It's just as stupid to do this for computer -code as it would be to do it for the English language. I hope that the -code for Freeverb in the components drawer demonstrates this, and helps start -a movement back towards sanity in coding practices. - - -Background ----------- - -Why is the Freeverb code now public domain? Simple. I only intended to create -Freeverb to provide me and my friends with studio-quality reverb for free. -I never intended to make any money out of it. However, I simply do not have the -time to develop it any further. I'm working on a "concept album" at the moment, -and I'll never finish it if I spend any more time programming. - -In any case, I make more far money as a contract programmer - making Mobile -Internet products - than I ever could writing plugins, so it simply doesn't -make financial sense for me to spend any more time on it. - -Rather than give Freeverb to any particular individual or organisation -to profit from it, I've decided to give it away to the internet community -at large, so that quality, FREE (or at the very least, low-cost) reverbs can -be developed for all platforms. - -Feel free to use the source code for Freeverb in any of your own products, -whether they are also available for free, or even if they are commercial - -I really don't mind. You may do with the code whatever you wish. If you use -it in a product (whether commercial or not), it would be very nice of you, -if you were to send me a copy of your product - although I appreciate that -this isn't always possible in all circumstances. - -HOWEVER, please don't bug me with questions about how to use this code. -I gave away Freeverb because I don't have time to maintain it. That means -I *certainly* don't have time to answer questions about the source code, so -please don't email questions to me. I *will* ignore them. If you can't figure -the code for Freeverb out - then find somebody who can. I hope that either -way, you enjoy experimenting with it. - - -Disclaimer ----------- - -This software and source code is given away for free, without any warranties -of any kind. It has been given away to the internet community as a free gift, -so please treat it in the same spirit. - - -I hope this code is useful and interesting to you all! -I hope you have lots of fun experimenting with it and make good products! - -Very best regards, -Jezar. -Technology Consultant -Dreampoint Design and Engineering -http://www.dreampoint.co.uk - - -//ends diff --git a/muse/plugins/freeverb/revmodel.cpp b/muse/plugins/freeverb/revmodel.cpp deleted file mode 100644 index c72ee22b..00000000 --- a/muse/plugins/freeverb/revmodel.cpp +++ /dev/null @@ -1,232 +0,0 @@ -// Reverb model implementation -// -// Written by Jezar at Dreampoint, June 2000 -// http://www.dreampoint.co.uk -// This code is public domain - -#include -#include "revmodel.h" - -//--------------------------------------------------------- -// Revmodel -//--------------------------------------------------------- - -Revmodel::Revmodel() - { - // Tie the components to their buffers - combL[0].setbuffer(bufcombL1,combtuningL1); - combR[0].setbuffer(bufcombR1,combtuningR1); - combL[1].setbuffer(bufcombL2,combtuningL2); - combR[1].setbuffer(bufcombR2,combtuningR2); - combL[2].setbuffer(bufcombL3,combtuningL3); - combR[2].setbuffer(bufcombR3,combtuningR3); - combL[3].setbuffer(bufcombL4,combtuningL4); - combR[3].setbuffer(bufcombR4,combtuningR4); - combL[4].setbuffer(bufcombL5,combtuningL5); - combR[4].setbuffer(bufcombR5,combtuningR5); - combL[5].setbuffer(bufcombL6,combtuningL6); - combR[5].setbuffer(bufcombR6,combtuningR6); - combL[6].setbuffer(bufcombL7,combtuningL7); - combR[6].setbuffer(bufcombR7,combtuningR7); - combL[7].setbuffer(bufcombL8,combtuningL8); - combR[7].setbuffer(bufcombR8,combtuningR8); - allpassL[0].setbuffer(bufallpassL1,allpasstuningL1); - allpassR[0].setbuffer(bufallpassR1,allpasstuningR1); - allpassL[1].setbuffer(bufallpassL2,allpasstuningL2); - allpassR[1].setbuffer(bufallpassR2,allpasstuningR2); - allpassL[2].setbuffer(bufallpassL3,allpasstuningL3); - allpassR[2].setbuffer(bufallpassR3,allpasstuningR3); - allpassL[3].setbuffer(bufallpassL4,allpasstuningL4); - allpassR[3].setbuffer(bufallpassR4,allpasstuningR4); - - // Set default values - allpassL[0].setfeedback(0.5f); - allpassR[0].setfeedback(0.5f); - allpassL[1].setfeedback(0.5f); - allpassR[1].setfeedback(0.5f); - allpassL[2].setfeedback(0.5f); - allpassR[2].setfeedback(0.5f); - allpassL[3].setfeedback(0.5f); - allpassR[3].setfeedback(0.5f); - - param[0] = initialroom; - param[1] = initialdamp; - param[2] = initialwet; - - setroomsize(initialroom); - setdamp(initialdamp); - setwidth(initialwidth); - setmode(initialmode); - - // Buffer will be full of rubbish - so we MUST mute them - - for (int i = 0; i < numcombs; i++) { - combL[i].mute(); - combR[i].mute(); - } - for (int i=0;i= freezemode) { - roomsize1 = 1; - damp1 = 0; - gain = muted; - } - else { - roomsize1 = roomsize; - damp1 = damp; - gain = fixedgain; - } - - for (int i = 0; i < numcombs; i++) { - combL[i].setfeedback(roomsize1); - combR[i].setfeedback(roomsize1); - } - - for (int i = 0; i < numcombs; i++) { - combL[i].setdamp(damp1); - combR[i].setdamp(damp1); - } - } - -// The following get/set functions are not inlined, because -// speed is never an issue when calling them, and also -// because as you develop the reverb model, you may -// wish to take dynamic action when they are called. - -void Revmodel::setroomsize(float value) - { - roomsize = (value*scaleroom) + offsetroom; - update(); - } - -float Revmodel::getroomsize() - { - return (roomsize-offsetroom)/scaleroom; - } - -void Revmodel::setdamp(float value) - { - damp = value*scaledamp; - update(); - } - -void Revmodel::setwidth(float value) - { - width = value; - update(); - } - -void Revmodel::setmode(float value) - { - mode = value; - update(); - } - -float Revmodel::getmode() - { - return (mode >= freezemode) ? 1 : 0; - } diff --git a/muse/plugins/freeverb/revmodel.h b/muse/plugins/freeverb/revmodel.h deleted file mode 100644 index bfa1f0b3..00000000 --- a/muse/plugins/freeverb/revmodel.h +++ /dev/null @@ -1,79 +0,0 @@ -// Reverb model declaration -// -// Written by Jezar at Dreampoint, June 2000 -// http://www.dreampoint.co.uk -// This code is public domain - -#ifndef _revmodel_ -#define _revmodel_ - -#include "comb.h" -#include "allpass.h" -#include "tuning.h" -#include "../../muse/ladspa.h" - -//--------------------------------------------------------- -// Revmodel -//--------------------------------------------------------- - -class Revmodel { - float gain; - float roomsize,roomsize1; - float damp,damp1; - float width; - float mode; - - // Comb filters - comb combL[numcombs]; - comb combR[numcombs]; - - // Allpass filters - allpass allpassL[numallpasses]; - allpass allpassR[numallpasses]; - - // Buffers for the combs - float bufcombL1[combtuningL1]; - float bufcombR1[combtuningR1]; - float bufcombL2[combtuningL2]; - float bufcombR2[combtuningR2]; - float bufcombL3[combtuningL3]; - float bufcombR3[combtuningR3]; - float bufcombL4[combtuningL4]; - float bufcombR4[combtuningR4]; - float bufcombL5[combtuningL5]; - float bufcombR5[combtuningR5]; - float bufcombL6[combtuningL6]; - float bufcombR6[combtuningR6]; - float bufcombL7[combtuningL7]; - float bufcombR7[combtuningR7]; - float bufcombL8[combtuningL8]; - float bufcombR8[combtuningR8]; - - // Buffers for the allpasses - float bufallpassL1[allpasstuningL1]; - float bufallpassR1[allpasstuningR1]; - float bufallpassL2[allpasstuningL2]; - float bufallpassR2[allpasstuningR2]; - float bufallpassL3[allpasstuningL3]; - float bufallpassR3[allpasstuningR3]; - float bufallpassL4[allpasstuningL4]; - float bufallpassR4[allpasstuningR4]; - void update(); - - public: - LADSPA_Data* port[7]; - float param[3]; - - Revmodel(); - void processmix(long numsamples); - void processreplace(long numsamples); - void setroomsize(float value); - float getroomsize(); - void setdamp(float value); - void setwidth(float value); - void setmode(float value); - float getmode(); - void activate(); - }; - -#endif diff --git a/muse/plugins/freeverb/tuning.h b/muse/plugins/freeverb/tuning.h deleted file mode 100644 index ced89252..00000000 --- a/muse/plugins/freeverb/tuning.h +++ /dev/null @@ -1,60 +0,0 @@ -// Reverb model tuning values -// -// Written by Jezar at Dreampoint, June 2000 -// http://www.dreampoint.co.uk -// This code is public domain - -#ifndef _tuning_ -#define _tuning_ - -const int numcombs = 8; -const int numallpasses = 4; -const float muted = 0; -const float fixedgain = 0.015f; -const float scalewet = 3; -const float scaledry = 2; -const float scaledamp = 0.4f; -const float scaleroom = 0.28f; -const float offsetroom = 0.7f; -const float initialroom = 0.5f; -const float initialdamp = 0.5f; -const float initialwet = 1/scalewet; -const float initialdry = 0; -const float initialwidth = 1; -const float initialmode = 0; -const float freezemode = 0.5f; -const int stereospread = 23; - -// These values assume 44.1KHz sample rate -// they will probably be OK for 48KHz sample rate -// but would need scaling for 96KHz (or other) sample rates. -// The values were obtained by listening tests. -const int combtuningL1 = 1116; -const int combtuningR1 = 1116+stereospread; -const int combtuningL2 = 1188; -const int combtuningR2 = 1188+stereospread; -const int combtuningL3 = 1277; -const int combtuningR3 = 1277+stereospread; -const int combtuningL4 = 1356; -const int combtuningR4 = 1356+stereospread; -const int combtuningL5 = 1422; -const int combtuningR5 = 1422+stereospread; -const int combtuningL6 = 1491; -const int combtuningR6 = 1491+stereospread; -const int combtuningL7 = 1557; -const int combtuningR7 = 1557+stereospread; -const int combtuningL8 = 1617; -const int combtuningR8 = 1617+stereospread; -const int allpasstuningL1 = 556; -const int allpasstuningR1 = 556+stereospread; -const int allpasstuningL2 = 441; -const int allpasstuningR2 = 441+stereospread; -const int allpasstuningL3 = 341; -const int allpasstuningR3 = 341+stereospread; -const int allpasstuningL4 = 225; -const int allpasstuningR4 = 225+stereospread; - -#endif//_tuning_ - -//ends - diff --git a/muse/plugins/pandelay/CMakeLists.txt b/muse/plugins/pandelay/CMakeLists.txt deleted file mode 100644 index 5ebb08a0..00000000 --- a/muse/plugins/pandelay/CMakeLists.txt +++ /dev/null @@ -1,33 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -add_library ( pandelay SHARED - pandelay.cpp ladspapandelay.cpp pandelaymodel.cpp - ) - -# tell cmake to name the target pandelay.so instead of -# libpandelay.so -# -set_target_properties (pandelay - PROPERTIES PREFIX "" - #COMPILE_FLAGS "-O3" - ) - -install_targets ( /lib/${MusE_INSTALL_NAME}/plugins pandelay) diff --git a/muse/plugins/pandelay/ladspapandelay.cpp b/muse/plugins/pandelay/ladspapandelay.cpp deleted file mode 100644 index b5680d3e..00000000 --- a/muse/plugins/pandelay/ladspapandelay.cpp +++ /dev/null @@ -1,100 +0,0 @@ -//=========================================================================== -// -// ladspapandelay -// -// Version 0.0.1 -// -// -// -// -// Copyright (c) 2006 Nil Geisweiller -// -// -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -// 02111-1307, USA or point your web browser to http://www.gnu.org. -//=========================================================================== - -#include "ladspapandelay.h" - -//--------------------------------------------------------- -// PanDelay -//--------------------------------------------------------- - -LADSPAPanDelay::LADSPAPanDelay(unsigned long samplerate) - : PanDelayModel(samplerate) { - //TODO init param -} - -LADSPAPanDelay::~LADSPAPanDelay() { -} - -//--------------------------------------------------------- -// activate -//--------------------------------------------------------- - -void LADSPAPanDelay::activate() { - *port[4] = param[0]; - *port[5] = param[1]; - *port[6] = param[2]; - *port[7] = param[3]; - *port[8] = param[4]; - *port[9] = param[5]; -} - -void LADSPAPanDelay::updateParameters() { - if (param[0] != *port[4]) { - param[0] = *port[4]; - setBPM(param[0]); - } - if (param[1] != *port[5]) { - param[1] = *port[5]; - setBeatRatio(param[1]); - } - if (param[2] != *port[6]) { - param[2] = *port[6]; - setFeedback(param[2]); - } - if (param[3] != *port[7]) { - param[3] = *port[7]; - setPanLFOFreq(param[3]); - } - if (param[4] != *port[8]) { - param[4] = *port[8]; - setPanLFODepth(param[4]); - } - if (param[5] != *port[9]) { - param[5] = *port[9]; - setDryWet(param[5]); - } -} - -//--------------------------------------------------------- -// processReplace -//--------------------------------------------------------- - -void LADSPAPanDelay::processReplace(long n) { - updateParameters(); - PanDelayModel::processReplace(port[0], port[1], port[2], port[3], n); -} - -//--------------------------------------------------------- -// processMix -//--------------------------------------------------------- - -void LADSPAPanDelay::processMix(long n) { - updateParameters(); - PanDelayModel::processMix(port[0], port[1], port[2], port[3], n); -} diff --git a/muse/plugins/pandelay/ladspapandelay.h b/muse/plugins/pandelay/ladspapandelay.h deleted file mode 100644 index ab5427a1..00000000 --- a/muse/plugins/pandelay/ladspapandelay.h +++ /dev/null @@ -1,55 +0,0 @@ -//=========================================================================== -// -// ladspapandelay -// -// Version 0.0.1 -// -// -// -// -// Copyright (c) 2006 Nil Geisweiller -// -// -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -// 02111-1307, USA or point your web browser to http://www.gnu.org. -//=========================================================================== - -#ifndef __LADSPAPANDELAY_H -#define __LADSPAPANDELAY_H - -#include "pandelaymodel.h" -#include "../../muse/ladspa.h" - -#define NBRPARAM 6 - -class LADSPAPanDelay : public PanDelayModel { - private: - - public: - LADSPAPanDelay(unsigned long samplerate); - ~LADSPAPanDelay(); - - LADSPA_Data* port[NBRPARAM + 4]; - float param[NBRPARAM]; - - void updateParameters(); - void processMix(long numsamples); - void processReplace(long numsamples); - - void activate(); -}; - -#endif diff --git a/muse/plugins/pandelay/pandelay.cpp b/muse/plugins/pandelay/pandelay.cpp deleted file mode 100644 index 18ce1a41..00000000 --- a/muse/plugins/pandelay/pandelay.cpp +++ /dev/null @@ -1,170 +0,0 @@ -//========================================================= -// PanDelay for MusE -// -// (C) Copyright 2006 Nil Geisweiller -//========================================================= - -#include "ladspapandelay.h" -#include - -//--------------------------------------------------------- -// instantiate pandelay -// Construct a new plugin instance. -//--------------------------------------------------------- - -LADSPA_Handle instantiate(const LADSPA_Descriptor* /*Descriptor*/, - unsigned long samplerate) -{ - return new LADSPAPanDelay(samplerate); -} - -//--------------------------------------------------------- -// connect PortTo pandelay -// Connect a port to a data location. -//--------------------------------------------------------- - -void connect(LADSPA_Handle Instance, unsigned long port, - LADSPA_Data* data) -{ - ((LADSPAPanDelay*)Instance)->port[port] = data; -} - -//--------------------------------------------------------- -// activate -//--------------------------------------------------------- - -void activate(LADSPA_Handle instance) -{ - ((LADSPAPanDelay*)instance)->activate(); -} - -//--------------------------------------------------------- -// deactivate -//--------------------------------------------------------- - -void deactivate(LADSPA_Handle /*Instance*/) -{ -} - -//--------------------------------------------------------- -// run pandelay -//--------------------------------------------------------- - -void run(LADSPA_Handle Instance, unsigned long n) -{ - ((LADSPAPanDelay*)Instance)->processReplace(n); -} - -//--------------------------------------------------------- -// runAdding pandelay -// *ADD* the output to the output buffer. -//--------------------------------------------------------- - -void runAdding(LADSPA_Handle Instance, unsigned long n) -{ - ((LADSPAPanDelay*)Instance)->processMix(n); -} - -//--------------------------------------------------------- -// set pandelay RunAddingGain -//--------------------------------------------------------- - -void setGain(LADSPA_Handle /*Instance*/, LADSPA_Data /*Gain*/) -{ - printf("TEST setGain\n"); - // ((LADSPAPanDelay*)Instance)->m_fRunAddingGain = Gain; -} - -//--------------------------------------------------------- -// cleanup pandelay -//--------------------------------------------------------- - -void cleanup(LADSPA_Handle Instance) -{ - delete (LADSPAPanDelay*)Instance; -} - -static const char* portNames[] = { - "Input (Left)", - "Input (Right)", - "Output (Left)", - "Output (Right)", - "BMP", - "Beat Ratio", - "Feedback", - "Pan LFO Freq", - "Pan LFO Depth", - "Dry/Wet" -}; - -LADSPA_PortDescriptor portDescriptors[] = { - LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO, - LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO, - LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO, - LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO, - LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL, - LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL, - LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL, - LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL, - LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL, - LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL -}; - -LADSPA_PortRangeHint portRangeHints[] = { - { 0, 0.0, 0.0 }, - { 0, 0.0, 0.0 }, - { 0, 0.0, 0.0 }, - { 0, 0.0, 0.0 }, - { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_DEFAULT_100, MINBPM, MAXBPM }, - { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_DEFAULT_1, MINBEATRATIO, MAXBEATRATIO }, - { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_DEFAULT_HIGH, -1.0, 1.0 }, - { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_LOGARITHMIC | LADSPA_HINT_DEFAULT_HIGH, MINFREQ, MAXFREQ }, - { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_DEFAULT_HIGH, 0.0, 1.0 }, - { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_DEFAULT_MIDDLE, 0.0, 1.0 } -}; - -LADSPA_Descriptor descriptor = { - 1052, - "pandelay", - LADSPA_PROPERTY_HARD_RT_CAPABLE, - "PanDelay", - "Nil Geisweiller", - "GPL", - NBRPARAM + 4, - portDescriptors, - portNames, - portRangeHints, - 0, // impl. data - instantiate, - connect, - activate, - run, - runAdding, - setGain, - deactivate, - cleanup -}; - -//--------------------------------------------------------- -// _init -// called automatically when the plugin library is first -// loaded. -//--------------------------------------------------------- -void _init() { -} - -//--------------------------------------------------------- -// _fini -// called automatically when the library is unloaded. -//--------------------------------------------------------- -void _fini() { -} - -//--------------------------------------------------------- -// ladspa_descriptor -// Return a descriptor of the requested plugin type. -//--------------------------------------------------------- -const LADSPA_Descriptor* ladspa_descriptor(unsigned long i) { - return (i == 0) ? &descriptor : 0; -} - diff --git a/muse/plugins/pandelay/pandelaymodel.cpp b/muse/plugins/pandelay/pandelaymodel.cpp deleted file mode 100644 index ab01ba9f..00000000 --- a/muse/plugins/pandelay/pandelaymodel.cpp +++ /dev/null @@ -1,154 +0,0 @@ -//=========================================================================== -// -// PanDelay, panoramic rotating delay -// -// version 0.0.1 -// -// pandelaymodel.cpp -// -// -// Copyright (c) 2006 Nil Geisweiller -// -// -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -// 02111-1307, USA or point your web browser to http://www.gnu.org. -//=========================================================================== - -#include "pandelaymodel.h" - -PanDelayModel::PanDelayModel(int samplerate) { - for(int i = 0; i < MAXBUFFERLENGTH; i++) { - _leftBuffer[i] = 0.0; - _rightBuffer[i] = 0.0; - } - _bufferPointer = 0; - _inc = 0.0; - _l = 1.0; - _r = 1.0; - - _samplerate = samplerate; - setPanDelay(); -} - -PanDelayModel::~PanDelayModel() { -} - -void PanDelayModel::setSamplerate(int sr) { - _samplerate = sr; - setPanDelay(); -} - -void PanDelayModel::setBPM(float bpm) { - _BPM = bpm; - _delayTime = _beatRatio * 60.0 / _BPM; - setPanDelay(); -} - -void PanDelayModel::setBeatRatio(float br) { - _beatRatio = br; - _delayTime = _beatRatio * 60.0 / _BPM; - setPanDelay(); -} - -void PanDelayModel::setDelayTime(float dt) { - if(dt < MINDELAYTIME) _delayTime = MINDELAYTIME; - else if(dt > MAXDELAYTIME) _delayTime = MAXDELAYTIME; - else _delayTime = dt; - setPanDelay(); -} - -void PanDelayModel::setFeedback(float fb) { - _feedback = fb; - setPanDelay(); -} - -void PanDelayModel::setPanLFOFreq(float pf) { - _panLFOFreq = pf; - setPanDelay(); -} - -void PanDelayModel::setPanLFODepth(float pd) { - _panLFODepth = pd; - setPanDelay(); -} - -void PanDelayModel::setDryWet(float dw) { - _dryWet = dw; -} - -void PanDelayModel::setPanDelay() { - float numLFOSample = (1.0/_panLFOFreq) * (float)_samplerate; - _inc = 2.0 / numLFOSample; - _delaySampleSize = (int)(_delayTime * (float)_samplerate); - _lBound = 1.0 - _panLFODepth; - _rBound = 1.0 + _panLFODepth; -} - -void PanDelayModel::processMix(float* leftSamplesIn, float* rightSamplesIn, - float* leftSamplesOut, float* rightSamplesOut, - unsigned n) { - float ls, rs, p; - p = 1.0 - _dryWet; - for(unsigned i = 0; i < n; i++) { - //read buffer - ls = _leftBuffer[_bufferPointer]; - rs = _rightBuffer[_bufferPointer]; - //write buffer - _leftBuffer[_bufferPointer] *= _feedback; - _leftBuffer[_bufferPointer] += leftSamplesIn[i]; - _rightBuffer[_bufferPointer] *= _feedback; - _rightBuffer[_bufferPointer] += rightSamplesIn[i]; - //write out - leftSamplesOut[i] += _l * _dryWet * ls + p * leftSamplesIn[i]; - rightSamplesOut[i] += _r * _dryWet * rs + p * rightSamplesIn[i]; - //update _bufferPointer - _bufferPointer++; - _bufferPointer%=_delaySampleSize; - //update _l _r - _r += _inc; - _l -= _inc; - //update _inc - if(_r > _rBound || _r < _lBound) _inc = -_inc; - } -} - -void PanDelayModel::processReplace(float* leftSamplesIn, float* rightSamplesIn, - float* leftSamplesOut, - float* rightSamplesOut, unsigned n) { - float ls, rs, p; - p = 1.0 - _dryWet; - for(unsigned i = 0; i < n; i++) { - //read buffer - ls = _leftBuffer[_bufferPointer]; - rs = _rightBuffer[_bufferPointer]; - //write buffer - _leftBuffer[_bufferPointer] *= _feedback; - _leftBuffer[_bufferPointer] += leftSamplesIn[i]; - _rightBuffer[_bufferPointer] *= _feedback; - _rightBuffer[_bufferPointer] += rightSamplesIn[i]; - //write out - leftSamplesOut[i] = _l * _dryWet * ls + p * leftSamplesIn[i]; - rightSamplesOut[i] = _r * _dryWet * rs + p * rightSamplesIn[i]; - //update _bufferPointer - _bufferPointer++; - _bufferPointer%=_delaySampleSize; - //update _l _r - _r += _inc; - _l -= _inc; - //update _inc - if(_r > _rBound || _r < _lBound) _inc = -_inc; - } -} diff --git a/muse/plugins/pandelay/pandelaymodel.h b/muse/plugins/pandelay/pandelaymodel.h deleted file mode 100644 index 65983187..00000000 --- a/muse/plugins/pandelay/pandelaymodel.h +++ /dev/null @@ -1,93 +0,0 @@ -//=========================================================================== -// -// PanDelay, panoramic rotating delay -// -// version 0.0.1 -// -// pandelaymodel.h -// -// -// Copyright (c) 2006 Nil Geisweiller -// -// -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -// 02111-1307, USA or point your web browser to http://www.gnu.org. -//=========================================================================== - -#ifndef __PANDELAYMODEL_H -#define __PANDELAYMODEL_H - -#include - -#define MAXBUFFERLENGTH 192000 -#define MINFREQ 0.1 //in Hz -#define MAXFREQ 10.0 //in Hz -#define MINBPM 60.0 -#define MAXBPM 255.0 -#define MINBEATRATIO 0.125 -#define MAXBEATRATIO 2.0 -#define MINDELAYTIME 0.01 //in second -#define MAXDELAYTIME 2.0 //in second - -#define NBRPARAM 5 - -class PanDelayModel { - private: - int _samplerate; - - //bool _beatFraction; //if true then the delay is calculated in beat fraction - float _BPM; - float _beatRatio; - float _delayTime; //delay is calculated according to BMP and ratioBMP - float _feedback; - float _panLFOFreq; - float _panLFODepth; - float _dryWet; //0.0 : dry, 1.0 : wet - - int _delaySampleSize; - float _lBound; - float _rBound; - float _inc; - float _l; - float _r; - - float _leftBuffer[MAXBUFFERLENGTH]; - float _rightBuffer[MAXBUFFERLENGTH]; - int _bufferPointer; - - public: - PanDelayModel(int samplerate); - ~PanDelayModel(); - - void setSamplerate(int sr); - void setBeatRatio(float br); - void setBPM(float bpm); - void setDelayTime(float dt); - void setFeedback(float dt); - void setPanLFOFreq(float pf); - void setPanLFODepth(float pd); - void setDryWet(float dw); - void setPanDelay(); - - void processMix(float* leftInSamples, float* rightInSamples, - float* leftOutSamples, float* rightOutSamples, - unsigned n); - void processReplace(float* leftInSamples, float* rightInSamples, - float* leftOutSamples, float* rightOutSamples, - unsigned n); -}; - -#endif /* __PANDELAYMODEL_H */ diff --git a/muse/share/CMakeLists.txt b/muse/share/CMakeLists.txt deleted file mode 100644 index bd87dd86..00000000 --- a/muse/share/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -subdirs( instruments locale plugins templates wallpapers) - diff --git a/muse/share/instruments/Access_Virus.idf b/muse/share/instruments/Access_Virus.idf deleted file mode 100644 index e54e57fe..00000000 --- a/muse/share/instruments/Access_Virus.idf +++ /dev/null @@ -1,1045 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/muse/share/instruments/Alesis-Ion.idf b/muse/share/instruments/Alesis-Ion.idf deleted file mode 100644 index a7ce3695..00000000 --- a/muse/share/instruments/Alesis-Ion.idf +++ /dev/null @@ -1,731 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/muse/share/instruments/Alesis-QS-78R.idf b/muse/share/instruments/Alesis-QS-78R.idf deleted file mode 100644 index bfc474fb..00000000 --- a/muse/share/instruments/Alesis-QS-78R.idf +++ /dev/null @@ -1,700 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/muse/share/instruments/AlesisQS6.idf b/muse/share/instruments/AlesisQS6.idf deleted file mode 100644 index d10177b1..00000000 --- a/muse/share/instruments/AlesisQS6.idf +++ /dev/null @@ -1,658 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/muse/share/instruments/CMakeLists.txt b/muse/share/instruments/CMakeLists.txt deleted file mode 100644 index 64eb89ac..00000000 --- a/muse/share/instruments/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -install_files( /share/${MusE_INSTALL_NAME}/instruments .*\\.idf ) - diff --git a/muse/share/instruments/Hammond_XB-1.idf b/muse/share/instruments/Hammond_XB-1.idf deleted file mode 100644 index 6ac9b951..00000000 --- a/muse/share/instruments/Hammond_XB-1.idf +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/muse/share/instruments/MC303.idf b/muse/share/instruments/MC303.idf deleted file mode 100644 index 308e897c..00000000 --- a/muse/share/instruments/MC303.idf +++ /dev/null @@ -1,528 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/muse/share/instruments/MC505.idf b/muse/share/instruments/MC505.idf deleted file mode 100644 index cced8ffa..00000000 --- a/muse/share/instruments/MC505.idf +++ /dev/null @@ -1,560 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/muse/share/instruments/Quasimidi-Sirius.idf b/muse/share/instruments/Quasimidi-Sirius.idf deleted file mode 100644 index 35e3ea3a..00000000 --- a/muse/share/instruments/Quasimidi-Sirius.idf +++ /dev/null @@ -1,735 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/muse/share/instruments/Roland-E28.idf b/muse/share/instruments/Roland-E28.idf deleted file mode 100644 index da93682f..00000000 --- a/muse/share/instruments/Roland-E28.idf +++ /dev/null @@ -1,320 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/muse/share/instruments/Roland-JV-1010-All.idf b/muse/share/instruments/Roland-JV-1010-All.idf deleted file mode 100644 index 7fe65137..00000000 --- a/muse/share/instruments/Roland-JV-1010-All.idf +++ /dev/null @@ -1,1502 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/muse/share/instruments/Roland-JV-1010-Catagory.idf b/muse/share/instruments/Roland-JV-1010-Catagory.idf deleted file mode 100644 index a64c7507..00000000 --- a/muse/share/instruments/Roland-JV-1010-Catagory.idf +++ /dev/null @@ -1,1234 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/muse/share/instruments/Roland-JV-1010-Country.idf b/muse/share/instruments/Roland-JV-1010-Country.idf deleted file mode 100644 index 5f8e4a96..00000000 --- a/muse/share/instruments/Roland-JV-1010-Country.idf +++ /dev/null @@ -1,297 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/muse/share/instruments/Roland-JV-1010-Presets.idf b/muse/share/instruments/Roland-JV-1010-Presets.idf deleted file mode 100644 index ae5c622e..00000000 --- a/muse/share/instruments/Roland-JV-1010-Presets.idf +++ /dev/null @@ -1,971 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/muse/share/instruments/Roland-JV-1010-Session.idf b/muse/share/instruments/Roland-JV-1010-Session.idf deleted file mode 100644 index b407d843..00000000 --- a/muse/share/instruments/Roland-JV-1010-Session.idf +++ /dev/null @@ -1,326 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/muse/share/instruments/Roland-SCD70.idf b/muse/share/instruments/Roland-SCD70.idf deleted file mode 100644 index 5a7334d8..00000000 --- a/muse/share/instruments/Roland-SCD70.idf +++ /dev/null @@ -1,1513 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ": - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Patch name="Rev.Tom 4" hbank="27" lbank="0" prog="119"/> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/muse/share/instruments/Roland-XP30.idf b/muse/share/instruments/Roland-XP30.idf deleted file mode 100644 index 0b5969ab..00000000 --- a/muse/share/instruments/Roland-XP30.idf +++ /dev/null @@ -1,1592 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/muse/share/instruments/Roland_FantomXR.idf b/muse/share/instruments/Roland_FantomXR.idf deleted file mode 100644 index a63af792..00000000 --- a/muse/share/instruments/Roland_FantomXR.idf +++ /dev/null @@ -1,1419 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/muse/share/instruments/Roland_SRX-02.idf b/muse/share/instruments/Roland_SRX-02.idf deleted file mode 100644 index 54b0b7e6..00000000 --- a/muse/share/instruments/Roland_SRX-02.idf +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/muse/share/instruments/Roland_SRX-09.idf b/muse/share/instruments/Roland_SRX-09.idf deleted file mode 100644 index 2e3f5667..00000000 --- a/muse/share/instruments/Roland_SRX-09.idf +++ /dev/null @@ -1,454 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/muse/share/instruments/Waldorf_Microwave-I.idf b/muse/share/instruments/Waldorf_Microwave-I.idf deleted file mode 100644 index 9975d04a..00000000 --- a/muse/share/instruments/Waldorf_Microwave-I.idf +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/muse/share/instruments/Yamaha-P50m.idf b/muse/share/instruments/Yamaha-P50m.idf deleted file mode 100644 index 876aed52..00000000 --- a/muse/share/instruments/Yamaha-P50m.idf +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/muse/share/instruments/Yamaha-P80.idf b/muse/share/instruments/Yamaha-P80.idf deleted file mode 100644 index 735c463d..00000000 --- a/muse/share/instruments/Yamaha-P80.idf +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/muse/share/instruments/Yamaha-PSR275.idf b/muse/share/instruments/Yamaha-PSR275.idf deleted file mode 100644 index ea3bcfa7..00000000 --- a/muse/share/instruments/Yamaha-PSR275.idf +++ /dev/null @@ -1,585 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/muse/share/instruments/Yamaha-PSR530.idf b/muse/share/instruments/Yamaha-PSR530.idf deleted file mode 100644 index b413a143..00000000 --- a/muse/share/instruments/Yamaha-PSR530.idf +++ /dev/null @@ -1,759 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/muse/share/instruments/Yamaha-S90.idf b/muse/share/instruments/Yamaha-S90.idf deleted file mode 100644 index 3d5f3685..00000000 --- a/muse/share/instruments/Yamaha-S90.idf +++ /dev/null @@ -1,4304 +0,0 @@ - - - - - - - - - 0x43 0x10 0x6b 0xa 0x0 0x0 0x0 - - - - 0x43 0x10 0x6b 0xa 0x0 0x1 0x3 - - - - 0x43 0x10 0x6b 0x0 0x0 0x9 0x0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Clave 2424 - SdBrMtSt 2525 - SdBrSwrSt 2626 - SdBrMt2St 2727 - SdBSwrAtSt 2828 - SnLvRolSt 2929 - Castanet 3030 - SdNm1St 3131 - Stick 3232 - BdFkSonSt 3333 - SdBsSt1-3 3434 - BdLoSt 3535 - BdHSonSt 3636 - SdClRmSt 3737 - SdSonSt1-4 3838 - ClapT9 3939 - SdLdwSt1-4 4040 - TomFlSt 4141 - HHClFtSt 4242 - TomLoSt 4343 - HHHlf2St 4444 - TomLoSt 4545 - HHOp2St 4646 - TomMdSt 4747 - TomMdSt 4848 - CrashSt 4949 - TomHiSt 5050 - RideSt 5151 - ChinaSt 5252 - CupSt 5353 - TambrnSw 5454 - SplashSt 5555 - Cowbell2 5656 - CrashRL 5757 - Vibraslap 5858 - RideRL 5959 - BongoHi1-2 6060 - BongoLo1-3 6161 - CongaTip 6262 - CongaOp 6363 - TumbaOp 6464 - TmbaleH1-3 6565 - TmbaleL1-3 6666 - AgogoHi 6767 - AgogoLo 6868 - Cabasa1-2 6969 - MaracasSlr 7070 - Whistle 7171 - Whistle 7272 - GuiroShort 7373 - GuiroLong 7474 - Clave 7575 - WoodBlock 7676 - WoodBlock 7777 - CuicaHi 7878 - CuicaLo 7979 - TriangleMt 8080 - TriangleOp 8181 - Shaker1-2 8282 - SleighBel 8383 - BellTree 8484 - SdBlL1-3 8585 - SdLdwSt1-4 8686 - SdBhR1-3 8787 - SdHipSt1-2 8888 - BdLoSt 8989 - SdLdwHMono 9090 - BdR&B1 9191 - SdHeavy 9292 - BdRoom1 9393 - SdAmb 9494 - BdFkSonSt 9595 - BdRoom2 9696 - - - - Clave 2424 - SdBrMtSt 2525 - SdBrSwrSt 2626 - SdBrMt2St 2727 - SdBSwrAtSt 2828 - SnLvRolSt 2929 - Castanet 3030 - SdNm1St 3131 - Stick 3232 - BdFkSt1-2 3333 - SdBsSt2-3 3434 - BdHiSt 3535 - BdNmSt1-2 3636 - SdClRmSt 3737 - SdNmSt1-4 3838 - ClapT9 3939 - SdBsSt1-2 4040 - TomFlSt 4141 - HHClSt1-4 4242 - TomLoSt 4343 - HHPdlSt 4444 - TomLoSt 4545 - HHOpSt 4646 - TomMdSt 4747 - TomMdSt 4848 - CrashSt 4949 - TomHiSt 5050 - RideSt 5151 - ChinaSt 5252 - CupSt 5353 - TambrnSw 5454 - SplashSt 5555 - Cowbell2 5656 - CrashRL 5757 - Vibraslap 5858 - RideRL 5959 - BongoHi1-2 6060 - BongoLo1-3 6161 - CongaTip 6262 - CongaOp 6363 - TumbaOp 6464 - TmbaleH1-3 6565 - TmbaleL1-3 6666 - AgogoHi 6767 - AgogoLo 6868 - Cabasa1-2 6969 - MaracasSlr 7070 - Whistle 7171 - Whistle 7272 - GuiroShort 7373 - GuiroLong 7474 - Clave 7575 - WoodBlock 7676 - WoodBlock 7777 - CuicaHi 7878 - CuicaLo 7979 - TriangleMt 8080 - TriangleOp 8181 - Shaker1-2 8282 - SleighBel 8383 - BellTree 8484 - SdBlL1-3 8585 - SdLdwSt1-4 8686 - SdBhR1-3 8787 - SdHipSt1-2 8888 - BdLoSt 8989 - SdLdwHMono 9090 - BdR&B1 9191 - SdHeavy 9292 - BdRoom1 9393 - SdAmb 9494 - BdFkSonSt 9595 - BdRoom2 9696 - - - - AnaClick 2424 - SdBrMtSt 2525 - SdBrSwrSt 2626 - SdBrMt2St 2727 - SdBSwrAtSt 2828 - SdRkRolSt 2929 - Castanet 3030 - SdRkOp1St 3131 - Stick 3232 - BdNmSt1-2 3333 - SdRkRim1St 3434 - BdHiSt 3535 - BdRk1St 3636 - SdRkStk1St 3737 - SdRkOp1St 3838 - HandClapSt 3939 - SdRkMte1St 4040 - TomRkLoSt 4141 - HHClRkStSw 4242 - TomRkLoSt 4343 - HHPdRkStSw 4444 - TomRkMdSt 4545 - HHOpRkStSw 4646 - TomRkMdSt 4747 - TomRkHiSt 4848 - CrashSt 4949 - TomRkHiSt 5050 - RideSt 5151 - ChinaSt 5252 - CupSt 5353 - TambrnRX5 5454 - SplashSt 5555 - Cowbel1 5656 - CrashSt 5757 - Vibraslap 5858 - RideSt 5959 - BongoHi1-2 6060 - BongoLo1-3 6161 - CongaTip 6262 - CongaSlp 6363 - CongaOp 6464 - TmbaleH1-3 6565 - TmbaleL1-3 6666 - AgogoHi 6767 - AgogoLo 6868 - Cabasa1-2 6969 - MaracasSlr 7070 - Whistle 7171 - Whistle 7272 - GuiroShort 7373 - GuiroLong 7474 - Clave 7575 - WoodBlock 7676 - WoodBlock 7777 - CuicaHi 7878 - CuicaLo 7979 - TriangleMt 8080 - TriangleOp 8181 - Shaker1-2 8282 - SleighBel 8383 - BellTree 8484 - SdRkFlmSt 8585 - SdRkOp2St 8686 - SdRkRim2St 8787 - SdRkMte2St 8888 - BdFk1St 8989 - SdRkRolDSt 9090 - BdHSonSt 9191 - SdLdwSt1-4 9292 - BdFkSonSt 9393 - SdSon3St 9494 - BdFkR1-2 9595 - BdHSonSt 9696 - - - - AnaClick 2424 - SdBrMtSt 2525 - SdBrSwrSt 2626 - SdBrMt2St 2727 - SdBSwrAtSt 2828 - SdRkRolSt 2929 - Castanet 3030 - SdRkOp2St 3131 - Stick 3232 - BdLoSt 3333 - SdRkRim2St 3434 - BdNm2St 3535 - BdRk2St 3636 - SdRkStk2St 3737 - SdRkOp2St 3838 - HandClapSt 3939 - SdRkMte2St 4040 - TomRkLoSt 4141 - HHClRk2St 4242 - TomRkLoSt 4343 - HHHfOpRkSt 4444 - TomRkMdSt 4545 - HHOpRkSt 4646 - TomRkMdSt 4747 - TomRkHiSt 4848 - CrashSt 4949 - TomRkHiSt 5050 - RideSt 5151 - ChinaSt 5252 - CupSt 5353 - TambrnRX5 5454 - SplashSt 5555 - Cowbel1 5656 - CrashSt 5757 - Vibraslap 5858 - RideSt 5959 - BongoHi1-2 6060 - BongoLo1-3 6161 - CongaTip 6262 - CongaSlp 6363 - CongaOp 6464 - TmbaleH1-3 6565 - TmbaleL1-3 6666 - AgogoHi 6767 - AgogoLo 6868 - Cabasa1-2 6969 - MaracasSlr 7070 - Whistle 7171 - Whistle 7272 - GuiroShort 7373 - GuiroLong 7474 - Clave 7575 - WoodBlock 7676 - WoodBlock 7777 - CuicaHi 7878 - CuicaLo 7979 - TriangleMt 8080 - TriangleOp 8181 - Shaker1-2 8282 - SleighBel 8383 - BellTree 8484 - SdRkFlmSt 8585 - SdRkOp1St 8686 - SdRkRim1St 8787 - SdRkMte1St 8888 - BdRk1St 8989 - SdRkRolDSt 9090 - BdFk2St 9191 - SdLdwSt1-4 9292 - BdHiSt 9393 - SdSon4St 9494 - BdLSonSt 9595 - BdRk1St 9696 - - - - AnaClick 2424 - SdBrMtL 2525 - SdBrSwrL 2626 - SdBrMt2L 2727 - SdBrSwrAtL 2828 - SnLvRolL 2929 - Castanet 3030 - SdLdwL1-4 3131 - Stick 3232 - BdDry1 3333 - SdBh3R 3434 - BdNm2R 3535 - BdRoom3 3636 - SdClRim2 3737 - SdSon3L 3838 - HandClapL 3939 - SdSon4R 4040 - TomFlL 4141 - HHClRk2R 4242 - TomLoL 4343 - HHPdlRkR 4444 - TomMdL 4545 - HHOpRkR 4646 - TomMdL 4747 - TomHiR 4848 - CrashL 4949 - TomHiR 5050 - RideMono 5151 - ChinaSt 5252 - CupMono2 5353 - TambrnSw 5454 - SplashR 5555 - Cowbel1 5656 - CrashL 5757 - Vibraslap 5858 - RideMono 5959 - BongoHi1-2 6060 - BongoLo1-3 6161 - CongaTip 6262 - CongaSlp 6363 - CongaOp 6464 - TmbaleH1-3 6565 - TmbaleL1-3 6666 - AgogoHi 6767 - AgogoLo 6868 - Cabasa1-2 6969 - MaracasSlr 7070 - Whistle 7171 - Whistle 7272 - GuiroShort 7373 - GuiroLong 7474 - Clave 7575 - WoodBlock 7676 - WoodBlock 7777 - CuicaHi 7878 - CuicaLo 7979 - TriangleMt 8080 - TriangleOp 8181 - Shaker1-2 8282 - SleighBel 8383 - BellTree 8484 - SdClRmR 8585 - SdHeavy 8686 - SdRkRim1R 8787 - SdLdwHMono 8888 - BdRk2L 8989 - SdHipR1-2 9090 - BdBreakHrd 9191 - SdLdw4R 9292 - BdHiL 9393 - SdBhR1-3 9494 - BdFkHL 9595 - BdFkSonL 9696 - - - - SdHpStk2 2424 - VoxHitRev 2525 - TurnTable 2626 - HitBrass 2727 - ScratchSdR 2828 - SnLvRolR 2929 - ClaveT8 3030 - SdHip2R 3131 - SdHpStk6R 3232 - BdHipDp 3333 - SdDodgL 3434 - BdT8-3 3535 - BdT8-2 3636 - SdHpStk2 3737 - SdClpAna 3838 - HandClapR 3939 - SdR&B2 4040 - TomT8 4141 - HHClT8-1 4242 - TomT8 4343 - HHOpT8-1 4444 - TomT8 4545 - HHOpT8-1 4646 - TomT8 4747 - TomT8 4848 - Crash2 4949 - TomT8 5050 - RideR 5151 - CrashT8 5252 - RideT9 5353 - TambrnRX5 5454 - SplashR 5555 - MamboBdy 5656 - CrashT9 5757 - Vibraslap 5858 - RideT9 5959 - BongoHi1-2 6060 - BongoLo1-3 6161 - CongaTip 6262 - CongaSlp 6363 - CongaOp 6464 - TmbaleH1-3 6565 - TmbaleL1-3 6666 - AgogoLo 6767 - AgogoHi 6868 - ShakerHip1 6969 - MarcsT8 7070 - Whistle 7171 - Whistle 7272 - GuiroShort 7373 - GuiroLong 7474 - ClaveT8 7575 - WoodBlock 7676 - WoodBlock 7777 - CuicaHi 7878 - CuicaLo 7979 - TriangleMt 8080 - TriangleOp 8181 - AnaShaker 8282 - SleighBel 8383 - BellTree 8484 - SdHipStk8 8585 - SdJngl3 8686 - HandClapR 8787 - SdHipRm5 8888 - Scratch H 8989 - Scratch L 9090 - ScratchDwn 9191 - ScratchHiR 9292 - ScratchBdF 9393 - ScratchCmb 9494 - ScratchVoR 9595 - BdBreak2 9696 - - - - BdT8-3 2424 - SdT8Rim 2525 - SdHip1 2626 - ClapT9 2727 - SdSyn 2828 - SnLvRolR 2929 - SdHpStk4 3030 - DjembeEd 3131 - SdHpStk6St 3232 - BdT8-1 3333 - SdR&B1Rm 3434 - BdBreakHvy 3535 - BdHipDp 3636 - SdT8-4 3737 - SdHip3 3838 - HandClapSt 3939 - SdLofi 4040 - TomFlR 4141 - HHClLoFi 4242 - TomLoL 4343 - HHClBreak 4444 - TomLoL 4545 - HHOpLoFi 4646 - TomLoL 4747 - TomHiL 4848 - Crash 4949 - TomHiL 5050 - RideT9 5151 - China 5252 - CupMono 5353 - TambrnRX5 5454 - Crash 5555 - CowBelRX11 5656 - CrashR 5757 - CowBelT8 5858 - RideT9 5959 - BongoHi1 6060 - BongoLo1-3 6161 - CongaTip 6262 - CongaSlp 6363 - CongaOp 6464 - RadioNz 6565 - RadioNz 6666 - AgogoLo 6767 - AgogoLo 6868 - Cabasa1 6969 - MarcsT8 7070 - FxGun2 7171 - FxGun1 7272 - ScratchSpn 7373 - ScratchStp 7474 - ClaveT8 7575 - DoorSqk 7676 - HiQ2 7777 - ScratchBdF 7878 - ScratchBdR 7979 - TriangleMt 8080 - TriangleOp 8181 - AnaShaker 8282 - TambrnHit 8383 - BellTree 8484 - SdHuman2 8585 - SdBreakRol 8686 - StabHard 8787 - SdJngl1 8888 - BdRk1St 8989 - ScratchDwn 9090 - Wataiko 9191 - HH Hit 9292 - StabOrgan2 9393 - Sonar1 9494 - TurnTable 9595 - Police 9696 - - - - SdHipRm4 2424 - HiQ1 2525 - TurnTable 2626 - HitOrch1 2727 - ScratchBdR 2828 - SnLvRolR 2929 - AnaClick 3030 - SdHipRm3 3131 - SdAnCRRim 3232 - BdHipDp 3333 - SdAnSmRim 3434 - BdT8-3 3535 - BdT8-2 3636 - SdT8Rim 3737 - SdHpStk1 3838 - HandClapR 3939 - SdHpStk2 4040 - TomT8 4141 - HHClT8-1 4242 - TomT8 4343 - HHOpT8-1 4444 - TomT8 4545 - HHOpT8-1 4646 - TomT8 4747 - TomT8 4848 - Crash2 4949 - TomT8 5050 - RideR 5151 - CrashT8 5252 - RideT9 5353 - TambrnRX5 5454 - SplashR 5555 - MamboBdy 5656 - CrashT9 5757 - Vibraslap 5858 - RideT9 5959 - BongoHi1-2 6060 - BongoLo1-3 6161 - CongaTip 6262 - CongaSlp 6363 - CongaOp 6464 - TmbaleH1-3 6565 - TmbaleL1-3 6666 - AgogoHi 6767 - AgogoLo 6868 - ShakerHip1 6969 - MaracasSlr 7070 - Whistle 7171 - Whistle 7272 - GuiroShort 7373 - GuiroLong 7474 - Clave 7575 - WoodBlock 7676 - WoodBlock 7777 - CuicaHi 7878 - CuicaLo 7979 - TriangleMt 8080 - TriangleOp 8181 - Shaker1-2 8282 - SleighBel 8383 - BellTree 8484 - SdAnSm 8585 - SdClRim3 8686 - AnaClick 8787 - SdClRim2 8888 - Scratch H 8989 - Scratch L 9090 - ScratchDwn 9191 - ScratchHiR 9292 - ScratchBdF 9393 - ScratchCmb 9494 - ScratchVoR 9595 - BdJngl2 9696 - - - - ClaveT8 2424 - SdT9-5 2525 - TurnTable 2626 - Quiek 2727 - ScratchCb3 2828 - SnLvRolL 2929 - AnaClick 3030 - SdT9Gate 3131 - SdRimSE 3232 - BdT9-3 3333 - SdT9-3 3434 - BdT9-2 3535 - BdT9-1 3636 - SdT9Rim 3737 - SdT9-5 3838 - ClapT9 3939 - SdT9-4 4040 - TomT9Lo 4141 - HHClT9 4242 - TomT9Lo 4343 - HHOpT9 4444 - TomT9Lo 4545 - HHOpT9 4646 - TomT9Lo 4747 - TomT9Hi 4848 - CrashT9 4949 - TomT9Hi 5050 - RideT9 5151 - CrashT9 5252 - RideT9 5353 - TambrnRX5 5454 - CrashT9 5555 - CowBelAnCR 5656 - CrashT9 5757 - Vibraslap 5858 - RideT9 5959 - BongoHi1-2 6060 - BongoLo1-3 6161 - CongaTip 6262 - CongaSlp 6363 - CongaOp 6464 - TmbaleH1-3 6565 - TmbaleL1-3 6666 - AgogoHi 6767 - AgogoLo 6868 - Cabasa1-2 6969 - MaracasSlr 7070 - Whistle 7171 - Whistle 7272 - GuiroShort 7373 - GuiroLong 7474 - Clave 7575 - WoodBlock 7676 - WoodBlock 7777 - CuicaHi 7878 - CuicaLo 7979 - TriangleMt 8080 - TriangleOp 8181 - Shaker1-2 8282 - SleighBel 8383 - BellTree 8484 - SdT9Rim 8585 - SdT9Gate 8686 - HandClapSt 8787 - SdT9-5 8888 - Scratch H 8989 - Scratch L 9090 - ScratchDwn 9191 - ScratchHiF 9292 - ScratchHiR 9393 - ScratchLoF 9494 - ScratchLoR 9595 - BdT9Hd1 9696 - - - - BdT9Hd3 2424 - SdAnCR 2525 - SdAnSmRim 2626 - SdClpAna 2727 - SdT9Gate 2828 - SdRollMono 2929 - SdTimber 3030 - SdFMRim 3131 - SdJnglFx 3232 - BdVar1 3333 - SdHipRm1 3434 - BdT8-2 3535 - BdZapMid 3636 - SdT8Rim 3737 - SdHipRm2 3838 - HandClapSt 3939 - SdAnCR 4040 - BdT8-3 4141 - HHClT8-2 4242 - BdT8-3 4343 - HHClAnCR 4444 - BdT8-3 4545 - HHOpT8-2 4646 - BdT8-3 4747 - BdT8-3 4848 - Crash 4949 - BdT8-3 5050 - RideT9 5151 - China 5252 - CupMono 5353 - TambrnHit 5454 - Crash 5555 - Cowbel1 5656 - CrashT9 5757 - CowBelT8 5858 - RideSt 5959 - BongoHi1 6060 - BongoLo1-3 6161 - CongaTip 6262 - CongaSlp 6363 - CongaOp 6464 - HiQ1 6565 - HiQ1 6666 - AgogoLo 6767 - AgogoLo 6868 - AnaShaker 6969 - MaracasSlr 7070 - VoxDrum 7171 - VoxDrum 7272 - HiQ1 7373 - HiQ2 7474 - ClaveT8 7575 - HiQ1 7676 - ScratchSpn 7777 - ScratchHiR 7878 - ScratchHiF 7979 - TriangleMt 8080 - TriangleOp 8181 - Shaker2 8282 - TambrnHit 8383 - BellTree 8484 - SdBreakRol 8585 - Mother 8686 - VoxBell 8787 - SdR&B1 8888 - VoxAlk 8989 - Udo Hi 9090 - TranCho 9191 - Swarm 9292 - BdPop 9393 - SdR&B1Rm 9494 - BdR&B2 9595 - Crash 9696 - - - - BdRoom1 2424 - AnaClick 2525 - PlayFxABa4 2626 - SdHpStk4 2727 - QuintTip 2828 - PickNoise1 2929 - SdT9Rim 3030 - SdNmSt1-4 3131 - SdR&B1Rm 3232 - BdNmSt1-2 3333 - SdFk3R 3434 - BdT8-3 3535 - BdR&B1 3636 - SdClRim3 3737 - SdPcRim 3838 - HandClapSt 3939 - SdR&B1Rm 4040 - BdT8-3 4141 - HHClT8-2 4242 - BdT8-3 4343 - HHClT8-1 4444 - BdT8-3 4545 - HHOpT8-2 4646 - BdT8-3 4747 - TomT8 4848 - CrashSt 4949 - TomT8 5050 - RideSt 5151 - ChinaSt 5252 - CupSt 5353 - TambrnSw 5454 - Crash 5555 - Cowbel1 5656 - CrashT9 5757 - CowBelT8 5858 - RideSt 5959 - BongoHi1 6060 - BongoLo1-3 6161 - CongaTip 6262 - CongaSlp 6363 - CongaOp 6464 - HiQ1 6565 - HiQ1 6666 - AgogoLo 6767 - AnaShaker 6868 - AnaShaker 6969 - MaracasSlr 7070 - VoxDrum 7171 - VoxDrum 7272 - HiQ1 7373 - HiQ2 7474 - ClaveT8 7575 - HiQ1 7676 - ScratchSpn 7777 - ScratchHiR 7878 - ScratchHiF 7979 - TriangleMt 8080 - TriangleOp 8181 - Shaker2 8282 - TambrnHit 8383 - BellTree 8484 - SdLofi 8585 - SdRkStk2St 8686 - SdPicol 8787 - SdR&B2 8888 - BdR&B2 8989 - SdFM 9090 - BdHipDp 9191 - SdHammer 9292 - BdSlimy 9393 - HHHit 9494 - BdT8-3 9595 - TurnTable 9696 - - - - BdT9-2 2424 - SdAnCR 2525 - SdT9-5 2626 - ClapAnSm 2727 - SdT9Gate 2828 - SdRkRolSt 2929 - SdT9-3 3030 - SdT9-4 3131 - SdT9Gate 3232 - BdT9-4 3333 - SdT9-5 3434 - BdT9-1 3535 - BdT9-3 3636 - SdT9Rim 3737 - SdT9-1 3838 - ClapT9 3939 - SdT9-2 4040 - TomT9Lo 4141 - HHClT9 4242 - TomT9Lo 4343 - HHOpT9 4444 - TomT9Lo 4545 - HHOpT9 4646 - TomT9Hi 4747 - TomT9Hi 4848 - CrashT9 4949 - TomT9Hi 5050 - RideT9 5151 - China 5252 - CupMono 5353 - TambrnRX5 5454 - Crash 5555 - Cowbel1 5656 - Crash2 5757 - CowBelT8 5858 - RideR 5959 - CongaT8 6060 - CongaT8 6161 - CongaTip 6262 - CongaSlp 6363 - CongaOp 6464 - TmbaleH1-3 6565 - TmbaleL1-3 6666 - AnaClick 6767 - CongaT8 6868 - Cabasa1-2 6969 - MaracasSlr 7070 - FxGun2 7171 - FxGun1 7272 - ScratchH 7373 - ScratchDwn 7474 - HiQ1 7575 - HiQ1 7676 - HiQ2 7777 - ScratchL 7878 - ScratchL 7979 - TriangleMt 8080 - TriangleOp 8181 - AnaShaker 8282 - SleighBel 8383 - BellTree 8484 - SdPicol 8585 - SdT8-5 8686 - SdRkRolDSt 8787 - SdBrMt2St 8888 - BdBlpHd 8989 - SdJngl1 9090 - BdSus 9191 - SdD&B1 9292 - BdBreak2 9393 - SdDist 9494 - BdTekPower 9595 - BdDistRM 9696 - - - - BdT8-1 2424 - SdAnCR 2525 - SdT8-4 2626 - SdClpAna 2727 - SdT8-3 2828 - TomT8 2929 - SdT8-5 3030 - BdT8-3 3131 - SdT8-4 3232 - BdT8-2 3333 - SdT8-3 3434 - T8KickBass 3535 - BdT8-1 3636 - SdT8Rim 3737 - SdT8-2 3838 - ClapT9 3939 - SdT8-1 4040 - TomT8 4141 - HHClT8-2 4242 - TomT8 4343 - HHOpT8-1 4444 - TomT8 4545 - HHOpT8-1 4646 - TomT8 4747 - TomT8 4848 - CrashT8 4949 - TomT8 5050 - RideT9 5151 - China 5252 - CupMono 5353 - TambrnRX5 5454 - SplashR 5555 - CowBelT8 5656 - Crash2 5757 - Vibraslap 5858 - RideR 5959 - CongaT8 6060 - CongaT8 6161 - CongaT8 6262 - CongaT8 6363 - CongaT8 6464 - TimbaleHi1 6565 - TimbaleLo1 6666 - Glass 6767 - Glass 6868 - Cabasa1-2 6969 - MarcsT8 7070 - FxGun2 7171 - FxGun1 7272 - AnaShaker 7373 - AnaShaker 7474 - ClaveT8 7575 - HiQ1 7676 - HiQ2 7777 - Scratch L 7878 - Scratch L 7979 - TriangleMt 8080 - TriangleOp 8181 - AnaShaker 8282 - SleighBel 8383 - BellTree 8484 - SdHip1 8585 - SdHip2 8686 - SdHipGate 8787 - SdBreak1 8888 - BdBlip 8989 - SdFx1 9090 - BdFxHmr 9191 - SdHammer 9292 - BdZapHrd 9393 - SdDodgL 9494 - BdTekPower 9595 - BdSlimy 9696 - - - - BdSlimy 2424 - SdT9Rim 2525 - SdT8-5 2626 - ClapT9 2727 - SdT9-3 2828 - SdHuman1 2929 - SdHip3 3030 - SdT9-4 3131 - SdHip2 3232 - BdThkSkn 3333 - SdT9-2 3434 - BdDist4 3535 - BdZapMid 3636 - SdT8Rim 3737 - SdT8-5 3838 - ClapT9 3939 - SdSyn 4040 - TomT8 4141 - HHClLoFi 4242 - TomT8 4343 - HHOpLoFi 4444 - TomT8 4545 - HHOpLoFi 4646 - TomT8 4747 - TomT8 4848 - CrashT8 4949 - TomT8 5050 - RideT9 5151 - Crash 5252 - CupMono 5353 - TambrnAnCR 5454 - CrashL 5555 - CowBelT8 5656 - CrashT9 5757 - CowBelT8 5858 - CrashSyn 5959 - CongaT8 6060 - CongaT8 6161 - CongaT8 6262 - CongaT8 6363 - CongaT8 6464 - TmbaleH1-3 6565 - TmbaleL1-3 6666 - Glass 6767 - Glass 6868 - Cabasa1 6969 - MarcsT8 7070 - FxGun2 7171 - FxGun1 7272 - Scratch H 7373 - ScratchDwn 7474 - HiQ1 7575 - HiQ1 7676 - HiQ2 7777 - Scratch L 7878 - Scratch L 7979 - TriangleMt 8080 - TriangleOp 8181 - AnaShaker 8282 - SleighBel 8383 - BellTree 8484 - DjembeEd 8585 - Wataiko 8686 - StabHard 8787 - HitOrch1 8888 - StabOrgan2 8989 - ScratchDwn 9090 - BdRk1St 9191 - HH Hit 9292 - Wataiko 9393 - Sonar1 9494 - TurnTable 9595 - Police 9696 - - - - BdT9-4 2424 - SdT8Rim 2525 - SdT8-5 2626 - HandClapSt 2727 - SdDodgL 2828 - SnLvRolSt 2929 - SdT9-3 3030 - SdT8-1 3131 - SdT9-5 3232 - BdT9-1 3333 - SdT9Gate 3434 - BdT9-2 3535 - BdT9-3 3636 - SdT9Rim 3737 - SdT9-1 3838 - ClapT9 3939 - SdT9-2 4040 - TomT9Lo 4141 - HHClT8-1 4242 - TomT9Lo 4343 - HHOpT9 4444 - TomT9Lo 4545 - HHOpT9 4646 - TomT9Hi 4747 - TomT9Hi 4848 - CrashT9 4949 - TomT9Hi 5050 - RideT9 5151 - Crash 5252 - CupMono 5353 - TambrnHit 5454 - Crash 5555 - Cowbel1 5656 - CrashSt 5757 - CowBelT8 5858 - RideSt 5959 - BongoHi1 6060 - BongoLo1-3 6161 - CongaTip 6262 - CongaSlp 6363 - CongaOp 6464 - TimbaleHi1 6565 - TimbaleHi1 6666 - AgogoLo 6767 - AgogoLo 6868 - Cabasa1 6969 - MaracasSlr 7070 - VoxDrum 7171 - VoxDrum 7272 - GuiroShort 7373 - GuiroLong 7474 - Clave 7575 - WoodBlock 7676 - WoodBlock 7777 - CuicaHi 7878 - CuicaLo 7979 - TriangleMt 8080 - TriangleOp 8181 - AnaShaker 8282 - SleighBel 8383 - BellTree 8484 - SdBreakRol 8585 - Mother 8686 - VoxBell 8787 - SdR&B1 8888 - VoxAlk 8989 - Udo Hi 9090 - TranCho 9191 - Swarm 9292 - BdPop 9393 - SdR&B1Rm 9494 - BdR&B2 9595 - Crash 9696 - - - - BdT9-2 2424 - SdT8Rim 2525 - PlayFxABa8 2626 - ClapT9 2727 - SdT9-2 2828 - SdT9Gate 2929 - SdHuman2 3030 - SdFx1 3131 - SdLofi 3232 - BdT9Hd2 3333 - SdT9Rim 3434 - BdT9-3 3535 - BdT9Hd1 3636 - SdT9Rim 3737 - SdWood 3838 - NzBurst 3939 - Zap2 4040 - SdSyn 4141 - HHClT9 4242 - SdSyn 4343 - HHOpT9 4444 - SdSyn 4545 - HHOpT9 4646 - SdSyn 4747 - SdSyn 4848 - CrashT9 4949 - SdSyn 5050 - RideT9 5151 - CrashSyn 5252 - CupMono 5353 - TambrnHit 5454 - CrashT8 5555 - Cowbel1 5656 - Crash 5757 - CowBelT8 5858 - RideSt 5959 - BongoHi1 6060 - BongoLo1-3 6161 - CongaHeel 6262 - CongaSlp 6363 - CongaOp 6464 - TomSyn1 6565 - TomSyn1 6666 - AnaClick 6767 - SdRimSE 6868 - Cabasa1 6969 - MaracasSlr 7070 - VoxDrum 7171 - VoxDrum 7272 - TambrnAnCR 7373 - AnaShaker 7474 - ClaveT8 7575 - TambrnRX5 7676 - CowBelRX11 7777 - AnaShaker 7878 - ScratchHiF 7979 - TriangleMt 8080 - TriangleOp 8181 - AnaShaker 8282 - SleighBel 8383 - BellTree 8484 - TabraBya 8585 - TabraNah 8686 - TablaMut 8787 - VoxBell 8888 - BdPop 8989 - Udo Hi 9090 - BdFXGate 9191 - Mother 9292 - BdT9-1 9393 - SdBreakRol 9494 - Crash 9595 - TurnTable 9696 - - - - BdFXGate 2424 - BongoLo2 2525 - SdGM 2626 - HandClapSt 2727 - SdGate2 2828 - SdRkRolSt 2929 - SdRkRim1St 3030 - SdPicol 3131 - SdRkFlmSt 3232 - BdRoom2 3333 - SdRkStk1St 3434 - BdRoom3 3535 - BdGate 3636 - SdMdRim 3737 - SdGate1 3838 - ClapAnSm 3939 - SdAmb 4040 - TomAmbLo 4141 - HHClD&B 4242 - TomAmbLo 4343 - HHPdlD&B 4444 - TomAmbLo 4545 - HHOpD&B 4646 - TomAmbHi 4747 - TomAmbHi 4848 - CrashSt 4949 - TomAmbHi 5050 - RideSt 5151 - ChinaSt 5252 - CupMono 5353 - TambrnHit 5454 - Crash 5555 - Cowbel1 5656 - CrashSt 5757 - Vibraslap 5858 - RideSt 5959 - BongoHi1 6060 - BongoLo1-3 6161 - CongaTip 6262 - CongaSlp 6363 - CongaOp 6464 - Bd+HH 6565 - Bd+HH 6666 - AgogoLo 6767 - AgogoLo 6868 - Cabasa1 6969 - MaracasSlr 7070 - FxGun2 7171 - FxGun1 7272 - Scratch H 7373 - ScratchDwn 7474 - Clave 7575 - WoodBlock 7676 - WoodBlock 7777 - Scratch L 7878 - Scratch L 7979 - TriangleMt 8080 - TriangleOp 8181 - Shaker2 8282 - SleighBel 8383 - BellTree 8484 - SdDist 8585 - SdFM 8686 - SdFMRim 8787 - SdClappy 8888 - BdRoom3 8989 - SdTimber 9090 - BdRk1St 9191 - SdRimSE 9292 - BdRk2St 9393 - SdBreakRol 9494 - BdD&B1 9595 - BdRoom2 9696 - - - - BdBrkDp 2424 - SdHip1St 2525 - SdLofi 2626 - SdClappy 2727 - SdLdwHMono 2828 - SdRkRolDSt 2929 - SdGate1 3030 - SdMid 3131 - SdBrRim 3232 - BdBreakHvy 3333 - SdHipRm4 3434 - BdBreak2 3535 - BdBreak1 3636 - SdHipRm1 3737 - SdBreak3 3838 - SdBreak1 3939 - SdBreak2 4040 - TomLoSt 4141 - HHClRkSR 4242 - TomLoSt 4343 - HHPdlRkR 4444 - TomLoSt 4545 - HHHlfOpRkR 4646 - TomHiSt 4747 - TomHiSt 4848 - CrashL 4949 - TomHiSt 5050 - RideL 5151 - ChinaL 5252 - CupMono 5353 - TambrnHit 5454 - Crash 5555 - Cowbel1 5656 - CrashR 5757 - CowBelRX11 5858 - RideMono 5959 - BongoHi1 6060 - BongoLo1-3 6161 - CongaTip 6262 - CongaSlp 6363 - CongaOp 6464 - BongoHi1-2 6565 - BongoLo1-3 6666 - CongaOp 6767 - AgogoLo 6868 - Cabasa1 6969 - MaracasSlr 7070 - TimbaleHi1 7171 - TimbaleLo1 7272 - Scratch H 7373 - ScratchDwn 7474 - Clave 7575 - WoodBlock 7676 - WoodBlock 7777 - Scratch L 7878 - Scratch L 7979 - TriangleMt 8080 - TriangleOp 8181 - Shaker2 8282 - SleighBel 8383 - TurnTable 8484 - SdBreakRol 8585 - Mother 8686 - Mind Bell 8787 - SdFx1 8888 - BdRk2St 8989 - LfoSeq 9090 - Ripper 9191 - NzBurst 9292 - Police 9393 - Fairwave 9494 - Swarm 9595 - RadioNz 9696 - - - - BdHipDp 2424 - BongoLo2 2525 - SdR&B2 2626 - SdTimber 2727 - SdD&B3 2828 - SdHammer 2929 - Glass 3030 - BdD&B2 3131 - HHPdlSt 3232 - BdHipDp 3333 - HHOp2St 3434 - BdD&B1 3535 - BdD&B2 3636 - SdMdRim 3737 - SdD&B1 3838 - NzBurst 3939 - SdD&B2 4040 - TomAmbLo 4141 - HHClD&B 4242 - TomAmbLo 4343 - HHPdlD&B 4444 - TomAmbLo 4545 - HHOpD&B 4646 - TomAmbHi 4747 - TomAmbHi 4848 - CrashL 4949 - TomAmbHi 5050 - RideSt 5151 - China 5252 - CupMono 5353 - TambrnHit 5454 - Crash 5555 - Cowbel1 5656 - CrashSt 5757 - Vibraslap 5858 - RideSt 5959 - BongoHi1 6060 - BongoLo1-3 6161 - CongaTip 6262 - CongaSlp 6363 - CongaOp 6464 - SdD&B4 6565 - HHRvD&B 6666 - AgogoLo 6767 - AgogoLo 6868 - Cabasa1 6969 - MaracasSlr 7070 - FxGun2 7171 - FxGun1 7272 - GuiroShort 7373 - GuiroLong 7474 - Clave 7575 - Sine 7676 - Sine 7777 - P50-1 7878 - PlyFxSl17S 7979 - TurnTable 8080 - TriangleOp 8181 - Shaker2 8282 - SleighBel 8383 - BellTree 8484 - SdDist 8585 - SdFM 8686 - SdFMRim 8787 - SdClappy 8888 - BdD&B1 8989 - SdTimber 9090 - BdDist5 9191 - SdRimSE 9292 - BdDist4 9393 - SdHip3 9494 - BdSlimy 9595 - Bd+HH 9696 - - - - BdATite 2424 - SdT8Rim 2525 - SdJngl3 2626 - HandClapSt 2727 - SdT8-1 2828 - SnLvRolSt 2929 - SdBhL1-3 3030 - SdBh3R 3131 - SdSonSt1-3 3232 - BdFkSt1-2 3333 - SdBsSt1-3 3434 - BdNm1R 3535 - BdFkHL 3636 - SdRkStk2R 3737 - SdLdwR1-4 3838 - ClapT9 3939 - SdLdwL1-4 4040 - TomT9Lo 4141 - HHClRkSR 4242 - TomT9Lo 4343 - HHClRk2R 4444 - TomT9Lo 4545 - HHHlfOpRkR 4646 - TomT9Hi 4747 - TomT9Hi 4848 - CrashL 4949 - TomT9Hi 5050 - RideR 5151 - Crash 5252 - CupL 5353 - TambrnHit 5454 - Crash 5555 - Cowbel1 5656 - CrashL 5757 - CowBelT8 5858 - RideMono 5959 - BongoHi1-2 6060 - BongoLo1-3 6161 - CongaTip 6262 - CongaSlp 6363 - CongaOp 6464 - TimbaleHi1 6565 - TimbaleHi1 6666 - AgogoHi 6767 - AgogoLo 6868 - Cabasa1 6969 - MaracasSlr 7070 - FxGun2 7171 - FxGun1 7272 - Scratch H 7373 - ScratchDwn 7474 - HiQ1 7575 - HiQ1 7676 - HiQ2 7777 - Scratch L 7878 - Scratch L 7979 - TriangleMt 8080 - TriangleOp 8181 - AnaShaker 8282 - SleighBel 8383 - BellTree 8484 - SdT9-5 8585 - SdT9-5 8686 - SdT9-5 8787 - SdT9-5 8888 - BdFkSt1-2 8989 - SdD&B1 9090 - BdHSonSt 9191 - SdHipGate 9292 - BdFXGate 9393 - SdBreak1 9494 - BdJngl1 9595 - BdBreakHvy 9696 - - - - BdJngl2 2424 - SdMdRim 2525 - SdJngl3 2626 - SdJngl3 2727 - SdPcRim 2828 - SdRollMono 2929 - SdWood 3030 - SdR&B2 3131 - SdD&B2 3232 - BdJngl2 3333 - SdJnglFx 3434 - BdJngl3 3535 - BdJngl1 3636 - SdHipRm4 3737 - SdJngl2 3838 - SdJnglFx 3939 - SdJngl1 4040 - TomFlL 4141 - HHClRkRSw 4242 - TomLoL 4343 - HHPdlRkRSw 4444 - TomMdR 4545 - HHOpRkRSw 4646 - TomMdR 4747 - TomHiR 4848 - CrashL 4949 - TomHiR 5050 - RideR 5151 - China 5252 - CupMono 5353 - TambrnHit 5454 - Crash 5555 - Cowbel1 5656 - CrashSt 5757 - Vibraslap 5858 - RideSt 5959 - BongoHi1 6060 - BongoLo1-3 6161 - CongaTip 6262 - CongaSlp 6363 - CongaOp 6464 - TabraNah 6565 - TabraBya 6666 - AgogoLo 6767 - AgogoLo 6868 - Cabasa1 6969 - MaracasSlr 7070 - TimbaleHi1 7171 - TimbaleLo1 7272 - GuiroShort 7373 - GuiroLong 7474 - Clave 7575 - WoodBlock 7676 - WoodBlock 7777 - CuicaHi 7878 - CuicaLo 7979 - TriangleMt 8080 - TriangleOp 8181 - Shaker2 8282 - SleighBel 8383 - BellTree 8484 - HHRvD&B 8585 - RainLoop 8686 - Scratch H 8787 - Scratch L 8888 - BdBlpHd 8989 - SdSyn 9090 - IndusTom 9191 - PandieroOp 9292 - Ripper 9393 - TelRing 9494 - ScratchLoR 9595 - TapeRewnd 9696 - - - - BdAnCR 2424 - BdBlip 2525 - SdT8-5 2626 - ClapAnSm 2727 - SdHipRm2 2828 - SdRollMono 2929 - SdT8-1 3030 - SdAnCR 3131 - SdT8-2 3232 - BdT8-1 3333 - SdT8-4 3434 - BdBlip 3535 - BdT8-2 3636 - SdT8Rim 3737 - SdT8-3 3838 - ClapT9 3939 - ClapAnSm 4040 - TomSyn2 4141 - HHClT8-2 4242 - TomSyn2 4343 - HHOpT8-1 4444 - TomSyn2 4545 - HHOpT8-2 4646 - TomSyn2 4747 - TomSyn2 4848 - CrashT9 4949 - TomSyn2 5050 - RideT9 5151 - Crash 5252 - CrashSyn 5353 - CrashT8 5454 - Crash 5555 - SdRimSE 5656 - CrashSt 5757 - CowBelT8 5858 - CrashSyn 5959 - TomT8 6060 - TomT8 6161 - TomT8 6262 - TomT8 6363 - TomT8 6464 - Applause 6565 - Telephone 6666 - Heartbeat 6767 - Bomb 6868 - HHOpLoFi 6969 - MaracasSlr 7070 - Zap2 7171 - Zap1 7272 - Scratch H 7373 - ScratchDwn 7474 - HiQ1 7575 - HiQ1 7676 - HiQ2 7777 - Scratch L 7878 - HitOrch2 7979 - HHClFx 8080 - HHOpFx 8181 - AnaShaker 8282 - AnaShaker 8383 - TurnTable 8484 - SdBreakRol 8585 - Mother 8686 - Mind Bell 8787 - SdFx1 8888 - BdRk2St 8989 - LfoSeq 9090 - Ripper 9191 - NzBurst 9292 - Police 9393 - Fairwave 9494 - Swarm 9595 - RadioNz 9696 - - - - BdHuman1 2424 - ScratchVoF 2525 - Hit Uhh 2626 - ScratchVoR 2727 - SdJnglFx 2828 - SdRkRolSt 2929 - SdBreak1 3030 - SdAnCR 3131 - SdT9-1 3232 - BdSus 3333 - SdHpStk1 3434 - BdHuman1 3535 - BdHuman2 3636 - SdWood 3737 - SdHuman1 3838 - SdDodgH 3939 - SdHuman2 4040 - BdHuman1 4141 - HHOpHuman 4242 - BdHuman1 4343 - HHOpHuman 4444 - BdHuman1 4545 - HHOpHuman 4646 - BdHuman1 4747 - BdHuman1 4848 - NzBurst 4949 - BdHuman1 5050 - CrashT8 5151 - China 5252 - CupMono 5353 - ScratchSdR 5454 - SplashSt 5555 - VoxDrum 5656 - Crash2 5757 - CowBelT8 5858 - StabAah 5959 - BongoHi1 6060 - BongoLo1-3 6161 - CongaTip 6262 - CongaSlp 6363 - CongaOp 6464 - TmbaleH1-3 6565 - TmbaleL1-3 6666 - AgogoLo 6767 - AgogoLo 6868 - Cabasa1 6969 - MaracasSlr 7070 - FxGun2 7171 - FxGun1 7272 - Scratch H 7373 - ScratchDwn 7474 - ScratchLoF 7575 - ScratchLoR 7676 - HiQ2 7777 - Scratch L 7878 - Scratch L 7979 - TriangleMt 8080 - TriangleOp 8181 - Shaker2 8282 - SleighBel 8383 - TurnTable 8484 - SdRkRim1R 8585 - Helicopter 8686 - StabHard 8787 - SdGate1 8888 - BdRk1St 8989 - ScratchDwn 9090 - BdAnSm 9191 - Sonar1 9292 - Wataiko 9393 - Wataiko 9494 - HH Hit 9595 - StabOrgan2 9696 - - - - BdDist3 2424 - SdWood 2525 - SdGate1 2626 - HandClapSt 2727 - SdGate2 2828 - SdRollMono 2929 - SdClpAna 3030 - SdHip3 3131 - Ripper 3232 - BdDistRM 3333 - SdT8Rim 3434 - BdDist2 3535 - BdDist1 3636 - SdMdRim 3737 - SdDist 3838 - NzBurst 3939 - SdFx2 4040 - TomDistLo 4141 - HHClT9 4242 - TomDistLo 4343 - HHOpT9 4444 - TomDistLo 4545 - HHOpT9 4646 - TomDistHi 4747 - TomDistHi 4848 - CrashT9 4949 - TomDistHi 5050 - RideT9 5151 - China 5252 - CupMono 5353 - TambrnAnCR 5454 - Crash 5555 - CowBelT8 5656 - CrashSt 5757 - Vibraslap 5858 - RideSt 5959 - SdTimber 6060 - SdTimber 6161 - CongaTip 6262 - CongaSlp 6363 - CongaOp 6464 - Bd+HH 6565 - Bd+HH 6666 - Glass 6767 - Glass 6868 - Cabasa1 6969 - MaracasSlr 7070 - FxGun2 7171 - FxGun1 7272 - Scratch H 7373 - ScratchDwn 7474 - HiQ1 7575 - HiQ1 7676 - HiQ2 7777 - Scratch L 7878 - Scratch L 7979 - TriangleMt 8080 - TriangleOp 8181 - AnaShaker 8282 - SleighBel 8383 - BellTree 8484 - SdDist 8585 - SdFM 8686 - SdFMRim 8787 - SdClappy 8888 - BdFxHmr 8989 - IndusTom 9090 - BdD&B1 9191 - IndusTom 9292 - BdRoom3 9393 - IndusTom 9494 - BdT9-4 9595 - SdHammer 9696 - - - - AnaClick 2424 - SdBrMtSt 2525 - SdBrSwrSt 2626 - SdBrMt2St 2727 - SdBSwrAtSt 2828 - SnLvRolSt 2929 - Castanet 3030 - SdNm1St 3131 - Stick 3232 - BdRk2R 3333 - SdLdw1St 3434 - BdBreak1 3535 - BdRk2R 3636 - SdRkStk2R 3737 - SdSon1L 3838 - HandClapL 3939 - SdPcRim 4040 - TomAmbLo 4141 - HHClRk2R 4242 - TomAmbLo 4343 - HHPdlRkR 4444 - TomAmbLo 4545 - HHOpRkR 4646 - TomAmbHi 4747 - TomAmbHi 4848 - CrashL 4949 - TomAmbHi 5050 - RideR 5151 - ChinaL 5252 - CupR 5353 - TambrnSw 5454 - SplashR 5555 - MamboBel 5656 - CrashL 5757 - Vibraslap 5858 - RideSt 5959 - BongoHi1-2 6060 - BongoLo1-3 6161 - CongaTip 6262 - CongaSlp 6363 - CongaOp 6464 - TmbaleH1-3 6565 - TmbaleL1-3 6666 - AgogoHi 6767 - AgogoLo 6868 - Cabasa1-2 6969 - MaracasSlr 7070 - Whistle 7171 - Whistle 7272 - GuiroShort 7373 - GuiroLong 7474 - Clave 7575 - WoodBlock 7676 - WoodBlock 7777 - ScratchCb2 7878 - ScratchHiR 7979 - TriangleMt 8080 - TriangleOp 8181 - Shaker1-2 8282 - SleighBel 8383 - BellTree 8484 - SdPicol 8585 - SdHeavy 8686 - SdClpAna 8787 - SdPcRim 8888 - BdRoom2 8989 - SdMid 9090 - BdRoom3 9191 - SdMdRim 9292 - BdGate 9393 - SdGate1 9494 - BdFXGate 9595 - BdD&B1 9696 - - - - BdBlip 2424 - HiQ2 2525 - SdPcRim2 2626 - HiQ1 2727 - SdAnCR 2828 - TomSyn1 2929 - HHClSyn 3030 - TomSyn1 3131 - HHClFx 3232 - TomSyn2 3333 - HHOpSyn 3434 - BdAnCR 3535 - BdT9-1 3636 - SdHpStk3 3737 - SdJngl1 3838 - ClapT9 3939 - SdJngl1 4040 - TomT8 4141 - HHClT8-2 4242 - TomT8 4343 - HHOpT8-1 4444 - TomT8 4545 - HHOpT8-2 4646 - TomT8 4747 - TomT8 4848 - CrashSyn 4949 - TomT8 5050 - RideT9 5151 - Crash 5252 - CupMono 5353 - TambrnHit 5454 - Crash 5555 - CowBelT8 5656 - CrashSt 5757 - Vibraslap 5858 - RideSt 5959 - BongoHi1 6060 - BongoLo1-3 6161 - CongaTip 6262 - CongaSlp 6363 - CongaOp 6464 - TmbaleH1-3 6565 - TmbaleL1-3 6666 - Glass 6767 - Glass 6868 - Cabasa1 6969 - MarcsT8 7070 - Bird 7171 - Stream 7272 - Thunder 7373 - Gunshot 7474 - ClaveT8 7575 - WoodBlock 7676 - WoodBlock 7777 - TambrnAnCR 7878 - CowBelAnCR 7979 - TriangleMt 8080 - TriangleOp 8181 - AnaShaker 8282 - SleighBel 8383 - BellTree 8484 - SdT8-5 8585 - Sonar1 8686 - SdT8-5 8787 - Resonator 8888 - Bubble 8989 - SdT8-5 9090 - Bubble 9191 - SdT8-5 9292 - Eery 9393 - SdT8-5 9494 - WindChime 9595 - WindChime 9696 - - - - BdRoom2 2424 - SdBrMtR 2525 - SdBSwrAtSt 2626 - SdBrMt2St 2727 - SdBSwrAtSt 2828 - SnLvRolSt 2929 - Castanet 3030 - SdHip1St 3131 - Stick 3232 - BdFkML 3333 - SdRkStk2St 3434 - BdFkSonSt 3535 - BdFkSt1-2 3636 - SdClRmSt 3737 - SdLdw1St 3838 - HandClapSt 3939 - SdBhSt1-3 4040 - TomFlSt 4141 - HHClFtSt 4242 - TomFlSt 4343 - HHPdlSt 4444 - TomLoSt 4545 - HHOp2St 4646 - TomMdSt 4747 - TomMdSt 4848 - CrashSt 4949 - TomHiSt 5050 - RideSt 5151 - ChinaSt 5252 - CupSt 5353 - TambrnHit 5454 - SplashSt 5555 - Cowbel1 5656 - CrashSt 5757 - Vibraslap 5858 - RideSt 5959 - BongoHi1 6060 - BongoLo1-3 6161 - CongaTip 6262 - CongaSlp 6363 - CongaOp 6464 - TimbaleHi1 6565 - TimbaleHi1 6666 - AgogoLo 6767 - AgogoLo 6868 - Cabasa1 6969 - MaracasSlr 7070 - SdBrSwrSt 7171 - SdBrSwrSt 7272 - GuiroShort 7373 - GuiroLong 7474 - Clave 7575 - WoodBlock 7676 - WoodBlock 7777 - CuicaHi 7878 - CuicaLo 7979 - TriangleMt 8080 - TriangleOp 8181 - Shaker2 8282 - SleighBel 8383 - BellTree 8484 - SdBlL1-3 8585 - SdFkAySt 8686 - SdBhR1-3 8787 - SdBlSt1-2 8888 - BdLoL 8989 - SdLdwHMono 9090 - BdDry2 9191 - SdBSwrAtSt 9292 - BdSlimy 9393 - SdRollMono 9494 - BdNm2R 9595 - Crash 9696 - - - - SdT8Rim 2424 - VoxHitRev 2525 - TurnTable 2626 - StabHard 2727 - ScratchVoR 2828 - SdRollMono 2929 - ClaveT8 3030 - SdHip1R 3131 - SdHpStk4 3232 - BdAnCR 3333 - SdHipRm3 3434 - BdT9-3 3535 - BdHipDp 3636 - SdHpStk5 3737 - SdHipGate 3838 - HandClapR 3939 - SdLofi 4040 - TomT8 4141 - HHClHip 4242 - TomT8 4343 - HHPdlHip 4444 - TomT8 4545 - HHOpHip 4646 - TomT8 4747 - TomT8 4848 - Crash2 4949 - TomT8 5050 - RideR 5151 - CrashT8 5252 - RideT9 5353 - TambrnRX5 5454 - SplashR 5555 - MamboBdy 5656 - CrashT9 5757 - Vibraslap 5858 - RideT9 5959 - BongoHi1-2 6060 - BongoLo1-3 6161 - CongaTip 6262 - CongaSlp 6363 - CongaOp 6464 - TmbaleH1-3 6565 - TmbaleL1-3 6666 - AgogoHi 6767 - AgogoLo 6868 - ShakerHip1 6969 - MaracasSlr 7070 - Whistle 7171 - Whistle 7272 - GuiroShort 7373 - GuiroLong 7474 - Clave 7575 - WoodBlock 7676 - WoodBlock 7777 - CuicaHi 7878 - CuicaLo 7979 - TriangleMt 8080 - TriangleOp 8181 - Shaker1-2 8282 - SleighBel 8383 - BellTree 8484 - SdHpStk1 8585 - SdJngl1 8686 - HandClapR 8787 - SdBreakHvy 8888 - Scratch L 8989 - ScratchDwn 9090 - ScratchHiF 9191 - ScratchLoF 9292 - ScratchLoR 9393 - ScratchBdF 9494 - ScratchBdR 9595 - BdBreakHvy 9696 - - - - SdHpStk2 2424 - HiQ2 2525 - TurnTable 2626 - HitOrch1 2727 - ScratchSpn 2828 - SdRkRolR 2929 - ClaveT8 3030 - SdBreak3 3131 - SdHpStk7 3232 - BdR&B2 3333 - SdR&B1Rm 3434 - BdT9-4 3535 - BdT9-2 3636 - SdHpStk3 3737 - SdHipRm3 3838 - HandClapR 3939 - SdHipRm4 4040 - BdT8-3 4141 - HHClT9 4242 - BdT8-3 4343 - HHOpT9 4444 - BdT8-3 4545 - HHOpT9 4646 - BdT8-3 4747 - BdT8-3 4848 - Crash2 4949 - BdT8-3 5050 - RideR 5151 - CrashT8 5252 - RideT9 5353 - TambrnRX5 5454 - SplashR 5555 - MamboBdy 5656 - CrashT9 5757 - Vibraslap 5858 - RideT9 5959 - BongoHi1-2 6060 - BongoLo1-3 6161 - CongaTip 6262 - CongaSlp 6363 - CongaOp 6464 - TmbaleH1-3 6565 - TmbaleL1-3 6666 - AgogoHi 6767 - AgogoLo 6868 - ShakerHip1 6969 - MaracasSlr 7070 - Whistle 7171 - Whistle 7272 - GuiroShort 7373 - GuiroLong 7474 - Clave 7575 - WoodBlock 7676 - WoodBlock 7777 - CuicaHi 7878 - CuicaLo 7979 - TriangleMt 8080 - TriangleOp 8181 - Shaker1-2 8282 - SleighBel 8383 - BellTree 8484 - SdClRmSt 8585 - SdJnglFx 8686 - HandClapR 8787 - SdBreakRol 8888 - ScratchHiR 8989 - ScratchLoF 9090 - ScratchLoR 9191 - ScratchBdF 9292 - ScratchBdR 9393 - ScratchSdF 9494 - ScratchSdR 9595 - BdBreakHrd 9696 - - - - SdHipRm4 2424 - NzBurst 2525 - TurnTable 2626 - Hit Uhh 2727 - ScratchBdR 2828 - SnLvRolR 2929 - ClaveT8 3030 - SdAnSmRim 3131 - SdHipGate 3232 - BdT9-3 3333 - SdT8Rim 3434 - BdT8-2 3535 - BdT9-1 3636 - SdHipRm3 3737 - SdHpStk3 3838 - HandClapR 3939 - SdHpStk4 4040 - TomT9Lo 4141 - HHClT9 4242 - TomT9Lo 4343 - HHOpT9 4444 - TomT9Lo 4545 - HHOpT9 4646 - TomT9Hi 4747 - TomT9Hi 4848 - Crash2 4949 - TomT9Hi 5050 - RideR 5151 - CrashT8 5252 - RideT9 5353 - TambrnRX5 5454 - SplashR 5555 - MamboBdy 5656 - CrashT9 5757 - Vibraslap 5858 - RideT9 5959 - BongoHi1-2 6060 - BongoLo1-3 6161 - CongaTip 6262 - CongaSlp 6363 - CongaOp 6464 - TmbaleH1-3 6565 - TmbaleL1-3 6666 - AgogoHi 6767 - AgogoLo 6868 - ShakerHip1 6969 - MaracasSlr 7070 - Whistle 7171 - Whistle 7272 - GuiroShort 7373 - GuiroLong 7474 - Clave 7575 - WoodBlock 7676 - WoodBlock 7777 - CuicaHi 7878 - CuicaLo 7979 - TriangleMt 8080 - TriangleOp 8181 - Shaker1-2 8282 - SleighBel 8383 - BellTree 8484 - SdAnSmRim 8585 - SdClRmR 8686 - SdHipRm4 8787 - SdClRim3 8888 - Scratch L 8989 - ScratchDwn 9090 - ScratchHiF 9191 - ScratchLoF 9292 - ScratchBdR 9393 - ScratchCb2 9494 - ScratchStp 9595 - BdBlpHd 9696 - - - - BdHardLong 2424 - BdT9-1 2525 - BdSlimy 2626 - BdAnHard 2727 - BdDist4 2828 - BdR&B2 2929 - BdHipDp 3030 - BdFxHmr 3131 - BdT9Hd1 3232 - BdT8-3 3333 - BdSus 3434 - BdZapMid 3535 - BdT8-2 3636 - BdSlimy 3737 - SdT8-1 3838 - SdT8Rim 3939 - SdClappy 4040 - SdBl3St 4141 - HHOpSt 4242 - HHClT8-2 4343 - HHOpSt 4444 - HHOpT8-2 4545 - HHOpSt 4646 - HHOpT8-2 4747 - ClapAnSm 4848 - CrashSt 4949 - CrashT9 5050 - RideSt 5151 - RideT9 5252 - AnaClick 5353 - ClaveT8 5454 - ClapAnSm 5555 - ClapT9 5656 - AnaShaker 5757 - CongaT8 5858 - CongaT8 5959 - SdAnCR 6060 - SdRkRolSt 6161 - AgogoHi 6262 - ChinaRL 6363 - HiQ2 6464 - HiQ1 6565 - Zap2 6666 - Zap1 6767 - Zap2 6868 - DoorSqk 6969 - ScratchCb3 7070 - FretNoise 7171 - PlayFxGt5 7272 - ScratchHiF 7373 - Wurli+ 7474 - Wurli+ 7575 - Wurli+ 7676 - ResoXFade 7777 - Sonar1 7878 - VoxDrum 7979 - VoxDrum 8080 - VoxDrum 8181 - HHOpSyn 8282 - HHClSyn 8383 - TriWv 8484 - TriWv 8585 - TriWv 8686 - TriWv 8787 - TriWv 8888 - TriWv 8989 - TriWv 9090 - TriWv 9191 - TriWv 9292 - TriWv 9393 - TriWv 9494 - TriWv 9595 - TriWv 9696 - - - - BdHardLong 2424 - BdTekPower 2525 - BdDist5 2626 - BdDist3 2727 - BdDist1 2828 - BdD&B1 2929 - BdBlip 3030 - BdAnSm 3131 - BdT8-2 3232 - BdT8-1 3333 - BdT9Hd3 3434 - BdT9-2 3535 - BdT9-3 3636 - BdSus 3737 - SdT9-1 3838 - SdT9Rim 3939 - SdT9-4 4040 - TomT9Lo 4141 - HHClT9 4242 - TomT9Lo 4343 - HHOpT9 4444 - TomT9Lo 4545 - HHOpT9 4646 - ClapT9 4747 - ClapAnSm 4848 - CrashT9 4949 - CongaT8 5050 - RideT9 5151 - CongaT8 5252 - AnaClick 5353 - ClaveT8 5454 - MarcsT8 5555 - TambrnAnCR 5656 - AnaShaker 5757 - CowBelT8 5858 - CowBelAnCR 5959 - SdT8-1 6060 - SdT8-2 6161 - SdT8-3 6262 - SdAnCR 6363 - SdJngl1 6464 - SdD&B1 6565 - SdD&B4 6666 - SdR&B1 6767 - SdR&B2 6868 - SdHip1 6969 - SdWood 7070 - SdTimber 7171 - HHClT8-1 7272 - HHOpT8-1 7373 - HHClT8-2 7474 - HHOpT8-2 7575 - HHPdlSt 7676 - HHOpSt 7777 - HHOpSt 7878 - HHClLoFi 7979 - HHOpLoFi 8080 - HHClSyn 8181 - HHOpSyn 8282 - AnaShaker 8383 - TambrnRX5 8484 - TambrnSw 8585 - Cowbell2 8686 - BongoHi1 8787 - TimbaleHi1 8888 - WoodBlock 8989 - BdHardLong 9090 - TumbaOp 9191 - QuintOp 9292 - FxGun2 9393 - Bomb 9494 - BdZapHrd 9595 - ScratchHp2 9696 - - - - BdNmSt1-2 2424 - SdRkStk1St 2525 - SdRkOp2St 2626 - SdRkRolSt 2727 - SdRkOp1St 2828 - TomLoSt 2929 - HHClFtSt 3030 - TomLoSt 3131 - HHPdlSt 3232 - TomMdSt 3333 - HHOpSt 3434 - TomHiSt 3535 - BdRk2St 3636 - SdRkStk1St 3737 - SdRkOp2St 3838 - HandClapSt 3939 - SdRkMte2St 4040 - TomRkLoSt 4141 - HHClRkStSw 4242 - TomRkLoSt 4343 - HHPdRkStSw 4444 - TomRkMdSt 4545 - HHOpRkStSw 4646 - TomRkMdSt 4747 - TomRkHiSt 4848 - CrashSt 4949 - TomRkHiSt 5050 - RideSt 5151 - ChinaSt 5252 - CupSt 5353 - TambrnSw 5454 - SplashSt 5555 - Cowbel1 5656 - CrashSt 5757 - Shaker1-2 5858 - RideSt 5959 - BdRk1St 6060 - SdRkStk2St 6161 - SdRkOp1St 6262 - ClapT9 6363 - SdRkMte1St 6464 - TomRkLoSt 6565 - HHClRkStSw 6666 - TomRkLoSt 6767 - HHPdlRkSt 6868 - TomRkMdSt 6969 - HHHfOpRkSt 7070 - TomRkMdSt 7171 - TomRkHiSt 7272 - CrashSt 7373 - TomRkHiSt 7474 - RideL 7575 - ChinaSt 7676 - CupSt 7777 - TambrnHit 7878 - SplashSt 7979 - MamboBel 8080 - CrashSt 8181 - ShekereDw 8282 - RideR 8383 - BdFkSt1-2 8484 - SdRkStk1St 8585 - SdRkRim1St 8686 - SdRkFlmSt 8787 - SdRkRim2St 8888 - TomFlSt 8989 - HHCl4St 9090 - TomLoSt 9191 - HHPdlSt 9292 - TomMdSt 9393 - HHOp2St 9494 - TomMdSt 9595 - TomHiSt 9696 - - - - BdT8-3 2424 - SdT8Rim 2525 - SdDodgL 2626 - ClapT9 2727 - SdHip3 2828 - BdT8-3 2929 - HHClTek 3030 - BdT8-3 3131 - HHOpTek 3232 - BdT8-3 3333 - HHOpTek 3434 - BdT8-3 3535 - BdHipDp 3636 - SdHpStk4 3737 - SdHipRm1 3838 - HandClapR 3939 - SdHip2 4040 - TomT8 4141 - HHClT8-2 4242 - TomT8 4343 - HHOpAnCR 4444 - TomT8 4545 - HHOpT8-1 4646 - TomT8 4747 - TomT8 4848 - CrashT9 4949 - TomT8 5050 - CrashSyn 5151 - CrashSyn 5252 - CrashT8 5353 - TambrnRX5 5454 - SplashR 5555 - CowBelT8 5656 - CrashT9 5757 - CowBelAnCR 5858 - RideT9 5959 - BdHipDp 6060 - SdHpStk5 6161 - SdHipRm2 6262 - HandClapL 6363 - SdHip1 6464 - TomT9Lo 6565 - HHClRX5 6666 - TomT9Lo 6767 - HHClAnCR 6868 - TomT9Lo 6969 - HHOpT8-2 7070 - TomT9Lo 7171 - TomT9Hi 7272 - CrashR 7373 - TomT9Hi 7474 - CrashT8 7575 - CrashSyn 7676 - CrashT8 7777 - TambrnHit 7878 - ChinaR 7979 - CowBelRX11 8080 - CrashL 8181 - Cowbel1 8282 - RideR 8383 - BdHipDp 8484 - SdHipStk8 8585 - SdHipGate 8686 - SdHip2 8787 - SdHipRm5 8888 - TomDistLo 8989 - HHClHip 9090 - TomDistLo 9191 - HHPdlHip 9292 - TomDistHi 9393 - HHOpHip 9494 - TomDistHi 9595 - TomAnSm 9696 - - - - Wataiko 2424 - Udo Hi 2525 - DjembeOp 2626 - QuintTip 2727 - Udo Low 2828 - UdoFinger 2929 - Udo Hi 3030 - TabraBya 3131 - TmbourimOp 3232 - TablaMut 3333 - TabraNah 3434 - TablaMut 3535 - Timpani 3636 - Hit Uhh 3737 - PickNoise1 3838 - ClapT9 3939 - TriangleMt 4040 - TriangleOp 4141 - Castanet 4242 - Castanet 4343 - Castanet 4444 - GuiroLong 4545 - GuiroShort 4646 - GuiroSwp 4747 - Vibraslap 4848 - Clave 4949 - ClaveT8 5050 - CuicaLo 5151 - CuicaHi 5252 - TmbaleL1-3 5353 - WoodBlock 5454 - TimbaleLo2 5555 - WoodBlock 5656 - TmbaleH1-3 5757 - ChaCha 5858 - TimbaleHi2 5959 - TmblPailaL 6060 - TmblPailaL 6161 - TmblPailaH 6262 - MamboBel 6363 - BongoLo1-3 6464 - BongoLo3 6565 - Cowbel1 6666 - BongoHi1-2 6767 - Cowbell2 6868 - BongoHHeel 6969 - AgogoLo 7070 - AgogoHi 7171 - TumbaHeel 7272 - TumbaTip 7373 - TumbaSlp 7474 - MaracasSlr 7575 - TumbaOp 7676 - CongaHeel 7777 - CongaTip 7878 - CongaSlp 7979 - Shaker1 8080 - CongaOp 8181 - Cabasa1 8282 - Cabasa1-2 8383 - QuintHeel 8484 - QuintTip 8585 - QuintSlp 8686 - Shaker2 8787 - QuintOp 8888 - Caxixi1 8989 - TambrnShk 9090 - TambrnHit 9191 - TambrnSw 9292 - TambrnHit 9393 - SleighBel 9494 - Whistle 9595 - Whistle 9696 - - - - BdLSonSt 2424 - SdRkStk2St 2525 - SdFkSt1/3 2626 - CrashSt 2727 - SplashSt 2828 - TomLoSt 2929 - HHClSt1-4 3030 - TomLoSt 3131 - HHPdlSt 3232 - TomMdSt 3333 - HHOpSt 3434 - TomHiSt 3535 - TumbaTip 3636 - TumbaHeel 3737 - TumbaSlp 3838 - Clave 3939 - TumbaOp 4040 - CongaTip 4141 - CongaHeel 4242 - CongaSlp 4343 - ChaCha 4444 - CongaOp 4545 - MamboBdy 4646 - MamboBel 4747 - QuintTip 4848 - QuintHeel 4949 - QuintSlp 5050 - ChaCha 5151 - QuintOp 5252 - BongoLo1 5353 - BongoHHeel 5454 - BongoHi1 5555 - TimbaleLo1 5656 - TmblPailaL 5757 - TimbaleHi1 5858 - TmblPailaH 5959 - WoodBlock 6060 - WoodBlock 6161 - ShekereDw 6262 - ShekereUp 6363 - ShekereSap 6464 - MaracasSlr 6565 - MaracasStc 6666 - GuiroLong 6767 - GuiroShort 6868 - GuiroSwp 6969 - SurdoMt 7070 - SurdoOp 7171 - PandierTip 7272 - PandroHeel 7373 - PandierThm 7474 - PandieroOp 7575 - TmbourmFng 7676 - TmbourimMt 7777 - TmbourimOp 7878 - AgogoLoTap 7979 - AgogoLo 8080 - AgogoHi 8181 - TriangleOp 8282 - TriangleMt 8383 - GanzaAc 8484 - GanzaBk 8585 - GanzaFw 8686 - Cabasa1 8787 - Cabasa2 8888 - Caxixi1 8989 - Caxixi2 9090 - CuicaLo 9191 - CuicaHi 9292 - Whistle 9393 - Whistle 9494 - Vibraslap 9595 - BellTree 9696 - - - - PlayFxABa8 2424 - PlayFxABa8 2525 - PlayFxGt4 2626 - PwrChdMono 2727 - PwrChdMono 2828 - PlayFxABa9 2929 - PickNoise2 3030 - PlayFxABa6 3131 - PickNoise2 3232 - PlayFxABa6 3333 - PlayFxGt7 3434 - PlyFxSlp1H 3535 - PlyFxSl12S 3636 - PlayFxABa4 3737 - PlayFxGt3 3838 - PlayFxABa9 3939 - PlayFxGt5 4040 - PlyFxSlp2S 4141 - PickNoise2 4242 - PlyFxSlp2S 4343 - PickNoise2 4444 - PlyFxSlp2S 4545 - FretNoise 4646 - PlyFxSlp2S 4747 - PlyFxSlp2S 4848 - PlyFxSl19S 4949 - PlyFxSlp2S 5050 - PickNoise2 5151 - PlyFxSl19S 5252 - PickNoise2 5353 - PlyFxSlp2H 5454 - PlyFxSl19S 5555 - PlayFxGt12 5656 - PlyFxSl19S 5757 - PlyFxSl18S 5858 - PickNoise2 5959 - PlayFxABa4 6060 - PlayFxABa4 6161 - PlayFxABa2 6262 - PlayFxABa3 6363 - PlayFxABa1 6464 - PlayFxABa8 6565 - PlayFxABa8 6666 - PlayFxABa8 6767 - PlayFxABa8 6868 - PlayFxGt6 6969 - PlayFxGt4 7070 - PlayFxGt13 7171 - PlayFxGt12 7272 - PlayFxABa5 7373 - PlayFxABa6 7474 - PickNoise1 7575 - PickNoise1 7676 - PickNoise3 7777 - PlayFxGt7 7878 - PlayFxGt8 7979 - PickNoise2 8080 - PickNoise2 8181 - PlayFxGt3 8282 - PlyFxSl18S 8383 - PlayFxGt9 8484 - PlayFxGt10 8585 - PlayFxGt11 8686 - PlayFxGt1 8787 - PlayFxGt2 8888 - PlayFxGt3 8989 - PlayFxGt4 9090 - PlyFxSl17S 9191 - PlyFxSlp7H 9292 - PlyFxSlp7S 9393 - PlyFxSl18H 9494 - PlyFxSl19S 9595 - PlyFxSl20S 9696 - - - - PlyFxSlp5H 2424 - PickNoise1 2525 - HHPdlD&B 2626 - HandClapL 2727 - ScratchVoF 2828 - IndusTom 2929 - SdWood 3030 - IndusTom 3131 - SdClpAna 3232 - IndusTom 3333 - SdFMRim 3434 - BdFXGate 3535 - BdFxHmr 3636 - PlayFxABa4 3737 - SdFM 3838 - HandClapL 3939 - SdTimber 4040 - TomSyn2 4141 - HHClSyn 4242 - TomSyn2 4343 - HHOpSyn 4444 - TomSyn2 4545 - HHOpSyn 4646 - TomSyn2 4747 - TomSyn2 4848 - HHOpMono 4949 - Sonar1 5050 - HHOpT8-1 5151 - HHOpMono 5252 - CupL 5353 - SleighBel 5454 - HHOpT8-2 5555 - ResoXFade 5656 - CrashL 5757 - RainLoop 5858 - CupR 5959 - AirHoseL 6060 - AirHoseL 6161 - Udo Hi 6262 - MgBass2 6363 - MgBass3 6464 - PlayFxABa8 6565 - PlayFxABa8 6666 - AgogoLo 6767 - AgogoLo 6868 - HHOpHuman 6969 - VoxHitRev 7070 - HiQ1 7171 - HiQ1 7272 - LfoSeq 7373 - LfoSeq 7474 - BellAir 7575 - HH Hit 7676 - HH Hit 7777 - OohFB 7878 - OohFB 7979 - Mind Bell 8080 - Glass 8181 - Swarm 8282 - FxGun2 8383 - Lektronica 8484 - PlayFxGt12 8585 - Gunshot 8686 - Police 8787 - Ripper 8888 - PlayFxGt7 8989 - TapeRewnd 9090 - FxGun1 9191 - Bomb 9292 - Zap2 9393 - NzBurst 9494 - StabGiant 9595 - StabOrch 9696 - - - - ClaveT8 2424 - SdHpStk6L 2525 - GuiroLong 2626 - SdHpStk6R 2727 - GuiroLong 2828 - PlayFxABa9 2929 - Castanet 3030 - PlayFxABa8 3131 - Stick 3232 - PlayFxABa7 3333 - PlayFxABa4 3434 - TomT9Hi 3535 - PickNoise3 3636 - SdClRim3 3737 - Stick2 3838 - GuiroLong 3939 - Stick2 4040 - PlayFxABa4 4141 - SdAnSmRim 4242 - PlayFxABa4 4343 - ClapAnSm 4444 - PlayFxABa4 4545 - Vibraslap 4646 - PlayFxABa4 4747 - PlayFxABa4 4848 - Seashore 4949 - PlayFxABa4 5050 - SdRkStk2St 5151 - Applause 5252 - SdRkStk1L 5353 - TambrnShk 5454 - Seashore 5555 - WoodBlock 5656 - Applause 5757 - Helicopter 5858 - SdRkStk2R 5959 - PlayFxABa3 6060 - PlayFxABa3 6161 - Castanet 6262 - Castanet 6363 - WoodBlock 6464 - TmblPailaL 6565 - TmblPailaL 6666 - Stick 6767 - Stick2 6868 - Caxixi1-2 6969 - Caxixi2 7070 - DoorSqk 7171 - DoorSqk 7272 - GuiroShort 7373 - GuiroLong 7474 - Clave 7575 - WoodBlock 7676 - WoodBlock 7777 - DoorSqk 7878 - DoorSqk 7979 - WoodBlock 8080 - Clave 8181 - DoorSqk 8282 - HandClapL 8383 - ChaCha 8484 - SdRkOp2St 8585 - BdJngl3 8686 - QuintSlp 8787 - BdRoom2 8888 - BdHSonSt 8989 - SdHeavy 9090 - PlayFxABa4 9191 - SdRkStk1St 9292 - BdSlimy 9393 - SdGate1 9494 - BdFkSonSt 9595 - BdGate 9696 - - - - CowBelT8 2424 - HHCl4R 2525 - CupR 2626 - HHOpSyn 2727 - CupL 2828 - CupSt 2929 - FMMetal2 3030 - RideSt 3131 - RideSt 3232 - Cowbell2 3333 - HHCl1St 3434 - ChaCha 3535 - Cowbell2 3636 - HHClSyn 3737 - HHOpTek 3838 - HHClT8-2 3939 - HHClRX5 4040 - Cowbell2 4141 - HHOpT8-1 4242 - Cowbell2 4343 - HHClSyn 4444 - Cowbell2 4545 - HHOpSyn 4646 - Cowbell2 4747 - Cowbell2 4848 - HHOpFx 4949 - Cowbell2 5050 - CupSt 5151 - HHOpAnCR 5252 - CupSt 5353 - TambrnSw 5454 - HHOpFx 5555 - MamboBel 5656 - HHOpFx 5757 - SleighBel 5858 - RideMono 5959 - Vibraphone 6060 - Vibraphone 6161 - Tubular 6262 - Bell 6363 - BrBell 6464 - TmblPailaH 6565 - TmblPailaL 6666 - Bell 6767 - Bell 6868 - HHCl1St 6969 - HHOpAnCR 7070 - BellAir 7171 - WindChime 7272 - HHOpRkL 7373 - Lektronica 7474 - AgogoLo 7575 - Cowbel1 7676 - Cowbell2 7777 - HiLo 7878 - HiLo 7979 - TriangleMt 8080 - TriangleOp 8181 - WindChime 8282 - SleighBel 8383 - BellTree 8484 - SmBell 8585 - SmBell 8686 - BrBell 8787 - Hibasi 8888 - Harpsicord 8989 - SdLdwHMono 9090 - Vibraphone 9191 - SdBrRim 9292 - Gamelan2 9393 - UdoFinger 9494 - FingerCym 9595 - Bell 9696 - - - - TablaMut 2424 - SdBrMtSt 2525 - SdBrSwrSt 2626 - SdBrMt2St 2727 - SdBSwrAtSt 2828 - PlyFxSl19S 2929 - PlayFxABa4 3030 - PandierThm 3131 - TablaMut 3232 - PlyFxSl14H 3333 - PlayFxABa4 3434 - TabraCmb 3535 - Wataiko 3636 - QuintTip 3737 - SdBrMt2St 3838 - HandClapSt 3939 - SdFkAySt 4040 - Udo Low 4141 - TablaMut 4242 - Udo Low 4343 - TabraBya 4444 - Udo Hi 4545 - TabraNah 4646 - Udo Hi 4747 - UdoFinger 4848 - RideR 4949 - UdoFinger 5050 - CupSt 5151 - CupMono2 5252 - CupSt 5353 - TambrnHit 5454 - CupSt 5555 - Cowbel1 5656 - RideMono 5757 - Vibraslap 5858 - RideL 5959 - BongoHi1-2 6060 - BongoLo1-3 6161 - CongaTip 6262 - CongaSlp 6363 - CongaOp 6464 - TmbaleH1-3 6565 - TmbaleL1-3 6666 - AgogoHi 6767 - AgogoLo 6868 - TmbourmFng 6969 - TmbourmFng 7070 - HandClapL 7171 - HandClapL 7272 - GuiroLong 7373 - GuiroLong 7474 - UdoFinger 7575 - TabraBya 7676 - CongaTip 7777 - Udo Hi 7878 - Udo Hi 7979 - UdoFinger 8080 - FingerCym 8181 - TablaMut 8282 - SleighBel 8383 - BellTree 8484 - PlayFxABa4 8585 - PlayFxABa3 8686 - PlayFxABa3 8787 - PlayFxABa2 8888 - PlayFxABa3 8989 - PlayFxABa8 9090 - TumbaOp 9191 - PlayFxABa1 9292 - PlayFxABa7 9393 - Udo Low 9494 - DjembeCmb 9595 - TumbaSlp 9696 - - - - Scratch 2424 - Scratch 2525 - ScratchD 2626 - ScratchH 2727 - ScratchH 2828 - ScratchL 2929 - ScratchL 3030 - ScratchB 3131 - ScratchB 3232 - ScratchS 3333 - ScratchS 3434 - ScratchV 3535 - Scratch 3636 - Scratch 3737 - ScratchD 3838 - ScratchH 3939 - ScratchH 4040 - ScratchL 4141 - ScratchL 4242 - ScratchB 4343 - ScratchB 4444 - ScratchS 4545 - ScratchS 4646 - ScratchV 4747 - ScratchV 4848 - ScratchS 4949 - ScratchS 5050 - ScrathcH 5151 - ScratchH 5252 - ScratchC 5353 - ScratchC 5454 - ScratchC 5555 - ScratchC 5656 - Scratch 5757 - Scratch 5858 - ScratchD 5959 - ScratchH 6060 - ScratchH 6161 - ScratchL 6262 - ScratchL 6363 - ScratchB 6464 - ScratchB 6565 - ScratchS 6666 - ScratchS 6767 - ScratchV 6868 - ScratchV 6969 - ScratchS 7070 - ScratchS 7171 - ScrathcH 7272 - ScratchH 7373 - ScratchC 7474 - ScratchC 7575 - ScratchC 7676 - ScratchC 7777 - Scratch 7878 - Scratch 7979 - ScratchD 8080 - ScratchH 8181 - ScratchH 8282 - ScratchL 8383 - ScratchL 8484 - ScratchB 8585 - ScratchB 8686 - ScratchS 8787 - ScratchS 8888 - ScratchV 8989 - ScratchV 9090 - ScratchS 9191 - ScratchS 9292 - ScrathcH 9393 - ScratchH 9494 - ScratchC 9595 - ScratchC 9696 - - - - SdNm1St 2424 - SdNm2St 2525 - SdNm3St 2626 - SdNm4St 2727 - SdFk1St 2828 - SdFk2St 2929 - SdFk3St 3030 - SdFkAySt 3131 - SdBs1St 3232 - SdBs2St 3333 - SdBs3St 3434 - SdSon1St 3535 - SdSon2St 3636 - SdSon3St 3737 - SdSon4St 3838 - SdBl1St 3939 - SdBl2St 4040 - SdBl3St 4141 - SdBh1St 4242 - SdBh2St 4343 - SdBh3St 4444 - SdLdw1St 4545 - SdLdw2St 4646 - SdLdw3St 4747 - SdLdw4St 4848 - SdHip1St 4949 - SdHip2St 5050 - SdRkOp1St 5151 - SdRkMte1St 5252 - SdRkRim1St 5353 - SdRkOp2St 5454 - SdRkMte2St 5555 - SdRkRim2St 5656 - SdRkFlmSt 5757 - SdRkOp1St 5858 - SdRkMte1St 5959 - SdRkRim1St 6060 - SdRkOp2St 6161 - SdRkMte2St 6262 - SdRkRim2St 6363 - SdRkFlmSt 6464 - SdNm3St 6565 - SdFkAySt 6666 - SdBs3St 6767 - SdSon3St 6868 - SdBh3St 6969 - SdLdw3St 7070 - SdLdw3R 7171 - SdPicol 7272 - SdPcRim 7373 - SdPcRim2 7474 - SdMid 7575 - SdMdRim 7676 - SdAmb 7777 - SdGate1 7878 - SdLdwHMono 7979 - SdBrRim 8080 - SdDry 8181 - SdHeavy 8282 - SdGM 8383 - SdRkStk1St 8484 - SdRkStk2St 8585 - SdClRmSt 8686 - SdClRim2 8787 - SdClRim3 8888 - SdRkRolSt 8989 - SdRkOp2St 9090 - SnLvRolSt 9191 - SdSon2St 9292 - SdRollMono 9393 - SdLdw3St 9494 - SdBrMtSt 9595 - SdBSwrAtSt 9696 - - - - SdNmSt1-4 2424 - SdNmSt1-3 2525 - SdNmSt2-4 2626 - SdNmSt1-2 2727 - SdNmSt2-3 2828 - SdNmSt3-4 2929 - SdNm1St 3030 - SdNm2St 3131 - SdNm3St 3232 - SdNm4St 3333 - SdFkSt1-3 3434 - SdFkSt1-2 3535 - SdFkSt2-3 3636 - SdFkSt1/3 3737 - SdFk1St 3838 - SdFk2St 3939 - SdFk3St 4040 - SdFkAySt 4141 - SdBsSt1-3 4242 - SdBsSt1-2 4343 - SdBsSt2-3 4444 - SdBsSt1/3 4545 - SdBs1St 4646 - SdBs2St 4747 - SdBs3St 4848 - SdSonSt1-4 4949 - SdSonSt1-3 5050 - SdSonSt2-4 5151 - SdSonSt1-2 5252 - SdSonSt2-3 5353 - SdSonSt3-4 5454 - SdSon1St 5555 - SdSon2St 5656 - SdSon3St 5757 - SdSon4St 5858 - SdBlSt1-3 5959 - SdBlSt1-2 6060 - SdBlSt2-3 6161 - SdBlSt1/3 6262 - SdBl1St 6363 - SdBl2St 6464 - SdBl3St 6565 - SdBhSt1-3 6666 - SdBhSt1-2 6767 - SdBhSt2-3 6868 - SdBhSt1/3 6969 - SdBh1St 7070 - SdBh2St 7171 - SdBh3St 7272 - SdLdwSt1-4 7373 - SdLdwSt1-3 7474 - SdLdwSt2-4 7575 - SdLdwSt1-2 7676 - SdLdwSt2-3 7777 - SdLdwSt3-4 7878 - SdLdw1St 7979 - SdLdw2St 8080 - SdLdw3St 8181 - SdLdw4St 8282 - SdHip1St 8383 - SdRkOp1St 8484 - SdRkMte1St 8585 - SdRkRim1St 8686 - SdRkOp2St 8787 - SdRkMte2St 8888 - SdRkRim2St 8989 - SdRkFlmSt 9090 - SdRkRolSt 9191 - SdRkOp1St 9292 - SdRkRolDSt 9393 - SdRkOp2St 9494 - SnLvRolSt 9595 - SdNm3St 9696 - - - - BdNmSt1-2 2424 - BdNm1St 2525 - BdNm2St 2626 - BdNmL1-2 2727 - BdFkSt1-2 2828 - BdFk1St 2929 - BdFk2St 3030 - BdHiSt 3131 - BdLoSt 3232 - BdHSonSt 3333 - BdLSonSt 3434 - BdFkSonSt 3535 - BdRk1St 3636 - BdRk2St 3737 - BdDry1 3838 - BdDry2 3939 - BdPop 4040 - BdVar1 4141 - BdVar2 4242 - BdRoom1 4343 - BdRoom2 4444 - BdRoom3 4545 - BdGate 4646 - BdFXGate 4747 - BdT9-1 4848 - BdT9-2 4949 - BdT9-3 5050 - BdT9-4 5151 - BdT9Hd1 5252 - BdT9Hd2 5353 - BdT9Hd3 5454 - BdT8-1 5555 - BdT8-2 5656 - BdT8-3 5757 - BdAnSm 5858 - BdAnCR 5959 - BdHuman1 6060 - BdHuman2 6161 - BdBlip 6262 - BdBlpHd 6363 - BdJngl1 6464 - BdJngl2 6565 - BdJngl3 6666 - BdD&B1 6767 - BdD&B2 6868 - BdR&B1 6969 - BdR&B2 7070 - BdHipDp 7171 - BdBrkDp 7272 - BdBreak1 7373 - BdBreak2 7474 - BdBreakHvy 7575 - BdBreakHrd 7676 - BdDist1 7777 - BdDist2 7878 - BdDist3 7979 - BdDist4 8080 - BdDist5 8181 - BdDistRM 8282 - Bd+HH 8383 - BdFxHmr 8484 - BdZapHrd 8585 - BdZapMid 8686 - BdSus 8787 - BdTekPower 8888 - BdHardLong 8989 - BdATite 9090 - BdAnHard 9191 - BdLofi 9292 - BdThkSkn 9393 - BdSlimy 9494 - BdSlimy 9595 - BdSlimy 9696 - - - - BdT9-1 2424 - BdT9-1 2525 - BdT9-2 2626 - BdT9-3 2727 - BdT9-3 2828 - BdT9-4 2929 - BdT9Hd1 3030 - BdT9Hd2 3131 - BdT9Hd3 3232 - BdT9Hd3 3333 - BdHardLong 3434 - BdAnCR 3535 - BdT9-1 3636 - BdT9-2 3737 - BdT9-3 3838 - BdT9-4 3939 - BdT9Hd1 4040 - BdT9Hd2 4141 - BdT9Hd3 4242 - BdT8-1 4343 - BdT8-2 4444 - BdT8-3 4545 - BdAnSm 4646 - BdAnCR 4747 - BdHuman1 4848 - BdHuman2 4949 - BdBlip 5050 - BdBlpHd 5151 - BdJngl1 5252 - BdJngl2 5353 - BdJngl3 5454 - BdD&B1 5555 - BdD&B2 5656 - BdR&B1 5757 - BdR&B2 5858 - BdHipDp 5959 - BdBrkDp 6060 - BdBreak1 6161 - BdBreak2 6262 - BdBreakHvy 6363 - BdBreakHrd 6464 - BdDist1 6565 - BdDist2 6666 - BdDist3 6767 - BdDist4 6868 - BdDist5 6969 - BdDistRM 7070 - Bd+HH 7171 - BdFxHmr 7272 - BdZapHrd 7373 - BdZapMid 7474 - BdSus 7575 - BdTekPower 7676 - BdHardLong 7777 - BdATite 7878 - BdAnHard 7979 - BdLofi 8080 - BdThkSkn 8181 - BdSlimy 8282 - BdGate 8383 - BdFXGate 8484 - BdT9-1 8585 - BdT9-2 8686 - BdT9-3 8787 - BdT9-4 8888 - BdT9Hd1 8989 - BdT9Hd2 9090 - BdT9Hd3 9191 - BdBlpHd 9292 - BdR&B2 9393 - BdZapMid 9494 - BdHardLong 9595 - BdATite 9696 - - - - SdFx1 2424 - SdFx2 2525 - SdFx3 2626 - SdFx4 2727 - SdDist 2828 - SdCut 2929 - SdDodgH 3030 - SdDodgL 3131 - SdFM 3232 - SdSyn 3333 - SdHammer 3434 - SdLofi 3535 - SdT9-1 3636 - SdT9-2 3737 - SdT9-3 3838 - SdT9-4 3939 - SdT9-5 4040 - SdT9Gate 4141 - SdT8-1 4242 - SdT8-2 4343 - SdT8-3 4444 - SdT8-4 4545 - SdT8-5 4646 - SdAnSm 4747 - SdAnCR 4848 - SdHuman1 4949 - SdJngl1 5050 - SdJngl2 5151 - SdJngl3 5252 - SdJnglFx 5353 - SdD&B1 5454 - SdD&B2 5555 - SdD&B3 5656 - SdD&B4 5757 - SdR&B1 5858 - SdR&B1Rm 5959 - SdR&B2 6060 - SdHip1 6161 - SdHip2 6262 - SdHip3 6363 - SdHipGate 6464 - SdHipRm1 6565 - SdHipRm2 6666 - SdHipRm3 6767 - SdHipRm4 6868 - SdHipRm5 6969 - SdBreak2 7070 - SdBreakHvy 7171 - PlayFxGt1 7272 - PlayFxGt5 7373 - PlayFxGt12 7474 - PlayFxABa1 7575 - PlayFxABa8 7676 - PickNoise3 7777 - Scratch H 7878 - Scratch L 7979 - ScratchDwn 8080 - ScratchHiF 8181 - ScratchStp 8282 - ScratchSpn 8383 - Ripper 8484 - NzBurst 8585 - Zap1 8686 - Zap2 8787 - HiQ1 8888 - HiQ2 8989 - Bomb 9090 - FxGun1 9191 - Electer 9292 - HH Hit 9393 - Mother 9494 - HitOrch2 9595 - StabGiant 9696 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/muse/share/instruments/ZynAdd-1_4.idf b/muse/share/instruments/ZynAdd-1_4.idf deleted file mode 100644 index 1534b53d..00000000 --- a/muse/share/instruments/ZynAdd-1_4.idf +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/muse/share/instruments/emuproteus2000.idf b/muse/share/instruments/emuproteus2000.idf deleted file mode 100644 index d55fb28e..00000000 --- a/muse/share/instruments/emuproteus2000.idf +++ /dev/null @@ -1,1088 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/muse/share/instruments/gm.idf b/muse/share/instruments/gm.idf deleted file mode 100644 index 7cc0e7ef..00000000 --- a/muse/share/instruments/gm.idf +++ /dev/null @@ -1,209 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Switch General Midi mode on - 0x7e 0x7f 0x09 0x01 - - - - - diff --git a/muse/share/instruments/gs.idf b/muse/share/instruments/gs.idf deleted file mode 100644 index 070758ad..00000000 --- a/muse/share/instruments/gs.idf +++ /dev/null @@ -1,236 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Switch GS mode on - 0x41 0x10 0x42 0x12 0x40 0x00 0x7f 0x00 0x41 - - - - - diff --git a/muse/share/instruments/ns5r.idf b/muse/share/instruments/ns5r.idf deleted file mode 100644 index b51e6b80..00000000 --- a/muse/share/instruments/ns5r.idf +++ /dev/null @@ -1,568 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/muse/share/instruments/xg.idf b/muse/share/instruments/xg.idf deleted file mode 100644 index 29628e90..00000000 --- a/muse/share/instruments/xg.idf +++ /dev/null @@ -1,629 +0,0 @@ - - - - - - 7e 7f 09 01 - - - 43 10 4c 00 00 7e 00 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Switch XG mode on - 0x43 0x10 0x4c 0x00 0x00 0x7e 0x00 - - - - - diff --git a/muse/share/locale/CMakeLists.txt b/muse/share/locale/CMakeLists.txt deleted file mode 100644 index 76aa7660..00000000 --- a/muse/share/locale/CMakeLists.txt +++ /dev/null @@ -1,21 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -install_files( /share/${MusE_INSTALL_NAME}/locale .*\\.qm ) diff --git a/muse/share/locale/muse_de.qm b/muse/share/locale/muse_de.qm deleted file mode 100644 index 71b1c4ec..00000000 Binary files a/muse/share/locale/muse_de.qm and /dev/null differ diff --git a/muse/share/locale/muse_de.ts b/muse/share/locale/muse_de.ts deleted file mode 100644 index 092c41e1..00000000 --- a/muse/share/locale/muse_de.ts +++ /dev/null @@ -1,5804 +0,0 @@ - - - - - - - select Pointer Tool: -with the pointer tool you can: - select parts - move parts - copy parts - Zeigerwerkzeug auswählen - - - - sets amount of quantization: -0 - no quantization -100 - full quantization - Stärke der Quantisierung wählen - - - - Click this button to enable recording - Aufnahmebereitschaft einschalten - - - - Default - - - - - Refrain - - - - - Bridge - - - - - Intro - - - - - Coda - - - - - Chorus - - - - - Solo - - - - - Brass - - - - - Percussion - - - - - Drums - Drums - - - - Guitar - - - - - Bass - - - - - Flute - - - - - Strings - - - - - Keyboard - - - - - Piano - - - - - Saxophon - - - - - @default - - - select Pencil Tool: -with the pencil tool you can: - create new parts - modify length of parts - Stiftwerkzeug auswählen - - - - select Delete Tool: -with the delete tool you can delete parts - Löschwerkzeug auswählen - - - - select Cut Tool: -with the cut tool you can split a part - Schere auswählen - - - - select Glue Tool: -with the glue tool you can glue two parts - Kleberwerkzeug auswählen - - - - select Quantize Tool: -insert display quantize event - Quantisierungstool auswählen - - - - select Drawing Tool - Zeichenstift auswählen - - - - select Muting Tool: -click on part to mute/unmute - Stummschalttool auswählen - - - - pointer - Zeiger - - - - pencil - Stift - - - - eraser - Radiergummi - - - - cutter - Schere - - - - glue - Kleber - - - - quantize - Quantisierung - - - - draw - zeichnen - - - - mute parts - Parts stummschalten - - - - Off - Aus - - - - m - m - - - - mute - stumm - - - - s - s - - - - solo - solo - - - - Mo - Mo - - - - monitor - Monitor - - - - Dr - Dr - - - - use drum map - Drummap benutzen - - - - off - aus - - - - aR - aR - - - - automation read - Automation lesen - - - - aW - aW - - - - automation write - Automation schreiben - - - - sync - Sync - - - - send sync events - Sync Events senden - - - - 1/2 channel - 1/2 Channel - - - - oR - oR - - - - output routing - Output Routing - - - - iR - iR - - - - input routing - Input Routing - - - - don't quantize notes above this tick limit - Noten über dieser Tick-Grenze nicht quantisieren - - - - quantize also note len as default - Notenlänge auch quantisieren - - - - Channels - Channel - - - - presets (*.pre *.pre.gz *.pre.bz2) - Voreinstellungen (*.pre *.pre.gz *.pre.bz2) - - - - All Files (*) - Alle Dateien(*) - - - - Click this button to stop playback - Stop Wiedergabe - - - - Click this button to start playback - Start Wiedergabe - - - - Click this button to rewind to start position - Zum Anfang zurückspulen - - - - Click this button to rewind - Zurückspulen - - - - Click this button to forward current play position - Vorspulen - - - - Click this button to select a new project -You can also select the <b>Open command</b> from the Project menu. - Ein neues Projekt auswählen. - - - - Click this button to save the project you are editing. -You can also select the Save command from the Project menu. - Projekt sichern. - - - - loop between left mark and right mark - Loop zwischen linker und rechter Marke - - - - record starts at left mark - Aufnahme startet an der linken Marke - - - - record stops at right mark - Aufnahme stoppt an der rechten Marke - - - - rewind to start position - Zum Anfang zurückspulen - - - - rewind current position - zurückspulen - - - - move current position - Aktuelle Position verschieben - - - - stop sequencer - Stop Sequencer - - - - start sequencer play - Start Sequencer Wiedergabe - - - - to record press record and then play - Um Aufzunehmen erst "Aufnahme" und dann "Wiedergabe" drücken - - - - send note off to all midi channels - Sende "Note Off" an alle Midi Kanäle - - - - Bar - Takt - - - - Midi - Midi - - - - Add Midi Track - Midi Spur hinzufügen - - - - Add Midi Output - Midi Ausgang hinzufügen - - - - Add Midi Input - Midi Eingang hinzufügen - - - - Audio - Audio - - - - Add Wave Track - Audio Spur hinzufügen - - - - Add Audio Output - Audio Ausgang hinzufügen - - - - Add Audio Group - Audio Gruppe hinzufügen - - - - Add Audio Input - Audio Eingang hinzufügen - - - - MusE: create project directory - MusE: Projektverzeichnis erzeugen - - - - MusE: create template directory - MusE: Templateverzeichnis erzeugen - - - - Cannot find project <%1> - Kann Projekt <%1> nicht finden - - - - MusE: load Project - MusE: Projekt laden - - - - Transport: Start playback from current location - Transport: Wiedergabe von aktueller Position starten - - - - Transport: Toggle metronome - Transport: Metronom ein/aus - - - - Transport: Stop Playback - Transport: Wiedergabe beenden - - - - Transport: Play, Stop, Rewind - Transport: Wiedergeben, Beenden, Zurückspulen - - - - Transport: Goto left marker - Transport: zum linken Marker positionieren - - - - Transport: Goto right marker - Transport: zum rechten Marker positionieren - - - - Transport: Toggle Loop section - Transport: toogle Schleifenauswahl - - - - Transport: Toggle Record - Transport: Aufnahme ein/aus - - - - Edit: Copy - Bearbeiten: Kopieren - - - - Edit: Undo - Bearbeiten: Rückgängig - - - - Edit: Redo - Bearbeiten: Wiederherstellen - - - - Edit: Cut - Bearbeiten: Ausschneiden - - - - Edit: Paste, - Bearbeiten: Einfügen, - - - - Edit: Delete - Bearbeiten: Löschen - - - - Open - Öffnen - - - - Save - Sichern - - - - File: Open recent file - Datei: letze Datei öffnen - - - - File: Import midi file - Datei: Midifile importieren - - - - File: Export midi file - Datei: Midifile exportieren - - - - File: Import audio file - Datei: Audiofile importieren - - - - File: Quit MusE - Datei: MusE beenden - - - - Edit: Select parts on track - Bearbeiten: Parts der Spur auswählen - - - - Open pianoroll - Pianoroll öffnen - - - - Open drumeditor - Drumeditor öffnen - - - - Open listeditor - Listeditor öffnen - - - - Open graphical mastertrack editor - grafischen Mastertrack Editor öffnen - - - - Open list mastertrack editor - Mastertrack Listeneditor öffnen - - - - Add midi track - Miditrack zufügen - - - - Add drum track - Drumtrack zufügen - - - - Add wave track - Wavetrack zufügen - - - - Add audio output - Audioausgang zufügen - - - - Add audio group - Audiogruppe zufügen - - - - Add audio input - Audioinput zufügen - - - - Structure: Global cut - Struktur: global ausschneiden - - - - Structure: Global insert - Struktur: globales Einfügen - - - - Structure: Global split - Struktur: globales Splitten - - - - Structure: Copy range - Struktur: Bereich kopieren - - - - Structure: Cut events - Struktur: Events ausschneiden - - - - View: Open mixer window - Ansicht: Mixer öffnen - - - - View: Toggle transport window - Ansicht: Transportfenster ein/aus - - - - View: Toggle bigtime window - Ansicht: Bigtimefenster ein/aus - - - - View: Open marker window - Ansicht: Markerfenster zeigen - - - - Settings: Follow song by page - Einstellungen: Song seitenweise folgen - - - - Settings: Follow song off - Einstellungen: Song nicht folgen - - - - Settings: Follow song continuous - Einstellungen: Song kontinuierlich folgen - - - - Settings: Configure shortcuts - Einstellungen: Abkürzungen konfigurieren - - - - Settings: Configure metronome - Einstellungen: Metronom konfigurieren - - - - Settings: Midi sync configuration - Einstellungen: Midisynchronisation konfigurieren - - - - Settings: Midi file export configuration - Einstellungen: Export Mididatei konfigurieren - - - - Settings: Midi ports / Soft Synth - Einstellungen: Midiports/Softsynthesizer - - - - Settings: Audio subsystem configuration - Einstellungen: Audio Subsystem konfigurieren - - - - Midi: Edit midi instruments - Midi: Midi Instrumente bearbeiten - - - - Midi: Midi remote control - Midi: Midi Fernsteuerung - - - - Midi: Reset midi - Midi: Reset Midi - - - - Midi: Init midi - Midi: Init Midi - - - - Midi: Midi local off - Midi: Midi lokal aus - - - - Audio: Bounce audio to track - Audio: Bounce Audio in Spur - - - - Audio: Bounce audio to file - Audio: Bounce audio in Datei - - - - Audio: Restart audio - Audio: Restart Audio - - - - Help: Open Manual - Hilfe: Manual aufschlagen - - - - Help: Toggle whatsthis mode - Hilfe: WasIstDas ein/aus - - - - Edit: Edit selected part - Bearbeiten: den selektierten Part bearbeiten - - - - Edit: Select nearest part on track above - Bearbeiten: den nächsten Part in der überliegenden Spur selektieren - - - - Edit: Add nearest part on track above - Bearbeiten: nächsten Part zur drüberliegenden Spur addieren - - - - Edit: Select nearest part on track below - Bearbeiten: nächsten Part auf unterer Spur selektieren - - - - Edit: Add nearest part on track below - Bearbeiten: nächsten Part auf untere Spur addieren - - - - Midi: Transpose - Midi: Transponieren - - - - Edit: Select all - Bearbeiten: Alles selektieren - - - - Edit: Select none - Bearbeiten: nichts selektieren - - - - Edit: Invert selection - Bearbeiten: Selektion umkehren - - - - Edit: Select events/parts inside locators - Bearbeiten: Part in Schleife selektieren - - - - Edit: Select events/parts outside locators - Bearbeiten: Parts außerhalb Schleife selektieren - - - - Edit: Select nearest part/event to the left - Bearbeiten: nächsten Part/Event links selektieren - - - - MusE: create instruments directory - - - - - Arranger - - - TrackInfo - SpurInfo - - - - Mix - Mix - - - - Config Tracklist - Spurliste konfigurieren - - - - all mute off - Stumm aus - - - - all solo off - Solo aus - - - - all autoRead off - Automation lesen aus - - - - all autoWrite off - Automation schreiben aus - - - - i - i - - - - Show Track Info - Spurinfo zeigen - - - - m - m - - - - Show Mixer Strip - Mixerstrip zeigen - - - - AudioStrip - - - Pre - Pre - - - - pre fader - post fader - Prefader - Postfader - - - - dB - dB - - - - record downmix - Downmix aufnehmen - - - - panorama - Panorama - - - - Pan - Pan - - - - Channel %1 - Kanal %1 - - - - MidiChannel - Midikanal - - - - Channel - Kanal - - - - Awl::MidiVolEntry - - - off - aus - - - - db - db - - - - Awl::VolEntry - - - off - aus - - - - BigTime - - - MusE: Bigtime - MusE: Bigtime - - - - CtrlDelegate - - - dB - dB - - - - off - aus - - - - CtrlDialog - - - controller name - Kontrollername - - - - flag if controller contains data - Flag: Controller enthält Daten - - - - other - andere - - - - CtrlEdit - - - Sel - Sel - - - - select controller - Kontroller auswählen - - - - remove controller view - Kontrolleranzeige entfernen - - - - CtrlListEditor - - - dB - dB - - - - DeicsOnzeGui - - - Save configuration - Konfiguration sichern - - - - Critical Error - Kritischer Fehler - - - - Cannot open file %1 - Kann Datei %1 nicht öffnen - - - - Parsing error for file %1 - Parse Fehler in Datei %1 - - - - Load category dialog - Kategoriedialog laden - - - - Load set dialog - Setdialog laden - - - - Save set dialog - Setdialog speichern - - - - New category - Neue Kategorie - - - - Delete category - Kategorie löschen - - - - Load category - Kategorie laden - - - - Save category - Kategorie speichern - - - - Load set - Set Laden - - - - Save set - Set Speichern - - - - Delete set - Set löschen - - - - New subcategory - Neue Subkategorie - - - - Delete subcategory - Subkategorie löschen - - - - Load subcategory - Subkategorie laden - - - - Save subcategory - Subkategorie speichern - - - - New preset - Neuer Preset - - - - Delete preset - Preset löschen - - - - Load preset - Preset laden - - - - Save preset - Preset speichern - - - - No more category supported - Keine Kategorien mehr unterstützt - - - - You can not add more categories - Es können keine Kategorien mehr hinzugefügt werden - - - - Do you really want to delete %1 ? - %1 wirklich löschen? - - - - &Yes - &Ja - - - - &No - &Nein - - - - No category selected - Keine Kategorie ausgewählt - - - - You must first select a category. - Es muss zunächst eine Kategorie gewählt werden. - - - - Replace or add - Ersetzen oder Zufügen - - - - %1 is supposed to be affected to the hbank number %2, but there is already one on this slot. - Do you want to replace it or to add it in the next free slot ? - - - - - &Replace - &Ersetzen - - - - &Add - &Zufügen - - - - Download error - Fehler beim Download - - - - There is no more free category slot. - Es gibt keinen freien Kategorieslot mehr. - - - - Save category dialog - Kategorie Sichern Dialog - - - - No more subcategory supported - Keine weiteren Subkategorien mehr - - - - You can not add more subcategories - Es können keine weiteren Subkategorien zugefügt werden - - - - No subcategory selected - Keine Subkategorie ausgewählt - - - - You must first select a subcategory. - Es muss zunächst eine Subkategorie ausgewählt werden. - - - - Load subcategory dialog - Subkategorie Laden Dialog - - - - %1 is supposed to be affected to the lbank number %2, but there is already one on this slot. - Do you want to replace it or to add it in the next free slot ? - - - - - There is no more free subcategory slot. - Kein weiterer Subkaegorie Slot verfügbar. - - - - Save subcategory dialog - Subkategorie Sichern Dialog - - - - No more preset supported - Keine weiteren Presets unterstützt - - - - You can not add more presets - Es könenn keine weiteren Presets zugefügt werden - - - - No preset selected - Kein Preset ausgewählt - - - - You must first select a preset. - Es muss zunächst ein Preset ausgewählt werden. - - - - Load preset dialog - Preset Laden Dialog - - - - %1 is supposed to be affected to the prog number %2, but there is already one on this slot. - Do you want to replace it or to add it in the next free slot ? - - - - - There is no more free preset slot. - Es gibt keinen weiteren freien Preset Slot. - - - - Save preset dialog - Preset Sichern Dialog - - - - Browse set dialog - Browse Set Dialog - - - - Browse image dialog - Browse Image Dialog - - - - DrumEdit - - - Delete Events - Events löschen - - - - &Functions - &Funktionen - - - - Set fixed length - Feste Länge setzen - - - - Modify Velocity... - Anschlag verändern... - - - - &Select - &Auswählen - - - - Select All - Alles Auswählen - - - - Select None - Nichts auswählen - - - - Invert - Invertieren - - - - Inside Loop - Innerhalb Schleife - - - - Outside Loop - Ausserhalb Schleife - - - - Drum Tools - Drum Werkzeuge - - - - Transport - Transport - - - - EditInstrument - - - MusE: Create file failed - - - - - MusE: Write File failed - MusE: kann nicht in Datei schreiben - - - - MusE: Save Instrument Definition - - - - - Instrument Definition (*.idf) - - - - - MusE: Enter new Category - - - - - Enter new Category: - - - - - MusE - - - - - The current Instrument contains unsaved data -Save Current Instrument? - - - - - &Save - &Sichern - - - - &Nosave - &Nicht Sichern - - - - &Abort - &Abbrechen - - - - EditToolBar - - - Edit Tools - Edit Werkzeuge - - - - EffectRack - - - effect rack - Effekt Rack - - - - move up - nach oben - - - - move down - nach unten - - - - remove - entfernen - - - - bypass - überbrücken - - - - show gui - GUI zeigen - - - - show native gui - Native GUI zeigen - - - - New Plugin - Neues Plugin - - - - New Aux Send - Neu: Aux Send - - - - Replace effect - Effekt ersetzen - - - - Do you really want to replace the effect %1? - Soll Effekt %1 wirklich ersetzt werden? - - - - &Yes - &Ja - - - - &No - &Nein - - - - ExportMidiDialog - - - Save - Sichern - - - - as smf midi file - als smf Midi File - - - - MusE: export midi smf file - MusE: in Midi smf Datei exportieren - - - - FLUIDGui - - - FLUID: open Soundfile - FLUID: Sounddatei öffnen - - - - Fluid: select Sound Font - Fluid: Soundfont auswählen - - - - FluidSynthGui - - - Choose soundfont - Soundfont auswählen - - - - FontSel - - - Size: - Größe: - - - - GateTime - - - MusE: Modify Gate Time - MusE: Gatezeit verändern - - - - GreendotButton - - - record - aufnehmen - - - - ListEdit - - - MusE: List Edit - MusE: List Editor - - - - Parts - PArts - - - - Controller - Kontroller - - - - MarkerView - - - MusE: Marker - MusE: Marker - - - - add marker - Marker zufügen - - - - Add Marker - Marker zufügen - - - - delete marker - Marker löschen - - - - Delete Marker - MArker löschen - - - - &Edit - &Editieren - - - - marker-tools - MArkerwerkzeuge - - - - edit tools - Edit Werkzeuge - - - - Bar:Beat:Tick - Bar:Beat:Tick - - - - Min:Sc:Fr:Sf - Min:Sc:Fr:Sf - - - - Lock - Lock - - - - Text - Text - - - - Marker Properties - Marker Eigenschaften - - - - MasterEdit - - - MusE: Mastertrack - MusE: Mastertrack - - - - edit tools - Edit Werkzeuge - - - - EnableTempomap - Tempomap einschalten - - - - Tempomap - Tempomap - - - - Enable use of tempo map - Tempomap benutzen - - - - Info - Info - - - - Cursor - Cursor - - - - Snap - Snap - - - - time at cursor position - Zeit an der Cursorposition - - - - tempo at cursor position - Tempo an der Cursorposition - - - - CurPos - CurPos - - - - tempo at current position - Tempo an der aktuellen Position - - - - time signature at current position - Taktart an der aktuellen Position - - - - MidiChannelInfo - - - Instrument Patch - Instrument Patch - - - - Midi Out Port - Midi Ausgang - - - - Midi Instrument - Midi Instrument - - - - MidiController - - - Velocity - Anschlag - - - - MidiEditor - - - &Edit - &Editieren - - - - Cut - Schneiden - - - - Copy - Kopieren - - - - Paste - Einfügen - - - - Play Events - Events spielen - - - - Step Record - Schrittaufnahme - - - - Midi Input - Midi Eingang - - - - Follow Song - Song folgen - - - - MidiInPortStrip - - - AlsaDevices - AlsaDevices - - - - MidiChannel - Midikanäle - - - - JackDevices - - - - - MidiOutPortStrip - - - MidiChannel - Midikanäle - - - - MidiDevices - Midigeräte - - - - AlsaDevices - AlsaDevices - - - - JackDevices - - - - - MidiPluginDialog - - - MusE: select midi plugin - MusE: Midiplugin auswählen - - - - File - Datei - - - - Name - Name - - - - Version - Version - - - - Description - Beschreibung - - - - Ok - Ok - - - - Cancel - Abbrechen - - - - MidiRack - - - midi effect rack - Midi Effekt Rack - - - - move up - nach oben - - - - move down - nach unten - - - - remove - entfernen - - - - bypass - überbrücken - - - - show gui - GUI zeigen - - - - new - Neu - - - - MidiStrip - - - VariationSend - VariationSend - - - - Var - Var - - - - ReverbSend - ReverbSend - - - - Rev - Rev - - - - ChorusSend - ChorusSend - - - - Cho - Cho - - - - Pan/Balance - Pan/Balance - - - - Pan - Pan - - - - Tracks - Spuren - - - - OutputPorts - Ausgänge - - - - MidiSyntiStrip - - - OutputPorts - Ausgänge - - - - Channel - Kanäle - - - - Input Ports - Eingänge - - - - MidiTimeDelegate - - - dB - dB - - - - off - aus - - - - MidiTrackInfo - - - Channel %1 - Kanal %1 - - - - Midi Port - Midiport - - - - MidiTrackerEditor - - - &View - &Zeigen - - - - MidiTracker Tools - MidiTracker Werkzeuge - - - - Panic - Panik - - - - Transport - Transport - - - - row features - Zeilen Features - - - - Row per measure - Zeilen per Takt - - - - Number of visible rows - Anzahl der sichtbaren Zeilen - - - - Quantize - - - - - MidiTransformerDialog - - - New - Neu - - - - MixdownFileDialog - - - MusE: set mixdown file name - MusE: Midxown Dateiname wählen - - - - Wave Files (*.wav);;All Files (*) - Wave Dateien (*.wav);;Alle Dateien (*) - - - - Mixer - - - MusE: Mixer - MusE: Mixer - - - - &Create - &Erzeugen - - - - &View - &Zeigen - - - - Routing - Routing - - - - Show Midi Tracks - Miditracks zeigen - - - - Show Midi Out Ports - Midiausgänge zeigen - - - - Show Midi In Ports - Midieingänge zeigen - - - - Show Wave Tracks - Audiospuren zeigen - - - - Show Output Tracks - Audioausgänge zeigen - - - - Show Group Tracks - Audiogruppen zeigen - - - - Show Input Tracks - Audioeingänge zeigen - - - - Show Synthesizer - Synthesizer zeigen - - - - MusE - - - MusE manual not found at: - MusE Handbuch nicht gefunden: - - - - MusE: Open Help - MusE: Hilfe öffnen - - - - to import a audio file you have first to selecta wave track - Um eine Wavedatei zu importieren, muß zunächst eine Wave-Zielspur ausgewählt werden - - - - Import Wave File - Wavedatei importieren - - - - Failed to start audio! - Audio Start scheitert! - - - - Was not able to start audio, check if jack is running. - - Audio konnte nicht gestartet werden, läuft JACK? - - - - - Und&o - Und&o - - - - undo last change to song - letzte Änderung rückgängig machen - - - - Re&do - Re&do - - - - redo last undo - letztes Undo rückgängig machen - - - - Loop - Schleife - - - - Punchin - Punchin - - - - Punchout - Punchout - - - - Record - Aufnehmen - - - - Panic - Panik - - - - &Open - &Öffnen - - - - &Save - &Sichern - - - - Pianoroll - Pianoroll - - - - MidiTracker - MidiTracker - - - - Project Buttons - Projekt Buttons - - - - Transport - Transport - - - - &Project - &Projekt - - - - Open &Recent - letzte P&rojekte öffnen - - - - Import Midifile - Midifile importieren - - - - Export Midifile - Midifile exportieren - - - - &Quit - &Quit - - - - &Edit - &Editieren - - - - C&ut - Schneiden - - - - &Copy - Kopieren - - - - &Paste - Einfügen - - - - &Delete Parts - Parts löschen - - - - Delete Selected Tracks - Markierte Spuren löschen - - - - Add Track - Spur zufügen - - - - Select - Auswählen - - - - Select &All - Alles auswählen - - - - &Deselect All - nichts auswählen - - - - Invert &Selection - Auswahl umkehren - - - - &Inside Loop - Innerhalb Schleife - - - - &Outside Loop - Ausserhalb Schleife - - - - All &Parts on Track - Alle Parts der Spur - - - - Drums - Drums - - - - List - Liste - - - - Mastertrack - Masterspur - - - - Project Properties - Projekt Eigenschaften - - - - Midi - Midi - - - - Modify Gate Time - Gatezeit ändern - - - - Modify Velocity - Anschlag verändern - - - - Crescendo - Crescendo - - - - Transpose - Transponieren - - - - Thin Out - Ausdünnen - - - - Erase Event - Event löschen - - - - Note Shift - Note Shift - - - - Move Clock - Zeit verschieben - - - - Copy Measure - Takt kopieren - - - - Erase Measure - Takt löschen - - - - Delete Measure - Takt löschen - - - - Create Measure - Takt erzeugen - - - - Mix Track - Spur mischen - - - - &View - Anzeigen - - - - Transport Panel - Transport Panel - - - - Bigtime window - Bigtime Window - - - - Mixer 1 - Mixer 1 - - - - Mixer 2 - Mixer 2 - - - - Marker - Marker - - - - &Structure - &Struktur - - - - Global Cut - Globaler Schnitt - - - - Global Insert - Global Einfügen - - - - Global Split - Global Splitten - - - - Copy Range - Bereich kopieren - - - - Cut Events - Events Schneiden - - - - &Midi - &Midi - - - - Edit Instrument - Instrument editieren - - - - Reset Instr. - Instrument zurücksetzen. - - - - Init Instr. - Instrument initialisieren. - - - - local off - lokal aus - - - - &Audio - &Audio - - - - Bounce to Track - Bounce nach Spur - - - - Bounce to File - Bounce in Datei - - - - Restart Audio - Audio restarten - - - - Setti&ngs - Einstellu&ngen - - - - Configure shortcuts - Shortcuts Konfigurieren - - - - follow song - Song folgen - - - - dont follow Song - Song nicht folgen - - - - follow page - Seitenweise folgen - - - - follow continuous - Kontinuierlich folgen - - - - Midi Sync - Midi Sync - - - - Midi File Export - Mididatei exportieren - - - - Preferences - Voreinstellungen - - - - &Help - &Hilfe - - - - &Manual - &Manual - - - - &MusE homepage - &MusE Homepage - - - - &Report Bug... - Fehler melden - - - - &About MusE - Ãœber MusE - - - - About&Qt - Ãœber &Qt - - - - What's &This? - Was ist das? - - - - Arranger - Arranger - - - - Cursor - Cursor - - - - Snap - Snap - - - - Len - Länge - - - - Pitch - Tonhöhe - - - - midi pitch - Midi Tonhöhe - - - - global midi pitch shift - Globale Midi Tonhöhe - - - - Tempo - Tempo - - - - midi tempo - Midi Tempo - - - - N - N - - - - MusE: new project - Muse: neues Projekt - - - - Cannot create project folder <%1> - Kann Projektverzeichnis <%1> nicht erzeugen - - - - Cannot open template file -%1 - Kann Template -%1 -nicht öffnen - - - - File <%1> read error - Datei <%1> Lesefehler - - - - MusE: Create tmp file failed - MusE: kann temporäre Datei nicht erzeugen - - - - MusE: Write File failed - MusE: kann nicht in Datei schreiben - - - - The current Project contains unsaved data -Save Current Project? - Das aktuelle Projekt enthält ungesicherte Daten. -Soll das Projekt gesichert werden? - - - - &Nosave - &Nicht Sichern - - - - &Abort - &Abbrechen - - - - Nothing to edit - Nichts zu bearbeiten - - - - MusE: Copy Range - MusE: Bereich kopieren - - - - not implemented - nicht implementiert - - - - MusE: Cut Events - MusE: Events ausschneiden - - - - MusE: Bounce - MusE: Bounce - - - - set left/right marker for bounce range - Linken/Rechten Marker für Bouncebereich setzen - - - - MusE: Bounce to Track - Bounce nach Spur - - - - more than one target track selected - mehr als eine Zielspur ausgewählt - - - - wrong target track type, -select wave track as target - falscher Typ für Zielspur, -eine Wavespur muß als Ziel selektiert werden - - - - no target track selected - keine Zielspur ausgewählt - - - - MusE: Bounce to File - Bounce in Datei - - - - no output track found - keine Ausgangsspur gefunden - - - - MusE: Import Midi - MusE: Midi importieren - - - - MusE: import midi file - MusE: Mididatei importieren - - - - reading midifile - - Mididatei lesen - - - - - -failed: - -fehlgeschlagen: - - - - Open Project - Projekt öffnen - - - - Save Project - Projekt sichern - - - - Transport: Goto Start - Transport: Zum Anfang - - - - rewind to start position - Zum Anfang zurückspulen - - - - Transport: Start playback from current location - Transport: Wiedergabe von aktueller Position starten - - - - start sequencer play - Start Sequencer Wiedergabe - - - - Transport: Stop Playback - Transport: Wiedergabe beenden - - - - Transport: Play, Stop, Rewind - Transport: Wiedergeben, Beenden, Zurückspulen - - - - Transport: Goto left marker - Transport: zum linken Marker positionieren - - - - Transport: Goto right marker - Transport: zum rechten Marker positionieren - - - - Transport: Toggle metronome - Transport: Metronom ein/aus - - - - Transport: Toggle Loop section - Transport: toogle Schleifenauswahl - - - - Transport: Toggle Record - Transport: Aufnahme ein/aus - - - - Edit: Copy - Bearbeiten: Kopieren - - - - Edit: Undo - Bearbeiten: Rückgängig - - - - Edit: Redo - Bearbeiten: Wiederherstellen - - - - Edit: Cut - Bearbeiten: Ausschneiden - - - - Edit: Paste, - Bearbeiten: Einfügen, - - - - Edit: Delete - Bearbeiten: Löschen - - - - Open - Öffnen - - - - Click this button to select a new project -You can also select the <b>Open command</b> from the Project menu. - Ein neues Projekt auswählen. - - - - Save - Sichern - - - - Click this button to save the project you are editing. -You can also select the Save command from the Project menu. - Projekt sichern. - - - - File: Open recent file - Datei: letze Datei öffnen - - - - File: Import midi file - Datei: Midifile importieren - - - - File: Export midi file - Datei: Midifile exportieren - - - - File: Import audio file - Datei: Audiofile importieren - - - - File: Quit MusE - Datei: MusE beenden - - - - Edit: Select parts on track - Bearbeiten: Parts der Spur auswählen - - - - Open pianoroll - Pianoroll öffnen - - - - Open drumeditor - Drumeditor öffnen - - - - Open listeditor - Listeditor öffnen - - - - Open graphical mastertrack editor - grafischen Mastertrack Editor öffnen - - - - Open list mastertrack editor - Mastertrack Listeneditor öffnen - - - - Add midi track - Miditrack zufügen - - - - Add drum track - Drumtrack zufügen - - - - Add wave track - Wavetrack zufügen - - - - Add audio output - Audioausgang zufügen - - - - Add audio group - Audiogruppe zufügen - - - - Add audio input - Audioinput zufügen - - - - Structure: Global cut - Struktur: global ausschneiden - - - - Structure: Global insert - Struktur: globales Einfügen - - - - Structure: Global split - Struktur: globales Splitten - - - - Structure: Copy range - Struktur: Bereich kopieren - - - - Structure: Cut events - Struktur: Events ausschneiden - - - - View: Open mixer window - Ansicht: Mixer öffnen - - - - View: Toggle transport window - Ansicht: Transportfenster ein/aus - - - - View: Toggle bigtime window - Ansicht: Bigtimefenster ein/aus - - - - View: Open marker window - Ansicht: Markerfenster zeigen - - - - Settings: Follow song by page - Einstellungen: Song seitenweise folgen - - - - Settings: Follow song off - Einstellungen: Song nicht folgen - - - - Settings: Follow song continuous - Einstellungen: Song kontinuierlich folgen - - - - Settings: Configure shortcuts - Einstellungen: Abkürzungen konfigurieren - - - - Settings: Configure metronome - Einstellungen: Metronom konfigurieren - - - - Settings: Midi sync configuration - Einstellungen: Midisynchronisation konfigurieren - - - - Settings: Midi file export configuration - Einstellungen: Export Mididatei konfigurieren - - - - Settings: Midi ports / Soft Synth - Einstellungen: Midiports/Softsynthesizer - - - - Settings: Audio subsystem configuration - Einstellungen: Audio Subsystem konfigurieren - - - - Midi: Edit midi instruments - Midi: Midi Instrumente bearbeiten - - - - Midi: Midi remote control - Midi: Midi Fernsteuerung - - - - Midi: Reset midi - Midi: Reset Midi - - - - Midi: Init midi - Midi: Init Midi - - - - Midi: Midi local off - Midi: Midi lokal aus - - - - Audio: Bounce audio to track - Audio: Bounce Audio in Spur - - - - Audio: Bounce audio to file - Audio: Bounce audio in Datei - - - - Audio: Restart audio - Audio: Restart Audio - - - - Help: Open Manual - Hilfe: Manual aufschlagen - - - - Help: Toggle whatsthis mode - Hilfe: WasIstDas ein/aus - - - - Edit: Edit selected part - Bearbeiten: den selektierten Part bearbeiten - - - - Edit: Select nearest part on track above - Bearbeiten: den nächsten Part in der überliegenden Spur selektieren - - - - Edit: Add nearest part on track above - Bearbeiten: nächsten Part zur drüberliegenden Spur addieren - - - - Edit: Select nearest part on track below - Bearbeiten: nächsten Part auf unterer Spur selektieren - - - - Edit: Add nearest part on track below - Bearbeiten: nächsten Part auf untere Spur addieren - - - - Midi: Transpose - Midi: Transponieren - - - - Edit: Select all - Bearbeiten: Alles selektieren - - - - Edit: Select none - Bearbeiten: nichts selektieren - - - - Edit: Invert selection - Bearbeiten: Selektion umkehren - - - - Edit: Select events/parts inside locators - Bearbeiten: Part in Schleife selektieren - - - - Edit: Select events/parts outside locators - Bearbeiten: Parts außerhalb Schleife selektieren - - - - Edit: Select nearest part/event to the left - Bearbeiten: nächsten Part/Event links selektieren - - - - MuseApplication - - - Transport: Goto Start - Transport: Zum Anfang - - - - Goto Start - - - - - rewind to start position - Zum Anfang zurückspulen - - - - Transport: Toggle Loop section - Transport: toogle Schleifenauswahl - - - - Loop - Schleife - - - - loop between left mark and right mark - Loop zwischen linker und rechter Marke - - - - Transport: Start playback from current location - Transport: Wiedergabe von aktueller Position starten - - - - Play - - - - - start sequencer play - Start Sequencer Wiedergabe - - - - Transport: Play, Stop, Rewind - Transport: Wiedergeben, Beenden, Zurückspulen - - - - Transport: Stop Playback - Transport: Wiedergabe beenden - - - - Stop - - - - - stop sequencer - Stop Sequencer - - - - Transport: Goto left marker - Transport: zum linken Marker positionieren - - - - Transport: Goto right marker - Transport: zum rechten Marker positionieren - - - - Transport: Toggle metronome - Transport: Metronom ein/aus - - - - Transport: Toggle Record - Transport: Aufnahme ein/aus - - - - Record - Aufnehmen - - - - to record press record and then play - Um Aufzunehmen erst "Aufnahme" und dann "Wiedergabe" drücken - - - - Transport: Punch In - - - - - Punchin - Punchin - - - - record starts at left mark - Aufnahme startet an der linken Marke - - - - Transport: Punch Out - - - - - Punchout - Punchout - - - - record stops at right mark - Aufnahme stoppt an der rechten Marke - - - - Transport: Rewind - - - - - rewind - - - - - rewind current position - zurückspulen - - - - Transport: Forward - - - - - forward - - - - - move current position - Aktuelle Position verschieben - - - - Panic - Panik - - - - send note off to all midi channels - Sende "Note Off" an alle Midi Kanäle - - - - Edit: Undo - Bearbeiten: Rückgängig - - - - undo - - - - - undo last change to song - letzte Änderung rückgängig machen - - - - Edit: Redo - Bearbeiten: Wiederherstellen - - - - redo - - - - - redo last undo - letztes Undo rückgängig machen - - - - Edit: Cut - Bearbeiten: Ausschneiden - - - - Cut - Schneiden - - - - Edit: Copy - Bearbeiten: Kopieren - - - - Copy - Kopieren - - - - Edit: Paste, - Bearbeiten: Einfügen, - - - - Paste - Einfügen - - - - Edit: Delete - Bearbeiten: Löschen - - - - Delete - - - - - Open - Öffnen - - - - open project - - - - - Click this button to select a new project -You can also select the <b>Open command</b> from the Project menu. - Ein neues Projekt auswählen. - - - - Save - Sichern - - - - save project - - - - - Click this button to save the project you are editing. -You can also select the Save command from the Project menu. - Projekt sichern. - - - - File: Save as - Datei: Speichern als - - - - save project as... - - - - - Click this button to save a new copy of the project. - - - - - - File: Save as Template - - - - - save project as template - - - - - Click this button to save the project you are editing -for later use as a template. - - - - - File: Open recent file - Datei: letze Datei öffnen - - - - File: Import midi file - Datei: Midifile importieren - - - - File: Export midi file - Datei: Midifile exportieren - - - - File: Import audio file - Datei: Audiofile importieren - - - - File: Quit MusE - Datei: MusE beenden - - - - Quit MusE - - - - - Edit: Select parts on track - Bearbeiten: Parts der Spur auswählen - - - - All &Parts on Track - Alle Parts der Spur - - - - Open Pianoroll - - - - - Pianoroll - Pianoroll - - - - Start Pianoroll Editor - - - - - Open MidiTracker - - - - - MidiTracker - MidiTracker - - - - Start Midi Tracker - - - - - Open drumeditor - Drumeditor öffnen - - - - Drum Editor - - - - - Start Drum Editor - - - - - Open wave editor - - - - - Wave Editor - - - - - Open listeditor - Listeditor öffnen - - - - Properties - - - - - open Properties Editor - - - - - Open mastertrack editor - - - - - Mastertrack (Tempo) Editor - - - - - Start Mastertrack (Tempo) Editor - - - - - Add midi track - Miditrack zufügen - - - - Add drum track - Drumtrack zufügen - - - - Add wave track - Wavetrack zufügen - - - - Add audio output - Audioausgang zufügen - - - - Add audio group - Audiogruppe zufügen - - - - Add audio input - Audioinput zufügen - - - - Structure: Global cut - Struktur: global ausschneiden - - - - Structure: Global insert - Struktur: globales Einfügen - - - - Structure: Global split - Struktur: globales Splitten - - - - Structure: Copy range - Struktur: Bereich kopieren - - - - Structure: Cut events - Struktur: Events ausschneiden - - - - View: Open mixer 1 window - - - - - Mixer1 - - - - - Show Mixer 1 - - - - - View: Open mixer 2 window - - - - - Mixer2 - - - - - Show Mixer 2 - - - - - View: Toggle transport window - Ansicht: Transportfenster ein/aus - - - - Transport - Transport - - - - Show Transport Window - - - - - View: Toggle bigtime window - Ansicht: Bigtimefenster ein/aus - - - - BigTime - - - - - Show BigTime Window - - - - - View: Open marker window - Ansicht: Markerfenster zeigen - - - - Marker - Marker - - - - Show Marker List - - - - - Settings: Follow song by page - Einstellungen: Song seitenweise folgen - - - - Settings: Follow song off - Einstellungen: Song nicht folgen - - - - Settings: Follow song continuous - Einstellungen: Song kontinuierlich folgen - - - - Settings: Configure shortcuts - Einstellungen: Abkürzungen konfigurieren - - - - Settings: Configure metronome - Einstellungen: Metronom konfigurieren - - - - Settings: Midi sync configuration - Einstellungen: Midisynchronisation konfigurieren - - - - Settings: Midi file export configuration - Einstellungen: Export Mididatei konfigurieren - - - - Settings: Midi ports / Soft Synth - Einstellungen: Midiports/Softsynthesizer - - - - Settings: Audio subsystem configuration - Einstellungen: Audio Subsystem konfigurieren - - - - Midi: Edit midi instruments - Midi: Midi Instrumente bearbeiten - - - - Midi: Midi remote control - Midi: Midi Fernsteuerung - - - - Midi: Reset midi - Midi: Reset Midi - - - - Midi: Init midi - Midi: Init Midi - - - - Midi: Midi local off - Midi: Midi lokal aus - - - - Audio: Bounce audio to track - Audio: Bounce Audio in Spur - - - - Audio: Bounce audio to file - Audio: Bounce audio in Datei - - - - Audio: Restart audio - Audio: Restart Audio - - - - Help: Open Manual - Hilfe: Manual aufschlagen - - - - Help: Toggle whatsthis mode - Hilfe: WasIstDas ein/aus - - - - Edit: Edit selected part - Bearbeiten: den selektierten Part bearbeiten - - - - Edit: Select nearest part on track above - Bearbeiten: den nächsten Part in der überliegenden Spur selektieren - - - - Edit: Add nearest part on track above - Bearbeiten: nächsten Part zur drüberliegenden Spur addieren - - - - Edit: Select nearest part on track below - Bearbeiten: nächsten Part auf unterer Spur selektieren - - - - Edit: Add nearest part on track below - Bearbeiten: nächsten Part auf untere Spur addieren - - - - Midi: Transpose - Midi: Transponieren - - - - Transpose - Transponieren - - - - Edit: Select all - Bearbeiten: Alles selektieren - - - - Select All - Alles Auswählen - - - - Edit: Select none - Bearbeiten: nichts selektieren - - - - Deselect All - - - - - Edit: Invert selection - Bearbeiten: Selektion umkehren - - - - Invert Selection - - - - - Edit: Select events/parts inside locators - Bearbeiten: Part in Schleife selektieren - - - - Select Inside Loop - - - - - Edit: Select events/parts outside locators - Bearbeiten: Parts außerhalb Schleife selektieren - - - - Select Outside Loop - - - - - Edit: Select nearest part/event to the left - Bearbeiten: nächsten Part/Event links selektieren - - - - Edit: Add nearest part/event to the left to selection - - - - - Edit: Add nearest part/event to the right to selection - - - - - Edit: Set locators to selection - - - - - Edit: Increase pitch - - - - - Edit: Decrease pitch - - - - - Edit: Set fixed length on midi events - - - - - Set fixed length - Feste Länge setzen - - - - Quantize: Over Quantize - - - - - Over Quantize - Over Quantisieren - - - - Quantize: Note On Quantize - - - - - Note On Quantize - Note On Quantisieren - - - - Quantize: Note On/Off Quantize - - - - - Note On/Off Quantize - Note On/Off Quantisieren - - - - Quantize: Iterative Quantize - - - - - Iterative Quantize - Iteratives Quantisieren - - - - Quantize: Configure quant - - - - - Quantize: Modify Gate Time - - - - - Modify Gate Time - - - - - Quantize: Modify Velocity - - - - - Modify Velocity - Anschlag verändern - - - - Edit: Crescendo - - - - - Crescendo - Crescendo - - - - Edit: Thin Out - - - - - Thin Out - Ausdünnen - - - - Edit: Erase Event - - - - - Erase Event - Event löschen - - - - Edit: Note Shift - - - - - Note Shift - Note Shift - - - - Edit: Move Clock - - - - - Move Clock - Zeit verschieben - - - - Edit: Copy Measure - - - - - Copy Measure - Takt kopieren - - - - Edit: Erase Measure - - - - - Erase Measure - Takt löschen - - - - Edit: Delete Measure - - - - - Delete Measure - Takt löschen - - - - Edit: Create Measure - - - - - Create Measure - Takt erzeugen - - - - Edit: Change event color - - - - - Tool: Pointer - - - - - Pointer - - - - - select Pointer Tool: -with the pointer tool you can: - select parts - move parts - copy parts - Zeigerwerkzeug auswählen - - - - Tool: Pencil - - - - - Pencil - - - - - select Pencil Tool: -with the pencil tool you can: - create new parts - modify length of parts - Stiftwerkzeug auswählen - - - - Tool: Eraser - - - - - Eraser - - - - - select Delete Tool: -with the delete tool you can delete parts - Löschwerkzeug auswählen - - - - Tool: Scissor - - - - - Scissor - - - - - select Cut Tool: -with the cut tool you can split a part - Schere auswählen - - - - Tool: Glue - - - - - Glue - - - - - select Glue Tool: -with the glue tool you can glue two parts - Kleberwerkzeug auswählen - - - - Declone - - - - - Tool: Quantize - - - - - Quantize - - - - - select Quantize Tool: -insert display quantize event - Quantisierungstool auswählen - - - - Tool: Line Draw - - - - - Draw - - - - - select Drawing Tool - Zeichenstift auswählen - - - - Tool: Mute Parts - - - - - Mute - - - - - select Muting Tool: -click on part to mute/unmute - Stummschalttool auswählen - - - - Transport: Increase current position - - - - - Transport: Decrease current position - - - - - Quantize: Set quantize to 1/1 note - - - - - Quantize: Set quantize to 1/2 note - - - - - Quantize: Set quantize to 1/4 note - - - - - Quantize: Set quantize to 1/8 note - - - - - Quantize: Set quantize to 1/16 note - - - - - Quantize: Set quantize to 1/32 note - - - - - Quantize: Set quantize to 1/64 note - - - - - Quantize: Toggle triol quantization - - - - - Quantize: Toggle punctuation quantization - - - - - Quantize: Toggle punctuation quantization (2) - - - - - Insert - - - - - Insert Tempo - - - - - Insert Signature - - - - - Change Event Position - - - - - Edit Event Value - - - - - NoteInfo - - - Note Info - Noteninformation - - - - Start - Start - - - - Len - Länge - - - - Pitch - Tonhöhe - - - - Velo On - Anschlag - - - - Velo Off - Aus-Anschlag - - - - OutportCombo - - - Midi Output Port - Midi Ausgang - - - - PartCanvas - - - C&ut - Auss&chneiden - - - - &Copy - &Kopieren - - - - rename - Umbenennen - - - - color - Farbe - - - - delete - Löschen - - - - split - Splitten - - - - glue - Kleben - - - - de-clone - un-Klonen - - - - AutoFill... - Auto-Füllen... - - - - drums - Drums - - - - pianoroll - Pianoroll - - - - miditracker - Miditracker - - - - list - Liste - - - - wave edit - Wave bearbeiten - - - - MusE: Get auto fill loop len - MusE: Länge für Auto-Füll-Schleife - - - - Measures: - Takte: - - - - MusE: Change Part Name - MusE: Partname ändern - - - - PartName: - PartName: - - - - Rename - - - - - Color - - - - - PianoRoll - - - Delete Events - Events löschen - - - - &Select - &Selektieren - - - - Select &All - a&alles auswählen - - - - &Deselect All - nichts auswählen - - - - Invert &Selection - &Selektion invertieren - - - - &Inside Loop - &innerhalb Schleife - - - - &Outside Loop - ausserhalb Scheife - - - - &Config - &Konfigurieren - - - - event color - Eventfarbe - - - - blue - blau - - - - pitch colors - Tonhöhenfarbe - - - - velocity colors - Anschlagfarben - - - - &Functions - &Funktionen - - - - Over Quantize - Over Quantisieren - - - - Note On Quantize - Note On Quantisieren - - - - Note On/Off Quantize - Note On/Off Quantisieren - - - - Iterative Quantize - Iteratives Quantisieren - - - - Config Quant... - Quantisieren konfigurieren... - - - - Modify Gate Time - Gate Time verändern - - - - Modify Velocity - Anschlag verändern - - - - Crescendo - Crescendo - - - - Transpose - Transponieren - - - - Thin Out - Ausdünnen - - - - Erase Event - Event löschen - - - - Note Shift - Note Shift - - - - Move Clock - Zeit verschieben - - - - Copy Measure - Takt kopieren - - - - Erase Measure - Takt löschen - - - - Delete Measure - Takt löschen - - - - Create Measure - Takt erzeugen - - - - Pianoroll Tools - Pianoroll Werkzeuge - - - - Panic - Panik - - - - Transport - Transport - - - - PluginDialog - - - MusE: select plugin - MusE: Plugin auswählen - - - - Lib - Lib - - - - Label - Bezeichnung - - - - Name - Name - - - - AI - Al - - - - AO - AO - - - - CI - CI - - - - CO - CO - - - - IP - IP - - - - id - id - - - - Maker - Erzeuger - - - - Copyright - Copyright - - - - Ok - Ok - - - - Cancel - Abbrechen - - - - Mono and Stereo - Mono und Stereo - - - - Stereo - Stereo - - - - Mono - Mono - - - - Show All - Alle anzeigen - - - - Select which types of plugins should be visible in the list.<br>Note that using mono plugins on stereo tracks is not a problem, two will be used in parallell.<br>Also beware that the 'all' alternative includes plugins that probably not are usable by MusE. - - - - - Search in 'Label' and 'Name': - in "Label" und "Name" suchen: - - - - PluginGui - - - File Buttons - Dateiknöpfe - - - - Load Preset - Preset laden - - - - Save Preset - Preset sichern - - - - bypass plugin - Plugin überbrücken - - - - MusE: load preset - MusE: Preset laden - - - - MusE: save preset - MusE: Preset sichern - - - - PreferencesDialog - - - MusE: load image - MusE: Image laden - - - - ProjectDialog - - - MusE: create new folder - MusE: neuen Ordner erzeugen - - - - new folder: - neuer Ordner: - - - - QMenu - - - Add Midi Generator... - Midi Generator zufügen... - - - - Add Soft Synth... - Soft Synthesizer zufügen... - - - - QWidget - - - File - - Datei - - - - - -exists - -existiert - - - - MusE: write - MusE: schreiben - - - - Overwrite - Ãœberschreiben - - - - Quit - Beenden - - - - Open File - - Datei öffnen - - - - - -failed: - -fehlgeschlagen: - - - - MusE: Open File - MusE: Datei öffnen - - - - generic midi - generisch Midi - - - - copy - %1 -to - %2 - %1 nach %2 kopieren - - - - -converting sample rate -from %1 to %2 - -Samplerate von %1 nach %2 konvertieren - - - - Abort - Abbrechen - - - - create peakfile for - Peakfile erzeugen - - - - new - neu - - - - MusE: export midi file: - MusE: Mididatei exportieren: - - - - Cannot convert sysex string - - - - - Hex String too long (2048 bytes limit) - - - - - RecordButton - - - record - aufnehmen - - - - SS_PluginFront - - - Clear and unload effect - Effekt löschen und entladen - - - - Load effect - Effekt laden - - - - Toggle display of effect parameters - Anzeige der Effektparameter toggeln - - - - Turn effect on/off - Effekte Ein/Ausschalten - - - - ShortcutCaptureDialog - - - Ok - Ok - - - - Cancel - Abbrechen - - - - Shortcut conflicts with - Shortcut hat Konflikt mit - - - - Undefined - Undefiniert - - - - ShortcutConfig - - - Global - Global - - - - Arranger - Arranger - - - - Pianoroll - Pianoroll - - - - Drumeditor - Drumeditor - - - - List editor - List Editor - - - - List Mastertrack - List Mastertrack - - - - All categories - Alle Kategorien - - - - Transport: Start playback from current location - Transport: Wiedergabe von aktueller Position starten - - - - Transport: Toggle metronome - Transport: Metronom ein/aus - - - - Transport: Stop Playback - Transport: Wiedergabe beenden - - - - Transport: Play, Stop, Rewind - Transport: Wiedergeben, Beenden, Zurückspulen - - - - Transport: Goto left marker - Transport: zum linken Marker positionieren - - - - Transport: Goto right marker - Transport: zum rechten Marker positionieren - - - - Transport: Toggle Loop section - Transport: toogle Schleifenauswahl - - - - Transport: Toggle Record - Transport: Aufnahme ein/aus - - - - Edit: Copy - Bearbeiten: Kopieren - - - - Edit: Undo - Bearbeiten: Rückgängig - - - - Edit: Redo - Bearbeiten: Wiederherstellen - - - - Edit: Cut - Bearbeiten: Ausschneiden - - - - Edit: Paste, - Bearbeiten: Einfügen, - - - - Edit: Delete - Bearbeiten: Löschen - - - - File: New project - Datei: Neues Projekt - - - - File: Open from disk - Datei: von Platte öffnen - - - - File: Save project - Datei: Projekt sichern - - - - File: Open recent file - Datei: letze Datei öffnen - - - - File: Save as - Datei: Speichern als - - - - File: Load template - Datei: Vorlage laden - - - - File: Import midi file - Datei: Midifile importieren - - - - File: Export midi file - Datei: Midifile exportieren - - - - File: Import audio file - Datei: Audiofile importieren - - - - File: Quit MusE - Datei: MusE beenden - - - - Edit: Select parts on track - Bearbeiten: Parts der Spur auswählen - - - - Open pianoroll - Pianoroll öffnen - - - - Open drumeditor - Drumeditor öffnen - - - - Open listeditor - Listeditor öffnen - - - - Open graphical mastertrack editor - grafischen Mastertrack Editor öffnen - - - - Open list mastertrack editor - Mastertrack Listeneditor öffnen - - - - Open midi transformer - Miditransformer öffnen - - - - Add midi track - Miditrack zufügen - - - - Add drum track - Drumtrack zufügen - - - - Add wave track - Wavetrack zufügen - - - - Add audio output - Audioausgang zufügen - - - - Add audio group - Audiogruppe zufügen - - - - Add audio input - Audioinput zufügen - - - - Add audio aux - Audioaux zufügen - - - - Structure: Global cut - Struktur: global ausschneiden - - - - Structure: Global insert - Struktur: globales Einfügen - - - - Structure: Global split - Struktur: globales Splitten - - - - Structure: Copy range - Struktur: Bereich kopieren - - - - Structure: Cut events - Struktur: Events ausschneiden - - - - View: Open mixer window - Ansicht: Mixer öffnen - - - - View: Toggle transport window - Ansicht: Transportfenster ein/aus - - - - View: Toggle bigtime window - Ansicht: Bigtimefenster ein/aus - - - - View: Open marker window - Ansicht: Markerfenster zeigen - - - - Settings: Follow song by page - Einstellungen: Song seitenweise folgen - - - - Settings: Follow song off - Einstellungen: Song nicht folgen - - - - Settings: Follow song continuous - Einstellungen: Song kontinuierlich folgen - - - - Settings: Global configuration - Einstellungen: globale Einstellungen - - - - Settings: Configure shortcuts - Einstellungen: Abkürzungen konfigurieren - - - - Settings: Configure metronome - Einstellungen: Metronom konfigurieren - - - - Settings: Midi sync configuration - Einstellungen: Midisynchronisation konfigurieren - - - - Settings: Midi file export configuration - Einstellungen: Export Mididatei konfigurieren - - - - Settings: Appearance settings - Einstellungen: Aussehen - - - - Settings: Midi ports / Soft Synth - Einstellungen: Midiports/Softsynthesizer - - - - Settings: Audio subsystem configuration - Einstellungen: Audio Subsystem konfigurieren - - - - Midi: Edit midi instruments - Midi: Midi Instrumente bearbeiten - - - - Midi: Open midi input transform - Midi: Midi Eingangstransformator öffnen - - - - Midi: Open midi input filter - Midi: Midi Inputfilter öffnen - - - - Midi: Midi input transpose - Midi: Midi input tranponieren - - - - Midi: Midi remote control - Midi: Midi Fernsteuerung - - - - Midi: Random rhythm generator - Midi: Random rhythm generator - - - - Midi: Reset midi - Midi: Reset Midi - - - - Midi: Init midi - Midi: Init Midi - - - - Midi: Midi local off - Midi: Midi lokal aus - - - - Audio: Bounce audio to track - Audio: Bounce Audio in Spur - - - - Audio: Bounce audio to file - Audio: Bounce audio in Datei - - - - Audio: Restart audio - Audio: Restart Audio - - - - Automation: Mixer automation - Automation: Mixer Automation - - - - Automation: Take mixer snapshot - Automation: - - - - Wave editor - Wave Editor - - - - SimpleSynthGui - - - Load sample dialog - Sample Laden Dialog - - - - Song - - - Jack shutdown! - Jack Shutdown! - - - - Jack has detected a performance problem which has lead to -MusE being disconnected. -This could happen due to a number of reasons: -- a performance issue with your particular setup. -- a bug in MusE (or possibly in another connected software). -- a random hiccup which might never occur again. -- jack was voluntary stopped by you or someone else -- jack crashed -If there is a persisting problem you are much welcome to discuss it -on the MusE mailinglist. -(there is information about joining the mailinglist on the MusE - homepage which is available through the help menu) - -To proceed check the status of Jack and try to restart it and then . -click on the Restart button. - JACK hat ein Performance-Problem erkannt und MusE abgeklemmt. -Dies kann eine Reihe von Ursachen haben: - - ein Performance-Problem mit diesem Setup. - - ein Fehler in MusE oder einer anderen verbundenen Software - - ein zufaelliger Quirk, der nie wieder passiert. - - JACK wurde gestoppt - - JACK ist abgestuerzt - -Um weiterzumachen bitte JACK testen und neu starten, dann den Restart Knopf -drcken. - - - - SplitLayerGui - - - start pitch for split - Erster Ton fuer Split - - - - enable learn mode for start pitch - - - - - end pitch for split - - - - - enable learn mode for end pitch - - - - - pitch offset for split - - - - - start velocity for split - - - - - end velocity for split - - - - - velocity offset for split - - - - - TLSWidget - - - Remove Subtrack - - - - - Ctrl - - - - - Velocity - Anschlag - - - - Delete Controller - - - - - TLWidget - - - Copy Track - - - - - Show Gui - - - - - Add Subtrack - - - - - Midi Output Channel - - - - - TemplateDialog - - - MusE presets - - - - - User presets - - - - - TimeCanvas - - - Ctrl - - - - - Add Controller View - - - - - Toolbar1 - - - Solo - - - - - Cursor - Cursor - - - - Snap - Snap - - - - Quantize - - - - - To - - - - - All Events - - - - - Looped Ev. - - - - - Selected Ev. - - - - - Looped+Sel. - - - - - TrackComment - - - MusE: Track Comment - - - - - Track Comment: - - - - - TrackInfo - - - Track Type - - - - - Track Name - - - - - VAMGui - - - MusE: Load VAM Presets - - - - - MusE: Save VAM Presets - - - - - Velocity - - - MusE: Modify Velocity - - - - - WaveEdit - - - &File - - - - - &Edit - &Editieren - - - - Func&tions - - - - - &Gain - - - - - 200% - - - - - 150% - - - - - 75% - - - - - 50% - - - - - 25% - - - - - Other - - - - - Edit in E&xternal Editor - - - - - Mute Selection - - - - - Normalize Selection - - - - - Fade In Selection - - - - - Fade Out Selection - - - - - Reverse Selection - - - - - Select - - - - - Select &All - a&alles auswählen - - - - waveedit-tools - - - - - Transport - Transport - - - - pianoroll-tools - - - - - Solo - - - - - Cursor - Cursor - - - - WaveView - - - MusE - file size changed - - - - - When editing in external editor - you should not change the filesize -since it must fit the selected region. - -Missing data is muted - - - - diff --git a/muse/share/locale/muse_es.qm b/muse/share/locale/muse_es.qm deleted file mode 100644 index 536780a3..00000000 Binary files a/muse/share/locale/muse_es.qm and /dev/null differ diff --git a/muse/share/locale/muse_es.ts b/muse/share/locale/muse_es.ts deleted file mode 100644 index 366feb15..00000000 --- a/muse/share/locale/muse_es.ts +++ /dev/null @@ -1,11154 +0,0 @@ - - - - - - - Click this button to enable recording - Pulsa este bot� para habilitar la grabaci� - - - - sets amount of quantization: -0 - no quantization -100 - full quantization - selecciona la cantidad de cuantizaci�: -0 - sin cuantizar -100 - cuantizaci� completa - - - - select Pointer Tool: -with the pointer tool you can: - select parts - move parts - copy parts - selecciona la Herramienta de Puntero: -con la herramienta de puntero puedes: - seleccionar partes - mover partes - copiar partes - - - - Insert Note - Insertar nota - - - - Insert SysEx - Insertar sistema exclusivo - - - - Insert Ctrl - Insertar controlador - - - - Insert Meta - Insertar Meta - - - - Insert Channel Aftertouch - Insertar AfterTouch de canal - - - - Insert Key Aftertouch - Insertar AfterTouch de tecla - - - - Default - - - - - Refrain - - - - - Bridge - - - - - Intro - - - - - Coda - - - - - Chorus - Coro ;-) - - - - Solo - - - - - Brass - Metales - - - - Percussion - - - - - Drums - Percusi� - - - - Guitar - - - - - Bass - - - - - Flute - Flauta - - - - Strings - - - - - Keyboard - - - - - Piano - - - - - Saxophon - - - - - @default - - - Click this button to open a <em>new song</em>.<br>You can also select the <b>Open command</b> from the File menu. - Pulsa este bot� para abrir una <em>nueva canci�</em>Puedes usar tambi� el comando <b>Abrir</b> del me de archivo - - - - Click this button to save the song you are editing. You will be prompted for a file name. -You can also select the Save command from the File menu. - Pulsa este bot� para guardar la canci� que est� editando. Se te preguntar�por un nombre de archivo. -Puedes seleccionar tambi� el comando Guardar del men de Archivo - - - - Create New Song - Crea una nueva Canci� - - - - Click this button to stop playback - Pulsa este bot� para parar la reproducci� - - - - Click this button to start playback - Pulsa este bot� para iniciar la reproducci� - - - - Click this button to rewind to start position - Pulsa este bot� para regresar al principio - - - - Click this button to rewind - Pulsa este bot� para ir hacia atr� - - - - Click this button to forward current play position - Pulsa este bot� para adelantar la posici� de reproducci� - - - - don't quantize notes above this tick limit - no cuantices notas por encima de este l�ite de tick - - - - quantize also note len as default - cuantiza tambi� la longitud de la nota al valor por defecto - - - - loop between left mark and right mark - hace un bucle entre las marcas de izquierda y derecha - - - - record starts at left mark - la grabaci� comienza en la marca izquierda - - - - record stops at right mark - la grabaci� termina en la merca derecha - - - - rewind to start position - retrocede a la posici� de inicio - - - - rewind current position - retrasa la posici� actual - - - - move current position - mueve la posici� actual - - - - stop sequencer - para el secuenciador - - - - start sequencer play - inicia el secuenciador - - - - to record press record and then play - para grabar pulsa grabar y despu� reproducir - - - - send note off to all midi channels - envia un apagado de nota (note off) a todos los canales midi - - - - select Pencil Tool: -with the pencil tool you can: - create new parts - modify length of parts - selecciona la Herramienta de L�iz: -con la herramienta de l�iz puedes: - crear nuevas partes - modificar la longitud de las partes - - - - select Delete Tool: -with the delete tool you can delete parts - selecciona la Herramienta de Borrado: -con la herramienta de borrado puedes borrar partes - - - - select Cut Tool: -with the cut tool you can split a part - selecciona la Herramienta de Corte: -con la herramienta de core puedes partir una parte - - - - select Glue Tool: -with the glue tool you can glue two parts - selecciona la Herramienta de Pegado: -con la herramienta de pegado puedes unir dos partes - - - - select Score Tool: - - selecciona la Herramienta de Partitura: - - - - - select Quantize Tool: -insert display quantize event - selecciona la Herramianta de Cuantizaci�: -inserta un evento de cuantizaci� de visualizaci� - - - - select Drawing Tool - selecciona la Herramienta de Dibujo - - - - select Muting Tool: -click on part to mute/unmute - selecciona la Herramienta de Silenciar: -haz click en una parte para silenciar/des-silenciar - - - - pointer - puntero - - - - pencil - l�iz - - - - rubber - goma - - - - cutter - cortador - - - - score - partitura - - - - glue - pegamento - - - - quantize - cuantizador - - - - draw - dibujar - - - - mute parts - silenciar partes - - - - Off - Apagar - - - - presets (*.pre *.pre.gz *.pre.bz2) - preselecciones (*.pre *.pre.gz *.pre.bz2) - - - - All Files (*) - Todos los archivos (*) - - - - Add Midi Track - A�dir pista MIDI - - - - Add Wave Track - A�dir pista de audio - - - - Click this button to enable recording - Pulsa este bot� para habilitar la grabaci� - - - - m - m - - - - mute - silencio - - - - s - s - - - - solo - - - - - Mo - - - - - monitor - - - - - Dr - - - - - use drum map - - - - - off - apagado - - - - aR - - - - - automation read - - - - - aW - - - - - automation write - - - - - sync - - - - - send sync events - - - - - 1/2 channel - Canales 1/2 - - - - oR - - - - - output routing - ruteado de entrada - - - - iR - - - - - input routing - - - - - Channels - - - - - Bar - - - - - Midi - MIDI - - - - Add Midi Output - - - - - Add Midi Input - - - - - Audio - Audio - - - - Add Audio Output - - - - - Add Audio Group - - - - - Add Audio Input - - - - - MusE: create project directory - - - - - MusE: create template directory - - - - - Cannot find project <%1> - - - - - MusE: load Project - - - - - Open - Abrir - - - - Save - Guardar - - - - MusE: create instruments directory - - - - - Appearance - - - MusE: load image - MusE: carga imagen - - - - handle of transport window - gestor de la ventana de transporte - - - - track activity in arranger - actividad de tramos en el arreglador - - - - bigtime font color - color de fuente bigtime - - - - bigtime background color - color de fondo de bigtime - - - - waveedit background color - color de fondo de edici� de onda - - - - AppearanceDialogBase - - - MusE: Appearance settings - MusE: Configuraci� de apariencia - - - - Apply - Aplicar - - - - Ok - Aceptar - - - - Cancel - Cancelar - - - - Arranger - Arreglador - - - - Parts - Partes - - - - show frames - mostrar frames - - - - show names - mostrar nombres - - - - show events - mostrar eventos - - - - show Cakewalk Style - mostrar al estilo de Cakewalk - - - - Events - Eventos - - - - note on - nota on - - - - poly pressure - presi� polif�ica - - - - controller - controlador - - - - aftertouch - aftertouch - - - - pitch bend - pitch bend - - - - program change - cambio de programa - - - - special - especial - - - - Background picture - Imagen de fondo - - - - bg - fondo - - - - select... - selecciona... - - - - show snap grid - muestra la rejilla de captura - - - - Colors - Colores - - - - Items - Objetos - - - - selected - seleccionado - - - - current: - actual: - - - - change... - cambia... - - - - dynamic colors for track activity in arranger - colores din�icos para actividad en el arreglador - - - - Style/Fonts - Estilo/Tipografia - - - - QT Theme - tema QT - - - - Windows - Ventanas - - - - MusE - MusE - - - - Metal - Metal - - - - Norwegian Wood - Madera Noruega - - - - Platinum - Platino - - - - CDE - CDE - - - - Motif - Motif - - - - Motif Plus - Motif Plus - - - - Fonts - Tipografia - - - - Family - Familia - - - - Size - Tama� - - - - Font 1 - Tipografia 1 - - - - Font 2 - Tipografia 2 - - - - Font 3 - Tipografia 3 - - - - Font 0 - Tipografia 0 - - - - Bold - Negrita - - - - Italic - Cursiva - - - - ... - ... - - - - Font 4 - Tipografia 4 - - - - Font 5 - Tipografia 5 - - - - S - S - - - - R - R - - - - Arranger - - - Cursor - Cursor - - - - Snap - Snap - - - - Len - Longitud - - - - NO - No - - - - TrackInfo - Informaci� de pista - - - - Track - Pista - - - - Type - Tipo - - - - midi song type - tipo de canci� midi - - - - Pitch - Tono - - - - midi pitch - tono midi - - - - global midi pitch shift - desplazamiento de tono midi - - - - Tempo - Tempo - - - - midi tempo - tempo midi - - - - O-Port - Port de Salida - - - - Arranger - Arreglador - - - - Off - apagado - - - - Bar - comp� - - - - GM - GM - - - - GS - GS - - - - XG - XG - - - - N - N - - - - R - R - - - - A - A - - - - M - M - - - - S - S - - - - C - C - - - - Ch - Ch - - - - T - T - - - - Master - Maestro - - - - Group A - Grupo A - - - - Group B - Grupo B - - - - Group C - Grupo C - - - - Group D - Grupo D - - - - Mix - Mezcla - - - - Config Tracklist - - - - - all mute off - - - - - all solo off - - - - - all autoRead off - - - - - all autoWrite off - - - - - i - - - - - Show Track Info - - - - - m - m - - - - Show Mixer Strip - - - - - AudioConfBase - - - MusE: Audio Configuration - MusE: Configuraci� de Audio - - - - &Apply - &Aplicar - - - - &OK - C&orrecto - - - - &Cancel - &Cancelar - - - - Audio Parameters - Par�etros de Audio - - - - 32 - 32 - - - - 64 - 64 - - - - 128 - 128 - - - - 256 - 256 - - - - 512 - 512 - - - - 1024 - 1024 - - - - 2048 - 2048 - - - - 4096 - 4096 - - - - Frame Size: - Tama� de ventana: - - - - Delay: - Retardo: - - - - Sample Rate: - Velocidad de muestreo: - - - - 44100 - 44100 - - - - 48000 - 48000 - - - - 96000 - 96000 - - - - Audio Driver - Controlador de Audio - - - - Use Alsa - Usa Alsa - - - - Use JACK - Usa Jack - - - - No Audio - Sin Audio - - - - Status: - Estado: - - - - TextLabel6 - EtiquetadeTexto16 - - - - AudioMixerApp - - - 1/2 channel - Canales 1/2 - - - - pre fader - post fader - pre fader - port fader - - - - record - grabar - - - - mute - silencio - - - - pre fader listening - monitorizar pre fader - - - - record downmix - downmix de grabaci� - - - - off - apagado - - - - output routing - ruteado de entrada - - - - &Config - &Configuraci� - - - - Add Input Strip - A�dir canal de entrada - - - - S - S - - - - Pre - Pre - - - - dB - dB - - - - MusE: Audio Mixer - MusE: Mezclador de audio - - - - Inputs - Entradas - - - - Synthi - Entrada de sintetizador - - - - Tracks - Pistas - - - - Groups - Grupos - - - - Master - Maestro - - - - Group A - Grupo A - - - - Group B - Grupo B - - - - Group C - Grupo C - - - - Group D - Grupo D - - - - AudioStrip - - - off - apagado - - - - Pan - Bal - - - - S - S - - - - 1/2 channel - Canales 1/2 - - - - Pre - Pre - - - - pre fader - post fader - pre fader - port fader - - - - dB - dB - - - - record - grabar - - - - mute - silencio - - - - record downmix - downmix de grabaci� - - - - pre fader listening - monitorizar pre fader - - - - output routing - ruteado de entrada - - - - panorama - - - - - Channel %1 - - - - - MidiChannel - - - - - Channel - Canal - - - - Awl::MidiVolEntry - - - off - apagado - - - - db - - - - - Awl::VolEntry - - - off - apagado - - - - BigTime - - - MusE: Bigtime - MusE: Big Time - - - - ClipListEdit - - - MusE: Clip List Editor - MusE: Editor de lista de clips - - - - ClipListEditorBase - - - MusE: ClipList - MusE: Lista de Clips - - - - Name - Nombre - - - - Refs - Referencias - - - - Start - Inicio - - - - Len - Longitud - - - - Data - Datos - - - - Clip Properties - Propiedades del Clip - - - - Pos: - Posici�: - - - - Len: - Longitud: - - - - CommentBase - - - Form1 - Form1 - - - - Track Comment - Comentario de la pista - - - - Track 1 - Pista 1 - - - - ConfigMidiCtrlBase - - - &Cancel - &Cancelar - - - - ConfigMidiFileBase - - - &Cancel - &Cancelar - - - - 96 - 96 - - - - 192 - 192 - - - - 384 - 384 - - - - Enable extended smf format - Habilita el formato extendido de smf - - - - ConfigTrackListBase - - - Up - Arriba - - - - Down - Abajo - - - - &Cancel - &Cancelar - - - - CtrlDelegate - - - dB - dB - - - - off - apagado - - - - CtrlDialog - - - controller name - - - - - flag if controller contains data - - - - - CtrlEdit - - - Sel - Sel - - - - select controller - selecciona controlador - - - - CtrlListEditor - - - dB - dB - - - - CtrlPanel - - - select controller - selecciona controlador - - - - remove panel - quitar panel - - - - other ... - otro ... - - - - Sel - Sel - - - - x - x - - - - Velocity - Velocidad - - - - Pitch - Tono - - - - DeicsOnzeGui - - - Save configuration - - - - - Critical Error - - - - - Cannot open file %1 - - - - - Parsing error for file %1 - - - - - Load category dialog - - - - - Load set dialog - - - - - Save set dialog - - - - - New category - - - - - Delete category - - - - - Load category - - - - - Save category - - - - - Load set - - - - - Save set - - - - - Delete set - - - - - New subcategory - - - - - Delete subcategory - - - - - Load subcategory - - - - - Save subcategory - - - - - New preset - - - - - Delete preset - - - - - Load preset - - - - - Save preset - - - - - No more category supported - - - - - You can not add more categories - - - - - Do you really want to delete %1 ? - - - - - &Yes - - - - - &No - - - - - No category selected - - - - - You must first select a category. - - - - - Replace or add - - - - - %1 is supposed to be affected to the hbank number %2, but there is already one on this slot. - Do you want to replace it or to add it in the next free slot ? - - - - - &Replace - - - - - &Add - - - - - Download error - - - - - There is no more free category slot. - - - - - Save category dialog - - - - - No more subcategory supported - - - - - You can not add more subcategories - - - - - No subcategory selected - - - - - You must first select a subcategory. - - - - - Load subcategory dialog - - - - - %1 is supposed to be affected to the lbank number %2, but there is already one on this slot. - Do you want to replace it or to add it in the next free slot ? - - - - - There is no more free subcategory slot. - - - - - Save subcategory dialog - - - - - No more preset supported - - - - - You can not add more presets - - - - - No preset selected - - - - - You must first select a preset. - - - - - Load preset dialog - - - - - %1 is supposed to be affected to the prog number %2, but there is already one on this slot. - Do you want to replace it or to add it in the next free slot ? - - - - - There is no more free preset slot. - - - - - Save preset dialog - - - - - Browse set dialog - - - - - Browse image dialog - - - - - DeicsOnzeGuiBase - - - Preset - Preselecci� - - - - LFO - LFO - - - - Speed - Velocidad - - - - Volume - Volumen - - - - Detune - Desafinaci� - - - - Reverb - Reverberaci� - - - - Pitch - Tono - - - - After Touch - After Touch - - - - Sustain - Sostenido - - - - Transpose - Transponer - - - - Save - Guardar - - - - Load - Cargar - - - - Text - Texto - - - - DrumEdit - - - Load Map - Carga Mapa - - - - Save Map - Guarda Mapa - - - - &Edit - &Editar - - - - Cut - Cortar - - - - Copy - Copiar - - - - Paste - Pegar - - - - Delete Events - Borrar Eventos - - - - Select All - Seleccionar todo - - - - Select None - Deseleccionar - - - - Invert - Invertir - - - - Inside Loop - Bucle interior - - - - Outside Loop - Bucle exterior - - - - &Select - &Seleccionar - - - - Step Record - Parar Grabaci� - - - - Midi Input - Entrada MIDI - - - - Add Controller View - A�dir Controlador - - - - M - M - - - - Sound - Sonido - - - - QNT - QNT - - - - E-Note - Nota-E - - - - Len - Longitud - - - - A-Note - Nota-A - - - - Ch - Ch - - - - Port - Puerto - - - - LV1 - VL1 - - - - LV2 - VL2 - - - - LV3 - VL3 - - - - LV4 - VL4 - - - - &File - &Fichero - - - - Load Drummap - Cargar mapa de percusi� - - - - Store Drummap - Guardar mapa de percusi� - - - - ctrl - control - - - - drummaps - mapas de percusi� - - - - Muse: Load Drum Map - MusE: Cargar mapa de percusi� - - - - MusE: Store Drum Map - MusE: Guardar mapa de percusi� - - - - &Functions - - - - - Drum Tools - - - - - Transport - - - - - EditCAfterDialog - - - Time Position - Posici� de tiempo - - - - Pressure - Presi� - - - - MusE: Enter Channel Aftertouch - MusE: Introduce el AfterTouch del canal - - - - EditCtrl14Dialog - - - Time Position - Posici� de tiempo - - - - Controller-H - Controlador-H - - - - Controller-L - Controlador-L - - - - Value - Valor - - - - MusE: Enter Controller14 Event - MusE: Introduce el evento del controlador 14 - - - - EditCtrl7Dialog - - - Time Position - Posici� de tiempo - - - - Controller - Controlador - - - - Value - Valor - - - - MusE: Enter Controller Event - MusE: Introduce el evento del controlador - - - - EditCtrl7DialogBase - - - MusE: Enter Controller - MusE: Introduce controlador - - - - Controller: - Controlador: - - - - Time Position: - Posici� de tiempo: - - - - Value: - Valor: - - - - controller value - valor del controlador - - - - OK - Aceptar - - - - Cancel - Cancelar - - - - EditCtrlBase - - - Time Position - Posici� de tiempo - - - - Value - Valor - - - - Controller - Controlador - - - - H-Bank - Banco-H - - - - L-Bank - Banco-L - - - - off - apagado - - - - &Cancel - &Cancelar - - - - EditEventDialog - - - Ok - Aceptar - - - - Cancel - Cancelar - - - - EditInstrument - - - MusE: Create file failed - - - - - MusE: Write File failed - - - - - MusE: Save Instrument Definition - - - - - Instrument Definition (*.idf) - - - - - MusE: Enter new Category - - - - - Enter new Category: - - - - - MusE - MusE - - - - The current Instrument contains unsaved data -Save Current Instrument? - - - - - &Save - &Guardar - - - - &Nosave - - - - - &Abort - - - - - EditInstrumentBase - - - &Delete - &Borrar - - - - Drum - Percusi� - - - - GM - GM - - - - GS - GS - - - - XG - XG - - - - Controller - Controlador - - - - Name - Nombre - - - - Type - Tipo - - - - RPN - RPN - - - - NRPN - NRPN - - - - Pitch - Tono - - - - Range - Rango - - - - list of defined controllers - Lista de controladores definidos - - - - This is the MusE list of defined controllers. - Esta es la lista de controladores definidos en MusE. - - - - SysEx - Sistema Exclusivo - - - - Tools - Herramientas - - - - New - Nueva - - - - &New - &Nuevo - - - - Open - Abrir - - - - &Open... - &Abrir... - - - - Save - Guardar - - - - &Save - &Guardar - - - - Save As - Guardar como - - - - Save &As... - Guardar &Como... - - - - Exit - Salir - - - - E&xit - &Salir - - - - EditMetaDialog - - - Time Position - Posici� de tiempo - - - - Meta Type - Tipo de Meta - - - - Enter Hex - Introduzca en Hexadecimal - - - - MusE: Enter Meta Event - MusE: Introduzca evento Meta - - - - EditMetaDialogBase - - - MusE: Enter Meta Event - MusE: Introduzca evento Meta - - - - OK - Aceptar - - - - Cancel - Cancelar - - - - TextLabel1 - EtiquetaTexto1 - - - - Time Position: - Posici� de tiempo - - - - Meta Type: - Tipo de Meta: - - - - Enter Hex - Escribe Hexadecimal - - - - EditNoteDialogBase - - - MusE: Enter Note - MusE: Escribe Nota - - - - OK - Aceptar - - - - Cancel - Cancelar - - - - Length: - Longitud: - - - - Time Position: - Posici� de tiempo - - - - Pitch: - Tono: - - - - Velocity On: - Velocidad On: - - - - Velocity Off: - Velocidad Off: - - - - EditPAfterDialog - - - Time Position - Posici� de tiempo - - - - Pitch - Tono - - - - Pressure - Presi� - - - - MusE: Enter Poly Aftertouch - Muse: Escribe el aftertouch polif�ico - - - - EditPitchDialog - - - Time Position - Posici� de tiempo - - - - Pitch - Tono - - - - MusE: Enter Pitch Shift - MusE: Introduce el deplazamiento de tono - - - - EditSysexDialogBase - - - MusE: Enter SysEx - MusE: Introduce el sistema exclusivo - - - - TimePosition: - Posici� de tiempo: - - - - Comment: - Comentario: - - - - OK - Aceptar - - - - Cancel - Cancelar - - - - EditToolBar - - - Edit Tools - Editar herramientas - - - - EffectRack - - - effect rack - rack de efectos - - - - move up - subir - - - - move down - bajar - - - - remove - quitar - - - - bypass - saltar - - - - show gui - mostrar gui - - - - new - nuevo - - - - change - cambiar - - - - show native gui - - - - - New Plugin - - - - - New Aux Send - - - - - Replace effect - - - - - Do you really want to replace the effect %1? - - - - - &Yes - - - - - &No - - - - - ExportMidiDialog - - - Save - - - - - as smf midi file - - - - - MusE: export midi smf file - - - - - FLUIDGui - - - FLUID: open Soundfile - - - - - Fluid: select Sound Font - - - - - FLUIDGuiBase - - - Form1 - Formulario1 - - - - Soundfont - Fuente de sonido - - - - Load - Cargar - - - - FLUIDSynthGuiBase - - - Load - Cargar - - - - Soundfont - Fuente de sonido - - - - Level - Nivel - - - - Width - Anchura - - - - Damping - Amortiguamiento - - - - Room Size - Tama� estancia - - - - Reverb - Reverberaci� - - - - Sine - Seno - - - - Triangle - Tri�gulo - - - - Type - Tipo - - - - Number - Nmero - - - - Speed - Velocidad - - - - Depth - Profundidad - - - - Chorus - Coro ;-) - - - - Gain - Ganancia - - - - FileDialogButtons - - - Form1 - Formulario1 - - - - Global - Global - - - - User - Usuario - - - - Project - Proyecto - - - - FluidSynthGui - - - Choose soundfont - - - - - FontSel - - - Size: - Tama�: - - - - GateTime - - - MusE: Modify Gate Time - MusE: Modifica el timpo de puerta - - - - GateTimeBase - - - MusE: Modify Gate Time - MusE: Modifica el timpo de puerta - - - - Range - Rango - - - - All Events - Todos los eventos - - - - Selected Events - Eventos seleccionados - - - - Looped Events - Eventos en bucle - - - - Selected & Looped - Seleccionados y en bucle - - - - Values - Valores - - - - Rate: - Velocidad: - - - - Offset: - Desplazamiento: - - - - % - % - - - - OK - Aceptar - - - - Cancel - Cancelar - - - - GlobalSettingsDialogBase - - - MusE: Global Settings - MusE: Valores globales - - - - Audio - Audio - - - - Mixer - Mezclador - - - - dB - dB - - - - min. Meter Value - valor m�imo del vumeter - - - - min.Slider Val - valor m�imo del desplazador - - - - Midi - MIDI - - - - Ticks - Ticks - - - - 1024 - 1024 - - - - 2048 - 2048 - - - - 4096 - 4096 - - - - 8172 - 8172 - - - - Displayed Resolution -(Ticks/Quarternote) - Resoluci� mostrada -(ticks/negra) - - - - 48 - 48 - - - - 96 - 96 - - - - 192 - 192 - - - - 384 - 384 - - - - 768 - 768 - - - - 1536 - 1536 - - - - 3072 - 3072 - - - - 6144 - 6144 - - - - 12288 - 12288 - - - - RTC Resolution -(Ticks/Sec) - Resoluci� del reloj -(Ticks/segundo) - - - - GUI - GUI - - - - /sec - /seg - - - - GUI Refresh Rate - Velocidad de refresco del GUI - - - - &Apply - &Aplicar - - - - &Ok - Ac&eptar - - - - &Cancel - &Cancelar - - - - Help Browser: - Navegador de ayuda: - - - - Arranger - Arreglador - - - - GreendotButton - - - record - grabar - - - - IIWUGuiBase - - - Form1 - Formulario1 - - - - Soundfont - Fuente de sonido - - - - Load - Cargar - - - - IIWUSynthGuiBase - - - IIWU Synth - Sintetizador IIWU - - - - Gain - Ganancia - - - - Room Size - Tama� estancia - - - - Damping - Amortiguamiento - - - - Level - Nivel - - - - Width - Anchura - - - - Speed - Velocidad - - - - Depth - Profundidad - - - - Number - Nmero - - - - Type - Tipo - - - - Sine - Seno - - - - Triangle - Tri�gulo - - - - Reverb - Reverberaci� - - - - Chorus - Coro ;-) - - - - Pop - Pop 8-? - - - - Push - Empuje - - - - ... - ... - - - - show iiwusynth controls - mostrar controles del sintetizador iiwu - - - - Load - Cargar - - - - Save - Guardar - - - - LMaster - - - new tempo - nuevo tempo - - - - new signature - nuevo comp� - - - - Meter - Metr�omo - - - - Time - Tiempo - - - - Type - Tipo - - - - Value - Valor - - - - MusE: Mastertrack - MusE: Pista maestra - - - - Tempo - Tempo - - - - Timesig - comp� - - - - ListEdit - - - &Edit - &Editar - - - - Cut - Cortar - - - - Copy - Copiar - - - - Paste - Pegar - - - - List Tools - Lista de herramientas - - - - Insert Tools - Insertar herramientas - - - - Delete Events - Borrar eventos - - - - Insert Note - Insertar nota - - - - insert Note - insertar Nota - - - - Insert SysEx - Insertar sistema exclusivo - - - - insert SysEx - insertar sistema exclusivo - - - - Insert Ctrl - Insertar controlador - - - - insert Ctrl - insertar controlador - - - - Insert Meta - Insertar Meta - - - - insert Meta - insertar Meta - - - - Insert Pitch - Insertar Tono - - - - insert Pitch - insertar Tono - - - - Insert Channel Aftertouch - Insertar AfterTouch de canal - - - - insert Channel Aftertouch - insertar AfterTouch de canal - - - - Insert Key Aftertouch - Insertar AfterTouch de tecla - - - - insert Poly Aftertouch - insertar AfterTouch Polif�ico - - - - Tick - Tick - - - - Bar - Comp� - - - - Typ - Tip - - - - Ch - Cn - - - - Val A - Val A - - - - Val B - Val B - - - - Val C - Val C - - - - Len - Lon - - - - Comment - Comentario - - - - MusE: List Edit - - - - - Parts - Partes - - - - Controller - - - - - MITTransposeBase - - - MusE: Midi Input Plugin: Transpose - MusE: Plugin de entrada MIDI : Transposici� - - - - On - Encendido - - - - TriggerKey - Tecla de salto - - - - Transpose: - Trasponer: - - - - +0 - +0 - - - - MPConfig - - - none - ninguno - - - - other raw ... - otro crudo (raw) ... - - - - MusE: Midi Port Table - MusE: Tabla de puertos MIDI - - - - Port - Puerto - - - - GUI - GUI - - - - Rec - Grabar - - - - Instrument - Instrumento - - - - Device Name - Nombre de dispositivo - - - - State - Estado - - - - unknown - desconocido - - - - MRConfigBase - - - MusE: Midi Input Plugin: Remote Control - MusE: Pluginde entrada MIDI : Control remoto - - - - Activate - Activar - - - - On - Encendido - - - - Actions - Acciones - - - - Stop - Parar - - - - Record - Grabar - - - - Goto Left Mark - Ir ala marca izquierda - - - - Play - Reproducir - - - - MTScale - - - bar scale - escala de compases - - - - MarkerView - - - Bar:Beat:Tick - Barra:Golpe:Tick - - - - Hr:Mn:Sc:Fr:Sf - Hr:Mn:Sg:Fr:Sf - - - - Lock - Bloquear - - - - Text - Texto - - - - Marker Properties - Propiedades del marcador - - - - MusE: Marker - MusE: Marcador - - - - add marker - a�dir marcador - - - - Add Marker - A�dir marcador - - - - delete marker - borrar marcador - - - - Delete Marker - Borrar Marcador - - - - &File - &Archivo - - - - &Edit - &Editar - - - - marker-tools - - - - - edit tools - - - - - Min:Sc:Fr:Sf - - - - - MasterEdit - - - Cursor - Cursor - - - - Snap - Snap - - - - time at cursor position - tiempo en la posici� del cursor - - - - tempo at cursor position - tempo en la posici� del cursor - - - - CurPos - Posici� del cursor - - - - tempo at current position - tempo en la posici� actual - - - - time signature at current position - comp� en la posici� actual - - - - Master - Maestro - - - - MusE: Mastertrack - Muse: Pista Maestra - - - - edit tools - editar herramientas - - - - EnableMaster - Habilitar maestro - - - - use master track - usar pista maestra - - - - Info - Info - - - - Off - Apagado - - - - EnableTempomap - - - - - Tempomap - - - - - Enable use of tempo map - - - - - MetronomeConfigBase - - - MusE: Metronome Config - MusE: Configuraci� del metr�omo - - - - Metronome - Metr�omo - - - - Audio Beep - Bip de audio - - - - MIDI Click - Click MIDI - - - - Midi Channel - Canal MIDI - - - - Measure Note - Nota de comp� - - - - Measure Velocity - Velocidad de comp� - - - - Beat Velocity - Velocidad de barra - - - - Beat Note - Nota de barra - - - - Midi Port - Puerto MIDI - - - - Precount - Cuenta atr� - - - - enable - habilitada - - - - Bars - Compases - - - - From Mastertrack - desde la pista Mestra - - - - / - / - - - - Signature - comp� - - - - Prerecord - pre-grabaci� - - - - Preroll - pre-escucha - - - - &Apply - &Aplicar - - - - &OK - Ac&eptar - - - - &Cancel - &Cancelar - - - - MidiChannelInfo - - - MidiController - - - Velocity - Velocidad - - - - MidiControllerEditDialog - - - MusE: save midi controller list - MusE: guardar lista de controladores MIDI - - - - MusE: load midi controller list - MusE: Cargar lista de controladores MIDI - - - - MidiControllerEditDialogBase - - - MusE: Define Midi Controller - MusE: Define controlador MIDI - - - - replace controller set - reemplazar conjunto de controladores - - - - merge controller set - unir conjunto de controladores - - - - save controller set as - guardar conjunto de controladores como - - - - Name - Nombre - - - - Type - Tipo - - - - H-Ctrl - Control-H - - - - L-Ctrl - Control-L - - - - Min Val - Valor m�imo - - - - Max Val - Valor m�imo - - - - list of defined controllers - lista de controladores definidos - - - - This is the MusE list of defined controllers. - Esta es la lista de controladores definidos por MusE. - - - - Properties - Propiedades - - - - Name - Nombre - - - - Max Value - Valor m�imo - - - - Min Value - Valor m�imo - - - - Control7 - Control7 :-? - - - - Control14 - Control14 - - - - RPN - RPN - - - - NRPN - NRPN - - - - XG-SysEx - Sys-Ex-XG - - - - SysEx - Sistema Exclusivo - - - - Type - Tipo - - - - &New - &Nuevo - - - - create new entry - crear entrada nueva - - - - pressing the New button you create a new entry -in the MusE list of defined controllers - pulsando el bot� se crear�una nueva -clase de controladores en la lista de MusE. - - - - &Delete - &Borrar - - - - delete selected entry - borra la clase seleccionada - - - - &OK - &Aceptar - - - - &Cancel - &Cancelar - - - - Channel - Canal - - - - Pitch - Tono - - - - Range - Rango - - - - MidiEditor - - - &Edit - &Editar - - - - Cut - Cortar - - - - Copy - Copiar - - - - Paste - Pegar - - - - Play Events - Reproducir eventos - - - - Step Record - - - - - Midi Input - Entrada MIDI - - - - Follow Song - - - - - MidiFileConfig - - - Enable extended smf format - Habilita el formato extendido de smf - - - - Division - Divisi� - - - - Copyright - Copyright - - - - Config exported Midi Files - Configurar archivos MIDI exportados - - - - MusE: Config exported Midi Files - MusE: configurar archivos MIDi exportados - - - - MidiFilterConfigBase - - - MusE: Midi Input Filter - MusE: Filtro de entrada MIDI - - - - Record Filter - Filtro de grabaci� - - - - Note On - Nota on - - - - Poly Pressure - Presi� polif�ica - - - - Controller - Caontrolador - - - - Program Change - Cambio de programa - - - - After Touch - After Touch - - - - Pitch Bend - Rueda de bend - - - - Sysex - Sistema exclusivo - - - - Thru Filter - Filtro Thru - - - - Controller Filter - Filtrar controlador - - - - Channel Filter - Filtro de canal - - - - 14 - 14 - - - - 10 - 10 - - - - 6 - 6 - - - - 12 - 12 - - - - 4 - 4 - - - - 2 - 2 - - - - 9 - 9 - - - - 8 - 8 - - - - 3 - 3 - - - - 13 - 13 - - - - 15 - 15 - - - - 16 - 16 - - - - 7 - 7 - - - - 11 - 11 - - - - 5 - 5 - - - - 1 - 1 - - - - &Cancel - &Cancelar - - - - MidiInPortStrip - - - AlsaDevices - - - - - MidiChannel - - - - - JackDevices - - - - - MidiInputTransformDialog - - - New - Nueva - - - - MidiInputTransformDialogBase - - - MusE: Midi Input Transformator - MusE: Transformador de entrada MIDI - - - - Filter - Filtrar - - - - All - Todo - - - - Equal - Igual - - - - Unequal - Diferente - - - - Note - Nota - - - - Poly Pressure - Presi� poif�ica - - - - Control Change - Cambio de control - - - - Aftertouch - AfterTouch - - - - Pitch Bend - Rueda de modulaci� - - - - NRPN - NRPN - - - - RPN - RPN - - - - Value 2 - Valor 2 - - - - Value 1 - Valor 1 - - - - Event Type - Tipo de Evento - - - - Ignore - Ignorar - - - - Higher - Mayor - - - - Lower - Menor - - - - Inside - Entre - - - - Outside - Fuera - - - - Channel - Canal - - - - Port - Puerto - - - - Processing - Procesando - - - - Keep - Mantener - - - - Fix - Arreglar - - - - Plus - M� - - - - Minus - Menos - - - - Multiply - Multiplicar - - - - Divide - Dividir - - - - Invert - Invertir - - - - ScaleMap - Mapa de escalado - - - - Flip - cambiar - - - - Dyn - Din�ico - - - - Random - Aleatorio - - - - Modules - M�ulos - - - - 1 - 1 - - - - 2 - 2 - - - - 3 - 3 - - - - 4 - 4 - - - - enable modul 1 - habilitar m�ulo 1 - - - - enable modul 2 - habilitar m�ulo 2 - - - - enable modul 3 - habilitar m�ulo 3 - - - - enable modul 4 - habilitar m�ulo 4 - - - - Preset - Preselecci� - - - - Name: - Nombre: - - - - Comment: - Comentario: - - - - Function - Funci� - - - - &New - &Nueva - - - - create new preset - crea nueva preselecci� - - - - &Delete - &Borrar - - - - delete preset - borra la preselecci� - - - - &Dismiss - &Ocultar - - - - PresetList - Lista de Preselecciones - - - - MidiOutPortStrip - - - MidiChannel - - - - - AlsaDevices - - - - - JackDevices - - - - - MidiPluginDialog - - - MusE: select midi plugin - - - - - File - Archivo - - - - Name - Nombre - - - - Version - - - - - Description - - - - - Ok - Aceptar - - - - Cancel - Cancelar - - - - MidiPortRouteBase - - - Input - Entrada - - - - MidiRack - - - midi effect rack - - - - - move up - - - - - move down - - - - - remove - - - - - bypass - - - - - show gui - - - - - new - nuevo - - - - MidiRawDeviceDialogBase - - - MusE: raw midi device configuration - NusE: Condifuraci� de dispositivo MIDI directo - - - - Name - Nombre - - - - Device - Dispositivo - - - - Type - Tipo - - - - Virt. Ports - Puertos virtuales - - - - Speed - Velocidad - - - - Handshaking - Control de flujo - - - - Device Properties - Propiedades del dispositivo - - - - Virt.Ports - Ports Virtuales - - - - Raw Device - Dispositivo directo - - - - Serial Port - Puerto s�ie - - - - Pipe - Tuberia - - - - Device Path - Direcci� del dispositivo - - - - 9600 - 9600 - - - - 19200 - 19200 - - - - 38400 - 38400 - - - - None - Ninguno - - - - RTS/CTS - RTS/CTS - - - - Xon/Xoff - Xon/Xoff - - - - &New - &Nuevo - - - - &Delete - &Borrar - - - - &OK - &Aceptar - - - - &Cancel - &Cancelar - - - - MidiStrip - - - Var - Var - - - - Rev - Rev - - - - Cho - Cho - - - - off - apagado - - - - dB - dB - - - - Pan - Bal - - - - record - grabar - - - - mute - silencio - - - - pre fader listening - monitorizar pre fader - - - - VariationSend - - - - - ReverbSend - - - - - ChorusSend - - - - - Pan/Balance - - - - - Tracks - Pistas - - - - OutputPorts - - - - - MidiSyncConfigBase - - - MusE: Midi Sync - MusE: Sincronizaci� MIDI - - - - Apply - Aplicar - - - - Ok - Aceptar - - - - Cancel - Cancelar - - - - hour - hora - - - - h - h - - - - minute - minuto - - - - m - m - - - - second - segundo - - - - s - s - - - - frame - frame - - - - f - f - - - - subframe - sub-frame - - - - 24 - 24 - - - - 25 - 25 - - - - 30D - 30D - - - - 30N - 30N - - - - Id: - Id: - - - - device id - id de dispositivo - - - - Port: - Puerto: - - - - midi port - puerto MIDI - - - - Sync Source - Fuente de Sincronizaci� - - - - accept MTC - aceptar MTC - - - - accept Midi Clock - aceptar MIDI clock - - - - accept MMC - aceptar MMC - - - - Sync Gen - Generar Sync - - - - Midi Time Code (MTC) - C�igo de Tiempo Midi (MTC) - - - - Midi Clock - Reloj Midi - - - - Midi Machine Control (MMC) - Control de m�uina MIDI (MMC) - - - - Sync Mode - Modo de sincronizaci� - - - - Master - Maestro - - - - Slave - Esclavo - - - - all - todo - - - - MTC - MTC - - - - Type: - Tipo: - - - - Offset: - Desplazamiento: - - - - MidiSyntiStrip - - - OutputPorts - - - - - Channel - Canal - - - - Input Ports - - - - - MidiTimeDelegate - - - dB - dB - - - - off - apagado - - - - MidiTrackInfo - - - Channel %1 - - - - - Midi Port - Puerto MIDI - - - - MidiTrackInfoBase - - - MusE: TrackInfo - MusE: Informaci� de pista - - - - output channel - canal de salida - - - - all midi events are send to this output channel - todos los eventos MIDI se envian a �te canal de salida - - - - Track Info - Informaci� de Pista - - - - % - % - - - - Track Name - Nombre de Pista - - - - output port - puerto de salida - - - - off - apagado - - - - change stereo position - cambiar posici� estereof�ica - - - - OCh. - OCh. - - - - MidiThru - Midi Thru - - - - ??? - ??? - - - - select instrument patch - selecciona el grupo de instrumento - - - - Transp. - Transposici� - - - - Volume - Volumen - - - - Channel Info - Informaci� de Canal - - - - Pan - Balance - - - - Delay - Delay - - - - H-Bank - Banco-H - - - - Compr. - Compr. - - - - L-Bank - Banco-L - - - - Progr. - Progr. - - - - Velocity - Velocidad - - - - Length - Longitud - - - - input ports - puertos de entrada - - - - IChan. - Canal de entrada - - - - input channels - Canales de entrada - - - - Events from all configured channels are -recorded to this track. -You can specify more than one channel for -recording: - 1 2 3 record from channel 1 2 and 3 - 1-3 same - 1-3 5 record from channel 1 2 3 and 5 - Los eventos de todos los canales configurados -se graban en esta pista. -Puedes especificar m� de un canal para grabar: - 1 2 3Graba desde los canales 1, 2 y 3 - 1-3Lo mismo - 1-3 5Graba desde los canales 1, 2, 3 y 5 - - - - Rec - Grabar - - - - Output Port - Puerto de salida - - - - MidiTrackerEditor - - - &View - - - - - MidiTracker Tools - - - - - Panic - - - - - Transport - - - - - row features - - - - - Number of visible rows - - - - - Quantize - Cuantizar - - - - MidiTransformDialogBase - - - MusE: Midi Transformator - MusE: Transformador MIDI - - - - &New - &Nueva - - - - &Delete - &Borrar - - - - &Apply - &Aplicar - - - - &OK - Ac&eptar - - - - &Cancel - &Cancelar - - - - PresetList - Lista de preselecciones - - - - Processing - Procesando - - - - Event Type - Tipo de evento - - - - Keep - Mantener - - - - Fix - Arreglar - - - - Note - Nota - - - - Poly Pressure - Presi� polif�ica - - - - Control Change - Cambio de control - - - - Aftertouch - AfterTouch - - - - Pitch Bend - Rueda de modulaci� - - - - NRPN - NRPN - - - - RPN - RPN - - - - Plus - M� - - - - Minus - Menos - - - - Multiply - Multiplicar - - - - Divide - Dividir - - - - Value 2 - Valor 2 - - - - Invert - Invertir - - - - ScaleMap - Escalado de mapa - - - - Flip - Cambiar - - - - Dyn - Dyn - - - - Random - Aleatorio - - - - Value 1 - Valor 1 - - - - Length - Longitud - - - - Position - Posici� - - - - Filter - Filtro - - - - All - Todo - - - - Equal - Igual - - - - Unequal - Diferente - - - - Ignore - Ignora - - - - Higher - Mayor - - - - Lower - Menor - - - - Inside - Entre - - - - Outside - Fuera - - - - Bar Range - Rango de compases - - - - Preset - Preselecci� - - - - Name: - Nombre: - - - - Comment: - Comentario: - - - - Range - Rango - - - - process all events - procesar todos los eventos - - - - selected tracks - seleccionar pistas - - - - inside loop - dentro de bucle - - - - Function - Funci� - - - - Select - Seleccionar - - - - Quantize - Cuantizar - - - - Delete - Borrar - - - - Transform - Transformar - - - - Insert - Insertar - - - - Copy - Copiar - - - - Extract - Extraer - - - - Quantize Value - Cuantizar valor - - - - Sysex - Sistema exclusivo - - - - MidiTransformerDialog - - - New - Nueva - - - - MixdownFileDialog - - - Wave Files (*.wav);;All Files (*) - Archivos de onda (*.wav);;Todos los archivos(*) - - - - MusE: set mixdown file name - - - - - MixdownFileDialogBase - - - MusE: Set Mixdown Wavefile - MusE: Selecciona el archivo de Masterizaci� - - - - &OK - &Aceptar - - - - &Cancel - &Cancelar - - - - File Path - Directorio del archivo - - - - Channel - Canal - - - - Stereo - Est�eo - - - - Mono - Mono - - - - 5.1 - 5.1 - - - - wav,16 Bit - wav, 16 bits - - - - wav, 24 Bit - wav, 24 bits - - - - wav, 32 Bit (float) - wav, 32 bits - - - - Format - Formato - - - - Mixer - - - Mute - Silencio - - - - MusE: Midi Mixer - MusE: MExclador MIDI - - - - Rev - Rev - - - - Cho - Cho - - - - Var - Var - - - - Pan - Bal - - - - Master - Maestro - - - - Port - Puerto - - - - MusE: Mixer - - - - - &Create - &Crear - - - - &View - - - - - Routing - - - - - Show Midi Tracks - - - - - Show Midi Out Ports - - - - - Show Midi In Ports - - - - - Show Wave Tracks - - - - - Show Output Tracks - - - - - Show Group Tracks - - - - - Show Input Tracks - - - - - Show Synthesizer - - - - - MusE - - - &File - &Archivo - - - - Open &Recent - Abrir &Recientes - - - - Save &As - Guardar c&omo - - - - Config &Printer - Configurar &Impresi� - - - - Import Midifile - Importar archivo MIDI - - - - Export Midifile - Exportar archivo MIDI - - - - Import Wave File - Importar archivo de audio - - - - &Quit - &Salir - - - - &Edit - &Editar - - - - C&ut - C&ortar - - - - &Copy - &Copiar - - - - &Paste - &Pegar - - - - Delete Track - Borrar pista - - - - Add Track - A�dir Pista - - - - Select &All - Seleccion&ar Todo - - - - &Deselect All - &Deseleccionar Todo - - - - Invert &Selection - Invertir &Selecci� - - - - &Inside Loop - &Interior de bucle - - - - &Outside Loop - &Exterior de Bucle - - - - All &Parts on Track - Todas las &Partes de la pista - - - - Select - Seleccionar - - - - Drums - Percusi� - - - - List - Lista - - - - Graphic - Gr�ico - - - - Mastertrack - Pista Maestra - - - - Midi &Transform - &Transformaci� MIDI - - - - Modify Gate Time - Modificar el tiempo de puerta - - - - Modify Velocity - Modificar Velocidad - - - - Crescendo - Crescendo - - - - Transpose - Transponer - - - - Thin Out - Adelgazar? (Thin Out) - - - - Erase Event - Borrar Evento - - - - Note Shift - Desplazamiento de nota - - - - Move Clock - Mover reloj - - - - Copy Measure - Copiar comp� - - - - Erase Measure - Vaciar comp� - - - - Delete Measure - Borrar comp� - - - - Create Measure - Crear comp� - - - - Mix Track - Mezclar pista - - - - Midi - MIDI - - - - &Structure - E&structura - - - - Global Cut - Corte global - - - - Global Insert - Inserci� Global - - - - Global Split - Partici� Global - - - - Copy Range - Copiar Rango - - - - Cut Events - Cortar eventos - - - - &Display - &Mostrar - - - - Transport Panel - Panel de transporte - - - - Bigtime window - ventana BigTime - - - - dont follow Song - no sigas la canci� - - - - follow page - sigue la p�ina - - - - follow continuous - sigue cont�uamente - - - - &Config - &Configuraci� - - - - Global Settings - Selecciones Globales - - - - follow song - seguir canci� - - - - Metronome - Metr�omo - - - - Midi Sync - Sincronizaci� MIDI - - - - Midi File Config - Configuraci� de archivos MIDI - - - - Appearance settings - Selecciones de apariencia - - - - Soft Synthesizer - Sintetizador virtual - - - - Midi Ports - Puertos MIDI - - - - Audio System - Sistema de Audio - - - - Save Configuration - Guardar configuraci� - - - - Midi Input Transform - Transformaci� de entrada MIDI - - - - Midi Input Filter - Filtrado de entrada MIDI - - - - Midi Remote Control - Control remoto MIDI - - - - Random Rhythm Generator - generador aleatorio de ritmos - - - - &Midi - &MIDI - - - - Mixer - Mezclador - - - - Define Controller - Define Controlador - - - - Input Plugins - Plugins e entrada - - - - Reset Instr. - Reinicializa Instrumento - - - - Init Instr. - Inicializa Instruemnto - - - - local off - apagado local - - - - &Audio - &Audio - - - - Audio - Audio - - - - Cliplist - Lista de Clips - - - - Bounce to Track - Rebotar a pista - - - - Bounce to File - Rebotar a Archivo - - - - Bounce - Rebotar - - - - &Help - A&yuda - - - - Browser - Navegador - - - - &About - &Acerca de - - - - About&Qt - Acerca de &Qt - - - - What's &This - Qu�es esto - - - - MusE: load project - MusE: Carga proyecto - - - - The current Project contains unsaved data -Save Current Project? - El proyecto actual contiene datos no guardados -Guardamos el proyecto actual? - - - - &Save - &Guardar - - - - &Nosave - &No Guardar - - - - &Abort - &Abortar - - - - MusE: Save As - MusE: Guardar como - - - - MusE: Import Midi - MusE: Importar MIDI - - - - MusE: Export Midi - MusE: Exportar MIDI - - - - Nothing to edit - Nada para editar - - - - The current Project contains unsaved data -Load overwrites current Project: -Save Current Project? - El proyecto actual contine datos no guardados -Cargar sobreescribe el proyecto actual: -Guardar el proyecto actual? - - - - &Overwrite - S&obre escribir - - - - no help found at: - no se ha encontrado ayuda en: - - - - MusE: Open Help - MusE: Abre ayuda - - - - to import a audio file you have first to selecta audio track - para importar un archivo de audio tienes que tener seleccionada una pista de audio - - - - UndoRedo - Deshacer/Rehacer - - - - undo - deshacer - - - - Und&o - &Deshacer - - - - redo - rehacer - - - - Re&do - &Rehacer - - - - undo last change to song - deshace el ltimo cambio en la canci� - - - - redo last undo - rehace el ltimo deshacer - - - - Transport - Transporte - - - - loop - bucle - - - - Loop - Bucle - - - - punchin - pinchar - - - - Punchin - Pinchar - - - - punchout - fin pinchado - - - - Punchout - Fin pinchado - - - - start - empezar - - - - Start - Empezar - - - - rewind - retroceder - - - - Rewind - Retroceder - - - - forward - avanzar - - - - Forward - Avanzar - - - - stop - parar - - - - Stop - Parar - - - - play - reproducir - - - - Play - Reproducir - - - - record - grabar - - - - Record - Grabar - - - - panic - p�ico - - - - Panic - P�ico - - - - new - nuevo - - - - &New - &Nuevo - - - - open - abrir - - - - &Open - &Abrir - - - - save - guardar - - - - pianoroll - pianola - - - - Pianoroll - Pianola - - - - score - partitura - - - - Score - Partitura - - - - marker - marcador - - - - Marker - Marcador - - - - File Buttons - Botones de Archivo - - - - Unknown File Format - Formato de archivo desconocido - - - - none - ninguno - - - - MusE: Write File failed - MusE: La grabaci� del archivo ha fallado - - - - MusE: About - Muse: Acerca de - - - - MusE: Song: - MusE: Canci�: - - - - reading midifile - - leyendo archivo midi - - - - - -failed - -fall� - - - - MusE: Copy Range - MusE: Copiar Rango - - - - not implemented - no implementado - - - - MusE: Cut Events - MusE: Cortar Eventos - - - - MusE: Bounce to Track - MusE: Rebotar a la pista - - - - more than one target track selected - m� de una pista de destino seleccionada - - - - wrong target track type, -select wave track as target - tipo de pista err�ea, -selecciona una pista de audio como destino - - - - no target track selected - no hay pista de destino seleccionada - - - - -failed: - -fall� - - - - Arranger - Arreglador - - - - Cursor - Cursor - - - - Snap - Snap - - - - Pitch - Tono - - - - midi pitch - tono midi - - - - global midi pitch shift - desplazamiento de tono midi - - - - Tempo - Tempo - - - - midi tempo - tempo midi - - - - N - N - - - - MusE manual not found at: - - - - - to import a audio file you have first to selecta wave track - - - - - Failed to start audio! - - - - - Was not able to start audio, check if jack is running. - - - - - - Project Buttons - - - - - &Project - - - - - Delete Selected Tracks - - - - - Project Properties - - - - - &View - - - - - Edit Instrument - - - - - Restart Audio - - - - - Setti&ngs - - - - - Configure shortcuts - - - - - Midi File Export - - - - - Preferences - - - - - &Manual - - - - - &MusE homepage - - - - - &Report Bug... - - - - - &About MusE - - - - - What's &This? - - - - - Len - - - - - MusE: new project - - - - - Cannot create project folder <%1> - - - - - Cannot open template file -%1 - - - - - File <%1> read error - - - - - MusE: Create tmp file failed - - - - - MusE: Bounce - - - - - set left/right marker for bounce range - - - - - MusE: Bounce to File - - - - - no output track found - - - - - MusE: import midi file - - - - - rewind to start position - retrocede a la posici� de inicio - - - - start sequencer play - inicia el secuenciador - - - - Open - Abrir - - - - Save - Guardar - - - - MuseApplication - - - Transport: Goto Start - - - - - Goto Start - - - - - rewind to start position - retrocede a la posici� de inicio - - - - Transport: Toggle Loop section - - - - - Loop - Bucle - - - - loop between left mark and right mark - hace un bucle entre las marcas de izquierda y derecha - - - - Transport: Start playback from current location - - - - - Play - Reproducir - - - - start sequencer play - inicia el secuenciador - - - - Transport: Play, Stop, Rewind - - - - - Transport: Stop Playback - - - - - Stop - Parar - - - - stop sequencer - para el secuenciador - - - - Transport: Goto left marker - - - - - Transport: Goto right marker - - - - - Transport: Toggle metronome - - - - - Transport: Toggle Record - - - - - Record - Grabar - - - - to record press record and then play - para grabar pulsa grabar y despu� reproducir - - - - Transport: Punch In - - - - - Punchin - Pinchar - - - - record starts at left mark - la grabaci� comienza en la marca izquierda - - - - Transport: Punch Out - - - - - Punchout - Fin pinchado - - - - record stops at right mark - la grabaci� termina en la merca derecha - - - - Transport: Rewind - - - - - rewind - retroceder - - - - rewind current position - retrasa la posici� actual - - - - Transport: Forward - - - - - forward - avanzar - - - - move current position - mueve la posici� actual - - - - Panic - - - - - send note off to all midi channels - envia un apagado de nota (note off) a todos los canales midi - - - - Edit: Undo - - - - - undo - deshacer - - - - undo last change to song - deshace el ltimo cambio en la canci� - - - - Edit: Redo - - - - - redo - rehacer - - - - redo last undo - rehace el ltimo deshacer - - - - Edit: Cut - - - - - Cut - Cortar - - - - Edit: Copy - - - - - Copy - Copiar - - - - Edit: Paste, - - - - - Paste - Pegar - - - - Edit: Delete - - - - - Delete - Borrar - - - - Open - Abrir - - - - open project - - - - - Click this button to select a new project -You can also select the <b>Open command</b> from the Project menu. - - - - - Save - Guardar - - - - save project - - - - - Click this button to save the project you are editing. -You can also select the Save command from the Project menu. - - - - - File: Save as - - - - - save project as... - - - - - Click this button to save a new copy of the project. - - - - - - File: Save as Template - - - - - save project as template - - - - - Click this button to save the project you are editing -for later use as a template. - - - - - File: Open recent file - - - - - File: Import midi file - - - - - File: Export midi file - - - - - File: Import audio file - - - - - File: Quit MusE - - - - - Quit MusE - - - - - Edit: Select parts on track - - - - - All &Parts on Track - Todas las &Partes de la pista - - - - Open Pianoroll - - - - - Pianoroll - Pianola - - - - Start Pianoroll Editor - - - - - Open MidiTracker - - - - - MidiTracker - - - - - Start Midi Tracker - - - - - Open drumeditor - - - - - Drum Editor - - - - - Start Drum Editor - - - - - Open wave editor - - - - - Wave Editor - - - - - Open listeditor - - - - - Properties - Propiedades - - - - open Properties Editor - - - - - Open mastertrack editor - - - - - Mastertrack (Tempo) Editor - - - - - Start Mastertrack (Tempo) Editor - - - - - Add midi track - - - - - Add drum track - - - - - Add wave track - - - - - Add audio output - - - - - Add audio group - - - - - Add audio input - - - - - Structure: Global cut - - - - - Structure: Global insert - - - - - Structure: Global split - - - - - Structure: Copy range - - - - - Structure: Cut events - - - - - View: Open mixer 1 window - - - - - Mixer1 - - - - - Show Mixer 1 - - - - - View: Open mixer 2 window - - - - - Mixer2 - - - - - Show Mixer 2 - - - - - View: Toggle transport window - - - - - Transport - - - - - Show Transport Window - - - - - View: Toggle bigtime window - - - - - BigTime - - - - - Show BigTime Window - - - - - View: Open marker window - - - - - Marker - Marcador - - - - Show Marker List - - - - - Settings: Follow song by page - - - - - Settings: Follow song off - - - - - Settings: Follow song continuous - - - - - Settings: Configure shortcuts - - - - - Settings: Configure metronome - - - - - Settings: Midi sync configuration - - - - - Settings: Midi file export configuration - - - - - Settings: Midi ports / Soft Synth - - - - - Settings: Audio subsystem configuration - - - - - Midi: Edit midi instruments - - - - - Midi: Midi remote control - - - - - Midi: Reset midi - - - - - Midi: Init midi - - - - - Midi: Midi local off - - - - - Audio: Bounce audio to track - - - - - Audio: Bounce audio to file - - - - - Audio: Restart audio - - - - - Help: Open Manual - - - - - Help: Toggle whatsthis mode - - - - - Edit: Edit selected part - - - - - Edit: Select nearest part on track above - - - - - Edit: Add nearest part on track above - - - - - Edit: Select nearest part on track below - - - - - Edit: Add nearest part on track below - - - - - Midi: Transpose - - - - - Transpose - Transponer - - - - Edit: Select all - - - - - Select All - - - - - Edit: Select none - - - - - Deselect All - - - - - Edit: Invert selection - - - - - Invert Selection - - - - - Edit: Select events/parts inside locators - - - - - Select Inside Loop - - - - - Edit: Select events/parts outside locators - - - - - Select Outside Loop - - - - - Edit: Select nearest part/event to the left - - - - - Edit: Add nearest part/event to the left to selection - - - - - Edit: Add nearest part/event to the right to selection - - - - - Edit: Set locators to selection - - - - - Edit: Increase pitch - - - - - Edit: Decrease pitch - - - - - Edit: Set fixed length on midi events - - - - - Set fixed length - - - - - Quantize: Over Quantize - - - - - Over Quantize - Sobre cuantizar - - - - Quantize: Note On Quantize - - - - - Note On Quantize - Cuantizar inicio de nota - - - - Quantize: Note On/Off Quantize - - - - - Note On/Off Quantize - Cuantizar inicio y final de nota - - - - Quantize: Iterative Quantize - - - - - Iterative Quantize - Cuantizaci� iterativa - - - - Quantize: Configure quant - - - - - Quantize: Modify Gate Time - - - - - Modify Gate Time - Modifica el tiempo de puerta - - - - Quantize: Modify Velocity - - - - - Modify Velocity - Modifica la velocidad - - - - Edit: Crescendo - - - - - Crescendo - Crescendo - - - - Edit: Thin Out - - - - - Thin Out - Adelgazar - - - - Edit: Erase Event - - - - - Erase Event - Borrar evento - - - - Edit: Note Shift - - - - - Note Shift - Desplazar nota - - - - Edit: Move Clock - - - - - Move Clock - Mover reloj - - - - Edit: Copy Measure - - - - - Copy Measure - Copiar comp� - - - - Edit: Erase Measure - - - - - Erase Measure - Vaciar comp� - - - - Edit: Delete Measure - - - - - Delete Measure - Borrar comp� - - - - Edit: Create Measure - - - - - Create Measure - Crear comp� - - - - Edit: Change event color - - - - - Tool: Pointer - - - - - Pointer - - - - - select Pointer Tool: -with the pointer tool you can: - select parts - move parts - copy parts - selecciona la Herramienta de Puntero: -con la herramienta de puntero puedes: - seleccionar partes - mover partes - copiar partes - - - - Tool: Pencil - - - - - Pencil - - - - - select Pencil Tool: -with the pencil tool you can: - create new parts - modify length of parts - selecciona la Herramienta de L�iz: -con la herramienta de l�iz puedes: - crear nuevas partes - modificar la longitud de las partes - - - - Tool: Eraser - - - - - Eraser - - - - - select Delete Tool: -with the delete tool you can delete parts - selecciona la Herramienta de Borrado: -con la herramienta de borrado puedes borrar partes - - - - Tool: Scissor - - - - - Scissor - - - - - select Cut Tool: -with the cut tool you can split a part - selecciona la Herramienta de Corte: -con la herramienta de core puedes partir una parte - - - - Tool: Glue - - - - - Glue - - - - - select Glue Tool: -with the glue tool you can glue two parts - selecciona la Herramienta de Pegado: -con la herramienta de pegado puedes unir dos partes - - - - Declone - - - - - Tool: Quantize - - - - - Quantize - Cuantizar - - - - select Quantize Tool: -insert display quantize event - selecciona la Herramianta de Cuantizaci�: -inserta un evento de cuantizaci� de visualizaci� - - - - Tool: Line Draw - - - - - Draw - - - - - select Drawing Tool - selecciona la Herramienta de Dibujo - - - - Tool: Mute Parts - - - - - Mute - Silencio - - - - select Muting Tool: -click on part to mute/unmute - selecciona la Herramienta de Silenciar: -haz click en una parte para silenciar/des-silenciar - - - - Transport: Increase current position - - - - - Transport: Decrease current position - - - - - Quantize: Set quantize to 1/1 note - - - - - Quantize: Set quantize to 1/2 note - - - - - Quantize: Set quantize to 1/4 note - - - - - Quantize: Set quantize to 1/8 note - - - - - Quantize: Set quantize to 1/16 note - - - - - Quantize: Set quantize to 1/32 note - - - - - Quantize: Set quantize to 1/64 note - - - - - Quantize: Toggle triol quantization - - - - - Quantize: Toggle punctuation quantization - - - - - Quantize: Toggle punctuation quantization (2) - - - - - Insert - Insertar - - - - Insert Tempo - - - - - Insert Signature - - - - - Change Event Position - - - - - Edit Event Value - - - - - NoteInfo - - - Start - Inicio - - - - Len - Longitud - - - - Pitch - Tono - - - - Velo On - Velocidad On - - - - Velo Off - Velocidad Off - - - - Note Info - Informaci� de nota - - - - OrganGuiBase - - - MusE: Organ - MusE: �gano - - - - Presets - Preselecciones - - - - Set - Pon - - - - load preset list - cargar lista de preselecciones - - - - save preset list - guardar lista de preselecciones - - - - O-1 - 0-1 - - - - Oscillator - Oscilador - - - - Brass - Metales - - - - Reed - Reed - - - - Flute - Flauta - - - - Drawbars - Drawbars - - - - 16' - 16' - - - - 4' - 4' - - - - 2 2/3' - 2 2/3' - - - - 2' - 2' - - - - 8' - 8' - - - - 5 1/3' - 5 1/3' - - - - Envelope Lo - Envolvente Lo - - - - Attack(ms) - Ataque (ms) - - - - Decay(ms) - Decaimiento (ms) - - - - Sustain(%) - Sostenido (%) - - - - Release(ms) - Relajaci� (ms) - - - - Envelope Hi - Envolvente Hi - - - - Release - Relajaci� - - - - Sustain - Sostenido - - - - Decay - Decaimiento - - - - Attack - Ataque - - - - Velocity - Velocidad - - - - OutportCombo - - - Midi Output Port - - - - - PageSettings - - - Paper Size - Tama� del papel - - - - user - usuario - - - - Margins - M�genes - - - - Header - Cabecera - - - - Title - T�ulo - - - - Author - Autor - - - - Fonts - Tipos - - - - Page No. - P�ina n - - - - Measure No - Comp� n - - - - Track Name - Nombre de Pista - - - - Lyrics - Letra - - - - Layout - Disposici� - - - - Scale - Escala - - - - Flags - Se�lizadores - - - - show page no. - muestra el nmero de p�ina - - - - show measure no. - muestra el nmero de comp� - - - - show track name - muestra el nombre de la pista - - - - Ok - Aceptar - - - - Apply - Aplicar - - - - Cancel - Cancelar - - - - left Margin - Margen izquierdo - - - - top Margin - Margen Superior - - - - right Margin - Margen derecho - - - - bottom Margin - Margen inferior - - - - Bars across the Page - Barras a trav� de la p�ina - - - - PartCanvas - - - C&ut - C&ortar - - - - &Copy - &Copiar - - - - rename - renombrar - - - - delete - borrar - - - - split - partir - - - - glue - pegar - - - - pianoroll - pianola - - - - score - partitura - - - - list - lista - - - - drums - percusi� - - - - Cannot copy/move/clone to different Track-Type - No puedo copiar/mover/clonar a un tipo diferente de pista - - - - color - color - - - - de-clone - des-clonar - - - - wave edit - editar onda - - - - Cannot paste: multiple tracks selected - No puedo pegar: mtilpes pistas seleccionadas - - - - Cannot paste: no track selected - No puedo pegar: No hay pista seleccionada - - - - Cannot paste midi parts to wave track - No puedo pegar MIDI en una pista de audio - - - - Cannot paste wave parts to midi track - No puedo pegar audio en una pista MIDI - - - - Cannot paste: wrong data type - No puedo pegar: Tipo de datos equivocado - - - - AutoFill... - - - - - miditracker - - - - - MusE: Get auto fill loop len - - - - - Measures: - - - - - MusE: Change Part Name - - - - - PartName: - - - - - Rename - - - - - Color - - - - - PatchBay - - - MusE: ALSA MIDI Patch Bay - MusE: Panel de ruteado MIDI de ALSA - - - - PatchBayBase - - - ALSA Patch Bay - Panel de ruteado de ALSA - - - - PianoRoll - - - &Edit - &Editar - - - - Cut - Cortar - - - - Copy - Copiar - - - - Paste - Pegar - - - - Delete Events - Borrar eventos - - - - Select All - Seleccionar Todo - - - - Select None - De-seleccionar todo - - - - Invert - Invertir - - - - Inside Loop - Dentro del bucle - - - - Outside Loop - Fuera del bucle - - - - &Select - &Seleccionar - - - - blue - azul - - - - pitch colors - colores de tono - - - - velocity colors - colores de velocidad - - - - &Config - &Configurar - - - - event color - color de eventos - - - - &Functions - &Funciones - - - - Over Quantize - Sobre cuantizar - - - - Note On Quantize - Cuantizar inicio de nota - - - - Note On/Off Quantize - Cuantizar inicio y final de nota - - - - Iterative Quantize - Cuantizaci� iterativa - - - - Pianoroll Tools - Herramientas de pianola - - - - Step Record - Grabaci� por pasos - - - - Midi Input - Entrada MIDI - - - - Play Events - Reproducir eventos - - - - Add Controller View - A�de vista de controladores - - - - Config Quant... - Configura cuantizaci�... - - - - Modify Gate Time - Modifica el tiempo de puerta - - - - Modify Velocity - Modifica la velocidad - - - - Crescendo - Crescendo - - - - Transpose - Transponer - - - - Thin Out - Adelgazar - - - - Erase Event - Borrar evento - - - - Note Shift - Desplazar nota - - - - Move Clock - Mover reloj - - - - Copy Measure - Copiar comp� - - - - Erase Measure - Vaciar comp� - - - - Delete Measure - Borrar comp� - - - - Create Measure - Crear comp� - - - - ctrl - control - - - - Panic - - - - - Transport - - - - - PluginDialog - - - Ok - Aceptar - - - - Cancel - Cancelar - - - - MusE: select plugin - MusE: Selecciona el plugin - - - - Lib - Lib - - - - Label - Etiqueta - - - - Name - Nombre - - - - AI - AI - - - - AO - AO - - - - CI - CI - - - - CO - CO - - - - IP - IP - - - - id - id - - - - Maker - Fabricante - - - - Copyright - Copyright - - - - Stereo - Est�eo - - - - Mono - Mono - - - - All - Todo - - - - Mono and Stereo - - - - - Show All - - - - - Select which types of plugins should be visible in the list.<br>Note that using mono plugins on stereo tracks is not a problem, two will be used in parallell.<br>Also beware that the 'all' alternative includes plugins that probably not are usable by MusE. - - - - - Search in 'Label' and 'Name': - - - - - PluginGui - - - bypass plugin - saltar plugin - - - - MusE: load preset - MusE: Cargar plantilla - - - - MusE: save preset - MusE: Guardar plantilla - - - - File Buttons - Archivar botones - - - - Load Preset - Cargar plantilla - - - - Save Preset - Guardar plantilla - - - - PreferencesDialog - - - MusE: load image - MusE: carga imagen - - - - PrinterConfig - - - MusE: Config Printer - MusE: Configuraci� de impresora - - - - Print to file - Imprimir en archivo - - - - Print Command - Comando de impresi� - - - - Preview Command - Comando de previsualizaci� - - - - OK - Aceptar - - - - Cancel - Cancelar - - - - ProjectDialog - - - MusE: create new folder - - - - - new folder: - - - - - QHeader - - - Port Number - Nmero de puerto - - - - enable gui for device - habilitar gui para dispositivo - - - - enables recording from the device - habilita la grabaci� para el dispositivo - - - - Instrument connected to port - Instrumento conectado al puerto - - - - State: result of opening the device - Estado: resultado de abrir el puerto - - - - mute instrument - silenciar instrumento - - - - sound name - nombre del sonido - - - - quantisation -currently not used - cuantizaci� -actualmente sin usar - - - - this input note triggers the sound - ensta nota de entrada dispara el sonido - - - - note length - longitud de nota - - - - this note is send for the sound - esta nota se envia al sonido - - - - output channel -currently not used - canal de salida -actualmente sin uso - - - - output port -currently not used - puerto de salida -actualmente sin uso - - - - velocity level 1 - nivel de velocidad 1 - - - - velocity level 2 - nivel de velocidad 2 - - - - velocity level 3 - nivel de velocidad 3 - - - - velocity level 4 - nivel de velocidad 4 - - - - quantisation - cuantizaci� - - - - output channel - canal de salida - - - - output port - puerto de salida - - - - Enable Recording - Habilita grabaci� - - - - Track Activity - Actividad de pista - - - - Mute Indicator - Indicador de silencio - - - - Solo Indicator - Indicador de solo - - - - Track Type - Tipo de pista - - - - Track Name - Nombre de pista - - - - Output Channel Number - Nmero de canal de salida - - - - Output Port - Puerto de salida - - - - Time Lock - Bloqueo de tiempo - - - - Solo/Pre Fader Listening - Escucha de S�o/pre-fader - - - - Name of the midi device associated with this port number - Nombre del dispositivo MIDI asociado con este nmero de puerto - - - - QMenu - - - Add Midi Generator... - - - - - Add Soft Synth... - - - - - QWidget - - - Cannot transform non empty track - No puedo transformar una pista que no est�vacia - - - - Velocity - Velocidad - - - - Cannot convert sysex string - No puedo convertir el paquete de sistema exclusivo - - - - Hex String too long (2048 bytes limit) - Cadena hexadecimal demasiado larga (l�ite de 2048 bytes) - - - - generic midi - midi gen�ico - - - - new - nuevo - - - - create peakfile for - crear archivo de picos para - - - - MusE: get file name - MusE: obtener el nombre de archivo - - - - the directory - - el directorio - - - - - -does not exist -create? - -no existe - Lo creo ? - - - - &Create - &Crear - - - - Cancel - Cancelar - - - - MusE: create directory - MusE: crear directorio - - - - creating dir failed - fall�la creaci� de directorio - - - - File - - El archivo - - - - - -exists - -existe - - - - MusE: write - MusE: escribe - - - - Overwrite - Sobre escribe - - - - Quit - Salir - - - - Open File - - Abrir archivo - - - - -failed: - -fall� - - - - MusE: Open File - MusE: Abrir archivo - - - - None - Ninguno - - - - Master - Maestro - - - - Input - Entrada - - - - Group %c - Grupo %c - - - - Unknown - Desconocido - - - - copy - %1 -to - %2 - - - - - -converting sample rate -from %1 to %2 - - - - - Abort - - - - - MusE: export midi file: - - - - - QuantConfig - - - Config Quantize - Configurar Cuantizaci� - - - - Strength - Fuerza - - - - Don´t Quantize - No cuantizes - - - - Quant Len - Cuantizar la longitud - - - - MusE: Config Quantize - MusE: Configurar Cuantizaci� - - - - QuantDialog - - - Display Quantize - Mostrar la cuantizaci� - - - - Position - Posici� - - - - Note Quantize - Cuantizar Nota - - - - Rest Quantize - Cuantizar el resto - - - - Ok - Aceptar - - - - Cancel - Cancelar - - - - RecordButton - - - record - grabar - - - - RhythmBase - - - MusE: Random Rhythm Generator - MusE: Generador de r�mo aleatorio - - - - Instrument Properties - Propiedades del instrumento - - - - counts/bar - cuentar por barra - - - - steps/count - pasos por cuenta - - - - # bars - n barras - - - - test - probar - - - - contrib - contribuir - - - - randomize - aleartorizar - - - - Group 1 - Grupo 1 - - - - Group 2 - Grupo 2 - - - - Group 3 - Grupo 3 - - - - Group 4 - Grupo 4 - - - - Group 5 - Grupo 5 - - - - listen - escuchar - - - - Instrument - Instrumento - - - - Group - Grupo - - - - &New - &Nuevo - - - - create new entry - crear nueva entrada - - - - pressing the New button you create a new entry -in the MusE list of defined controllers - pulsando el bot� Nuevo creas una entrada nueva -en la lista de controles definidos por MusE - - - - &Delete - &Borrar - - - - delete selected entry - borra la entrada seleccionada - - - - Up - Arriba - - - - Down - Abajo - - - - Instrument - Instrumento - - - - steps/count - pasos por cuenta - - - - list of defined controllers - Lista de controladores definidos - - - - This is the MusE list of defined controllers. - Esta es la lista de controladores definidos en MusE. - - - - &File - &Archivo - - - - &Edit - &Editar - - - - &Help - A&yuda - - - - Tools - Herramientas - - - - New - Nuevo - - - - Open - Abrir - - - - &Open... - &Abrir... - - - - Save - Guardar - - - - &Save - &Guardar - - - - Save As - Guardar como - - - - Save &As... - Guardar &Como... - - - - Print - Imprimir - - - - &Print... - &Imprimir... - - - - Exit - Salir - - - - E&xit - &Salir - - - - Undo - Deshacer - - - - &Undo - &Deshacer - - - - Redo - Rehacer - - - - &Redo - &Rehacer - - - - Cut - Cortar - - - - &Cut - &Cortar - - - - Copy - Copiar - - - - C&opy - C&opiar - - - - Paste - Pegar - - - - &Paste - &Pegar - - - - Find - Buscar - - - - &Find... - &Buscar... - - - - Contents - Contenidos - - - - &Contents... - &Contenidos... - - - - Index - �dice - - - - &Index... - &Indice... - - - - About - Acerca de - - - - &About... - &Acerca de ... - - - - RhythmGenerator - - - Form3 - Formulario3 - - - - Instrument Settings: - Configuraci� de instrumento: - - - - Instrument - Instrumento - - - - Hi-Hat - Charli - - - - add - a�dir - - - - delete - borrar - - - - steps/count - pasos/cuenta - - - - count/bar - cuentas/comp� - - - - # bars - n compases - - - - Group Settings: - Configuraci� de grupo: - - - - Group - Grupo - - - - Group 1 - Grupo 1 - - - - Group 2 - Grupo 2 - - - - Group 3 - Grupo 3 - - - - Group 4 - Grupo 4 - - - - Group 5 - Grupo 5 - - - - contrib - contrib - - - - listen - escuchar - - - - Randomize - aleatorizar - - - - Rhythm Style: - Estilo de ritmo: - - - - Clear - L�pio - - - - Open... - Abrir... - - - - Save - Guardar - - - - Save as... - Guardar como... - - - - Generate - Generar - - - - Close - Cerrar - - - - SS_PluginChooserBase - - - Name - Nombre - - - - &Cancel - &Cancelar - - - - SS_PluginFront - - - Clear and unload effect - - - - - Load effect - - - - - Toggle display of effect parameters - - - - - Turn effect on/off - - - - - Score - - - &Config - &Configuraci� - - - - Page Settings - Configuraci� de p�ina - - - - Staff Settings - Configuraci� de pentagrama - - - - Background Pixmap - imagen de fondo - - - - Palettes - Paletas - - - - Dynamics - Din�icos - - - - Print - Imprimir - - - - Preview Print - Previsualizar la impresi� - - - - Lyrics - Letra - - - - enter lyrics - escribe la letra - - - - Text - Texto - - - - enter text - escribe el texto - - - - C7m - C7m - - - - enter chord symbol - escribe el s�bolo del acorde - - - - to previous voice - al timbre anterior - - - - to next voice - al timbre siguiente - - - - flip stem direction - intercambia la direcci� de la armadura - - - - move marked notes to previous voice or to upper stave in a split system - mueve las notas marcadas al timbre anterior o a la parte superior en sistemas partidos - - - - move marked notes to next voice or to lower stave in a split system - mueve las notas marcadas al timbre siguiente o a la parte inferior en sistemas partidos - - - - flip stem direction of selected notes - intercambia la direcci� de la armadura de las notas seleccionadas - - - - StaffSettings - Configuraci� de pentagrama - - - - MusE: config wallpaper - MusE: Configurar imagen de fondo - - - - Score - Partitura - - - - ScoreConfig - - - Staff Settings: - Configuraci� de Pentagrama: - - - - Track List - Lista de pistas - - - - Key/Clef - Clave - - - - Raster - Raster - - - - Note Quantize - Cuantizaci� de nota - - - - Rest Quantize - Restaurar cuantizaci� - - - - Mode - Modo - - - - Split System - Sistema partido - - - - Splitpoint - punto de separaci� - - - - Ok - Aceptar - - - - Apply - Aplicar - - - - Cancel - Cancelar - - - - Upper Staff - Pentagrama superior - - - - Lower Staff - Pentagrama inferior - - - - ScrollScale - - - next page - p�ina siguiente - - - - previous page - p�ina anterior - - - - current page number - numero de p�ina actual - - - - ShortcutCaptureDialog - - - Ok - Aceptar - - - - Cancel - Cancelar - - - - Shortcut conflicts with - - - - - Undefined - - - - - ShortcutCaptureDialogBase - - - OK - Aceptar - - - - Cancel - Cancelar - - - - ShortcutConfig - - - Arranger - Arreglador - - - - Insert Note - Insertar nota - - - - Insert SysEx - Insertar sistema exclusivo - - - - Insert Ctrl - Insertar controlador - - - - Insert Meta - Insertar Meta - - - - Insert Channel Aftertouch - Insertar AfterTouch de canal - - - - Insert Key Aftertouch - Insertar AfterTouch de tecla - - - - Global - Global - - - - Pianoroll - Pianola - - - - Drumeditor - - - - - List editor - - - - - List Mastertrack - - - - - All categories - - - - - Wave editor - - - - - ShortcutConfigBase - - - &Apply - &Aplicar - - - - SigScale - - - signature scale - Armadura de la escala - - - - SimpleSynthGui - - - Load sample dialog - - - - - Song - - - Jack shutdown! - - - - - Jack has detected a performance problem which has lead to -MusE being disconnected. -This could happen due to a number of reasons: -- a performance issue with your particular setup. -- a bug in MusE (or possibly in another connected software). -- a random hiccup which might never occur again. -- jack was voluntary stopped by you or someone else -- jack crashed -If there is a persisting problem you are much welcome to discuss it -on the MusE mailinglist. -(there is information about joining the mailinglist on the MusE - homepage which is available through the help menu) - -To proceed check the status of Jack and try to restart it and then . -click on the Restart button. - - - - - SplitLayerGui - - - start pitch for split - - - - - enable learn mode for start pitch - - - - - end pitch for split - - - - - enable learn mode for end pitch - - - - - pitch offset for split - - - - - start velocity for split - - - - - end velocity for split - - - - - velocity offset for split - - - - - StkGuiBase - - - MyDialog2 - MiDialogo2 - - - - Voices - Voces - - - - Edit - Editar - - - - SynthConfigBase - - - MusE: Soft Synth Configuration - MusE: Configuraci� del Sintetizador virtual - - - - Soft Synthesizer - Sintetizador Virtual - - - - File - Archivo - - - - Instances - Copias - - - - Name - Nombre - - - - list of available software synthesizers - lista de sintetizadores de software dispoibles - - - - Add Instance - A�dir copia - - - - Alsa Port - Puerto ALSA - - - - Remove Instance - Quitar copia - - - - TLSWidget - - - Remove Subtrack - - - - - Ctrl - - - - - Velocity - Velocidad - - - - Delete Controller - - - - - TLWidget - - - Delete Track - Borrar pista - - - - Copy Track - - - - - Show Gui - Mostrar GUI - - - - Add Subtrack - - - - - Midi Output Channel - - - - - TList - - - Midi - MIDI - - - - Drum - Percusi� - - - - Wave - Audio - - - - Delete Track - Borrar pista - - - - Track Comment - Comentario de pista - - - - Show Gui - Mostrar GUI - - - - Add Midi Track - A�dir pista MIDI - - - - Add Drum Track - A�dir pista de percusi� - - - - Add Wave Track - A�dir pista de audio - - - - TemplateDialog - - - MusE presets - - - - - User presets - - - - - TempoSig - - - Tempo/Sig - tempo/firma - - - - TimeCanvas - - - Ctrl - - - - - Add Controller View - - - - - Toolbar1 - - - Solo - Solo - - - - Snap - Snap - - - - Quantize - Cuantizar - - - - To - A - - - - All Events - Todos los eventos - - - - Looped Ev. - Eventos del bucle - - - - Selected Ev. - Eventos seleccionados - - - - Looped+Sel. - Bucle + Selecci� - - - - Cursor - Cursor - - - - TrackComment - - - MusE: Track Comment - MusE: Comentario de la pista - - - - Track Comment: - Comentario de la pista: - - - - TrackInfo - - - Track Type - Tipo de pista - - - - Track Name - - - - - Transport - - - Punch In - Pinchar - - - - Loop - Bucle - - - - Punch Out - Fin pinchado - - - - Left Mark - Marca izquierda - - - - Right Mark - Marca derecha - - - - Overdub - A�dir - - - - Replace - Reemplazar - - - - Rec Mode - Modo de grabaci� - - - - Normal - Normal - - - - Mix - Mezcla - - - - Cycle Rec - Ciclar Grabaci� - - - - punchin - pinchar - - - - loop - bucle - - - - punchout - fin pinchado - - - - rewind to start - retroceder al inicio - - - - rewind - retroceder - - - - forward - avanzar - - - - stop - parar - - - - play - reproducir - - - - record - grabar - - - - AC - AC - - - - quantize during record - cuantizar durante la grabaci� - - - - Click - Click - - - - metronom click on/off - Click del metr�omo encendido/apagado - - - - Sync - Sinconizaci� - - - - external sync on/off - Sincronizaci� externa encedida/apagada - - - - Master - Maestro - - - - use master track - usar pista maestra - - - - TransposeDialogBase - - - MusE: Midi Transpose - MusE: Transposici� MIDI - - - - Value - Valor - - - - halftones - semitonos - - - - Time - Tiempo - - - - all - todo - - - - between markers - entre marcadores - - - - Parts - Partes - - - - all in selected tracks - todo en las pistas seleccionadas - - - - OK - Aceptar - - - - Cancel - Cancelar - - - - VAMGui - - - MusE: Load VAM Presets - - - - - MusE: Save VAM Presets - - - - - VAMGuiBase - - - Virtual Analogue for MusE - Analogico virtual para MusE - - - - LFO - LFO - - - - Freq - Freq - - - - Waveform - Tipo Onda - - - - Sine - Seno - - - - Pulse - Pulso - - - - Saw - Sierra - - - - Triangle - Tri�gulo - - - - Filter - Filtro - - - - EnvMod - Modulaci� de envolvente - - - - Attack - Ataque - - - - Decay - Decaimiento - - - - Sustain - Sostenido - - - - Release - Relajaci� - - - - Cutoff - Frecuencia de corte - - - - Resonance - Resonancia - - - - Invert - Invertir - - - - KeyTrack - Seguir teclas - - - - Presets - Plantillas - - - - Set - Establecer - - - - load preset list - cargar lista de plantillas - - - - save preset list - guardar lista de plantillas - - - - save preset list to a new file - guardar lista de plantillas en un archivo nuevo - - - - delete preset - borrar plantilla - - - - DCO 1 - DCO 1 - - - - Pitch - Tono - - - - Detune - Desafinaci� - - - - PWM - PWM - - - - FM - FM - - - - PW - PW - - - - DCO 2 - DCO 2 - - - - On - Encendido - - - - VAM 1.0beta2 -Virtual Analog for MusE -Released under GPL. -Copyright(C) 2002 -Jotsif Lindman Hörnlund -( jotsif@linux.nu ) - VAM 1.0beta2 -Virtual Analog for MusE -Released under GPL. -Copyright(C) 2002 -Jotsif Lindman Hörnlund -( jotsif@linux.nu ) - - - - Velocity - - - MusE: Modify Velocity - MusE: Modificar velocidad - - - - VelocityBase - - - MusE: Modify Velocity - MusE: Modificar velocidad - - - - Range - Rango - - - - All Events - Todos los eventos - - - - Selected Events - Eventos seleccionados - - - - Looped Events - Eventos del bucle - - - - Selected & Looped - Seleccionados y bucle - - - - Values - Valores - - - - Rate: - Velocidad: - - - - Offset: - Desplazamiento: - - - - % - % - - - - OK - Aceptar - - - - Cancel - Cancelar - - - - WTScale - - - bar scale - escala de compases - - - - WaveEdit - - - Normalize - Normalizar - - - - weTools - Herramientas de Audio - - - - Solo - Solo - - - - Cursor - Cursor - - - - &File - &Archivo - - - - Functions - Funciones - - - - &Edit - &Editar - - - - Func&tions - - - - - &Gain - - - - - 200% - - - - - 150% - - - - - 75% - - - - - 50% - - - - - 25% - - - - - Other - - - - - Edit in E&xternal Editor - - - - - Mute Selection - - - - - Normalize Selection - - - - - Fade In Selection - - - - - Fade Out Selection - - - - - Reverse Selection - - - - - Select - Seleccionar - - - - waveedit-tools - - - - - Transport - - - - - pianoroll-tools - - - - - WaveTrackInfoBase - - - MusE: TrackInfo - MusE: Informaci� de pista - - - - Track Info - Informaci� de pista - - - - Track Name - Nombre de pista - - - - Output Route: - Ruta de salida: - - - - Input Route: - Ruta de netrada: - - - - Ports: - Puertos: - - - - Mono - Mono - - - - Stereo - Est�eo - - - - off - apagado - - - - WaveView - - - MusE - file size changed - - - - - When editing in external editor - you should not change the filesize -since it must fit the selected region. - -Missing data is muted - - - - diff --git a/muse/share/locale/muse_fr.qm b/muse/share/locale/muse_fr.qm deleted file mode 100644 index 8a61f889..00000000 Binary files a/muse/share/locale/muse_fr.qm and /dev/null differ diff --git a/muse/share/locale/muse_fr.ts b/muse/share/locale/muse_fr.ts deleted file mode 100644 index c4972635..00000000 --- a/muse/share/locale/muse_fr.ts +++ /dev/null @@ -1,9584 +0,0 @@ - - - - - - - Click this button to enable recording - Cliquez sur ce bouton pour activer l'enregistrement - - - - sets amount of quantization: -0 - no quantization -100 - full quantization - Définit le niveau de quantisation: -0 - pas de quantisation -100 - quantisation complète - - - - select Pointer Tool: -with the pointer tool you can: - select parts - move parts - copy parts - Choisir l'Outil de Pointage: -avec l'outil de pointage vous pouvez: - choisir des pièces - déplacer des pièces - copier des pièces - - - - Insert Note - Insérer Note - - - - Insert SysEx - Insérer SysEx - - - - Insert Ctrl - Insérer Ctrl - - - - Insert Meta - Insérer Meta - - - - Insert Channel Aftertouch - Insérr Canal de Pression - - - - Insert Key Aftertouch - Insérer une note de Pression - - - - Default - - - - - Refrain - - - - - Bridge - - - - - Intro - - - - - Coda - - - - - Chorus - Chorus - - - - Solo - - - - - Brass - Cuivres - - - - Percussion - - - - - Drums - Batterie - - - - Guitar - - - - - Bass - - - - - Flute - Flute - - - - Strings - - - - - Keyboard - - - - - Piano - - - - - Saxophon - - - - - @default - - - Click this button to open a <em>new song</em>.<br>You can also select the <b>Open command</b> from the File menu. - Cliquez sur ce bouton pour ouvrir une <em>nouvelle chansong</em>.<br>Vous pouvez aussi sélectionner la <b>commande Ouvrir</b> à partir du menu Fichier. - - - - Click this button to save the song you are editing. You will be prompted for a file name. -You can also select the Save command from the File menu. - Cliquez sur ce bouton pour sauvegarder la chanson que vous éditez. Le nom de sauvegarde vous sera demandé. -Vous pouvez aussi choisir la commande Enregistrer dans le menu Fichier. - - - - Create New Song - Créer une nouvelle chanson - - - - Click this button to stop playback - Cliquez sur ce bouton pour arréter la lecture - - - - Click this button to start playback - Cliquez sur ce bouton pour démarrer la lecture - - - - Click this button to rewind to start position - Cliquez sur ce bouton pour revenir à la position de départ - - - - Click this button to rewind - Cliquez sur ce bouton pour revenir en arrière - - - - Click this button to forward current play position - Cliquez sur ce bouton pour avancer dans la lecture - - - - don't quantize notes above this tick limit - Ne pas quantiser les notes sur cette limite (en tick) - - - - quantize also note len as default - quantiser aussi la longueur de note par défault - - - - loop between left mark and right mark - Boucler entre les marqueurs gauche et droit - - - - record starts at left mark - l'enregistrement démarre au marqueur gauche - - - - record stops at right mark - l'enregistrement s'arrète au marqueur droit - - - - rewind to start position - revenir à la position de départ - - - - rewind current position - revenir à la position en cours - - - - move current position - déplacer la position en cours - - - - stop sequencer - arréter le séquenceur - - - - start sequencer play - démarrer la lecture du séquenceur - - - - to record press record and then play - pour enregistrer, presser Enregistrement (Record) puis Lecture (Play) - - - - send note off to all midi channels - envoyer ordre de relachement de note à tous les canaux midi - - - - select Pencil Tool: -with the pencil tool you can: - create new parts - modify length of parts - Choisir l'Outil Crayon -avec le crayon vous pouvez: - créer de nouvelles pièces - modifier la longueur des pièces - - - - select Delete Tool: -with the delete tool you can delete parts - choisir l'Outil Gomme: -avec la gomme vous pouvez effacer les pièces - - - - select Cut Tool: -with the cut tool you can split a part - Choisir l'Outil Ciseaux -avec les ciseaux vous pouver couper une pièce - - - - select Glue Tool: -with the glue tool you can glue two parts - Choisir l'Outil Colle: -avec la colle vous pouvez coller deux pièces ensemble - - - - select Score Tool: - - Choisir l'Outil Partition - - - - select Quantize Tool: -insert display quantize event - Choisir l'Outil Quantisation: -pour voir les marques de quantisation - - - - select Drawing Tool - Choisir l'Outil de Dessin - - - - select Muting Tool: -click on part to mute/unmute - Choisir l'Outil Silence: -cliquez sur une pièces pour la rendre muette ou pas. - - - - pointer - pointeur - - - - pencil - crayon - - - - rubber - élastique - - - - cutter - ciseaux - - - - score - partition - - - - glue - colle - - - - quantize - quantisation - - - - draw - dessin - - - - mute parts - silence - - - - Off - Arrt - - - - presets (*.pre *.pre.gz *.pre.bz2) - réglages (presets: *.pre *.pre.gz *.pre.bz2) - - - - All Files (*) - Tous les Fichiers - - - - Click this button to enable recording - Cliquez sur ce bouton pour activer l'enregistrement - - - - m - m - - - - mute - silence - - - - s - s - - - - solo - - - - - Mo - - - - - monitor - - - - - Dr - - - - - use drum map - - - - - off - - - - - aR - - - - - automation read - - - - - aW - - - - - automation write - - - - - sync - - - - - send sync events - - - - - 1/2 channel - 1/2 canal - - - - oR - - - - - output routing - chemin de sortie (routing) - - - - iR - - - - - input routing - - - - - Channels - - - - - Bar - Mesure - - - - Midi - Midi - - - - Add Midi Track - - - - - Add Midi Output - - - - - Add Midi Input - - - - - Audio - Audio - - - - Add Wave Track - - - - - Add Audio Output - - - - - Add Audio Group - - - - - Add Audio Input - - - - - MusE: create project directory - - - - - MusE: create template directory - - - - - Cannot find project <%1> - - - - - MusE: load Project - - - - - Save - Enregistrer - - - - MusE: create instruments directory - - - - - Appearance - - - MusE: load image - MusE: charger une image - - - - handle of transport window - Accroche de la fenêtre Transport - - - - track activity in arranger - Activité des pistes dans l'Arrangeur - - - - bigtime font color - Couleur de la police dans le GrandChrono - - - - bigtime background color - Couleur de fond du GrandChrono - - - - waveedit background color - Couleur du fond de l'éditeur d'échantillon - - - - AppearanceDialogBase - - - MusE: Appearance settings - MusE: réglages de l'apparence - - - - Apply - Appliquer - - - - Ok - Ok - - - - Cancel - Annuler - - - - Arranger - Arrangeur - - - - Parts - Pièces - - - - show frames - montrer les séparations - - - - show names - montrer les noms - - - - show events - montrer les évènements - - - - show Cakewalk Style - montrer dans le style Cakewalk - - - - Events - Evènement - - - - note on - note on - - - - poly pressure - pression poly - - - - controller - contrleurs - - - - aftertouch - pression (aftertouch) - - - - pitch bend - molette de hauteur (pitch) - - - - program change - sélection de programme (prog. change) - - - - special - spécial - - - - Background picture - image de fond - - - - bg - fond - - - - select... - choisissez... - - - - show snap grid - voir la grille de positionnement - - - - Colors - couleurs - - - - Items - Objets - - - - selected - sélectionné - - - - current: - en cours: - - - - change... - changer... - - - - dynamic colors for track activity in arranger - Choix auto des couleurs pour l'activité des pistes dans l'Arrangeur - - - - Style/Fonts - Styles/Polices - - - - QT Theme - Thème - - - - Windows - Windows - - - - MusE - MusE - - - - Metal - Metal - - - - Norwegian Wood - Norwegian Wood - - - - Platinum - Platinum - - - - CDE - CDE - - - - Motif - Motif - - - - Motif Plus - Motif Plus - - - - Fonts - Polices - - - - Family - Famille - - - - Size - Taille - - - - Font 1 - Police 1 - - - - Font 2 - Police 2 - - - - Font 3 - Police 3 - - - - Font 0 - Police 0 - - - - Bold - Gras - - - - Italic - Italique - - - - ... - ... - - - - Font 4 - Police 4 - - - - Font 5 - Police 5 - - - - S - S - - - - R - R - - - - Arranger - - - Cursor - Curseur - - - - Snap - Aligne - - - - Len - Longueur - - - - Type - Type - - - - NO - NON - - - - midi song type - type de fichier midi - - - - Pitch - Hauteur - - - - midi pitch - hauteur midi - - - - global midi pitch shift - transposition midi globale - - - - Tempo - Tempo - - - - midi tempo - tempo midi - - - - TrackInfo - InfoPiste - - - - Track - Piste - - - - O-Port - 0-Port - - - - Arranger - Arrangeur - - - - Off - Arrt - - - - Bar - Mesure - - - - GM - GM - - - - GS - GS - - - - XG - XG - - - - N - N - - - - R - R - - - - A - A - - - - M - M - - - - S - S - - - - C - C - - - - Ch - Ch - - - - T - T - - - - Master - Matre - - - - Group A - Groupe A - - - - Group B - Groupe B - - - - Group C - Groupe C - - - - Group D - Groupe D - - - - Mix - - - - - Config Tracklist - - - - - all mute off - - - - - all solo off - - - - - all autoRead off - - - - - all autoWrite off - - - - - i - - - - - Show Track Info - - - - - m - m - - - - Show Mixer Strip - - - - - AudioConfBase - - - MusE: Audio Configuration - MusE: Configuration Audio - - - - &Apply - &Appliquer - - - - &OK - &OK - - - - &Cancel - A&nnuler - - - - Audio Parameters - Paramètres Audio - - - - 32 - 32 - - - - 64 - 64 - - - - 128 - 128 - - - - 256 - 256 - - - - 512 - 512 - - - - 1024 - 1024 - - - - 2048 - 2048 - - - - 4096 - 4096 - - - - Frame Size: - Longueur des frames: - - - - Delay: - Délai: - - - - Sample Rate: - Vitesse d'échantillonage: - - - - 44100 - 44100 - - - - 48000 - 48000 - - - - 96000 - 96000 - - - - Audio Driver - Pilote Audio - - - - Use Alsa - Alsa - - - - Use JACK - JACK - - - - No Audio - Pas d'audio - - - - Status: - Etat: - - - - TextLabel6 - TextLabel6 - - - - AudioMixerApp - - - 1/2 channel - 1/2 canal - - - - pre fader - post fader - pre fader - post fader - - - - record - enregistrement - - - - mute - silence - - - - pre fader listening - écoute pre fader - - - - record downmix - enregistrer mixdown - - - - off - arr - - - - output routing - chemin de sortie (routing) - - - - &Config - &Configuration - - - - Add Input Strip - Ajouter une Bande d'Entrée - - - - S - S - - - - Pre - Pre - - - - dB - dB - - - - MusE: Audio Mixer - MusE: Mixer Audio - - - - Inputs - Entrées - - - - Synthi - Synth - - - - Tracks - Pistes - - - - Groups - Groupes - - - - Master - Matre - - - - Group A - Groupe A - - - - Group B - Groupe B - - - - Group C - Groupe C - - - - Group D - Groupe D - - - - None - Aucun - - - - AudioStrip - - - Pan - Pan - - - - S - S - - - - 1/2 channel - 1/2 canal - - - - Pre - Pre - - - - pre fader - post fader - pre fader - post fader - - - - dB - dB - - - - mute - silence - - - - record downmix - enregistrer mixdown - - - - pre fader listening - écoute pre fader - - - - output routing - chemin de sortie (routing) - - - - Channel - Canal - - - - panorama - - - - - Channel %1 - - - - - MidiChannel - - - - - Awl::MidiVolEntry - - - off - - - - - db - - - - - Awl::VolEntry - - - off - - - - - BigTime - - - MusE: Bigtime - MusE: GrandChrono - - - - ClipListEdit - - - MusE: Clip List Editor - MusE: Editeur de la Liste de Clips - - - - ClipListEditorBase - - - MusE: ClipList - MusE: Liste de Clips - - - - Name - Nom - - - - Refs - Réfs - - - - Start - Départ - - - - Len - Long - - - - Data - Données - - - - Clip Properties - Propriétés du Clip - - - - Pos: - Pos: - - - - Len: - Long: - - - - CommentBase - - - Form1 - Forme1 - - - - Track Comment - Commentaire pour la Piste - - - - Track 1 - Piste 1 - - - - ConfigMidiFileBase - - - 96 - 96 - - - - 192 - 192 - - - - 384 - 384 - - - - Enable extended smf format - Activer la prise en charge du format smf étendu - - - - ConfigTrackListBase - - - Soft Synthesizer - Synthétiseur virtuel - - - - CtrlDelegate - - - dB - dB - - - - off - - - - - CtrlDialog - - - controller name - - - - - flag if controller contains data - - - - - CtrlEdit - - - Sel - Sél - - - - select controller - Choisissez le contrlleur - - - - CtrlListEditor - - - dB - dB - - - - CtrlPanel - - - select controller - Choisissez le contrlleur - - - - remove panel - enlever le panneau - - - - other ... - autres... - - - - Sel - Sél - - - - x - x - - - - Velocity - Vélocité - - - - Pitch - Hauteur - - - - DeicsOnzeGui - - - Save configuration - - - - - Critical Error - - - - - Cannot open file %1 - - - - - Parsing error for file %1 - - - - - Load category dialog - - - - - Load set dialog - - - - - Save set dialog - - - - - New category - - - - - Delete category - - - - - Load category - - - - - Save category - - - - - Load set - - - - - Save set - - - - - Delete set - - - - - New subcategory - - - - - Delete subcategory - - - - - Load subcategory - - - - - Save subcategory - - - - - New preset - - - - - Delete preset - - - - - Load preset - - - - - Save preset - - - - - No more category supported - - - - - You can not add more categories - - - - - Do you really want to delete %1 ? - - - - - &Yes - - - - - &No - - - - - No category selected - - - - - You must first select a category. - - - - - Replace or add - - - - - %1 is supposed to be affected to the hbank number %2, but there is already one on this slot. - Do you want to replace it or to add it in the next free slot ? - - - - - &Replace - - - - - &Add - - - - - Download error - - - - - There is no more free category slot. - - - - - Save category dialog - - - - - No more subcategory supported - - - - - You can not add more subcategories - - - - - No subcategory selected - - - - - You must first select a subcategory. - - - - - Load subcategory dialog - - - - - %1 is supposed to be affected to the lbank number %2, but there is already one on this slot. - Do you want to replace it or to add it in the next free slot ? - - - - - There is no more free subcategory slot. - - - - - Save subcategory dialog - - - - - No more preset supported - - - - - You can not add more presets - - - - - No preset selected - - - - - You must first select a preset. - - - - - Load preset dialog - - - - - %1 is supposed to be affected to the prog number %2, but there is already one on this slot. - Do you want to replace it or to add it in the next free slot ? - - - - - There is no more free preset slot. - - - - - Save preset dialog - - - - - Browse set dialog - - - - - Browse image dialog - - - - - DeicsOnzeGuiBase - - - Preset - Réglages enregistrés - - - - Speed - Vitesse - - - - Volume - Volume - - - - Pitch - Hauteur - - - - After Touch - Pression (After Touch) - - - - Transpose - Transposition - - - - &Config - &Configuration - - - - Save - Enregistrer - - - - Colors - couleurs - - - - Text - Texte - - - - DrumEdit - - - Load Map - Charger - - - - Save Map - Enregistrer - - - - &Edit - &Editer - - - - Cut - Couper - - - - Copy - Copier - - - - Paste - Coller - - - - Delete Events - Effacer - - - - Select All - Tout sélectionner - - - - Select None - Dé-sélectionner - - - - Invert - Inverser - - - - Inside Loop - Dans la boucle - - - - Outside Loop - Hors de la boucle - - - - &Select - &Sélectionner - - - - Step Record - Enregistrement pas-à-pas - - - - Midi Input - Entrée Midi - - - - Add Controller View - Ajouter une Vue de contrlleurs - - - - M - M - - - - Sound - Son - - - - QNT - QNT - - - - E-Note - E-Note - - - - Len - Long - - - - A-Note - A-Note - - - - Ch - Ch - - - - Port - Port - - - - LV1 - LV1 - - - - LV2 - LV2 - - - - LV3 - LV3 - - - - LV4 - LV4 - - - - &File - &Fichier - - - - Load Drummap - Charger Set de Batterie - - - - Store Drummap - Enregistrer Set de Batterie - - - - ctrl - ctrl - - - - drummaps - Sets de Batterie - - - - Muse: Load Drum Map - MusE: Charger Set de Batt. - - - - MusE: Store Drum Map - MusE: Enregistrer Set de Batt. - - - - &Functions - &Fonctions - - - - Modify Velocity - Modifier la vélocité - - - - Drum Tools - - - - - Transport - Transport - - - - EditCAfterDialog - - - Time Position - Position temporelle - - - - Pressure - Pression - - - - MusE: Enter Channel Aftertouch - MusE: Entrez le Canal de Pression (AfterTouch) - - - - EditCtrl14Dialog - - - Time Position - Position temporelle - - - - Controller-H - Contrlleur H - - - - Controller-L - Contrlleur L - - - - Value - Valeur - - - - MusE: Enter Controller14 Event - MusE: Entrer l'évènement Contrlleur 14 - - - - EditCtrl7Dialog - - - Time Position - Position temporelle - - - - Controller - Contrlleur - - - - Value - Valeur - - - - MusE: Enter Controller Event - MusE: Entrez l'Evénement Contrlleur - - - - EditCtrl7DialogBase - - - MusE: Enter Controller - Muse: Entrez le Contrlleur - - - - Controller: - Contrlleur: - - - - Time Position: - Position temporelle - - - - Value: - Valeur - - - - controller value - Valeur du Contrlleur - - - - OK - OK - - - - Cancel - Annuler - - - - EditCtrlBase - - - Value - Valeur - - - - H-Bank - H-Bank - - - - L-Bank - L-Bank - - - - off - arr - - - - EditEventDialog - - - Ok - Ok - - - - Cancel - Annuler - - - - EditInstrument - - - MusE: Create file failed - - - - - MusE: Write File failed - - - - - MusE: Save Instrument Definition - - - - - Instrument Definition (*.idf) - - - - - MusE: Enter new Category - - - - - Enter new Category: - - - - - MusE - MusE - - - - The current Instrument contains unsaved data -Save Current Instrument? - - - - - &Save - &Enregistrer - - - - &Nosave - - - - - &Abort - - - - - EditInstrumentBase - - - GM - GM - - - - GS - GS - - - - XG - XG - - - - Name - Nom - - - - Type - Type - - - - RPN - RPN - - - - NRPN - NRPN - - - - Pitch - Hauteur - - - - Range - Entre - - - - list of defined controllers - list des controleurs définis - - - - This is the MusE list of defined controllers. - C'est la liste des controleurs qui ont été définis - - - - SysEx - SysEx - - - - Panic - Panique! - - - - &File - &Fichier - - - - &New - &Nouveau - - - - Save - Enregistrer - - - - &Save - &Enregistrer - - - - EditMetaDialog - - - Time Position - Position temporelle - - - - Meta Type - Meta Type - - - - Enter Hex - Entrez en Hexa - - - - MusE: Enter Meta Event - MusE: Entrer un Evènement en Hexa - - - - EditMetaDialogBase - - - MusE: Enter Meta Event - MusE: Entrer un Méta Evènement - - - - OK - OK - - - - Cancel - Annuler - - - - TextLabel1 - TextLabel1 - - - - Time Position: - Position temporelle - - - - Meta Type: - Meta Type - - - - Enter Hex - Entrée Hexa - - - - EditNoteDialogBase - - - MusE: Enter Note - Mus2: Entrer la Note - - - - OK - OK - - - - Cancel - ANnuler - - - - Length: - Longueur: - - - - Time Position: - Position temporelle: - - - - Pitch: - Hauteur - - - - Velocity On: - Vélocité On: - - - - Velocity Off: - Vélocité Off: - - - - EditPAfterDialog - - - Time Position - Position temporelle - - - - Pitch - Hauteur - - - - Pressure - Pression - - - - MusE: Enter Poly Aftertouch - Muse: Entrer la Pression polyph. - - - - EditPitchDialog - - - Time Position - Editer la Position temporelle - - - - Pitch - Hauteur - - - - MusE: Enter Pitch Shift - MusE: Entrez le décalage de Hauteur: - - - - EditSysexDialogBase - - - MusE: Enter SysEx - MusE: Entrer le Sysex - - - - TimePosition: - Position temporelle - - - - Comment: - Commentaires: - - - - OK - OK - - - - Cancel - Annuler - - - - EditToolBar - - - Edit Tools - Outils d'Edition - - - - EffectRack - - - effect rack - rack d'effets - - - - move up - Déplacer vers le haut - - - - move down - Déplacer vers le bas - - - - remove - enlever - - - - bypass - direct - - - - show gui - montrer l'interface - - - - new - nouveau - - - - change - changement - - - - show native gui - - - - - New Plugin - - - - - New Aux Send - - - - - Replace effect - - - - - Do you really want to replace the effect %1? - - - - - &Yes - - - - - &No - - - - - ExportMidiDialog - - - Save - - - - - as smf midi file - - - - - MusE: export midi smf file - - - - - FLUIDGui - - - FLUID: open Soundfile - - - - - Fluid: select Sound Font - - - - - FLUIDGuiBase - - - Form1 - Form1 - - - - Soundfont - Set de Sons - - - - Load - Charger - - - - FLUIDSynthGuiBase - - - FLUID Synth - FLUID Synth - - - - Gain - Gain - - - - Room Size - Dimension de la chambre - - - - Damping - Atténuation - - - - Level - Niveau - - - - Width - Largeur - - - - Speed - Vitesse - - - - Depth - Profondeur - - - - Number - Nombre - - - - Type - Type - - - - Sine - Sinusoide - - - - Triangle - Triangle - - - - Reverb - Réverb - - - - Chorus - Chorus - - - - Pop - Pop - - - - Push - Pousser - - - - ... - ... - - - - show fluidsynth controls - Montrer les contrles de fluidsynth - - - - Load - charger - - - - Save - Enregistrer - - - - FileDialogButtons - - - Form1 - Form1 - - - - Global - Global - - - - User - Utilisateur - - - - Project - Projet - - - - FluidSynthGui - - - Choose soundfont - - - - - FontSel - - - Size: - Taille: - - - - GateTime - - - MusE: Modify Gate Time - MusE: modifier le temps de fermeture (Gate Time) - - - - GateTimeBase - - - MusE: Modify Gate Time - MusE: modifier le temps de fermeture (Gate Time) - - - - Range - Entre - - - - All Events - Tous les Evènements - - - - Selected Events - Evènements choisis - - - - Looped Events - Evènements bouclés - - - - Selected & Looped - Boucle & sélectionnée - - - - Values - Valeurs - - - - Rate: - Vitesse: - - - - Offset: - Décalage: - - - - % - % - - - - OK - OK - - - - Cancel - Annuler - - - - GlobalSettingsDialogBase - - - MusE: Global Settings - MusE: Paramètres - - - - Audio - Audio - - - - Mixer - Mixer - - - - dB - dB - - - - min. Meter Value - Métrage min. - - - - min.Slider Val - Val. mini. du Curseur - - - - Midi - Midi - - - - Ticks - Tic - - - - 1024 - 1024 - - - - 2048 - 2048 - - - - 4096 - 4096 - - - - 8172 - 8172 - - - - Displayed Resolution -(Ticks/Quarternote) - Résolution affichée (Tics par 1/4 de note) - - - - 48 - 48 - - - - 96 - 96 - - - - 192 - 192 - - - - 384 - 384 - - - - 768 - 768 - - - - 1536 - 1536 - - - - 3072 - 3072 - - - - 6144 - 6144 - - - - 12288 - 12288 - - - - RTC Resolution -(Ticks/Sec) - Résolution RTC (Tics par sec.) - - - - GUI - GUI - - - - /sec - /sec - - - - GUI Refresh Rate - Vitesse de rafraichissement de l'interface - - - - &Apply - &Appliquer - - - - &Ok - &Ok - - - - &Cancel - &Annuler - - - - Help Browser: - Navigateur pour l'aide: - - - - Arranger - Arrangeur - - - - Transport - Transport - - - - GreendotButton - - - record - - - - - LMaster - - - new tempo - nouveau tempo - - - - new signature - nouvelle signature - - - - Meter - Métrage - - - - Time - Temps - - - - Type - Type - - - - Value - Valeur - - - - MusE: Mastertrack - MusE: Piste principale - - - - Tempo - Tempo - - - - Timesig - Signature Temporelle - - - - ListEdit - - - &Edit - &Edition - - - - Cut - Couper - - - - Copy - Copier - - - - Paste - Coller - - - - Delete Events - Effacer évènements - - - - List Tools - Outils de Liste - - - - Insert Tools - Outils d'Insertion - - - - Insert Note - Insérer Note - - - - insert Note - insére une note - - - - Insert SysEx - Insérer SysEx - - - - insert SysEx - insère une commande midi SysEx - - - - Insert Ctrl - Insérer Ctrl - - - - insert Ctrl - insére un caractère de Controle - - - - Insert Meta - Insérer Meta - - - - insert Meta - insére une balise Meta - - - - Insert Pitch - Insérer Hauteur - - - - insert Pitch - insére un changement de tonalité - - - - Insert Channel Aftertouch - Insérr Canal de Pression - - - - insert Channel Aftertouch - insére un canal de Pression (AfterTouch) - - - - Insert Key Aftertouch - Insérer une note de Pression - - - - insert Poly Aftertouch - insère une Pression (AfterTouch) polyphonique - - - - Tick - Tic - - - - Bar - Mesure - - - - Typ - Typ - - - - Ch - Can - - - - Val A - Val A - - - - Val B - Val B - - - - Val C - Val C - - - - Len - Lon - - - - Comment - Comment. - - - - MusE: List Edit - - - - - Parts - Pièces - - - - Controller - - - - - MITTransposeBase - - - MusE: Midi Input Plugin: Transpose - MusE: Plugin d'Entrée Midi: Transposition - - - - On - On - - - - TriggerKey - Note de Déclenchement - - - - Transpose: - Transposition: - - - - +0 - +0 - - - - MPConfig - - - none - aucun - - - - other raw ... - autre brut (raw)... - - - - MusE: Midi Port Table - MusE: Table des ports Midi - - - - Port - Port - - - - GUI - GUI - - - - Rec - Enr - - - - Instrument - Instrument - - - - Device Name - Nom du Périphérique - - - - State - Etat - - - - unknown - inconnu - - - - MRConfigBase - - - MusE: Midi Input Plugin: Remote Control - MusE: Plugin d'Entrée Midi: Contrôle Distant - - - - Activate - Activer - - - - On - On - - - - Actions - Actions - - - - Stop - Stop - - - - Record - Enregistre - - - - Goto Left Mark - Aller à la Marque Gauche - - - - Play - Jouer - - - - MTScale - - - bar scale - Echelle de la mesure - - - - MarkerView - - - Bar:Beat:Tick - Mesure:Résolution(Beat):Tic - - - - Hr:Mn:Sc:Fr:Sf - Hr:Mn:Sc:Fr:Sf - - - - Lock - Verrouillage - - - - Text - Texte - - - - Marker Properties - Propriétés du Marqueur - - - - MusE: Marker - MusE: Marqueur - - - - add marker - Ajouter marqueur - - - - Add Marker - Ajoute un marqueur - - - - delete marker - Effacer Marqueur - - - - Delete Marker - Efface le marqueur - - - - &File - &Fichier - - - - &Edit - &Edition - - - - marker-tools - - - - - edit tools - - - - - Min:Sc:Fr:Sf - - - - - MasterEdit - - - Master - Maitre - - - - Cursor - Curseur - - - - Snap - Aligne - - - - time at cursor position - Temps à la position du curseur - - - - tempo at cursor position - Temps à la position du curseur - - - - CurPos - PosCur - - - - tempo at current position - tempo à la position en cours - - - - time signature at current position - Signature temporellet à la position en cours - - - - MusE: Mastertrack - MusE: PistePrincipale - - - - edit tools - outils d'édition - - - - EnableMaster - ActiverMaitre - - - - use master track - Utiliser la piste principale - - - - Info - Info - - - - Off - Off - - - - EnableTempomap - - - - - Tempomap - - - - - Enable use of tempo map - - - - - MetronomeConfigBase - - - MusE: Metronome Config - MusE: Configuration du Métronome - - - - Metronome - Métronome - - - - Audio Beep - Bip audio - - - - MIDI Click - Clic MIDI - - - - Midi Channel - Canal Midi - - - - Measure Note - Note Mesure - - - - Measure Velocity - Vélocité de la Mesure - - - - Beat Velocity - Résolution (Beat) de la Vélocité - - - - Beat Note - Note de Résolution (Beat) - - - - Midi Port - Port MIDI - - - - Precount - Pré-compte - - - - enable - activer - - - - Bars - Mesures - - - - From Mastertrack - de la Piste Principale - - - - / - / - - - - Signature - Signature - - - - Prerecord - Pré-enregistrement - - - - Preroll - PreRoll - - - - &Apply - &Appliquer - - - - &OK - &Ok - - - - &Cancel - &Annuler - - - - MidiChannelInfo - - - MidiController - - - Velocity - Vélocité - - - - MidiControllerEditDialog - - - MusE: save midi controller list - MusE: enregistrer la liste des controleurs midi - - - - MusE: load midi controller list - MusE: charger une liste de controleurs midi - - - - MidiControllerEditDialogBase - - - MusE: Define Midi Controller - MusE: Définir un Controleur Midi - - - - replace controller set - remplacer le groupe de controleurs - - - - merge controller set - ajouter le groupe de controleurs - - - - save controller set as - Enregistrer le groupe de controleurs sous... - - - - Name - Nom - - - - Type - Type - - - - H-Ctrl - H-Ctrl - - - - L-Ctrl - L-Ctrl - - - - Min Val - Val Min - - - - Max Val - Val Max - - - - list of defined controllers - list des controleurs définis - - - - This is the MusE list of defined controllers. - C'est la liste des controleurs qui ont été définis - - - - Properties - Propriétés - - - - Name - Nom - - - - Max Value - Valeur Max - - - - Min Value - Valeur Mini - - - - Control7 - Control7 - - - - Control14 - Control8 - - - - RPN - RPN - - - - NRPN - NRPN - - - - XG-SysEx - XG-SysEx - - - - SysEx - SysEx - - - - Type - Type - - - - &New - &Nouveau - - - - create new entry - Crée une nouvelle entrée - - - - pressing the New button you create a new entry -in the MusE list of defined controllers - Crée une nouvelle entrée dans la liste des controleurs - - - - &Delete - &Effacer - - - - delete selected entry - efface l'entrée sélectionnée - - - - &OK - &Ok - - - - &Cancel - &Annuler - - - - Channel - Canal - - - - Pitch - Hauteur - - - - Range - Entre - - - - MidiEditor - - - &Edit - - - - - Cut - Couper - - - - Copy - Copier - - - - Paste - Coller - - - - Play Events - Jouer Evènements - - - - Step Record - - - - - Midi Input - - - - - Follow Song - - - - - MidiFileConfig - - - Enable extended smf format - Activer la prise en charge du format smf étendu - - - - Division - Division - - - - Copyright - Copyright - - - - Config exported Midi Files - Configuration de l'export en fichier Midi - - - - MusE: Config exported Midi Files - MusE: Configurer l'export en fichier Midi - - - - MidiFilterConfigBase - - - MusE: Midi Input Filter - MusE: Filtre Entrée Midi - - - - Record Filter - Filtre d'Enregistrement - - - - Note On - Note On - - - - Poly Pressure - Pression Poly - - - - Controller - Controleur - - - - Program Change - Changement de son (Program Change) - - - - After Touch - Pression (After Touch) - - - - Pitch Bend - Molette de modulation - Hauteur - - - - Sysex - SysEx - - - - Thru Filter - Filtre Thru - - - - Controller Filter - Filtre Controleur - - - - Channel Filter - Filtre Canal - - - - 14 - 14 - - - - 10 - 10 - - - - 6 - 6 - - - - 12 - 12 - - - - 4 - 4 - - - - 2 - 2 - - - - 9 - 9 - - - - 8 - 8 - - - - 3 - 3 - - - - 13 - 13 - - - - 15 - 15 - - - - 16 - 16 - - - - 7 - 7 - - - - 11 - 11 - - - - 5 - 5 - - - - 1 - 1 - - - - MidiInPortStrip - - - AlsaDevices - - - - - MidiChannel - - - - - JackDevices - - - - - MidiInputTransformDialog - - - New - Nouveau - - - - MidiInputTransformDialogBase - - - MusE: Midi Input Transformator - MusE: Transformateur d'Entrée Midi - - - - Filter - Filtre - - - - All - Tous - - - - Equal - Egal - - - - Unequal - Différent de - - - - Note - Note - - - - Poly Pressure - Pression Poly - - - - Control Change - Controle de Changement - - - - Aftertouch - Pression - - - - Pitch Bend - Molette de modulation - - - - NRPN - NRPN - - - - RPN - RPN - - - - Value 2 - Valeur 2 - - - - Value 1 - Valeur 1 - - - - Event Type - Type d'Evènements - - - - Ignore - Ignore - - - - Higher - Plus Haut - - - - Lower - Plus Bas - - - - Inside - A l'intérieur - - - - Outside - Al'extérieur - - - - Channel - Canal - - - - Port - Port - - - - Processing - Travail - - - - Keep - Garder - - - - Fix - Fixer - - - - Plus - Plus - - - - Minus - Moins - - - - Multiply - Multiplier - - - - Divide - Diviser - - - - Invert - Inverser - - - - ScaleMap - Echelle - - - - Flip - Retourner - - - - Dyn - Dyn - - - - Random - Aléatoire - - - - Modules - Modules - - - - 1 - 1 - - - - 2 - 2 - - - - 3 - 3 - - - - 4 - 4 - - - - enable modul 1 - Activer module 1 - - - - enable modul 2 - Activer module 2 - - - - enable modul 3 - Activer module 3 - - - - enable modul 4 - Activer module 4 - - - - Preset - Réglages enregistrés - - - - Name: - Nom: - - - - Comment: - Commentaires: - - - - Function - Fonction - - - - &New - &Nouveau - - - - create new preset - Crée un nouveau réglage - - - - &Delete - &Efface - - - - delete preset - efface un réglage - - - - &Dismiss - &Rejeter - - - - PresetList - Liste de Réglages - - - - MidiOutPortStrip - - - MidiChannel - - - - - AlsaDevices - - - - - JackDevices - - - - - MidiPluginDialog - - - MusE: select midi plugin - - - - - File - - - - - Name - Nom - - - - Version - - - - - Description - - - - - Ok - Ok - - - - Cancel - - - - - MidiRack - - - midi effect rack - - - - - move up - - - - - move down - - - - - remove - - - - - bypass - - - - - show gui - - - - - new - nouveau - - - - MidiRawDeviceDialogBase - - - MusE: raw midi device configuration - MusE: configuration des périphériques Midi - - - - Name - Nom - - - - Device - Périphérique - - - - Type - Type - - - - Virt. Ports - Ports virtuels - - - - Speed - Vitesse - - - - Handshaking - Méthode (handshaking) - - - - Device Properties - Propriétés du périphérique - - - - Virt.Ports - Ports virtuels - - - - Raw Device - Périphérique pur (raw) - - - - Serial Port - Port série - - - - Pipe - Tuyau (Pipe) - - - - Device Path - Chemin du périphérique - - - - 9600 - 9600 - - - - 19200 - 19200 - - - - 38400 - 38400 - - - - None - Aucun - - - - RTS/CTS - RTS/CTS - - - - Xon/Xoff - Xon/Xoff - - - - &New - &Nouveau - - - - &Delete - &Effacer - - - - &OK - &OK - - - - &Cancel - &Annuler - - - - MidiStrip - - - Var - Var - - - - Rev - Rev - - - - Cho - Cho - - - - dB - dB - - - - Pan - Pan - - - - mute - silence - - - - pre fader listening - écoute pre fader - - - - VariationSend - - - - - ReverbSend - - - - - ChorusSend - - - - - Pan/Balance - - - - - Tracks - Pistes - - - - OutputPorts - - - - - MidiSyncConfigBase - - - MusE: Midi Sync - MusE: Synchro Midi - - - - Apply - Appliquer - - - - Ok - Ok - - - - Cancel - Annuler - - - - hour - heure - - - - h - h - - - - minute - minute - - - - m - m - - - - second - second - - - - s - s - - - - frame - Armature (frame) - - - - f - f - - - - subframe - Armature fine (subframe) - - - - 24 - 24 - - - - 25 - 25 - - - - 30D - 30D - - - - 30N - 30N - - - - Id: - Id: - - - - device id - Id. du périphérique - - - - Port: - Port: - - - - midi port - port midi - - - - Sync Source - Source de la synchro - - - - accept MTC - accepter MTC - - - - accept Midi Clock - accepter Horloge Midi - - - - accept MMC - accepter MMC - - - - Sync Gen - Générer Synchro - - - - Midi Time Code (MTC) - Code Temporel Midi (MTC) - - - - Midi Clock - Horloge Midi - - - - Midi Machine Control (MMC) - Controle Machine MIDI (MMC) - - - - Sync Mode - Mode de synchro - - - - Master - Maitre - - - - Slave - Esclave - - - - all - tous - - - - MTC - MTC - - - - Type: - Type: - - - - Offset: - Décalage: - - - - MidiSyntiStrip - - - OutputPorts - - - - - Channel - Canal - - - - Input Ports - - - - - MidiTimeDelegate - - - dB - dB - - - - MidiTrackInfo - - - Channel %1 - - - - - Midi Port - Port MIDI - - - - MidiTrackInfoBase - - - MusE: TrackInfo - MusE: InfoPiste - - - - output channel - canal de sortie - - - - all midi events are send to this output channel - tous les évènements midi seront envoyés vers cette sortie - - - - Track Info - Info Piste - - - - % - % - - - - Track Name - Nom de Piste - - - - output port - port de sortie (Output Ch.) - - - - off - off - - - - change stereo position - changer la position stéréo - - - - OCh. - OCh. - - - - MidiThru - MidiThru - - - - ??? - ??? - - - - select instrument patch - choisissez le groupe d'instruments - - - - Transp. - Transp. - - - - Volume - Volume - - - - Channel Info - Info canal - - - - Pan - Pan - - - - Delay - Délai - - - - H-Bank - H-Bank - - - - Compr. - Compr. - - - - L-Bank - L-Bank - - - - Progr. - Progr. - - - - Velocity - Vélocité - - - - Length - Longueur - - - - input ports - ports d'entrée (Input Ch.) - - - - IChan. - IChan: - - - - input channels - canaux d'entrée - - - - Events from all configured channels are -recorded to this track. -You can specify more than one channel for -recording: - 1 2 3 record from channel 1 2 and 3 - 1-3 same - 1-3 5 record from channel 1 2 3 and 5 - Les évènements de tous les canaux -configurés sont enregistrés sur cette piste. -Vous pouvez spécifier plus d'un canal -pour l'enregistrement: - 1 2 3enregistre depuis les canaux 1, 2 et 3 - 1-3idem - 1-3 5 enregistre depuis les canaux 1, 2, 3 et 5 - - - - Rec - Enr - - - - MidiTrackerEditor - - - &View - - - - - MidiTracker Tools - - - - - Panic - Panique! - - - - Transport - Transport - - - - row features - - - - - Number of visible rows - - - - - Quantize - Quantiser - - - - MidiTransformDialogBase - - - MusE: Midi Transformator - MusE: Transformateur Midi - - - - &New - &Nouveau - - - - &Delete - &Effacer - - - - &Apply - &Appliquer - - - - &OK - &Ok - - - - &Cancel - &Annuler - - - - PresetList - ListRéglages - - - - Processing - Transformations - - - - Event Type - Type d'évènements - - - - Keep - Garder - - - - Fix - Fixer - - - - Note - Note - - - - Poly Pressure - Pression Poly - - - - Control Change - Changement de Controle - - - - Aftertouch - Pression - - - - Pitch Bend - Molette de modulation - - - - NRPN - NRPN - - - - RPN - RPN - - - - Plus - Addition - - - - Minus - Soustraction - - - - Multiply - Multiplication - - - - Divide - Division - - - - Value 2 - Valeur 2 - - - - Invert - Inverser - - - - ScaleMap - Echelle - - - - Flip - Retourner - - - - Dyn - Dyn - - - - Random - Aléatoire - - - - Value 1 - Valeur 1 - - - - Length - Longueur - - - - Position - Position - - - - Filter - Filtre - - - - All - Tous - - - - Equal - Egal - - - - Unequal - Différent - - - - Ignore - Ignore - - - - Higher - Plus haut - - - - Lower - Plus bas - - - - Inside - A l'intérieur - - - - Outside - A l'extérieur - - - - Bar Range - Type de mesure - - - - Preset - Réglages - - - - Name: - Nom: - - - - Comment: - Commentaire: - - - - Range - Type - - - - process all events - Transformer tous les évènements - - - - selected tracks - pistes sélectionnées - - - - inside loop - dans la boucle - - - - Function - fonction - - - - Select - Sélectionner - - - - Quantize - Quantiser - - - - Delete - Effacer - - - - Transform - Transformer - - - - Insert - Insérer - - - - Copy - Copier - - - - Extract - Extraire - - - - Quantize Value - Valeur de Quantisation - - - - Sysex - SysEx - - - - MidiTransformerDialog - - - New - Nouveau - - - - MixdownFileDialog - - - Wave Files (*.wav);;All Files (*) - Fichiers Wave (*.wav);;Tous les Fichiers (*) - - - - MusE: set mixdown file name - - - - - MixdownFileDialogBase - - - MusE: Set Mixdown Wavefile - MusE: Fichier wav pour mixage - - - - &OK - &OK - - - - &Cancel - &Annuler - - - - File Path - Chemin d'accés - - - - Channel - Canal - - - - Stereo - Stéréo - - - - Mono - Mono - - - - 5.1 - 5.1 - - - - wav,16 Bit - wav,16 Bit - - - - wav, 24 Bit - v, 24 Bit - - - - wav, 32 Bit (float) - wav, 32 Bit (flottant) - - - - Format - Format - - - - Mixer - - - Mute - Muet - - - - MusE: Midi Mixer - MusE: Mixeur Midi - - - - Rev - Rev - - - - Cho - Cho - - - - Var - Var - - - - Pan - Pan - - - - Master - Maitre - - - - Port - Port - - - - MusE: Mixer - - - - - &Create - - - - - &View - - - - - Routing - - - - - Show Midi Tracks - - - - - Show Midi Out Ports - - - - - Show Midi In Ports - - - - - Show Wave Tracks - - - - - Show Output Tracks - - - - - Show Group Tracks - - - - - Show Input Tracks - - - - - Show Synthesizer - - - - - MusE - - - &File - &Fichier - - - - Open &Recent - Ouvrir &Récent - - - - Save &As - Enregistrer &Sous - - - - Config &Printer - Configuration Im&primante - - - - Import Midifile - Importer fichier MIDI - - - - Export Midifile - Exporter fichier MIDI - - - - Import Wave File - Importer fichier WAV - - - - &Quit - &Quitter - - - - &Edit - &Edition - - - - C&ut - Co&uper - - - - &Copy - &Copier - - - - &Paste - Co&ller - - - - Delete Track - Effacer Piste - - - - Add Track - Ajouter Piste - - - - Select &All - Selectionner &Tout - - - - &Deselect All - &Dé-selectionner tout - - - - Invert &Selection - Inverser la &Sélection - - - - &Inside Loop - A l'&intérieur de la Boucle - - - - &Outside Loop - A l'e&xtérieur de la Boucle - - - - All &Parts on Track - Tous les &bouts de la Piste - - - - Select - Sélectionner - - - - Drums - Batterie - - - - List - Liste - - - - Graphic - Graphique - - - - Mastertrack - PistePrincipale - - - - Midi &Transform - &Transformation MIDI - - - - Modify Gate Time - Modifier la Durée du Pont (Gate Time) - - - - Modify Velocity - Modifier la vélocité - - - - Crescendo - Crescendo - - - - Transpose - Transposition - - - - Thin Out - Sortie fine - - - - Erase Event - Effacer évènements - - - - Note Shift - Décalage de note - - - - Move Clock - Décalage horloge - - - - Copy Measure - Copier la mesure - - - - Erase Measure - Effacer la mesure - - - - Delete Measure - Supprimer la mesure - - - - Create Measure - Créer une mesure - - - - Mix Track - Mixer Piste - - - - Midi - MIDI - - - - &Structure - &Structure - - - - Global Cut - Couper tout - - - - Global Insert - Insérer tout - - - - Global Split - Diviser Tout - - - - Copy Range - Limites de Copie - - - - Cut Events - Couper Evènements - - - - &Display - &Affichage - - - - Transport Panel - Panneau de Controle - - - - Bigtime window - Fenetre GrandeHorloge - - - - dont follow Song - Ne pas suivre la chanson - - - - follow page - Défilement par page - - - - follow continuous - Défilement fin - - - - &Config - &Configuration - - - - Global Settings - Paramètres Généraux - - - - follow song - Suivre la chanson - - - - Metronome - Métronome - - - - Midi Sync - Synchro MIDI - - - - Midi File Config - Paramètres du fichier MIDI - - - - Appearance settings - Apparance - - - - Soft Synthesizer - Synthétiseur virtuel - - - - Midi Ports - Ports MIDI - - - - Audio System - System Audio - - - - Save Configuration - Sauvegarder la Configuration - - - - Midi Input Transform - Transformations Entrée MIDI - - - - Midi Input Filter - Filtres pour l'Entrée MIDI - - - - Midi Remote Control - Controle MIDI a distance - - - - Random Rhythm Generator - Générateur aléatoire de rythmes - - - - &Midi - &MIDI - - - - Mixer - Mixer - - - - Define Controller - Définir Controleur - - - - Input Plugins - Plugins d'Entrée - - - - Reset Instr. - Ré-initialisation des Instruments - - - - Init Instr. - Init. Instr. - - - - local off - local off - - - - &Audio - &Audio - - - - Cliplist - ListClip - - - - Bounce to Track - Rebondir (bounce) sur la piste - - - - Bounce to File - Rebondir (bounce) sur Fichier - - - - Bounce - Rebondir (bounce) - - - - &Help - &Aide - - - - Browser - Navigateur - - - - &About - &A propos - - - - About&Qt - A propos de &Qt - - - - What's &This - Qu'est-ce que c'es&t - - - - MusE: load project - Muse: charger Projet - - - - The current Project contains unsaved data -Save Current Project? - Le Projet en cours contient des données non encore sauvegardées. -Enregistrer? - - - - &Save - &Enregistrer - - - - &Nosave - &Pas d'enregistrement - - - - &Abort - &Annuler - - - - MusE: Save As - MusE: enregistrer sous - - - - MusE: Import Midi - MusE: importer fichier MIDI - - - - MusE: Export Midi - MusE: exporter fichier MIDI - - - - Nothing to edit - Rien à éditer - - - - The current Project contains unsaved data -Load overwrites current Project: -Save Current Project? - Le Projet en cours contient des données non sauvegardées. -Enregistrer? - - - - &Overwrite - Ec&raser - - - - no help found at: - Pas d'aide trouvée ici: - - - - MusE: Open Help - MusE: Ouvrir l'Aide - - - - to import a audio file you have first to selecta audio track - Pour importer in fichier AUDIO, sélectionner d'abord une piste AUDIO - - - - UndoRedo - AnnulerRefaire - - - - undo - annuler - - - - Und&o - &Annuler - - - - redo - Refaire - - - - Re&do - Re&faire - - - - undo last change to song - Annuler le dernier changement sur la chanson - - - - redo last undo - Annuler l'annulation (refaire) - - - - Transport - Transport - - - - loop - boucle - - - - Loop - Boucle - - - - punchin - Punch-In - - - - Punchin - Punch-In - - - - punchout - Punch-Out - - - - Punchout - Punch-Out - - - - start - démarrer - - - - Start - Démarrer - - - - rewind - rembobiner - - - - Rewind - Rembobiner - - - - forward - avance - - - - Forward - Avance - - - - stop - stop - - - - Stop - Stop - - - - play - jouer - - - - Play - Jouer - - - - record - enregistrer - - - - Record - Enregistrer - - - - panic - panique! - - - - Panic - Panique! - - - - new - nouveau - - - - &New - &Nouveau - - - - open - ouvrir - - - - &Open - &Ouvrir - - - - save - enregistrer - - - - pianoroll - rouleau Piano - - - - Pianoroll - Rouleau-Piano - - - - score - partition - - - - Score - Partition - - - - marker - marqueur - - - - Marker - Marker - - - - File Buttons - Boutons Fichiers - - - - Unknown File Format - Format de fichier inconnu - - - - none - aucun - - - - MusE: Write File failed - MusE: échec de l'enregistrement - - - - MusE: About - MusE: A propos - - - - MusE: Song: - MusE: chanson - - - - reading midifile - - lecture du fichier MIDI - - - - -failed - Echec - - - - MusE: Copy Range - MusE: limites de la copie - - - - not implemented - Non-implémenté (désolé) - - - - MusE: Cut Events - MusE: Couper Evènements - - - - MusE: Bounce to Track - MusE: Rebondir sur la piste (bounce) - - - - more than one target track selected - vous avez sélectionné plus d'une piste en destination - - - - wrong target track type, -select wave track as target - mauvais type de piste en destination, -choisissez une piste AUDIO en destination - - - - no target track selected - vous n'avez pas sélectionné de piste de destination - - - - Arranger - Arrangeur - - - - Cursor - Curseur - - - - Bar - Mesure - - - - Snap - Aligne - - - - Pitch - Hauteur - - - - midi pitch - hauteur midi - - - - global midi pitch shift - transposition midi globale - - - - Tempo - Tempo - - - - midi tempo - tempo midi - - - - N - N - - - - MusE manual not found at: - - - - - to import a audio file you have first to selecta wave track - - - - - Failed to start audio! - - - - - Was not able to start audio, check if jack is running. - - - - - - Project Buttons - - - - - &Project - - - - - Delete Selected Tracks - - - - - Project Properties - - - - - &View - - - - - Edit Instrument - - - - - Restart Audio - - - - - Setti&ngs - - - - - Configure shortcuts - - - - - Midi File Export - - - - - Preferences - - - - - &Manual - - - - - &MusE homepage - - - - - &Report Bug... - - - - - &About MusE - - - - - What's &This? - - - - - Len - - - - - MusE: new project - - - - - Cannot create project folder <%1> - - - - - Cannot open template file -%1 - - - - - File <%1> read error - - - - - MusE: Create tmp file failed - - - - - MusE: Bounce - - - - - set left/right marker for bounce range - - - - - MusE: Bounce to File - - - - - no output track found - - - - - MusE: import midi file - - - - - -failed: - - - - - rewind to start position - revenir à la position de départ - - - - start sequencer play - démarrer la lecture du séquenceur - - - - Save - Enregistrer - - - - MuseApplication - - - Transport: Goto Start - - - - - Goto Start - - - - - rewind to start position - revenir à la position de départ - - - - Transport: Toggle Loop section - - - - - Loop - Boucle - - - - loop between left mark and right mark - Boucler entre les marqueurs gauche et droit - - - - Transport: Start playback from current location - - - - - Play - Jouer - - - - start sequencer play - démarrer la lecture du séquenceur - - - - Transport: Play, Stop, Rewind - - - - - Transport: Stop Playback - - - - - Stop - Stop - - - - stop sequencer - arréter le séquenceur - - - - Transport: Goto left marker - - - - - Transport: Goto right marker - - - - - Transport: Toggle metronome - - - - - Transport: Toggle Record - - - - - Record - - - - - to record press record and then play - pour enregistrer, presser Enregistrement (Record) puis Lecture (Play) - - - - Transport: Punch In - - - - - Punchin - Punch-In - - - - record starts at left mark - l'enregistrement démarre au marqueur gauche - - - - Transport: Punch Out - - - - - Punchout - Punch-Out - - - - record stops at right mark - l'enregistrement s'arrète au marqueur droit - - - - Transport: Rewind - - - - - rewind - rembobiner - - - - rewind current position - revenir à la position en cours - - - - Transport: Forward - - - - - forward - avance - - - - move current position - déplacer la position en cours - - - - Panic - Panique! - - - - send note off to all midi channels - envoyer ordre de relachement de note à tous les canaux midi - - - - Edit: Undo - - - - - undo - annuler - - - - undo last change to song - Annuler le dernier changement sur la chanson - - - - Edit: Redo - - - - - redo - Refaire - - - - redo last undo - Annuler l'annulation (refaire) - - - - Edit: Cut - - - - - Cut - Couper - - - - Edit: Copy - - - - - Copy - Copier - - - - Edit: Paste, - - - - - Paste - Coller - - - - Edit: Delete - - - - - Delete - Effacer - - - - Open - - - - - open project - - - - - Click this button to select a new project -You can also select the <b>Open command</b> from the Project menu. - - - - - Save - Enregistrer - - - - save project - - - - - Click this button to save the project you are editing. -You can also select the Save command from the Project menu. - - - - - File: Save as - - - - - save project as... - - - - - Click this button to save a new copy of the project. - - - - - - File: Save as Template - - - - - save project as template - - - - - Click this button to save the project you are editing -for later use as a template. - - - - - File: Open recent file - - - - - File: Import midi file - - - - - File: Export midi file - - - - - File: Import audio file - - - - - File: Quit MusE - - - - - Quit MusE - - - - - Edit: Select parts on track - - - - - All &Parts on Track - Tous les &bouts de la Piste - - - - Open Pianoroll - - - - - Pianoroll - Rouleau-Piano - - - - Start Pianoroll Editor - - - - - Open MidiTracker - - - - - MidiTracker - - - - - Start Midi Tracker - - - - - Open drumeditor - - - - - Drum Editor - - - - - Start Drum Editor - - - - - Open wave editor - - - - - Wave Editor - - - - - Open listeditor - - - - - Properties - Propriétés - - - - open Properties Editor - - - - - Open mastertrack editor - - - - - Mastertrack (Tempo) Editor - - - - - Start Mastertrack (Tempo) Editor - - - - - Add midi track - - - - - Add drum track - - - - - Add wave track - - - - - Add audio output - - - - - Add audio group - - - - - Add audio input - - - - - Structure: Global cut - - - - - Structure: Global insert - - - - - Structure: Global split - - - - - Structure: Copy range - - - - - Structure: Cut events - - - - - View: Open mixer 1 window - - - - - Mixer1 - - - - - Show Mixer 1 - - - - - View: Open mixer 2 window - - - - - Mixer2 - - - - - Show Mixer 2 - - - - - View: Toggle transport window - - - - - Transport - Transport - - - - Show Transport Window - - - - - View: Toggle bigtime window - - - - - BigTime - - - - - Show BigTime Window - - - - - View: Open marker window - - - - - Marker - Marker - - - - Show Marker List - - - - - Settings: Follow song by page - - - - - Settings: Follow song off - - - - - Settings: Follow song continuous - - - - - Settings: Configure shortcuts - - - - - Settings: Configure metronome - - - - - Settings: Midi sync configuration - - - - - Settings: Midi file export configuration - - - - - Settings: Midi ports / Soft Synth - - - - - Settings: Audio subsystem configuration - - - - - Midi: Edit midi instruments - - - - - Midi: Midi remote control - - - - - Midi: Reset midi - - - - - Midi: Init midi - - - - - Midi: Midi local off - - - - - Audio: Bounce audio to track - - - - - Audio: Bounce audio to file - - - - - Audio: Restart audio - - - - - Help: Open Manual - - - - - Help: Toggle whatsthis mode - - - - - Edit: Edit selected part - - - - - Edit: Select nearest part on track above - - - - - Edit: Add nearest part on track above - - - - - Edit: Select nearest part on track below - - - - - Edit: Add nearest part on track below - - - - - Midi: Transpose - - - - - Transpose - Transposition - - - - Edit: Select all - - - - - Select All - - - - - Edit: Select none - - - - - Deselect All - - - - - Edit: Invert selection - - - - - Invert Selection - - - - - Edit: Select events/parts inside locators - - - - - Select Inside Loop - - - - - Edit: Select events/parts outside locators - - - - - Select Outside Loop - - - - - Edit: Select nearest part/event to the left - - - - - Edit: Add nearest part/event to the left to selection - - - - - Edit: Add nearest part/event to the right to selection - - - - - Edit: Set locators to selection - - - - - Edit: Increase pitch - - - - - Edit: Decrease pitch - - - - - Edit: Set fixed length on midi events - - - - - Set fixed length - - - - - Quantize: Over Quantize - - - - - Over Quantize - Plus de Quantisation - - - - Quantize: Note On Quantize - - - - - Note On Quantize - Quantisation Appui de Note - - - - Quantize: Note On/Off Quantize - - - - - Note On/Off Quantize - Quantisation Appui/Relachement de Note - - - - Quantize: Iterative Quantize - - - - - Iterative Quantize - Quantisation itérative - - - - Quantize: Configure quant - - - - - Quantize: Modify Gate Time - - - - - Modify Gate Time - Modifier temps de fermeture (gate time) - - - - Quantize: Modify Velocity - - - - - Modify Velocity - Modifier la vélocité - - - - Edit: Crescendo - - - - - Crescendo - Crescendo - - - - Edit: Thin Out - - - - - Thin Out - Sortie fine - - - - Edit: Erase Event - - - - - Erase Event - Effacer Evènements - - - - Edit: Note Shift - - - - - Note Shift - Décalage de Note - - - - Edit: Move Clock - - - - - Move Clock - Décalage temporel - - - - Edit: Copy Measure - - - - - Copy Measure - Copier mesure - - - - Edit: Erase Measure - - - - - Erase Measure - Effacer mesure - - - - Edit: Delete Measure - - - - - Delete Measure - Supprimer mesure - - - - Edit: Create Measure - - - - - Create Measure - Créer mesure - - - - Edit: Change event color - - - - - Tool: Pointer - - - - - Pointer - - - - - select Pointer Tool: -with the pointer tool you can: - select parts - move parts - copy parts - Choisir l'Outil de Pointage: -avec l'outil de pointage vous pouvez: - choisir des pièces - déplacer des pièces - copier des pièces - - - - Tool: Pencil - - - - - Pencil - - - - - select Pencil Tool: -with the pencil tool you can: - create new parts - modify length of parts - Choisir l'Outil Crayon -avec le crayon vous pouvez: - créer de nouvelles pièces - modifier la longueur des pièces - - - - Tool: Eraser - - - - - Eraser - - - - - select Delete Tool: -with the delete tool you can delete parts - choisir l'Outil Gomme: -avec la gomme vous pouvez effacer les pièces - - - - Tool: Scissor - - - - - Scissor - - - - - select Cut Tool: -with the cut tool you can split a part - Choisir l'Outil Ciseaux -avec les ciseaux vous pouver couper une pièce - - - - Tool: Glue - - - - - Glue - - - - - select Glue Tool: -with the glue tool you can glue two parts - Choisir l'Outil Colle: -avec la colle vous pouvez coller deux pièces ensemble - - - - Declone - - - - - Tool: Quantize - - - - - Quantize - Quantiser - - - - select Quantize Tool: -insert display quantize event - Choisir l'Outil Quantisation: -pour voir les marques de quantisation - - - - Tool: Line Draw - - - - - Draw - - - - - select Drawing Tool - Choisir l'Outil de Dessin - - - - Tool: Mute Parts - - - - - Mute - Muet - - - - select Muting Tool: -click on part to mute/unmute - Choisir l'Outil Silence: -cliquez sur une pièces pour la rendre muette ou pas. - - - - Transport: Increase current position - - - - - Transport: Decrease current position - - - - - Quantize: Set quantize to 1/1 note - - - - - Quantize: Set quantize to 1/2 note - - - - - Quantize: Set quantize to 1/4 note - - - - - Quantize: Set quantize to 1/8 note - - - - - Quantize: Set quantize to 1/16 note - - - - - Quantize: Set quantize to 1/32 note - - - - - Quantize: Set quantize to 1/64 note - - - - - Quantize: Toggle triol quantization - - - - - Quantize: Toggle punctuation quantization - - - - - Quantize: Toggle punctuation quantization (2) - - - - - Insert - Insérer - - - - Insert Tempo - - - - - Insert Signature - - - - - Change Event Position - - - - - Edit Event Value - - - - - NoteInfo - - - Start - Début - - - - Len - Lon - - - - Pitch - Hauteur - - - - Velo On - Velo on - - - - Velo Off - Velo off - - - - Note Info - Info Note - - - - OrganGuiBase - - - MusE: Organ - MusE: Orgue - - - - Presets - Presets - - - - Set - Set - - - - load preset list - charger la liste des presets - - - - save preset list - enregistrer la liste des presets - - - - O-1 - 0-1 - - - - Oscillator - Oscillateur - - - - Brass - Cuivres - - - - Reed - Roseau - - - - Flute - Flute - - - - Drawbars - Grands Tuyaux - - - - 16' - 16' - - - - 4' - 4' - - - - 2 2/3' - 2 2/3' - - - - 2' - 2' - - - - 8' - 8' - - - - 5 1/3' - 5 1/3' - - - - Envelope Lo - Enveloppe basse (Lo) - - - - Attack(ms) - Attaque (en ms) - - - - Decay(ms) - Affaiblissement (ms) - - - - Sustain(%) - Tenue (%) - - - - Release(ms) - Relachement (ms) - - - - Envelope Hi - Enveloppe Haute (Hi) - - - - Velocity - Vélocité - - - - OutportCombo - - - Midi Output Port - - - - - PageSettings - - - Paper Size - Dimension de la feuille - - - - user - utilisateur - - - - Margins - Marges - - - - Header - En-Tte - - - - Title - Titre - - - - Author - Auteur - - - - Fonts - Polices - - - - Page No. - N° de page - - - - Measure No - N° de mesure - - - - Track Name - Nom de la Piste - - - - Lyrics - Paroles - - - - Layout - Disposition - - - - Scale - Echelle - - - - Flags - Drapeaux - - - - show page no. - Montrer la page N° - - - - show measure no. - Montrer la mesure N° - - - - show track name - Montrer le nom des Pistes - - - - Ok - Ok - - - - Apply - Appliquer - - - - Cancel - Annuler - - - - left Margin - Marge de gauche - - - - top Margin - Marge du haut - - - - right Margin - Marge de droite - - - - bottom Margin - Marge du bas - - - - Bars across the Page - Mesures par Page - - - - PartCanvas - - - Cannot copy/move/clone to different Track-Type - Ne peut copier/déplacer vers une type de Piste différent - - - - C&ut - Co&uper - - - - &Copy - &Copier - - - - rename - renommer - - - - color - couleur - - - - delete - effacer - - - - split - séparer - - - - glue - coller - - - - de-clone - annuler-clonage - - - - pianoroll - piano-roll - - - - score - partition - - - - list - liste - - - - drums - batterie - - - - wave edit - édition wav - - - - Cannot paste: multiple tracks selected - Ne peut coller: plusieurs pistes sélectionnées - - - - Cannot paste: no track selected - Ne peut coller: pas de piste choisie - - - - Cannot paste midi parts to wave track - Ne peut coller des bouts MIDI sur des pistes AUDIO - - - - Cannot paste wave parts to midi track - Ne peut copier des bouts AUDIO sur des pistes MIDI - - - - Cannot paste: wrong data type - Ne peut coller: mauvais type de donnée - - - - AutoFill... - - - - - miditracker - - - - - MusE: Get auto fill loop len - - - - - Measures: - - - - - MusE: Change Part Name - - - - - PartName: - - - - - Rename - - - - - Color - - - - - PatchBay - - - MusE: ALSA MIDI Patch Bay - MusE: Baie de Patches MIDI ALSA - - - - PatchBayBase - - - ALSA Patch Bay - Baie de Patches ALSA - - - - PianoRoll - - - &Edit - &Edition - - - - Cut - Couper - - - - Copy - Copier - - - - Paste - Coller - - - - Delete Events - Effacer Evènements - - - - Select All - Sélectionner tout - - - - Select None - Dé-sélectionner - - - - Invert - Inverser - - - - Inside Loop - Dans la Boucle - - - - Outside Loop - Hors de la Boucle - - - - &Select - &Sélectionner - - - - blue - bleu - - - - pitch colors - couleurs pour la hauteur - - - - velocity colors - couleurs pour la vélocité - - - - &Config - &Configuration - - - - event color - couleur pour les évènements - - - - &Functions - &Fonctions - - - - Over Quantize - Plus de Quantisation - - - - Note On Quantize - Quantisation Appui de Note - - - - Note On/Off Quantize - Quantisation Appui/Relachement de Note - - - - Iterative Quantize - Quantisation itérative - - - - Config Quant... - Config. Quant. - - - - Modify Gate Time - Modifier temps de fermeture (gate time) - - - - Modify Velocity - Modifier la vélocité - - - - Crescendo - Crescendo - - - - Transpose - Transposition - - - - Thin Out - Sortie fine - - - - Erase Event - Effacer Evènements - - - - Note Shift - Décalage de Note - - - - Move Clock - Décalage temporel - - - - Copy Measure - Copier mesure - - - - Erase Measure - Effacer mesure - - - - Delete Measure - Supprimer mesure - - - - Create Measure - Créer mesure - - - - Pianoroll Tools - Outils de piano-roll - - - - Step Record - Enregistrement pas-a-pas - - - - Midi Input - Entrée MIDI - - - - Play Events - Jouer Evènements - - - - Add Controller View - Ajouter une vue de contrles - - - - ctrl - ctrl - - - - Panic - Panique! - - - - Transport - Transport - - - - PluginDialog - - - Ok - Ok - - - - Cancel - Annuler - - - - MusE: select plugin - MusE: choisir plugin - - - - Lib - Lib - - - - Label - Label - - - - Name - Nom - - - - Copyright - Copyright - - - - Stereo - Stéréo - - - - Mono - Mono - - - - All - Tous - - - - AI - - - - - AO - - - - - CI - - - - - CO - - - - - IP - - - - - id - - - - - Maker - - - - - Mono and Stereo - - - - - Show All - - - - - Select which types of plugins should be visible in the list.<br>Note that using mono plugins on stereo tracks is not a problem, two will be used in parallell.<br>Also beware that the 'all' alternative includes plugins that probably not are usable by MusE. - - - - - Search in 'Label' and 'Name': - - - - - PluginGui - - - File Buttons - Boutons Fichiers - - - - Load Preset - - - - - Save Preset - - - - - bypass plugin - - - - - MusE: load preset - - - - - MusE: save preset - - - - - PreferencesDialog - - - MusE: load image - MusE: charger une image - - - - ProjectDialog - - - MusE: create new folder - - - - - new folder: - - - - - QHeader - - - output channel - canal de sortie - - - - output port - port de sortie (Output Ch.) - - - - QMenu - - - Add Midi Generator... - - - - - Add Soft Synth... - - - - - QWidget - - - new - nouveau - - - - None - Aucun - - - - File - - - - - - -exists - - - - - MusE: write - - - - - Overwrite - - - - - Quit - - - - - Open File - - - - - - -failed: - - - - - MusE: Open File - - - - - generic midi - - - - - copy - %1 -to - %2 - - - - - -converting sample rate -from %1 to %2 - - - - - Abort - - - - - create peakfile for - - - - - MusE: export midi file: - - - - - Cannot convert sysex string - - - - - Hex String too long (2048 bytes limit) - - - - - RecordButton - - - record - - - - - RhythmBase - - - Instrument - Instrument - - - - &New - &Nouveau - - - - create new entry - Crée une nouvelle entrée - - - - pressing the New button you create a new entry -in the MusE list of defined controllers - Crée une nouvelle entrée dans la liste des controleurs - - - - delete selected entry - efface l'entrée sélectionnée - - - - list of defined controllers - list des controleurs définis - - - - This is the MusE list of defined controllers. - C'est la liste des controleurs qui ont été définis - - - - &File - &Fichier - - - - &Help - &Aide - - - - Save - Enregistrer - - - - &Save - &Enregistrer - - - - Cut - Couper - - - - Copy - Copier - - - - Paste - Coller - - - - &Paste - Co&ller - - - - RhythmGenerator - - - Form3 - Form3 - - - - Instrument - Instrument - - - - delete - effacer - - - - Save - Enregistrer - - - - SS_PluginChooserBase - - - Name - Nom - - - - Label - Label - - - - SS_PluginFront - - - Clear and unload effect - - - - - Load effect - - - - - Toggle display of effect parameters - - - - - Turn effect on/off - - - - - ShortcutCaptureDialog - - - Ok - Ok - - - - Shortcut conflicts with - - - - - Undefined - - - - - ShortcutCaptureDialogBase - - - OK - OK - - - - ShortcutConfig - - - Global - Global - - - - Arranger - Arrangeur - - - - Pianoroll - Rouleau-Piano - - - - Insert Note - Insérer Note - - - - Insert SysEx - Insérer SysEx - - - - Insert Ctrl - Insérer Ctrl - - - - Insert Meta - Insérer Meta - - - - Insert Channel Aftertouch - Insérr Canal de Pression - - - - Insert Key Aftertouch - Insérer une note de Pression - - - - Drumeditor - - - - - List editor - - - - - List Mastertrack - - - - - All categories - - - - - Wave editor - - - - - ShortcutConfigBase - - - &Apply - &Appliquer - - - - SimpleSynthGui - - - Load sample dialog - - - - - Song - - - Jack shutdown! - - - - - Jack has detected a performance problem which has lead to -MusE being disconnected. -This could happen due to a number of reasons: -- a performance issue with your particular setup. -- a bug in MusE (or possibly in another connected software). -- a random hiccup which might never occur again. -- jack was voluntary stopped by you or someone else -- jack crashed -If there is a persisting problem you are much welcome to discuss it -on the MusE mailinglist. -(there is information about joining the mailinglist on the MusE - homepage which is available through the help menu) - -To proceed check the status of Jack and try to restart it and then . -click on the Restart button. - - - - - SplitLayerGui - - - start pitch for split - - - - - enable learn mode for start pitch - - - - - end pitch for split - - - - - enable learn mode for end pitch - - - - - pitch offset for split - - - - - start velocity for split - - - - - end velocity for split - - - - - velocity offset for split - - - - - SynthConfigBase - - - Soft Synthesizer - Synthétiseur virtuel - - - - Name - Nom - - - - Midi Port - Port MIDI - - - - TLSWidget - - - Remove Subtrack - - - - - Ctrl - - - - - Velocity - Vélocité - - - - Delete Controller - - - - - TLWidget - - - Delete Track - Effacer Piste - - - - Copy Track - - - - - Show Gui - - - - - Add Subtrack - - - - - Midi Output Channel - - - - - TList - - - Delete Track - Effacer Piste - - - - Track Comment - Commentaire pour la Piste - - - - TemplateDialog - - - MusE presets - - - - - User presets - - - - - TimeCanvas - - - Ctrl - - - - - Add Controller View - - - - - Toolbar1 - - - Snap - Aligne - - - - Quantize - Quantiser - - - - All Events - Tous les Evènements - - - - Cursor - Curseur - - - - Solo - - - - - To - - - - - Looped Ev. - - - - - Selected Ev. - - - - - Looped+Sel. - - - - - TrackComment - - - MusE: Track Comment - - - - - Track Comment: - - - - - TrackInfo - - - Track Type - - - - - Track Name - - - - - Transport - - - Loop - Boucle - - - - punchin - Punch-In - - - - loop - boucle - - - - punchout - Punch-Out - - - - rewind - rembobiner - - - - forward - avance - - - - stop - stop - - - - play - jouer - - - - use master track - Utiliser la piste principale - - - - TransposeDialogBase - - - Value - Valeur - - - - Time - Temps - - - - all - tous - - - - Parts - Pièces - - - - OK - OK - - - - VAMGui - - - MusE: Load VAM Presets - - - - - MusE: Save VAM Presets - - - - - Velocity - - - MusE: Modify Velocity - - - - - VelocityBase - - - All Events - Tous les Evènements - - - - Selected Events - Evènements choisis - - - - Looped Events - Evènements bouclés - - - - Selected & Looped - Boucle & sélectionnée - - - - Values - Valeurs - - - - Rate: - Vitesse: - - - - Offset: - Décalage: - - - - % - % - - - - OK - OK - - - - Range - Entre - - - - WTScale - - - bar scale - Echelle de la mesure - - - - WaveEdit - - - Cursor - Curseur - - - - &File - &Fichier - - - - &Edit - - - - - Func&tions - - - - - &Gain - - - - - 200% - - - - - 150% - - - - - 75% - - - - - 50% - - - - - 25% - - - - - Other - - - - - Edit in E&xternal Editor - - - - - Mute Selection - - - - - Normalize Selection - - - - - Fade In Selection - - - - - Fade Out Selection - - - - - Reverse Selection - - - - - Select - Sélectionner - - - - waveedit-tools - - - - - Transport - Transport - - - - pianoroll-tools - - - - - Solo - - - - - WaveTrackInfoBase - - - MusE: TrackInfo - MusE: InfoPiste - - - - Track Info - Info Piste - - - - Mono - Mono - - - - Stereo - Stéréo - - - - Track Name - Nom de la Piste - - - - off - arr - - - - WaveView - - - MusE - file size changed - - - - - When editing in external editor - you should not change the filesize -since it must fit the selected region. - -Missing data is muted - - - - diff --git a/muse/share/locale/muse_ru.qm b/muse/share/locale/muse_ru.qm deleted file mode 100644 index 75162786..00000000 Binary files a/muse/share/locale/muse_ru.qm and /dev/null differ diff --git a/muse/share/locale/muse_ru.ts b/muse/share/locale/muse_ru.ts deleted file mode 100644 index 0456972a..00000000 --- a/muse/share/locale/muse_ru.ts +++ /dev/null @@ -1,7823 +0,0 @@ - - - - - - - Insert Note - Ð’Ñтавить ноту - - - - Insert SysEx - Ð’Ñтавить SysEx - - - - Insert Ctrl - Ð’Ñтавить контроллер - - - - Insert Meta - Ð’Ñтавить Meta - - - - Insert Channel Aftertouch - Ð’Ñтавить Channel Aftertouch - - - - Insert Key Aftertouch - Ð’Ñтавить Key Aftertouch - - - - sets amount of quantization: -0 - no quantization -100 - full quantization - - - - - Click this button to enable recording - Ðажмите Ñту клавишу Ð´Ð»Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° запиÑи - - - - Default - - - - - Refrain - - - - - Bridge - - - - - Intro - - - - - Coda - - - - - Chorus - - - - - Solo - - - - - Brass - - - - - Percussion - - - - - Drums - Ударные - - - - Guitar - - - - - Bass - - - - - Flute - - - - - Strings - - - - - Keyboard - - - - - Piano - - - - - Saxophon - - - - - @default - - - Click this button to stop playback - Ðажмите Ñту кнопку Ð´Ð»Ñ Ð¾Ñтановки воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ - - - - Click this button to start playback - Ðажмите Ñту кнопку Ð´Ð»Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ - - - - Click this button to rewind to start position - Ðажмите Ñту кнопку Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ðº началу - - - - Click this button to rewind - Ðажмите Ñту кнопку Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼Ð¾Ñ‚ÐºÐ¸ назад - - - - Click this button to forward current play position - Ðажмите Ñту кнопку Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð²Ð¿ÐµÑ€Ñ‘Ð´ - - - - Click this button to open a <em>new song</em>.<br>You can also select the <b>Open command</b> from the File menu. - Ðажмите Ñту кнопку Ð´Ð»Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ <em>другой композиции</em>.<br>Ð’Ñ‹ также можете выбрать пункт <b>Открыть</b> в меню "Файл". - - - - Click this button to save the song you are editing. You will be prompted for a file name. -You can also select the Save command from the File menu. - Ðажмите Ñту кнопку Ð´Ð»Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€ÑƒÐµÐ¼Ð¾Ð¹ композиции. -Ð’Ñ‹ также можете выбрать пункт <b>Открыть</b> в меню "Файл". - - - - Create New Song - Создать новую композицию - - - - loop between left mark and right mark - Цикл между левым и правым маркерами - - - - record starts at left mark - ЗапиÑÑŒ начинаетÑÑ Ð¾Ñ‚ маркера Ñлева - - - - record stops at right mark - ЗапиÑÑŒ оÑтанавливаетÑÑ Ð¿Ð¾ маркеру Ñправа - - - - rewind to start position - Перемотать к начальной позиции - - - - rewind current position - Перемотать к текущей позиции - - - - move current position - ПеремеÑтить текущую позицию - - - - stop sequencer - ОÑтановить ÑеквенÑер - - - - start sequencer play - Ðачать воÑпроизведение из ÑеквенÑера - - - - to record press record and then play - Ð”Ð»Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° запиÑи нажмите "ЗапиÑать", а затем "ВоÑпроизвеÑти" - - - - send note off to all midi channels - ПоÑлать note off на вÑе MIDI-каналы - - - - presets (*.pre *.pre.gz *.pre.bz2) - ПредуÑтановки (*.pre *.pre.gz *.pre.bz2) - - - - All Files (*) - Ð’Ñе файлы (*) - - - - Add Midi Track - Добавить MIDI-дорожку - - - - Add Drum Track - Добавить дорожку Ñ ÑƒÐ´Ð°Ñ€Ð½Ñ‹Ð¼Ð¸ - - - - Add Wave Track - Добавить звуковую дорожку - - - - Add Audio Output - Добавить звуковой выход - - - - Add Audio Group - Добавить звуковую группу - - - - Add Audio Input - Добавить звуковой вход - - - - Add Aux Send - Добавить aux поÑыл - - - - Click this button to enable recording - Ðажмите Ñту клавишу Ð´Ð»Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° запиÑи - - - - Off - Выкл - - - - m - - - - - mute - - - - - s - - - - - solo - - - - - Mo - - - - - monitor - - - - - Dr - - - - - use drum map - - - - - off - выкл - - - - aR - - - - - automation read - - - - - aW - - - - - automation write - - - - - sync - - - - - send sync events - - - - - 1/2 channel - - - - - oR - - - - - output routing - - - - - iR - - - - - input routing - - - - - don't quantize notes above this tick limit - - - - - quantize also note len as default - - - - - Channels - - - - - Bar - Такт - - - - Midi - MIDI - - - - Add Midi Output - - - - - Add Midi Input - - - - - Audio - Звук - - - - MusE: create project directory - - - - - MusE: create template directory - - - - - Cannot find project <%1> - - - - - MusE: load Project - - - - - Open - Открыть - - - - Save - Сохранить - - - - MusE: create instruments directory - - - - - AboutBox - - - AboutBox - О программе - - - - Version 0.7.0 - -(C) Copyright 1999-2004 Werner Schweer and others. -See http://lmuse.sourceforge.net for new versions and -more information. - -Published under the GNU Public License - ВерÑÐ¸Ñ 0.7.0 - -(C) Copyright 1999-2004 Werner Schweer и другие. -Ðовые верÑии и подробноÑти Ñмотрите на Ñайте -http://lmuse.sourceforge.net - -Опубликовано на уÑловиÑÑ… GNU Public License - - - - Appearance - - - MusE: load image - MusE: загрузить изображение - - - - AppearanceDialogBase - - - MusE: Appearance settings - MusE: ÐаÑтройки облика - - - - Apply - Применить - - - - Ok - ОК - - - - Cancel - Отменить - - - - Arranger - Компоновщик - - - - Parts - ЧаÑти - - - - show names - показывать рамки - - - - show events - показывать ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ - - - - show Cakewalk Style - показывать в Ñтиле Cakewalk - - - - Events - Ð¡Ð¾Ð±Ñ‹Ñ‚Ð¸Ñ - - - - note on - note on - - - - poly pressure - полифоничеÑкое поÑлекаÑание - - - - controller - контроллер - - - - aftertouch - поÑлекаÑание - - - - pitch bend - Ñмена выÑоты звука - - - - program change - Ñмена программы - - - - special - ÑÐ¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ð°Ñ - - - - Background picture - Фоновое изображение - - - - bg - фон - - - - select... - выбрать... - - - - show snap grid - показывать Ñетку привÑзки - - - - Colors - Цвета - - - - Style/Fonts - Стиль/Шрифты - - - - QT Theme - Тема QT - - - - Windows - Окна - - - - MusE - MusE - - - - Metal - Металл - - - - Norwegian Wood - ÐорвежÑкое дерево - - - - Platinum - Платина - - - - CDE - CDE - - - - Motif - Motif - - - - Motif Plus - Motif Plus - - - - Fonts - Шрифты - - - - Family - СемейÑтво - - - - Size - Размер - - - - Font 1 - Шрифт 1 - - - - Font 2 - Шрифт 2 - - - - Font 3 - Шрифт 3 - - - - Font 0 - Шрифт 0 - - - - Bold - Жирный - - - - Italic - КурÑив - - - - ... - ... - - - - Font 4 - Шрифт 4 - - - - Font 5 - Шрифт 5 - - - - Palette - Палитра - - - - add to palette - Добавить в палитру - - - - B - B - - - - S - S - - - - H - H - - - - V - V - - - - G - G - - - - R - R - - - - Arranger - - - TrackInfo - - - - - Mix - Смешать - - - - Config Tracklist - - - - - all mute off - - - - - all solo off - - - - - all autoRead off - - - - - all autoWrite off - - - - - i - - - - - Show Track Info - - - - - m - - - - - Show Mixer Strip - - - - - AudioStrip - - - Pre - - - - - pre fader - post fader - - - - - dB - Дб - - - - record downmix - - - - - panorama - - - - - Pan - - - - - Channel %1 - - - - - MidiChannel - - - - - Channel - Канал - - - - Awl::MidiVolEntry - - - off - выкл - - - - db - - - - - Awl::VolEntry - - - off - выкл - - - - BigTime - - - MusE: Bigtime - - - - - ClipListEditorBase - - - MusE: ClipList - MusE: СпиÑок фрагментов - - - - Name - Ð˜Ð¼Ñ - - - - Start - Ðачало - - - - Len - Длн - - - - Data - Данные - - - - Clip Properties - СвойÑтва фрагмента - - - - Pos: - Поз.: - - - - Len: - Длн.: - - - - CommentBase - - - Form1 - Form1 - - - - Track Comment - Комментарий к дорожке - - - - Track 1 - Дорожка 1 - - - - ConfigMidiCtrlBase - - - MusE: Config Midi Controller - MusE: ÐаÑтройка MIDI-контроллера - - - - Midi Port: - MIDI-порт: - - - - Available Controller: - ДоÑтупный контроллер: - - - - Add - Добавить - - - - Remove - Удалить - - - - &OK - &ОК - - - - &Cancel - О&тменить - - - - ConfigMidiFileBase - - - MusE: Config Midi File Export - MusE: ÐаÑтройка ÑкÑпорта в MIDI - - - - &OK - &ОК - - - - &Cancel - О&тменить - - - - 0 (single track) - 0 (Ð¾Ð´Ð¸Ð½Ð¾Ñ‡Ð½Ð°Ñ Ð´Ð¾Ñ€Ð¾Ð¶ÐºÐ°) - - - - 1 (multiple tracks) - 1 (больше одной дорожки) - - - - Format: - Формат: - - - - 96 - 96 - - - - 192 - 192 - - - - 384 - 384 - - - - Copyright: - ÐвторÑкие и Ñмежные права: - - - - Enable extended smf format - Разрешить раÑширенный формат SMF - - - - ConfigTrackListBase - - - MusE: Config Track List - MusE: ÐаÑтройка ÑпиÑка дорожек - - - - Track Type: - Тип дорожки: - - - - Audio Output - Ðудиовыход - - - - Audio Group - Ðудиогруппа - - - - Audio Aux - Audio Aux - - - - Wave Track - Ðудиодорожка - - - - Audio Input - Ðудиовход - - - - Soft Synthesizer - Программный Ñинтезатор - - - - Midi Track - MIDI-дорожка - - - - Drum Track - ПеркуÑÑÐ¸Ð¾Ð½Ð½Ð°Ñ Ð´Ð¾Ñ€Ð¾Ð¶ÐºÐ° - - - - Available Items: - ДоÑтупные варианты: - - - - Add - Добавить - - - - Remove - Удалить - - - - Up - Вверх - - - - Down - Вниз - - - - Configured Items - ÐаÑтроенные дорожки - - - - &OK - &ОК - - - - &Cancel - О&тменить - - - - CtrlDelegate - - - dB - Дб - - - - off - выкл - - - - CtrlDialog - - - controller name - - - - - flag if controller contains data - - - - - CtrlEdit - - - CtrlListEditor - - - dB - Дб - - - - DeicsOnzeGui - - - Save configuration - - - - - Critical Error - - - - - Cannot open file %1 - - - - - Parsing error for file %1 - - - - - Load category dialog - - - - - Load set dialog - - - - - Save set dialog - - - - - New category - - - - - Delete category - - - - - Load category - - - - - Save category - - - - - Load set - - - - - Save set - - - - - Delete set - - - - - New subcategory - - - - - Delete subcategory - - - - - Load subcategory - - - - - Save subcategory - - - - - New preset - - - - - Delete preset - - - - - Load preset - - - - - Save preset - - - - - No more category supported - - - - - You can not add more categories - - - - - Do you really want to delete %1 ? - - - - - &Yes - - - - - &No - - - - - No category selected - - - - - You must first select a category. - - - - - Replace or add - - - - - %1 is supposed to be affected to the hbank number %2, but there is already one on this slot. - Do you want to replace it or to add it in the next free slot ? - - - - - &Replace - &Заменить - - - - &Add - &Добавить - - - - Download error - - - - - There is no more free category slot. - - - - - Save category dialog - - - - - No more subcategory supported - - - - - You can not add more subcategories - - - - - No subcategory selected - - - - - You must first select a subcategory. - - - - - Load subcategory dialog - - - - - %1 is supposed to be affected to the lbank number %2, but there is already one on this slot. - Do you want to replace it or to add it in the next free slot ? - - - - - There is no more free subcategory slot. - - - - - Save subcategory dialog - - - - - No more preset supported - - - - - You can not add more presets - - - - - No preset selected - - - - - You must first select a preset. - - - - - Load preset dialog - - - - - %1 is supposed to be affected to the prog number %2, but there is already one on this slot. - Do you want to replace it or to add it in the next free slot ? - - - - - There is no more free preset slot. - - - - - Save preset dialog - - - - - Browse set dialog - - - - - Browse image dialog - - - - - DeicsOnzeGuiBase - - - Preset - ПредуÑтановка - - - - Pitch - Ð’Ñ‹Ñота тона - - - - After Touch - ПоÑлекаÑание - - - - Transpose - ТранÑпонировать - - - - Save - Сохранить - - - - Colors - Цвета - - - - DrumEdit - - - &Functions - - - - - &Select - - - - - Invert - Инвертировать - - - - Drum Tools - - - - - Transport - ТранÑпорт - - - - EditCtrl7DialogBase - - - MusE: Enter Controller - MusE: ВвеÑти контроллер - - - - Controller: - Контроллер: - - - - Time Position: - ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ Ð²Ð¾ времени: - - - - Value: - Значение: - - - - controller value - значение контроллера - - - - OK - ОК - - - - Cancel - Отменить - - - - EditCtrlBase - - - Time Position - ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ Ð²Ð¾ времени - - - - Available Controller: - ДоÑтупный контроллер: - - - - Create New Controller - Создать новый контроллер - - - - Value - Значение - - - - Controller - Контроллер - - - - H-Bank - H-банк - - - - L-Bank - L-банк - - - - Program - Программа - - - - off - выкл - - - - &OK - &ОК - - - - &Cancel - О&тменить - - - - Midi Port: - MIDI-порт: - - - - Time Position: - ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ Ð²Ð¾ времени: - - - - EditInstrument - - - MusE: Create file failed - - - - - MusE: Write File failed - - - - - MusE: Save Instrument Definition - - - - - Instrument Definition (*.idf) - - - - - MusE: Enter new Category - - - - - Enter new Category: - - - - - MusE - MusE - - - - The current Instrument contains unsaved data -Save Current Instrument? - - - - - &Save - &Сохранить - - - - &Nosave - - - - - &Abort - - - - - EditInstrumentBase - - - MusE: Instrument Editor - MusE: Редактор инÑтрументов - - - - Program: - Программа: - - - - &Delete - У&далить - - - - Alt+D - Alt+D - - - - Alt+N - Alt+N - - - - New Group - ÐÐ¾Ð²Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð° - - - - Drum - Ударные - - - - GM - GM - - - - GS - GS - - - - XG - XG - - - - Controller - Контроллер - - - - Predefined Controller: - Предопределённый контроллер: - - - - Properties - СвойÑтва - - - - Name - Ð˜Ð¼Ñ - - - - Type - Тип - - - - Control7 - Control7 - - - - Control14 - Control14 - - - - RPN - RPN - - - - NRPN - NRPN - - - - Pitch - Ð’Ñ‹Ñота тона - - - - Program - Программа - - - - H-Ctrl - H-Ctrl - - - - L-Ctrl - L-Ctrl - - - - Range - ОблаÑÑ‚ÑŒ - - - - Min - Мин - - - - Max - ÐœÐ°ÐºÑ - - - - Name - Ð˜Ð¼Ñ - - - - Type - Тип - - - - Min Val - Мин знач - - - - Max Val - ÐœÐ°ÐºÑ Ð·Ð½Ð°Ñ‡ - - - - list of defined controllers - ÑпиÑок назначенных контроллеров - - - - This is the MusE list of defined controllers. - Это ÑпиÑок назначенных контроллеров Ð´Ð»Ñ MusE. - - - - SysEx - SysEx - - - - &File - &Файл - - - - Tools - Ð¡ÐµÑ€Ð²Ð¸Ñ - - - - New - Ðовый - - - - &New - &Ðовый - - - - Ctrl+N - Ctrl+N - - - - Open - Открыть - - - - &Open... - &Открыть... - - - - Ctrl+O - Ctrl+O - - - - Save - Сохранить - - - - &Save - &Сохранить - - - - Ctrl+S - Ctrl+S - - - - Save As - Сохранить как - - - - Save &As... - Сохранить &как... - - - - Exit - Выйти - - - - E&xit - Ð’&ыйти - - - - EditMetaDialogBase - - - MusE: Enter Meta Event - MusE: ВвеÑти метаÑобытие - - - - OK - ОК - - - - Cancel - Отменить - - - - TextLabel1 - ТекÑтоваÑМетка1 - - - - Time Position: - ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ Ð²Ð¾ времени: - - - - Meta Type: - Метатип: - - - - Enter Hex - Введите Hex - - - - EditNoteDialogBase - - - MusE: Enter Note - MusE: ВвеÑти ноту - - - - OK - ОК - - - - Cancel - Отменить - - - - Length: - ПродолжительноÑÑ‚ÑŒ: - - - - Time Position: - ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ Ð²Ð¾ времени: - - - - Pitch: - Ð’Ñ‹Ñота тона: - - - - Velocity On: - СкороÑÑ‚ÑŒ вкл.: - - - - Velocity Off: - СкороÑÑ‚ÑŒ выкл.: - - - - EditSysexDialogBase - - - MusE: Enter SysEx - MusE: ВвеÑти SysEx - - - - TimePosition: - ВремÑ: - - - - Comment: - Комментарий: - - - - OK - ОК - - - - Cancel - Отменить - - - - Add - Добавить - - - - EditToolBar - - - Edit Tools - - - - - EffectRack - - - effect rack - - - - - move up - - - - - move down - - - - - remove - - - - - bypass - - - - - show gui - - - - - show native gui - - - - - New Plugin - - - - - New Aux Send - - - - - Replace effect - - - - - Do you really want to replace the effect %1? - - - - - &Yes - - - - - &No - - - - - ExportMidiDialog - - - Save - - - - - as smf midi file - - - - - MusE: export midi smf file - - - - - FLUIDGui - - - FLUID: open Soundfile - - - - - Fluid: select Sound Font - - - - - FLUIDGuiBase - - - Form1 - Form1 - - - - FLUIDSynthGuiBase - - - Type - Тип - - - - FileDialogButtons - - - Form1 - Form1 - - - - Global - Глобально - - - - User - Домашний -каталог - - - - Project - Проект - - - - Load: - Загрузить: - - - - Songdata + -Cofiguration - Композиции + -наÑтройки - - - - only -Songdata - только -композиции - - - - FluidSynthGui - - - Choose soundfont - - - - - FontSel - - - Size: - - - - - GateTime - - - MusE: Modify Gate Time - MusE: Изменить Ð²Ñ€ÐµÐ¼Ñ Ð·Ð²ÑƒÑ‡Ð°Ð½Ð¸Ñ - - - - GateTimeBase - - - MusE: Modify Gate Time - MusE: Изменить Ð²Ñ€ÐµÐ¼Ñ Ð·Ð²ÑƒÑ‡Ð°Ð½Ð¸Ñ - - - - Range - ОблаÑÑ‚ÑŒ - - - - All Events - Ð’Ñе ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ - - - - Selected Events - Выбранные ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ - - - - Looped Events - Ð¡Ð¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð² цикле - - - - Selected & Looped - Выбранные и в цикле - - - - Values - Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ - - - - Rate: - ЧаÑтота: - - - - Offset: - Смещение: - - - - % - % - - - - OK - ОК - - - - Cancel - Отменить - - - - GlobalSettingsDialogBase - - - MusE: Global Settings - MusE: Общие наÑтройки - - - - &Apply - &Применить - - - - &Ok - &ОК - - - - &Cancel - О&тменить - - - - Audio - Звук - - - - Mixer - Микшер - - - - dB - Дб - - - - min. Meter Value - мин. значение индикатора - - - - min.Slider Val - мин. значение ползунка - - - - Midi - MIDI - - - - Ticks - Тактовые импульÑÑ‹ (тики) - - - - 1024 - 1024 - - - - 2048 - 2048 - - - - 4096 - 4096 - - - - 8172 - 8172 - - - - Displayed Resolution -(Ticks/Quarternote) - Отображаемое разрешение -(Тиков/четвертей) - - - - 48 - 48 - - - - 96 - 96 - - - - 192 - 192 - - - - 384 - 384 - - - - 768 - 768 - - - - 1536 - 1536 - - - - 3072 - 3072 - - - - 6144 - 6144 - - - - 12288 - 12288 - - - - RTC Resolution -(Ticks/Sec) - RTC-разрешение -(тиков/Ñек) - - - - GUI - GUI - - - - Help Browser: - Ð’ чём читать Ñправку: - - - - GUI Refresh Rate - ЧаÑтота Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ GUI - - - - /sec - /Ñек - - - - Application - Приложение - - - - Views - Виды - - - - height - выÑота - - - - width - ширина - - - - Big Time - Хронометр - - - - Arranger - Компоновщик - - - - Transport - ТранÑпорт - - - - GreendotButton - - - record - запиÑать - - - - ListEdit - - - MusE: List Edit - - - - - Parts - ЧаÑти - - - - Controller - Контроллер - - - - MITTransposeBase - - - On - Вкл - - - - MPConfig - - - none - ничего - - - - Port - Порт - - - - GUI - GUI - - - - Instrument - ИнÑтрумент - - - - Device Name - Ð˜Ð¼Ñ ÑƒÑтройÑтва - - - - State - СоÑтоÑние - - - - unknown - неизвеÑтно - - - - I - I - - - - O - O - - - - MRConfigBase - - - MusE: Midi Input Plugin: Remote Control - MusE: Входной MIDI-модуль: ДиÑтан. управление - - - - Activate - Ðктивировать - - - - On - Вкл - - - - Actions - ДейÑÑ‚Ð²Ð¸Ñ - - - - Stop - ОÑтановить - - - - Record - ЗапиÑать - - - - Goto Left Mark - Перейти к левой метке - - - - Play - ВоÑпроизвеÑти - - - - MarkerView - - - MusE: Marker - - - - - add marker - - - - - Add Marker - - - - - &Edit - &Правка - - - - marker-tools - - - - - edit tools - - - - - Bar:Beat:Tick - - - - - Min:Sc:Fr:Sf - - - - - Lock - - - - - Text - - - - - Marker Properties - - - - - MasterEdit - - - MusE: Mastertrack - - - - - edit tools - - - - - EnableTempomap - - - - - Tempomap - - - - - Enable use of tempo map - - - - - Info - - - - - Cursor - - - - - Snap - - - - - time at cursor position - - - - - tempo at cursor position - - - - - CurPos - - - - - tempo at current position - - - - - time signature at current position - - - - - MidiChannelInfo - - - MidiController - - - Velocity - Сила Ð½Ð°Ð¶Ð°Ñ‚Ð¸Ñ - - - - MidiControllerEditDialogBase - - - MusE: Define Midi Controller - MusE: Ðазначить MIDI-контроллер - - - - Name - Ð˜Ð¼Ñ - - - - Type - Тип - - - - H-Ctrl - H-Ctrl - - - - L-Ctrl - L-Ctrl - - - - Min Val - Мин знач - - - - Max Val - ÐœÐ°ÐºÑ Ð·Ð½Ð°Ñ‡ - - - - list of defined controllers - ÑпиÑок назначенных контроллеров - - - - This is the MusE list of defined controllers. - Это ÑпиÑок назначенных в MusE контроллеров. - - - - Properties - СвойÑтва - - - - Name - Ð˜Ð¼Ñ - - - - Max Value - ÐœÐ°ÐºÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ - - - - Min Value - Мин значение - - - - Control7 - Control7 - - - - Control14 - Control14 - - - - RPN - RPN - - - - NRPN - NRPN - - - - Type - Тип - - - - create new entry - Ñоздать новую запиÑÑŒ - - - - pressing the New button you create a new entry -in the MusE list of defined controllers - По нажатию кнопки "ÐоваÑ" ÑоздаётÑÑ Ð½Ð¾Ð²Ð°Ñ -запиÑÑŒ в ÑпиÑок назначенных в MusE контроллеров - - - - &Delete - У&далить - - - - delete selected entry - удалить выделенное Ñобытие - - - - &OK - &OK - - - - &Cancel - О&тменить - - - - Channel - Канал - - - - Pitch - Ð’Ñ‹Ñота тона - - - - Range - ОблаÑÑ‚ÑŒ - - - - &Add - &Добавить - - - - Alt+A - Alt+A - - - - Predefined Controller: - Предопределённый контроллер: - - - - Program - Программа - - - - MidiEditor - - - &Edit - &Правка - - - - Cut - Вырезать - - - - Copy - Скопировать - - - - Paste - Ð’Ñтавить - - - - Play Events - - - - - Step Record - - - - - Midi Input - - - - - Follow Song - - - - - MidiFilterConfigBase - - - MusE: Midi Input Filter - MusE: Фильтр входÑщих MIDI-Ñобытий - - - - Record Filter - Фильтр запиÑи - - - - Note On - Note On - - - - Poly Pressure - ПолифоничеÑкое поÑлекаÑание - - - - Controller - Контроллер - - - - Program Change - Смена программы - - - - After Touch - ПоÑлекаÑание - - - - Pitch Bend - Смена выÑоты звука - - - - Sysex - SysEx - - - - Thru Filter - Thru-фильтр - - - - Controller Filter - Фильтр контроллеров - - - - Channel Filter - Фильтр каналов - - - - 14 - 14 - - - - 10 - 10 - - - - 6 - 6 - - - - 12 - 12 - - - - 4 - 4 - - - - 2 - 2 - - - - 9 - 9 - - - - 8 - 8 - - - - 3 - 3 - - - - 13 - 13 - - - - 15 - 15 - - - - 16 - 16 - - - - 7 - 7 - - - - 11 - 11 - - - - 5 - 5 - - - - 1 - 1 - - - - &Cancel - О&тменить - - - - MidiInPortStrip - - - AlsaDevices - - - - - MidiChannel - - - - - JackDevices - - - - - MidiInputTransformDialogBase - - - MusE: Midi Input Transformator - MusE: Преобразование входÑщих MIDI-Ñообщений - - - - Filter - Фильтр - - - - All - Ð’Ñе - - - - Equal - Равно - - - - Unequal - Ðе равно - - - - Note - Ðота - - - - Poly Pressure - ПолифоничеÑкое поÑлекаÑание - - - - Control Change - Смена контроллера - - - - Aftertouch - ПоÑлекаÑание - - - - Pitch Bend - Смена выÑоты звука - - - - NRPN - NRPN - - - - RPN - RPN - - - - Value 2 - Значение 2 - - - - Value 1 - Значение 1 - - - - Event Type - Тип ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ - - - - Ignore - Игнорировать - - - - Higher - Выше - - - - Lower - Ðиже - - - - Inside - Внутри - - - - Outside - Снаружи - - - - Channel - Канал - - - - Port - Порт - - - - Processing - Идёт обработка - - - - Keep - Сохранить - - - - Fix - Поправить - - - - Plus - ÐŸÐ»ÑŽÑ - - - - Minus - ÐœÐ¸Ð½ÑƒÑ - - - - Multiply - Умножить - - - - Divide - Разделить - - - - Invert - Инвертировать - - - - Random - Случайно - - - - Modules - Модули - - - - 1 - 1 - - - - 2 - 2 - - - - 3 - 3 - - - - 4 - 4 - - - - enable modul 1 - разрешить модуль 1 - - - - enable modul 2 - разрешить модуль 2 - - - - enable modul 3 - разрешить модуль 3 - - - - enable modul 4 - разрешить модуль 4 - - - - Preset - ПредуÑтановка - - - - Name: - ИмÑ: - - - - Comment: - Комментарий: - - - - Function - Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ - - - - &New - &Ðовый - - - - create new preset - Ñоздать новую предуÑтановку - - - - &Delete - &Удалить - - - - delete preset - удалить предуÑтановку - - - - &Dismiss - &ПропуÑтить - - - - PresetList - СпиÑок предуÑтановок - - - - MidiOutPortStrip - - - MidiChannel - - - - - AlsaDevices - - - - - JackDevices - - - - - MidiPluginDialog - - - MusE: select midi plugin - - - - - File - - - - - Name - Ð˜Ð¼Ñ - - - - Version - - - - - Description - - - - - Ok - ОК - - - - Cancel - Отменить - - - - MidiPortRouteBase - - - Input - Вход - - - - MusE: Midi Port Routing - MusE: Маршруты между MIDI-портами - - - - Port 2 - Порт 2 - - - - Output - Выход - - - - MidiRack - - - midi effect rack - - - - - move up - - - - - move down - - - - - remove - - - - - bypass - - - - - show gui - - - - - new - новый - - - - MidiStrip - - - VariationSend - - - - - Var - - - - - ReverbSend - - - - - Rev - - - - - ChorusSend - - - - - Cho - - - - - Pan/Balance - - - - - Pan - - - - - Tracks - - - - - OutputPorts - - - - - MidiSyncConfigBase - - - Master - МаÑтер - - - - Apply - Применить - - - - Cancel - Отменить - - - - 24 - 24 - - - - 25 - 25 - - - - Offset: - Смещение: - - - - MidiSyntiStrip - - - OutputPorts - - - - - Channel - Канал - - - - Input Ports - - - - - MidiTimeDelegate - - - dB - Дб - - - - off - выкл - - - - MidiTrackInfo - - - Channel %1 - - - - - Midi Port - - - - - MidiTrackInfoBase - - - % - % - - - - off - выкл - - - - Velocity - Сила Ð½Ð°Ð¶Ð°Ñ‚Ð¸Ñ - - - - MidiTrackerEditor - - - &View - - - - - MidiTracker Tools - - - - - Panic - - - - - Transport - ТранÑпорт - - - - row features - - - - - Number of visible rows - - - - - Quantize - - - - - MidiTransformDialogBase - - - &New - &Ðовый - - - - &Apply - &Применить - - - - &Cancel - О&тменить - - - - PresetList - СпиÑок предуÑтановок - - - - Processing - Идёт обработка - - - - Event Type - Тип ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ - - - - Keep - Сохранить - - - - Fix - Поправить - - - - Note - Ðота - - - - Poly Pressure - ПолифоничеÑкое поÑлекаÑание - - - - Control Change - Смена контроллера - - - - Aftertouch - ПоÑлекаÑание - - - - Pitch Bend - Смена выÑоты звука - - - - NRPN - NRPN - - - - RPN - RPN - - - - Plus - ÐŸÐ»ÑŽÑ - - - - Minus - ÐœÐ¸Ð½ÑƒÑ - - - - Multiply - Умножить - - - - Divide - Разделить - - - - Value 2 - Значение 2 - - - - Invert - Инвертировать - - - - Random - Случайно - - - - Value 1 - Значение 1 - - - - Filter - Фильтр - - - - All - Ð’Ñе - - - - Equal - Равно - - - - Unequal - Ðе равно - - - - Sysex - SysEx - - - - Ignore - Игнорировать - - - - Higher - Выше - - - - Lower - Ðиже - - - - Inside - Внутри - - - - Outside - Снаружи - - - - Preset - ПредуÑтановка - - - - Name: - ИмÑ: - - - - Comment: - Комментарий: - - - - Range - ОблаÑÑ‚ÑŒ - - - - Function - Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ - - - - Select - Выделить - - - - Copy - Скопировать - - - - MidiTransformerDialog - - - New - Ðовый - - - - MixdownFileDialog - - - MusE: set mixdown file name - - - - - Wave Files (*.wav);;All Files (*) - - - - - MixdownFileDialogBase - - - &Cancel - О&тменить - - - - Channel - Канал - - - - Stereo - Стерео - - - - Mono - Моно - - - - 5.1 - 5.1 - - - - Mixer - - - MusE: Mixer - - - - - &Create - - - - - &View - - - - - Routing - - - - - Show Midi Tracks - - - - - Show Midi Out Ports - - - - - Show Midi In Ports - - - - - Show Wave Tracks - - - - - Show Output Tracks - - - - - Show Group Tracks - - - - - Show Input Tracks - - - - - Show Synthesizer - - - - - MusE - - - Import Wave File - Импортировать WAV-файл - - - - undo - отменить - - - - Und&o - &Отменить - - - - redo - повторить - - - - Re&do - &Повторить - - - - undo last change to song - отменить поÑледнее изменение композиции - - - - redo last undo - повторить поÑледнюю отмену - - - - Transport - Пульт ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ - - - - loop - цикл - - - - Loop - Цикл - - - - punchin - Ðачало врезки - - - - Punchin - Ðачало врезки - - - - punchout - Конец врезки - - - - Punchout - Конец врезки - - - - start - к началу - - - - Start - К началу - - - - rewind - перемотать назад - - - - Rewind - Перемотать назад - - - - forward - перемотать вперёд - - - - Forward - Перемотать вперёд - - - - stop - оÑтановить - - - - Stop - ОÑтановить - - - - play - воÑпроизвеÑти - - - - Play - ВоÑпроизвеÑти - - - - record - запиÑать - - - - Record - ЗапиÑать - - - - new - новый - - - - &New - &Ðовый - - - - open - открыть - - - - &Open - &Открыть - - - - save - Ñохранить - - - - &Save - &Сохранить - - - - pianoroll - pianoroll - - - - Pianoroll - Pianoroll - - - - Marker - Маркер - - - - File Buttons - Файловые кнопки - - - - &File - &Файл - - - - Open &Recent - Открыть из &недавних - - - - Save &As - Сохранить &как - - - - Import Midifile - Импортировать MIDI-файл - - - - Export Midifile - ЭкÑпортировать MIDI-файл - - - - &Quit - Ð’Ñ‹&йти - - - - &Edit - &Правка - - - - C&ut - &Вырезать - - - - &Copy - С&копировать - - - - &Paste - &Ð’Ñтавить - - - - Add Track - Добавить дорожку - - - - Select &All - Выделить &вÑÑ‘ - - - - &Deselect All - &Убрать выделение - - - - Invert &Selection - Обратить в&ыделение - - - - &Inside Loop - &Внутри цикла - - - - &Outside Loop - &Снаружи цикла - - - - All &Parts on Track - Ð’Ñе &чаÑти в дорожке - - - - Select - Выделить - - - - Drums - Ударные - - - - List - СпиÑок - - - - Graphic - Графика - - - - Mastertrack - МаÑтер-дорожка - - - - Midi &Transform - &Преобразовать MIDI-ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ - - - - Modify Gate Time - Изменить Ð²Ñ€ÐµÐ¼Ñ Ð·Ð²ÑƒÑ‡Ð°Ð½Ð¸Ñ - - - - Modify Velocity - Изменить ÑкороÑÑ‚ÑŒ - - - - Crescendo - Крещендо - - - - Transpose - ТранÑпонировать - - - - Thin Out - Удалить дубли - - - - Erase Event - Удалить Ñобытие - - - - Note Shift - Сдвиг ноты - - - - Copy Measure - Скопировать деление - - - - Erase Measure - Стереть деление - - - - Delete Measure - Удалить деление - - - - Create Measure - Создать деление - - - - Mix Track - СвеÑти дорожку - - - - Midi - MIDI - - - - &Structure - &Структура - - - - Global Cut - Глобальное вырезание - - - - Global Insert - Ð“Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð°Ñ Ð²Ñтавка - - - - Global Split - Глобальное разделение - - - - Copy Range - Скопировать облаÑÑ‚ÑŒ - - - - Cut Events - Вырезать ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ - - - - Transport Panel - Панель пульта ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ - - - - Bigtime window - Окно хронометра - - - - dont follow Song - не Ñледовать за композицией - - - - follow page - Ñледовать поÑтранично - - - - follow continuous - Ñледовать плавно - - - - Global Settings - Общие наÑтройки - - - - follow song - Ñледовать за композицией - - - - Metronome - Метроном - - - - Midi Sync - MIDI-ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ - - - - Appearance settings - ÐаÑтройки облика - - - - Midi Input Transform - Преобразование входÑщих MIDI-Ñообщений - - - - Midi Input Filter - Фильтр входÑщих MIDI-Ñобытий - - - - Midi Remote Control - ДиÑтанционное управление MIDI - - - - Random Rhythm Generator - Генератор Ñлучайного ритма - - - - &Midi - &MIDI - - - - Mixer - Микшер - - - - Input Plugins - Модули на входе - - - - Reset Instr. - Перегрузить инÑтрументы - - - - Init Instr. - ЗапуÑтить инÑтрументы - - - - local off - откл. локальное управление - - - - &Audio - &Звук - - - - Bounce to Track - СвеÑти в дорожку - - - - Bounce to File - СвеÑти в файл - - - - &Help - &Помощь - - - - About&Qt - О &Qt - - - - Unknown File Format - ÐеизвеÑтный формат файла - - - - MusE: load project - MusE: Открыть проект - - - - MusE: Write File failed - MusE: Попытка запиÑать файл провалилаÑÑŒ - - - - The current Project contains unsaved data -Save Current Project? - Текущий проект Ñодержит не Ñохранённые данные. -Сохранить текущий проект? - - - - &Nosave - &Ðе ÑохранÑÑ‚ÑŒ - - - - &Abort - &Прервать - - - - MusE: Save As - MusE: Сохранить как - - - - MusE: Song: - MusE: ПеÑнÑ: - - - - MusE: Import Midi - MusE: Импортировать MIDI - - - - MusE: Export Midi - MusE: ЭкÑпортировать MIDI - - - - reading midifile - - читаетÑÑ MIDI-файл - - - - - Nothing to edit - Ðечего редактировать - - - - MusE: Copy Range - MusE: Скопировать облаÑÑ‚ÑŒ - - - - not implemented - не реализовано - - - - MusE: Cut Events - MusE: Вырезать ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ - - - - MusE: Bounce to Track - MusE: Сведение в дорожку - - - - more than one target track selected - выбрано больше одной конечной дорожки - - - - wrong target track type, -select wave track as target - Ñто неправильный тип конечной дорожки, -выберите звуковую дорожку - - - - no target track selected - ÐºÐ¾Ð½ÐµÑ‡Ð½Ð°Ñ Ð´Ð¾Ñ€Ð¾Ð¶ÐºÐ° не выбрана - - - - The current Project contains unsaved data -Load overwrites current Project: -Save Current Project? - Текущий проект Ñодержит не Ñохранённые данные. -Загрузка нового проекта приведёт к перезапиÑи данных Ñтого. -Сохранить текущий проект? - - - - &Overwrite - Пере&запиÑать - - - - no help found at: - Ñправка не найдена в: - - - - MusE: Open Help - MusE: Открыть Ñправку - - - - Midi Ports / Soft Synth - MIDI-порты / Прогр. Ñинтезаторы - - - - Delete Selected Tracks - Выбранные дорожки удалены - - - - View - Вид - - - - Edit Instrument - Изменить инÑтрумент - - - - Restart Audio - ПерезапуÑтить звуковой движок - - - - Take Snapshot - Сделать Ñнимок - - - - Settings - ÐаÑтройки - - - - Configure shortcuts - ÐаÑтроить горÑчие клавиши - - - - Midi File Export - ЭкÑпорт в MIDI-файл - - - - &Manual - &РуководÑтво - - - - &MusE homepage - ДомашнÑÑ &Ñтраница MusE - - - - &Report Bug... - Сообщить о&б ошибке... - - - - &About MusE - &О MusE - - - - What's &This? - &Что Ñто? - - - - Cannot read template - Ðевозможно прочитать шаблон - - - - File open error - Ошибка при открытии файла - - - - File read error - Ошибка при чтении файла - - - - MusE: load template - MusE: Загрузка шаблона - - - - MusE: Bounce - MusE: Сведение - - - - set left/right marker for bounce range - уÑтановите левый и правый маркеры Ð´Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¾Ð±Ð»Ð°Ñти ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ - - - - MusE: Bounce to File - MusE: Сведение в файл - - - - no output track found - не найдено ни одной дорожки выхода - - - - Add midi file to current project? - - Добавить MIDI-файл в текущий проект? - - - - - &Add to Project - &Добавить в проект - - - - &Replace - &Заменить - - - - -failed: - -не удалоÑÑŒ: - - - - Arranger - Компоновщик - - - - Cursor - КурÑор - - - - Off - Выкл - - - - Bar - Такт - - - - Snap - ПривÑзка - - - - Len - Длн - - - - Type - Тип - - - - NO - ÐЕТ - - - - GM - GM - - - - GS - GS - - - - XG - XG - - - - midi song type - тип MIDI-композиции - - - - Pitch - Ð’Ñ‹Ñота тона - - - - midi pitch - midi выÑота тона - - - - Tempo - Темп - - - - midi tempo - MIDI-темп - - - - MusE: Create tmp file failed - MusE: Попытка Ñоздать временный файл провалилаÑÑŒ - - - - MusE manual not found at: - - - - - to import a audio file you have first to selecta wave track - - - - - Failed to start audio! - - - - - Was not able to start audio, check if jack is running. - - - - - - Panic - - - - - Project Buttons - - - - - &Project - - - - - Project Properties - - - - - Move Clock - - - - - &View - - - - - Setti&ngs - - - - - Preferences - - - - - global midi pitch shift - - - - - N - - - - - MusE: new project - - - - - Cannot create project folder <%1> - - - - - Cannot open template file -%1 - - - - - File <%1> read error - - - - - MusE: import midi file - - - - - rewind to start position - Перемотать к начальной позиции - - - - start sequencer play - Ðачать воÑпроизведение из ÑеквенÑера - - - - Open - Открыть - - - - Save - Сохранить - - - - MuseApplication - - - Transport: Goto Start - - - - - Goto Start - - - - - rewind to start position - Перемотать к начальной позиции - - - - Transport: Toggle Loop section - - - - - Loop - Цикл - - - - loop between left mark and right mark - Цикл между левым и правым маркерами - - - - Transport: Start playback from current location - - - - - Play - ВоÑпроизвеÑти - - - - start sequencer play - Ðачать воÑпроизведение из ÑеквенÑера - - - - Transport: Play, Stop, Rewind - - - - - Transport: Stop Playback - - - - - Stop - ОÑтановить - - - - stop sequencer - ОÑтановить ÑеквенÑер - - - - Transport: Goto left marker - - - - - Transport: Goto right marker - - - - - Transport: Toggle metronome - - - - - Transport: Toggle Record - - - - - Record - ЗапиÑать - - - - to record press record and then play - Ð”Ð»Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° запиÑи нажмите "ЗапиÑать", а затем "ВоÑпроизвеÑти" - - - - Transport: Punch In - - - - - Punchin - Ðачало врезки - - - - record starts at left mark - ЗапиÑÑŒ начинаетÑÑ Ð¾Ñ‚ маркера Ñлева - - - - Transport: Punch Out - - - - - Punchout - Конец врезки - - - - record stops at right mark - ЗапиÑÑŒ оÑтанавливаетÑÑ Ð¿Ð¾ маркеру Ñправа - - - - Transport: Rewind - - - - - rewind - перемотать назад - - - - rewind current position - Перемотать к текущей позиции - - - - Transport: Forward - - - - - forward - перемотать вперёд - - - - move current position - ПеремеÑтить текущую позицию - - - - Panic - - - - - send note off to all midi channels - ПоÑлать note off на вÑе MIDI-каналы - - - - Edit: Undo - - - - - undo - отменить - - - - undo last change to song - отменить поÑледнее изменение композиции - - - - Edit: Redo - - - - - redo - повторить - - - - redo last undo - повторить поÑледнюю отмену - - - - Edit: Cut - - - - - Cut - Вырезать - - - - Edit: Copy - - - - - Copy - Скопировать - - - - Edit: Paste, - - - - - Paste - Ð’Ñтавить - - - - Edit: Delete - - - - - Delete - - - - - Open - Открыть - - - - open project - - - - - Click this button to select a new project -You can also select the <b>Open command</b> from the Project menu. - - - - - Save - Сохранить - - - - save project - - - - - Click this button to save the project you are editing. -You can also select the Save command from the Project menu. - - - - - File: Save as - - - - - save project as... - - - - - Click this button to save a new copy of the project. - - - - - - File: Save as Template - - - - - save project as template - - - - - Click this button to save the project you are editing -for later use as a template. - - - - - File: Open recent file - - - - - File: Import midi file - - - - - File: Export midi file - - - - - File: Import audio file - - - - - File: Quit MusE - - - - - Quit MusE - - - - - Edit: Select parts on track - - - - - All &Parts on Track - Ð’Ñе &чаÑти в дорожке - - - - Open Pianoroll - - - - - Pianoroll - Pianoroll - - - - Start Pianoroll Editor - - - - - Open MidiTracker - - - - - MidiTracker - - - - - Start Midi Tracker - - - - - Open drumeditor - - - - - Drum Editor - - - - - Start Drum Editor - - - - - Open wave editor - - - - - Wave Editor - - - - - Open listeditor - - - - - Properties - СвойÑтва - - - - open Properties Editor - - - - - Open mastertrack editor - - - - - Mastertrack (Tempo) Editor - - - - - Start Mastertrack (Tempo) Editor - - - - - Add midi track - - - - - Add drum track - - - - - Add wave track - - - - - Add audio output - - - - - Add audio group - - - - - Add audio input - - - - - Structure: Global cut - - - - - Structure: Global insert - - - - - Structure: Global split - - - - - Structure: Copy range - - - - - Structure: Cut events - - - - - View: Open mixer 1 window - - - - - Mixer1 - - - - - Show Mixer 1 - - - - - View: Open mixer 2 window - - - - - Mixer2 - - - - - Show Mixer 2 - - - - - View: Toggle transport window - - - - - Transport - ТранÑпорт - - - - Show Transport Window - - - - - View: Toggle bigtime window - - - - - BigTime - - - - - Show BigTime Window - - - - - View: Open marker window - - - - - Marker - Маркер - - - - Show Marker List - - - - - Settings: Follow song by page - - - - - Settings: Follow song off - - - - - Settings: Follow song continuous - - - - - Settings: Configure shortcuts - - - - - Settings: Configure metronome - - - - - Settings: Midi sync configuration - - - - - Settings: Midi file export configuration - - - - - Settings: Midi ports / Soft Synth - - - - - Settings: Audio subsystem configuration - - - - - Midi: Edit midi instruments - - - - - Midi: Midi remote control - - - - - Midi: Reset midi - - - - - Midi: Init midi - - - - - Midi: Midi local off - - - - - Audio: Bounce audio to track - - - - - Audio: Bounce audio to file - - - - - Audio: Restart audio - - - - - Help: Open Manual - - - - - Help: Toggle whatsthis mode - - - - - Edit: Edit selected part - - - - - Edit: Select nearest part on track above - - - - - Edit: Add nearest part on track above - - - - - Edit: Select nearest part on track below - - - - - Edit: Add nearest part on track below - - - - - Midi: Transpose - - - - - Transpose - ТранÑпонировать - - - - Edit: Select all - - - - - Select All - - - - - Edit: Select none - - - - - Deselect All - - - - - Edit: Invert selection - - - - - Invert Selection - - - - - Edit: Select events/parts inside locators - - - - - Select Inside Loop - - - - - Edit: Select events/parts outside locators - - - - - Select Outside Loop - - - - - Edit: Select nearest part/event to the left - - - - - Edit: Add nearest part/event to the left to selection - - - - - Edit: Add nearest part/event to the right to selection - - - - - Edit: Set locators to selection - - - - - Edit: Increase pitch - - - - - Edit: Decrease pitch - - - - - Edit: Set fixed length on midi events - - - - - Set fixed length - - - - - Quantize: Over Quantize - - - - - Over Quantize - - - - - Quantize: Note On Quantize - - - - - Note On Quantize - - - - - Quantize: Note On/Off Quantize - - - - - Note On/Off Quantize - - - - - Quantize: Iterative Quantize - - - - - Iterative Quantize - - - - - Quantize: Configure quant - - - - - Quantize: Modify Gate Time - - - - - Modify Gate Time - - - - - Quantize: Modify Velocity - - - - - Modify Velocity - - - - - Edit: Crescendo - - - - - Crescendo - - - - - Edit: Thin Out - - - - - Thin Out - - - - - Edit: Erase Event - - - - - Erase Event - - - - - Edit: Note Shift - - - - - Note Shift - - - - - Edit: Move Clock - - - - - Move Clock - - - - - Edit: Copy Measure - - - - - Copy Measure - - - - - Edit: Erase Measure - - - - - Erase Measure - - - - - Edit: Delete Measure - - - - - Delete Measure - - - - - Edit: Create Measure - - - - - Create Measure - - - - - Edit: Change event color - - - - - Tool: Pointer - - - - - Pointer - - - - - select Pointer Tool: -with the pointer tool you can: - select parts - move parts - copy parts - - - - - Tool: Pencil - - - - - Pencil - - - - - select Pencil Tool: -with the pencil tool you can: - create new parts - modify length of parts - - - - - Tool: Eraser - - - - - Eraser - - - - - select Delete Tool: -with the delete tool you can delete parts - - - - - Tool: Scissor - - - - - Scissor - - - - - select Cut Tool: -with the cut tool you can split a part - - - - - Tool: Glue - - - - - Glue - - - - - select Glue Tool: -with the glue tool you can glue two parts - - - - - Declone - - - - - Tool: Quantize - - - - - Quantize - - - - - select Quantize Tool: -insert display quantize event - - - - - Tool: Line Draw - - - - - Draw - - - - - select Drawing Tool - - - - - Tool: Mute Parts - - - - - Mute - - - - - select Muting Tool: -click on part to mute/unmute - - - - - Transport: Increase current position - - - - - Transport: Decrease current position - - - - - Quantize: Set quantize to 1/1 note - - - - - Quantize: Set quantize to 1/2 note - - - - - Quantize: Set quantize to 1/4 note - - - - - Quantize: Set quantize to 1/8 note - - - - - Quantize: Set quantize to 1/16 note - - - - - Quantize: Set quantize to 1/32 note - - - - - Quantize: Set quantize to 1/64 note - - - - - Quantize: Toggle triol quantization - - - - - Quantize: Toggle punctuation quantization - - - - - Quantize: Toggle punctuation quantization (2) - - - - - Insert - - - - - Insert Tempo - - - - - Insert Signature - - - - - Change Event Position - - - - - Edit Event Value - - - - - NoteInfo - - - Note Info - - - - - Start - - - - - Len - Длн - - - - Pitch - Ð’Ñ‹Ñота тона - - - - Velo On - - - - - Velo Off - - - - - OrganGuiBase - - - Velocity - Сила Ð½Ð°Ð¶Ð°Ñ‚Ð¸Ñ - - - - OutportCombo - - - Midi Output Port - - - - - PartCanvas - - - AutoFill... - - - - - drums - - - - - pianoroll - pianoroll - - - - miditracker - - - - - wave edit - - - - - MusE: Get auto fill loop len - - - - - Measures: - - - - - MusE: Change Part Name - - - - - PartName: - - - - - Rename - - - - - Color - - - - - PatchBayBase - - - ALSA Patch Bay - ALSA Patch Bay - - - - PianoRoll - - - &Select - - - - - &Config - - - - - event color - - - - - blue - - - - - pitch colors - - - - - velocity colors - - - - - &Functions - - - - - Config Quant... - - - - - Transpose - ТранÑпонировать - - - - Pianoroll Tools - - - - - Panic - - - - - Transport - ТранÑпорт - - - - PluginDialog - - - MusE: select plugin - MusE: выбрать модуль - - - - Lib - Библ. - - - - Label - Метка - - - - Name - Ð˜Ð¼Ñ - - - - AI - AI - - - - AO - AO - - - - CI - CI - - - - CO - CP - - - - IP - IP - - - - id - id - - - - Maker - Создатель - - - - Copyright - ÐвторÑкое право - - - - Ok - Ok - - - - Cancel - Отменить - - - - Select which types of plugins should be visible in the list,<br>beware that 'all' includes plugins that probably are not usable by MusE. - Выберите ти модулей, которые будут видны в ÑпиÑке,<br>помните, что "вÑе" включит в ÑпиÑок модули, которые <br> -могут быть непригодны Ð´Ð»Ñ MusE. - - - - Stereo and Mono - Стерео и моно - - - - Stereo - Стерео - - - - Mono - Моно - - - - All - Ð’Ñе - - - - Mono and Stereo - - - - - Show All - - - - - Select which types of plugins should be visible in the list.<br>Note that using mono plugins on stereo tracks is not a problem, two will be used in parallell.<br>Also beware that the 'all' alternative includes plugins that probably not are usable by MusE. - - - - - Search in 'Label' and 'Name': - - - - - PluginGui - - - File Buttons - Файловые кнопки - - - - Load Preset - Загрузить предуÑтановку - - - - Save Preset - Сохранить предуÑтановку - - - - bypass plugin - обойти модуль - - - - MusE: load preset - MusE: загрузить предуÑтановку - - - - MusE: save preset - MusE: Ñохранить предуÑтановку - - - - PreferencesDialog - - - MusE: load image - MusE: загрузить изображение - - - - ProjectDialog - - - MusE: create new folder - - - - - new folder: - - - - - QHeader - - - Port Number - Ðомер порта - - - - enable gui for device - разрешить GUI Ð´Ð»Ñ ÑƒÑтройÑтва - - - - Name of the midi device associated with this port number - Ð˜Ð¼Ñ MIDI-уÑтройÑтва, аÑÑоциированного Ñ Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ Ñтого порта - - - - Instrument connected to port - ИнÑтрумент, подÑоединённый к Ñтому порту - - - - State: result of opening the device - СоÑтоÑние: результат Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ ÑƒÑтройÑтва - - - - enables reading from device - разрешает чтение Ñ ÑƒÑтройÑтва - - - - enables writing to device - разрешает запиÑÑŒ на уÑтройÑтво - - - - QMenu - - - Add Midi Generator... - - - - - Add Soft Synth... - - - - - QPopupMenu - - - Add Soft Synth - Добавить программный Ñинтезатор - - - - QWidget - - - new - новый - - - - File - - Файл - - - - -exists - (new line) -ÑущеÑтвует - - - - MusE: write - MusE: запиÑать - - - - Overwrite - ПерезапиÑать - - - - Quit - Выйти - - - - None - Ðичего - - - - Open File - - - - - - -failed: - - - - - MusE: Open File - - - - - generic midi - - - - - copy - %1 -to - %2 - - - - - -converting sample rate -from %1 to %2 - - - - - Abort - - - - - create peakfile for - - - - - MusE: export midi file: - - - - - Cannot convert sysex string - - - - - Hex String too long (2048 bytes limit) - - - - - RecordButton - - - record - запиÑать - - - - RhythmBase - - - MusE: Random Rhythm Generator - MusE: Генератор Ñлучайного ритма - - - - Instrument Properties - СвойÑтва инÑтрумента - - - - test - теÑÑ‚ - - - - contrib - внеÑти - - - - randomize - перемешать - - - - Group 1 - Группа C - - - - Group 2 - Группа 2 - - - - Group 3 - Группа 3 - - - - Group 4 - Группа 4 - - - - Group 5 - Группа 5 - - - - listen - проÑлушать - - - - Instrument - ИнÑтрумент - - - - Group - Группа - - - - &New - &Ðовый - - - - create new entry - Ñоздать новую запиÑÑŒ - - - - pressing the New button you create a new entry -in the MusE list of defined controllers - По нажатию кнопки "ÐоваÑ" ÑоздаётÑÑ Ð½Ð¾Ð²Ð°Ñ -запиÑÑŒ в ÑпиÑок назначенных в MusE контроллеров - - - - &Delete - У&далить - - - - delete selected entry - удалить выделенное Ñобытие - - - - Up - Вверх - - - - Down - Вниз - - - - Instrument - ИнÑтрумент - - - - list of defined controllers - ÑпиÑок назначенных контроллеров - - - - This is the MusE list of defined controllers. - Это ÑпиÑок назначенных контроллеров Ð´Ð»Ñ MusE - - - - &File - &Файл - - - - &Edit - &Правка - - - - &Help - П&омощь - - - - Tools - Ð¡ÐµÑ€Ð²Ð¸Ñ - - - - New - Ðовый - - - - Open - Открыть - - - - &Open... - &Открыть... - - - - Save - Сохранить - - - - &Save - &Сохранить - - - - Save As - Сохранить как - - - - Save &As... - Сохранить &как... - - - - Print - Ðапечатать - - - - &Print... - &Печать... - - - - Exit - Выйти - - - - E&xit - Ð’&ыйти - - - - Undo - Отменить - - - - &Undo - &Отменить - - - - Redo - Повторить - - - - &Redo - П&овторить - - - - Cut - Вырезать - - - - &Cut - &Вырезать - - - - Copy - Скопировать - - - - C&opy - С&копировать - - - - Paste - Ð’Ñтавить - - - - &Paste - &Ð’Ñтавить - - - - Find - Ðайти - - - - &Find... - &Ðайти... - - - - Contents - Содержание - - - - &Contents... - &Содержание... - - - - Index - Ð˜Ð½Ð´ÐµÐºÑ - - - - &Index... - &ИндекÑ... - - - - About - О программе - - - - &About... - &О программе... - - - - <b>Notice!</b><br> -Random Rhythm Generator is not enabled yet! - <b>Внимание!</b><br> -Случайный генератор ритма пока ещё не работает! - - - - Ctrl+N - Ctrl+N - - - - Ctrl+O - Ctrl+O - - - - Ctrl+S - Ctrl+S - - - - Ctrl+P - Ctrl+P - - - - Ctrl+Z - Ctrl+Z - - - - Ctrl+Y - Ctrl+Y - - - - Ctrl+X - Ctrl+X - - - - Ctrl+C - Ctrl+C - - - - Ctrl+V - Ctrl+V - - - - Ctrl+F - Ctrl+F - - - - RouteDialogBase - - - MusE: Routing - MusE: Маршруты - - - - Add Route - Добавить маршрут - - - - Source: - ИÑточник: - - - - Destination: - Ðазначение: - - - - Connect - Соединить - - - - connect source to destination - Ñоединить иÑточник Ñ Ð¼ÐµÑтом Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ - - - - Current Routes - Текущие маршруты - - - - Source - ИÑточник - - - - Destination - Ðазначение - - - - Remove - Удалить - - - - remove selected route - удалить текущий маршрут - - - - SS_PluginChooserBase - - - Name - Ð˜Ð¼Ñ - - - - Label - Метка - - - - &Cancel - О&тменить - - - - SS_PluginFront - - - Clear and unload effect - - - - - Load effect - - - - - Toggle display of effect parameters - - - - - Turn effect on/off - - - - - ShortcutCaptureDialog - - - Ok - ОК - - - - Cancel - Отменить - - - - Shortcut conflicts with - - - - - Undefined - - - - - ShortcutCaptureDialogBase - - - OK - ОК - - - - Cancel - Отменить - - - - ShortcutConfig - - - Global - Глобально - - - - Arranger - Компоновщик - - - - Pianoroll - Pianoroll - - - - Insert Note - Ð’Ñтавить ноту - - - - Insert SysEx - Ð’Ñтавить SysEx - - - - Insert Ctrl - Ð’Ñтавить контроллер - - - - Insert Meta - Ð’Ñтавить Meta - - - - Insert Channel Aftertouch - Ð’Ñтавить Channel Aftertouch - - - - Insert Key Aftertouch - Ð’Ñтавить Key Aftertouch - - - - Drumeditor - - - - - List editor - - - - - List Mastertrack - - - - - All categories - - - - - Wave editor - - - - - ShortcutConfigBase - - - Alt+D - Alt+D - - - - &Apply - &Применить - - - - Alt+A - Alt+A - - - - SimpleSynthGui - - - Load sample dialog - - - - - Song - - - Jack shutdown! - - - - - Jack has detected a performance problem which has lead to -MusE being disconnected. -This could happen due to a number of reasons: -- a performance issue with your particular setup. -- a bug in MusE (or possibly in another connected software). -- a random hiccup which might never occur again. -- jack was voluntary stopped by you or someone else -- jack crashed -If there is a persisting problem you are much welcome to discuss it -on the MusE mailinglist. -(there is information about joining the mailinglist on the MusE - homepage which is available through the help menu) - -To proceed check the status of Jack and try to restart it and then . -click on the Restart button. - - - - - SplitLayerGui - - - start pitch for split - - - - - enable learn mode for start pitch - - - - - end pitch for split - - - - - enable learn mode for end pitch - - - - - pitch offset for split - - - - - start velocity for split - - - - - end velocity for split - - - - - velocity offset for split - - - - - TLSWidget - - - Remove Subtrack - - - - - Ctrl - - - - - Velocity - Сила Ð½Ð°Ð¶Ð°Ñ‚Ð¸Ñ - - - - Delete Controller - - - - - TLWidget - - - Copy Track - - - - - Show Gui - - - - - Add Subtrack - - - - - Midi Output Channel - - - - - TemplateDialog - - - MusE presets - - - - - User presets - - - - - TempoSig - - - Tempo/Sig - Темп/Знаки альтерации - - - - TimeCanvas - - - Ctrl - - - - - Add Controller View - - - - - Toolbar1 - - - Solo - - - - - Cursor - - - - - Snap - - - - - Quantize - - - - - To - - - - - All Events - Ð’Ñе ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ - - - - Looped Ev. - - - - - Selected Ev. - - - - - Looped+Sel. - - - - - TrackComment - - - MusE: Track Comment - - - - - Track Comment: - - - - - TrackInfo - - - Track Type - - - - - Track Name - - - - - Transport - - - Overdub - Ðаложить - - - - Replace - Заменить - - - - Rec Mode - Режим запиÑи - - - - Normal - Ðорм. - - - - Mix - Смешать - - - - Cycle Rec - Циклич. запиÑÑŒ - - - - punchin - нач. врезки - - - - loop - цикл - - - - punchout - кнц. врезки - - - - Punch In - Ðачало врезки - - - - Loop - Цикл - - - - Punch Out - Конец врезки - - - - Left Mark - Левый маркер - - - - Right Mark - Правый маркер - - - - rewind to start - перемотать к началу - - - - rewind - перемотать назад - - - - forward - перемотать вперёд - - - - stop - оÑтановить - - - - play - воÑпроизвеÑти - - - - record - запиÑать - - - - AC - AC - - - - quantize during record - квантовать при запиÑи - - - - Click - Метр. - - - - metronom click on/off - Щелчки метронома - - - - Sync - Синхр. - - - - external sync on/off - Вкл/выкл внешнюю Ñинхронизацию - - - - Master - МаÑтер - - - - use master track - иÑпользовать маÑтер-дорожку - - - - TransposeDialogBase - - - Value - Значение - - - - Parts - ЧаÑти - - - - OK - ОК - - - - Cancel - Отменить - - - - VAMGui - - - MusE: Load VAM Presets - - - - - MusE: Save VAM Presets - - - - - Velocity - - - MusE: Modify Velocity - - - - - VelocityBase - - - Range - ОблаÑÑ‚ÑŒ - - - - All Events - Ð’Ñе ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ - - - - Selected Events - Выбранные ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ - - - - Looped Events - Ð¡Ð¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð² цикле - - - - Selected & Looped - Выбранные и в цикле - - - - Values - Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ - - - - Rate: - ЧаÑтота: - - - - Offset: - Смещение: - - - - % - % - - - - OK - ОК - - - - Cancel - Отменить - - - - WaveEdit - - - &File - &Файл - - - - &Edit - &Правка - - - - Func&tions - - - - - &Gain - - - - - 200% - - - - - 150% - - - - - 75% - - - - - 50% - - - - - 25% - - - - - Other - - - - - Edit in E&xternal Editor - - - - - Mute Selection - - - - - Normalize Selection - - - - - Fade In Selection - - - - - Fade Out Selection - - - - - Reverse Selection - - - - - Select - Выделить - - - - waveedit-tools - - - - - Transport - ТранÑпорт - - - - pianoroll-tools - - - - - Solo - - - - - Cursor - - - - - WaveTrackInfoBase - - - off - выкл - - - - WaveView - - - MusE - file size changed - - - - - When editing in external editor - you should not change the filesize -since it must fit the selected region. - -Missing data is muted - - - - diff --git a/muse/share/locale/muse_sv_SE.qm b/muse/share/locale/muse_sv_SE.qm deleted file mode 100644 index dd6e6905..00000000 Binary files a/muse/share/locale/muse_sv_SE.qm and /dev/null differ diff --git a/muse/share/locale/muse_sv_SE.ts b/muse/share/locale/muse_sv_SE.ts deleted file mode 100644 index 53a00f4e..00000000 --- a/muse/share/locale/muse_sv_SE.ts +++ /dev/null @@ -1,12410 +0,0 @@ - - - - - - - Click this button to enable recording - Klicka här för att spela in - - - - sets amount of quantization: -0 - no quantization -100 - full quantization - Sätter mängden kvantisering: -0 - ingen kvantisering -100 - full kvantisering - - - - select Pointer Tool: -with the pointer tool you can: - select parts - move parts - copy parts - välj pek-verktyg: -med pekverktyget kan du: - välja parter - flytta parter - kopiera parter - - - - Transport: Start playback from current location - Transport: Starta uppspelning frÃ¥n nuvarande position - - - - Transport: Toggle metronome - Transport: Metronom av/pÃ¥ - - - - Transport: Stop Playback - Transport: Stoppa uppspelning - - - - Transport: Play, Stop, Rewind - Transport: Spela, stoppa, spola tillbaka - - - - Transport: Goto left marker - Transport: GÃ¥ till vänster markering - - - - Transport: Goto right marker - Transport: GÃ¥ till höger markering - - - - Transport: Toggle Loop section - Transport: Loopa sektion av/pÃ¥ - - - - Transport: Toggle Record - Transport: Inspelning av/pÃ¥ - - - - Edit: Copy - Redigera: Kopiera - - - - Edit: Undo - Redigera: Ã…ngra - - - - Edit: Redo - Redigera: Gör om - - - - Edit: Cut - Redigera: Klipp ut - - - - Edit: Paste, - Redigera: Klistra in - - - - Edit: Delete - Redigera: Ta bort - - - - File: New project - Arkiv: Nytt projekt - - - - File: Open from disk - Arkiv: Öppna - - - - File: Save project - Arkiv: Spara - - - - File: Open recent file - Arkiv: Öppna föregÃ¥ende fil - - - - File: Save as - Arkiv: Spara som - - - - File: Load template - Arkiv: Ladda mall - - - - File: Import midi file - Arkiv: Importera midifil - - - - File: Export midi file - Arkiv: Exportera midifil - - - - File: Import audio file - Arkiv: Importera ljudfil - - - - File: Quit MusE - Arkiv: Avsluta - - - - Edit: Select parts on track - Arkiv: Välj alla parter i spÃ¥r - - - - Open pianoroll - Öppna pianorulle - - - - Open drumeditor - Öppna trumeditor - - - - Open listeditor - Öppna listeditor - - - - Open graphical mastertrack editor - Öppna masterspÃ¥r-editor (grafisk) - - - - Open list mastertrack editor - Öppna masterspÃ¥r-editor (lista) - - - - Open midi transformer - Öppna miditransformer - - - - Add midi track - Lägg till midispÃ¥r - - - - Add drum track - Lägg till trumspÃ¥r - - - - Add wave track - Lägg till ljudspÃ¥r - - - - Add audio output - Lägg till ljudutgÃ¥ng - - - - Add audio group - Lägg till ljudgrupp - - - - Add audio input - Lägg till ljudingÃ¥ng - - - - Add audio aux - Lägg till aux - - - - Structure: Global cut - Struktur: Globalt klipp - - - - Structure: Global insert - Struktur: Global insättning - - - - Structure: Global split - Struktur: Global delning - - - - Structure: Copy range - Struktur: Kopiera omrÃ¥de - - - - Structure: Cut events - Struktur: Klipp ut händelse - - - - View: Open mixer window - Vy: Öppna mixerfönster - - - - View: Toggle transport window - Vy: Transportfönster av/pÃ¥ - - - - View: Toggle bigtime window - Vy: Bigtimefönster av/pÃ¥ - - - - View: Open marker window - Vy: Öppna markörfönster - - - - Settings: Follow song by page - Inställningar: Följ sÃ¥ng efter sida - - - - Settings: Follow song off - Inställningar: Följ sÃ¥ng av - - - - Settings: Follow song continuous - Inställningar: Följ sÃ¥ng kontinuerligt - - - - Settings: Global configuration - Inställningar: Globala inställningar - - - - Settings: Configure shortcuts - Inställningar: Konfigurera tangentbordsgenvängar - - - - Settings: Configure metronome - Inställningar: Konfigurera metronom - - - - Settings: Midi sync configuration - Inställningar: Midi synk konfigurationg - - - - Settings: Midi file export configuration - Inställningar: Midi fil export-konfiguration - - - - Settings: Appearance settings - Inställningar: Utseendeinställningar - - - - Settings: Midi ports / Soft Synth - Inställningar: Midiportar / Mjukvarusynthar - - - - Settings: Audio subsystem configuration - Inställningar: Konfiguration av ljud-undersystem - - - - Midi: Edit midi instruments - Midi: Editera midi-instrument - - - - Midi: Open midi input transform - Midi: Öppna midi inputtransformator - - - - Midi: Open midi input filter - Midi: Öppna midi indatafilter - - - - Midi: Midi input transpose - Midi: Midi indata transponering - - - - Midi: Midi remote control - Midi: Midi fjärrkontroll - - - - Midi: Random rhythm generator - Midi: Slumprymtmgenerator - - - - Midi: Reset midi - Midi: Resetta midi - - - - Midi: Init midi - Midi: Initiera midi - - - - Midi: Midi local off - Midi: Midi lokal av - - - - Audio: Bounce audio to track - Audio: Bounce till spÃ¥r - - - - Audio: Bounce audio to file - Audio: Bounce till fil - - - - Audio: Restart audio - Audio: Starta om audio - - - - Automation: Mixer automation - Audio: Mixerautomation - - - - Automation: Take mixer snapshot - Audio: Mixer ögonblicksbild - - - - Automation: Clear mixer automation - Audio: Rensa mixerautomation - - - - Help: Open Manual - Hjälp: Öppna manual - - - - Help: Toggle whatsthis mode - Hjälp: What's this-läge av/pÃ¥ - - - - Edit: Edit selected part - Redigera: Editera vald part - - - - Edit: Select nearest part on track above - Redigera: Välj närmsta part pÃ¥ ovanstÃ¥ende spÃ¥r - - - - Edit: Add nearest part on track above - Redigera: Lägg till närmsta part pÃ¥ ovanstÃ¥ende spÃ¥r till val - - - - Edit: Select nearest part on track below - Redigera: Välj närmsta part pÃ¥ underliggande spÃ¥r - - - - Edit: Add nearest part on track below - Redigera: Lägg till närmsta part pÃ¥ underliggande spÃ¥r till val - - - - Midi: Transpose - Midi: Transponering - - - - Edit: Select all - Redigera: Välj alla - - - - Edit: Select none - Redigera: Välj ingen - - - - Edit: Invert selection - Redigera: Invertera val - - - - Edit: Select events/parts inside locators - Redigera: Välj händelser/parter inom sektion - - - - Edit: Select events/parts outside locators - Redigera: Välj händelser/parter utanför sektion - - - - Edit: Select nearest part/event to the left - Redigera: Välj närmsta part/händelse till vänster - - - - Edit: Add nearest part/event to the left to selection - Redigera: Lägg till närmsta part/händelse till vänster till val - - - - Edit: Add nearest part/event to the right to selection - Redigera: Lägg till närmsta part/händelse till höger till val - - - - Edit: Set locators to selection - Redigera: Sätt loopsektion till valda parter/händelser - - - - Edit: Increase pitch - Redigera: Höj pitch - - - - Edit: Decrease pitch - Redigera: Sänk pitch - - - - Edit: Set fixed length on midi events - Redigera: Sätt fix längd till valda midihändelser - - - - Quantize: Over Quantize - Redigera: Överkvantisera - - - - Quantize: Note On Quantize - Kvantisering: Not pÃ¥-kvantisering - - - - Quantize: Note On/Off Quantize - Kvantisering: Not pÃ¥/av-kvantisering - - - - Quantize: Iterative Quantize - Kvantisering: Iterativ kvantisering - - - - Quantize: Configure quant - Kvantisering: Konfigurera kvantisering - - - - Quantize: Modify Gate Time - Kvantisering: Modifiera gate-tid - - - - Quantize: Modify Velocity - Kvantisering: Modifiera velocity - - - - Edit: Crescendo - Redigera: Crescendo - - - - Edit: Thin Out - Redigera: Tunna ut - - - - Edit: Erase Event - Redigera: Ta bort händelse - - - - Edit: Note Shift - Redigera: Shifta Not - - - - Edit: Move Clock - Redigera: Flytta Klocka - - - - Edit: Copy Measure - Redigera: Kopiera Takt - - - - Edit: Erase Measure - Redigera: Ta bort Takt - - - - Edit: Delete Measure - Redigera: Ta bort Takt - - - - Edit: Create Measure - Redigera: Lägg till Takt - - - - Edit: Change event color - Redigera: Ändra färg pÃ¥ händelse - - - - Tool: Pointer - Verktyg: Pekare - - - - Tool: Pencil - Verktyg: Penna - - - - Tool: Eraser - Verktyg: Radergummi - - - - Tool: Line Draw - Verktyg: Rita linje - - - - Tool: Scissor - Verktyg: Delare - - - - Tool: Glue - Verktyg: Lim - - - - Tool: Mute - Verktyg: Tysta - - - - Transport: Increase current position - Transport: Öka nuvarande position - - - - Transport: Decrease current position - Transport: Minska nuvarande position - - - - Quantize: Set quantize to 1/1 note - Kvantisering: Sätt kvantisering till 1/1-not - - - - Quantize: Set quantize to 1/2 note - Kvantisering: Sätt kvantisering till 1/2-not - - - - Quantize: Set quantize to 1/4 note - Kvantisering: Sätt kvantisering till 1/4-not - - - - Quantize: Set quantize to 1/8 note - Kvantisering: Sätt kvantisering till 1/8-not - - - - Quantize: Set quantize to 1/16 note - Kvantisering: Sätt kvantisering till 1/16-not - - - - Quantize: Set quantize to 1/32 note - Kvantisering: Sätt kvantisering till 1/32-not - - - - Quantize: Set quantize to 1/64 note - Kvantisering: Sätt kvantisering till 1/64-not - - - - Quantize: Toggle triol quantization - Kvantisering: Växla triol-kvantisering - - - - Quantize: Toggle punctuation quantization - Kvantisering: Växla punktuerad kvantisering - - - - Quantize: Toggle punctuation quantization (2) - Kvantisering: Växla punktuerad kvantisering (2) - - - - Edit: Insert at location - Redigera: Sätt in pÃ¥ nuvarande position - - - - Insert Note - Mata in Not - - - - Insert SysEx - Mata in SysEx - - - - Insert Ctrl - Mata in Ctrl - - - - Insert Meta - Mata in Meta - - - - Insert Channel Aftertouch - Mata in Aftertouch för kanal - - - - Insert Key Aftertouch - Mata in Key Aftertouch - - - - Edit: Increase event position - Redigera: Öka position för händelse - - - - Edit: Decrease event position - Redigera: Minska position för händelse - - - - Insert Tempo - Mata in Tempo - - - - Insert Signature - Mata in tempo-signatur - - - - Change Event Position - Ändra position för händelse - - - - Edit Event Value - Redigera värde för händelse - - - - Default - - - - - Refrain - - - - - Bridge - - - - - Intro - - - - - Coda - - - - - Chorus - - - - - Solo - - - - - Brass - - - - - Percussion - - - - - Drums - Trummor - - - - Guitar - - - - - Bass - - - - - Flute - - - - - Strings - - - - - Keyboard - - - - - Piano - - - - - Saxophon - - - - - @default - - - Click this button to stop playback - Klicka här för att stoppa uppspelning - - - - Click this button to start playback - Klicka här för att starta uppspelning - - - - Click this button to rewind to start position - Klicka här för att spola tillbaks till början - - - - Click this button to rewind - Klicka här för att flytta markören bakÃ¥t - - - - Click this button to forward current play position - Klicka här för att flytta markören framÃ¥t - - - - don't quantize notes above this tick limit - Kvantisera inte över denna tick gräns - - - - quantize also note len as default - Kvantisera "note len" som standard - - - - Click this button to open a <em>new song</em>.<br>You can also select the <b>Open command</b> from the File menu. - Klicka här för att öppna en <em>ny sÃ¥ng</em>.<br>Du kan ocksÃ¥ välja menyvalet <b>Öppna</b> frÃ¥n Arkivmenyn. - - - - Click this button to save the song you are editing. You will be prompted for a file name. -You can also select the Save command from the File menu. - Klicka här för att spara den sÃ¥ng du hÃ¥ller pÃ¥ att redigera. En förfrÃ¥gan om filnamn kommer att ställas. -Du kan ocksÃ¥ välja menyalternativet Spara frÃ¥n Arkivmenyn. - - - - Create New Song - Ny sÃ¥ng - - - - loop between left mark and right mark - loopa mellan vänster och höger markering - - - - record starts at left mark - inspelning börjar vid vänster markering - - - - record stops at right mark - inspelning slutar vid höger markering - - - - rewind to start position - spola tillbaka till startposition - - - - rewind current position - flytta markörposition bakÃ¥t - - - - move current position - flytta markörposition - - - - stop sequencer - stoppa sequencer - - - - start sequencer play - starta sequenceruppspelning - - - - to record press record and then play - för att spela in, tryck pÃ¥ record och sen play - - - - send note off to all midi channels - skicka note off till alla midi kanaler - - - - select Pencil Tool: -with the pencil tool you can: - create new parts - modify length of parts - välj pennverktyg: -med pennverktyget kan du: - skapa parter - ändra längden pÃ¥ parter - - - - - select Delete Tool: -with the delete tool you can delete parts - välj Suddverktyg: -med suddverktyget kan du ta bort parter - - - - select Cut Tool: -with the cut tool you can split a part - välj Delningsverktyg: -med delningsverktyget kan du dela pÃ¥ parter - - - - select Glue Tool: -with the glue tool you can glue two parts - välj Limverktyg: -med limverktyget kan du limma ihop tvÃ¥ parter - - - - select Score Tool: - - välj Partiturverktyg: - - - - - select Quantize Tool: -insert display quantize event - välj Kvantiseringsverktyg: -sätt in kvantiseringshändelser - - - - select Drawing Tool - välj Ritverktyg - - - - - select Muting Tool: -click on part to mute/unmute - välj Tystningsverktyg: -klicka pÃ¥ en part för att Tysta/Avtysta - - - - pencil - penna - - - - rubber - sudd - - - - cutter - delare - - - - score - partitur - - - - glue - lim - - - - quantize - kvantisering - - - - draw - rita - - - - mute parts - muta parter - - - - Off - Av - - - - presets (*.pre *.pre.gz *.pre.bz2) - inställningar (*.pre *.pre.gz *.pre.bz2) - - - - All Files (*) - Alla filer (*) - - - - Add Midi Track - Lägg till MidispÃ¥r - - - - Add Drum Track - Lägg till TrumspÃ¥r - - - - Add Wave Track - Lägg till WavespÃ¥r - - - - Add Audio Output - Lägg till LjudutgÃ¥ng - - - - Add Audio Group - Lägg till Ljudgrupp - - - - Add Audio Input - Lägg till LjudingÃ¥ng - - - - Add Aux Send - Lägg till aux sänd - - - - Click this button to enable recording - Klicka här för att spela in - - - - Transport: Start playback from current location - Transport: Starta uppspelning frÃ¥n nuvarande position - - - - m - - - - - mute - tysta - - - - s - - - - - solo - - - - - Mo - - - - - monitor - - - - - Dr - - - - - use drum map - - - - - off - av - - - - aR - - - - - automation read - - - - - aW - - - - - automation write - - - - - sync - - - - - send sync events - - - - - 1/2 channel - 1/2 kanal - - - - oR - - - - - output routing - - - - - iR - - - - - input routing - - - - - Channels - - - - - Bar - Takt - - - - Midi - Midi - - - - Add Midi Output - - - - - Add Midi Input - - - - - Audio - Ljud - - - - MusE: create project directory - - - - - MusE: create template directory - - - - - Cannot find project <%1> - - - - - MusE: load Project - - - - - Transport: Toggle metronome - Transport: Metronom av/pÃ¥ - - - - Transport: Stop Playback - Transport: Stoppa uppspelning - - - - Transport: Play, Stop, Rewind - Transport: Spela, stoppa, spola tillbaka - - - - Transport: Goto left marker - Transport: GÃ¥ till vänster markering - - - - Transport: Goto right marker - Transport: GÃ¥ till höger markering - - - - Transport: Toggle Loop section - Transport: Loopa sektion av/pÃ¥ - - - - Transport: Toggle Record - Transport: Inspelning av/pÃ¥ - - - - Edit: Copy - Redigera: Kopiera - - - - Edit: Undo - Redigera: Ã…ngra - - - - Edit: Redo - Redigera: Gör om - - - - Edit: Cut - Redigera: Klipp ut - - - - Edit: Paste, - Redigera: Klistra in - - - - Edit: Delete - Redigera: Ta bort - - - - Open - Öppna - - - - Save - Spara - - - - File: Open recent file - Arkiv: Öppna föregÃ¥ende fil - - - - File: Import midi file - Arkiv: Importera midifil - - - - File: Export midi file - Arkiv: Exportera midifil - - - - File: Import audio file - Arkiv: Importera ljudfil - - - - File: Quit MusE - Arkiv: Avsluta - - - - Edit: Select parts on track - Arkiv: Välj alla parter i spÃ¥r - - - - Open pianoroll - Öppna pianorulle - - - - Open drumeditor - Öppna trumeditor - - - - Open listeditor - Öppna listeditor - - - - Open graphical mastertrack editor - Öppna masterspÃ¥r-editor (grafisk) - - - - Open list mastertrack editor - Öppna masterspÃ¥r-editor (lista) - - - - Add midi track - Lägg till midispÃ¥r - - - - Add drum track - Lägg till trumspÃ¥r - - - - Add wave track - Lägg till ljudspÃ¥r - - - - Add audio output - Lägg till ljudutgÃ¥ng - - - - Add audio group - Lägg till ljudgrupp - - - - Add audio input - Lägg till ljudingÃ¥ng - - - - Structure: Global cut - Struktur: Globalt klipp - - - - Structure: Global insert - Struktur: Global insättning - - - - Structure: Global split - Struktur: Global delning - - - - Structure: Copy range - Struktur: Kopiera omrÃ¥de - - - - Structure: Cut events - Struktur: Klipp ut händelse - - - - View: Open mixer window - Vy: Öppna mixerfönster - - - - View: Toggle transport window - Vy: Transportfönster av/pÃ¥ - - - - View: Toggle bigtime window - Vy: Bigtimefönster av/pÃ¥ - - - - View: Open marker window - Vy: Öppna markörfönster - - - - Settings: Follow song by page - Inställningar: Följ sÃ¥ng efter sida - - - - Settings: Follow song off - Inställningar: Följ sÃ¥ng av - - - - Settings: Follow song continuous - Inställningar: Följ sÃ¥ng kontinuerligt - - - - Settings: Configure shortcuts - Inställningar: Konfigurera tangentbordsgenvängar - - - - Settings: Configure metronome - Inställningar: Konfigurera metronom - - - - Settings: Midi sync configuration - Inställningar: Midi synk konfigurationg - - - - Settings: Midi file export configuration - Inställningar: Midi fil export-konfiguration - - - - Settings: Midi ports / Soft Synth - Inställningar: Midiportar / Mjukvarusynthar - - - - Settings: Audio subsystem configuration - Inställningar: Konfiguration av ljud-undersystem - - - - Midi: Edit midi instruments - Midi: Editera midi-instrument - - - - Midi: Midi remote control - Midi: Midi fjärrkontroll - - - - Midi: Reset midi - Midi: Resetta midi - - - - Midi: Init midi - Midi: Initiera midi - - - - Midi: Midi local off - Midi: Midi lokal av - - - - Audio: Bounce audio to track - Audio: Bounce till spÃ¥r - - - - Audio: Bounce audio to file - Audio: Bounce till fil - - - - Audio: Restart audio - Audio: Starta om audio - - - - Help: Open Manual - Hjälp: Öppna manual - - - - Help: Toggle whatsthis mode - Hjälp: What's this-läge av/pÃ¥ - - - - Edit: Edit selected part - Redigera: Editera vald part - - - - Edit: Select nearest part on track above - Redigera: Välj närmsta part pÃ¥ ovanstÃ¥ende spÃ¥r - - - - Edit: Add nearest part on track above - Redigera: Lägg till närmsta part pÃ¥ ovanstÃ¥ende spÃ¥r till val - - - - Edit: Select nearest part on track below - Redigera: Välj närmsta part pÃ¥ underliggande spÃ¥r - - - - Edit: Add nearest part on track below - Redigera: Lägg till närmsta part pÃ¥ underliggande spÃ¥r till val - - - - Midi: Transpose - Midi: Transponering - - - - Edit: Select all - Redigera: Välj alla - - - - Edit: Select none - Redigera: Välj ingen - - - - Edit: Invert selection - Redigera: Invertera val - - - - Edit: Select events/parts inside locators - Redigera: Välj händelser/parter inom sektion - - - - Edit: Select events/parts outside locators - Redigera: Välj händelser/parter utanför sektion - - - - Edit: Select nearest part/event to the left - Redigera: Välj närmsta part/händelse till vänster - - - - Edit: Add nearest part/event to the left to selection - Redigera: Lägg till närmsta part/händelse till vänster till val - - - - Edit: Add nearest part/event to the right to selection - Redigera: Lägg till närmsta part/händelse till höger till val - - - - Edit: Set locators to selection - Redigera: Sätt loopsektion till valda parter/händelser - - - - Edit: Increase pitch - Redigera: Höj pitch - - - - Edit: Decrease pitch - Redigera: Sänk pitch - - - - Edit: Set fixed length on midi events - Redigera: Sätt fix längd till valda midihändelser - - - - Quantize: Over Quantize - Redigera: Överkvantisera - - - - Quantize: Note On Quantize - Kvantisering: Not pÃ¥-kvantisering - - - - Quantize: Note On/Off Quantize - Kvantisering: Not pÃ¥/av-kvantisering - - - - Quantize: Iterative Quantize - Kvantisering: Iterativ kvantisering - - - - Quantize: Configure quant - Kvantisering: Konfigurera kvantisering - - - - Quantize: Modify Gate Time - Kvantisering: Modifiera gate-tid - - - - Quantize: Modify Velocity - Kvantisering: Modifiera velocity - - - - Edit: Crescendo - Redigera: Crescendo - - - - Edit: Thin Out - Redigera: Tunna ut - - - - Edit: Erase Event - Redigera: Ta bort händelse - - - - Edit: Note Shift - Redigera: Shifta Not - - - - Edit: Move Clock - Redigera: Flytta Klocka - - - - Edit: Copy Measure - Redigera: Kopiera Takt - - - - Edit: Erase Measure - Redigera: Ta bort Takt - - - - Edit: Delete Measure - Redigera: Ta bort Takt - - - - Edit: Create Measure - Redigera: Lägg till Takt - - - - Edit: Change event color - Redigera: Ändra färg pÃ¥ händelse - - - - Tool: Pointer - Verktyg: Pekare - - - - Tool: Pencil - Verktyg: Penna - - - - Tool: Eraser - Verktyg: Radergummi - - - - Tool: Line Draw - Verktyg: Rita linje - - - - Tool: Scissor - Verktyg: Delare - - - - Tool: Glue - Verktyg: Lim - - - - Tool: Mute - Verktyg: Tysta - - - - Transport: Increase current position - Transport: Öka nuvarande position - - - - Transport: Decrease current position - Transport: Minska nuvarande position - - - - Quantize: Set quantize to 1/1 note - Kvantisering: Sätt kvantisering till 1/1-not - - - - Quantize: Set quantize to 1/2 note - Kvantisering: Sätt kvantisering till 1/2-not - - - - Quantize: Set quantize to 1/4 note - Kvantisering: Sätt kvantisering till 1/4-not - - - - Quantize: Set quantize to 1/8 note - Kvantisering: Sätt kvantisering till 1/8-not - - - - Quantize: Set quantize to 1/16 note - Kvantisering: Sätt kvantisering till 1/16-not - - - - Quantize: Set quantize to 1/32 note - Kvantisering: Sätt kvantisering till 1/32-not - - - - Quantize: Set quantize to 1/64 note - Kvantisering: Sätt kvantisering till 1/64-not - - - - Quantize: Toggle triol quantization - Kvantisering: Växla triol-kvantisering - - - - Quantize: Toggle punctuation quantization - Kvantisering: Växla punktuerad kvantisering - - - - Quantize: Toggle punctuation quantization (2) - Kvantisering: Växla punktuerad kvantisering (2) - - - - Insert Tempo - Mata in Tempo - - - - Insert Signature - Mata in tempo-signatur - - - - Change Event Position - Ändra position för händelse - - - - Edit Event Value - Redigera värde för händelse - - - - MusE: create instruments directory - - - - - AboutBox - - - AboutBox - OmDialog - - - - Keep On Rocking! - Keep On Rocking! - - - - Version 0.7.0 - -(C) Copyright 1999-2004 Werner Schweer and others. -See http://lmuse.sourceforge.net for new versions and -more information. - -Published under the GNU Public License - Version 0.7.0 - -(C) Copyright 1999-2004 Werner Schweer m.fl. -Se http://lmuse.sourceforge.net för nya versioner och -mer information - -Published under the GNU Public License - - - - Appearance - - - handle of transport window - handtag för transportfönster - - - - track activity in arranger - spÃ¥r-aktivitet i Arrangeraren - - - - bigtime font color - bigtime typsnittsfärg - - - - bigtime background color - bigtime bakgrundsfärg - - - - waveedit background color - audioeditor bakgrundsfärg - - - - MusE: load image - MusE: ladda bild - - - - AppearanceDialogBase - - - MusE: Appearance settings - MusE: Utseendeinställningar - - - - Apply - Verkställ - - - - Ok - Ok - - - - Cancel - Avbryt - - - - Arranger - Arrangerare - - - - Parts - Parter - - - - show frames - visa ramar - - - - show names - visa namn - - - - show events - visa händelser(events) - - - - show Cakewalk Style - använd Cakewalkstil - - - - Events - Händelser - - - - note on - not pÃ¥ - - - - poly pressure - poly pressure - - - - controller - controller - - - - aftertouch - aftertouch - - - - pitch bend - pitch bend - - - - program change - program change - - - - Background picture - Bakgrundsbild - - - - select... - välj... - - - - show snap grid - visa rutnät - - - - Colors - Färger - - - - Items - Objekt - - - - selected - vald - - - - current: - nuvarande: - - - - change... - byt... - - - - dynamic colors for track activity in arranger - dynamisk färgallokering för spÃ¥raktivitet i arranger - - - - Style/Fonts - Style/Typsnitt - - - - QT Theme - QT-tema - - - - Fonts - Typsnitt - - - - Family - Familj - - - - Size - Storlek - - - - Font 1 - Typsnitt 1 - - - - Font 2 - Typsnitt 2 - - - - Font 3 - Typsnitt 3 - - - - Font 0 - Typsnitt 0 - - - - Bold - Fet - - - - Italic - Kursiv - - - - Font 4 - Typsnitt 4 - - - - Font 5 - Typsnitt 5 - - - - Palette - Palett - - - - add to palette - lägg till i palett - - - - Arranger - - - Arranger - Arrangerare - - - - Cursor - Markör - - - - Off - Av - - - - Bar - Takt - - - - Snap - Fäst vid - - - - Type - Typ - - - - midi song type - typ av midsÃ¥ng - - - - Pitch - Tonhöjd - - - - TrackInfo - SpÃ¥rinfo - - - - Track - SpÃ¥r - - - - Master - Master - - - - Group A - Grupp A - - - - Group B - Grupp B - - - - Group C - Grupp C - - - - Group D - Grupp D - - - - Mix - - - - - Config Tracklist - - - - - all mute off - - - - - all solo off - - - - - all autoRead off - - - - - all autoWrite off - - - - - i - - - - - Show Track Info - - - - - m - - - - - Show Mixer Strip - - - - - AudioConfBase - - - MusE: Audio Configuration - MusE: Ljudinställningar - - - - &Apply - &Verkställ - - - - &OK - &Ok - - - - &Cancel - &Avbryt - - - - Audio Parameters - Ljudparametrar - - - - Frame Size: - Ramstorlek: - - - - Delay: - Fördröjning(ms): - - - - Sample Rate: - Samplingsfrekvens: - - - - Audio Driver - Ljuddrivrutin - - - - Use Alsa - Använd Alsa - - - - Use JACK - Använd JACK - - - - No Audio - Ljud avstängt - - - - AudioMixerApp - - - 1/2 channel - 1/2 kanal - - - - record - inspelning - - - - mute - tysta - - - - pre fader listening - pre fader lyssning - - - - record downmix - spela in nermixning - - - - off - av - - - - &Config - &Inställningar - - - - Add Input Strip - Lägg till Input-remsa - - - - Inputs - IngÃ¥ngar - - - - Tracks - SpÃ¥r - - - - Groups - Grupper - - - - Master - Master - - - - Group A - Grupp A - - - - Group B - Grupp B - - - - Group C - Grupp C - - - - Group D - Grupp D - - - - None - Ingen - - - - &Create - &Skapa - - - - AudioStrip - - - off - av - - - - 1/2 channel - 1/2 kanal - - - - mute - tysta - - - - record downmix - spela in nermixning - - - - pre fader listening - pre fader lyssning - - - - Off - Av - - - - Channel - Kanal - - - - Pre - - - - - pre fader - post fader - - - - - dB - - - - - panorama - - - - - Pan - - - - - Channel %1 - - - - - MidiChannel - - - - - Awl::MidiVolEntry - - - off - av - - - - db - - - - - Awl::VolEntry - - - off - av - - - - BigTime - - - MusE: Bigtime - - - - - ClipListEdit - - - MusE: Clip List Editor - MusE: Clip-listredigerare - - - - ClipListEditorBase - - - MusE: ClipList - MusE: Clip-lista - - - - Name - Namn - - - - Clip Properties - Clip-egenskaper - - - - CommentBase - - - Track Comment - SpÃ¥r-kommentar - - - - Track 1 - SpÃ¥r 1 - - - - ConfigMidiCtrlBase - - - MusE: Config Midi Controller - MusE: Konfigurera Midi Controller - - - - Midi Port: - Midi Port: - - - - Available Controller: - Tillgänglig Controller: - - - - Add - Lägg till - - - - Remove - Ta bort - - - - Automated Controller: - Automatiserad Controller: - - - - &OK - &OK - - - - &Cancel - &Avbryt - - - - ConfigMidiFileBase - - - MusE: Config Midi File Export - MusE: Midi fil export-konfiguration - - - - &OK - &OK - - - - &Cancel - &Avbryt - - - - 0 (single track) - 0 (enskilt spÃ¥r) - - - - 1 (multiple tracks) - 1 (multipla spÃ¥r) - - - - Format: - Format: - - - - Enable extended smf format - SlÃ¥ pÃ¥ utbyggt smf-format - - - - ConfigTrackListBase - - - MusE: Config Track List - MusE: Konfigurera SpÃ¥rlista - - - - Track Type: - SpÃ¥rtyp: - - - - Audio Output - LjudutgÃ¥ng - - - - Audio Group - Ljudgrupp - - - - Audio Aux - Ljud Aux - - - - Wave Track - WavespÃ¥r - - - - Audio Input - LjudingÃ¥ng - - - - Soft Synthesizer - Mjukvarusynth - - - - Midi Track - MidispÃ¥r - - - - Drum Track - TrumspÃ¥r - - - - Available Items: - Tillgängliga Objekt: - - - - Add - Lägg till - - - - Remove - Ta bort - - - - Up - Upp - - - - Down - Ner - - - - Configured Items - Konfigurerade Objekt - - - - Track Name Size: - SpÃ¥rnamn Storlek: - - - - &OK - &OK - - - - &Cancel - &Avbryt - - - - CtrlDelegate - - - dB - - - - - off - av - - - - CtrlDialog - - - controller name - - - - - flag if controller contains data - - - - - CtrlEdit - - - select controller - välj controller - - - - CtrlListEditor - - - dB - - - - - CtrlPanel - - - select controller - välj controller - - - - remove panel - ta bort panel - - - - Velocity - Hastighet - - - - Pitch - Tonhöjd - - - - other ... - annat ... - - - - DeicsOnzeGui - - - Save configuration - - - - - Critical Error - - - - - Cannot open file %1 - - - - - Parsing error for file %1 - - - - - Load category dialog - - - - - Load set dialog - - - - - Save set dialog - - - - - New category - - - - - Delete category - - - - - Load category - - - - - Save category - - - - - Load set - - - - - Save set - - - - - Delete set - - - - - New subcategory - - - - - Delete subcategory - - - - - Load subcategory - - - - - Save subcategory - - - - - New preset - - - - - Delete preset - - - - - Load preset - - - - - Save preset - - - - - No more category supported - - - - - You can not add more categories - - - - - Do you really want to delete %1 ? - - - - - &Yes - - - - - &No - - - - - No category selected - - - - - You must first select a category. - - - - - Replace or add - - - - - %1 is supposed to be affected to the hbank number %2, but there is already one on this slot. - Do you want to replace it or to add it in the next free slot ? - - - - - &Replace - E&rsätt - - - - &Add - &Lägg till - - - - Download error - - - - - There is no more free category slot. - - - - - Save category dialog - - - - - No more subcategory supported - - - - - You can not add more subcategories - - - - - No subcategory selected - - - - - You must first select a subcategory. - - - - - Load subcategory dialog - - - - - %1 is supposed to be affected to the lbank number %2, but there is already one on this slot. - Do you want to replace it or to add it in the next free slot ? - - - - - There is no more free subcategory slot. - - - - - Save subcategory dialog - - - - - No more preset supported - - - - - You can not add more presets - - - - - No preset selected - - - - - You must first select a preset. - - - - - Load preset dialog - - - - - %1 is supposed to be affected to the prog number %2, but there is already one on this slot. - Do you want to replace it or to add it in the next free slot ? - - - - - There is no more free preset slot. - - - - - Save preset dialog - - - - - Browse set dialog - - - - - Browse image dialog - - - - - DeicsOnzeGuiBase - - - Speed - Hastighet - - - - Volume - Volym - - - - Pitch - Tonhöjd - - - - Transpose - Transponera - - - - &Config - &Inställningar - - - - Save - Spara - - - - Colors - Färger - - - - Text - Text - - - - DrumEdit - - - &File - &Arkiv - - - - Load Map - Ladda mappning - - - - Save Map - Spara Mappning - - - - &Edit - &Redigera - - - - Cut - Klipp ut - - - - Copy - Kopiera - - - - Paste - Klistra in - - - - Delete Events - Ta bort händelser - - - - Select All - Välj Allt - - - - Select None - Välj Ingen - - - - Invert - Invertera - - - - Inside Loop - I loop - - - - Outside Loop - Utanför loop - - - - &Select - &Välj - - - - Load Drummap - Ladda trummappning - - - - Store Drummap - Spara trummappning - - - - Step Record - Stegvis inspelning - - - - Add Controller View - Lägg till Controller vy - - - - Sound - Ljud - - - - drummaps - trummappningar - - - - Muse: Load Drum Map - Muse: Ladda trummappning - - - - MusE: Store Drum Map - MusE: Spara trummappning - - - - &Functions - &Funktioner - - - - Modify Velocity - Modifiera Velocity - - - - Drum Tools - - - - - Transport - - - - - EditCAfterDialog - - - Time Position - Tidsposition - - - - EditCtrl14Dialog - - - MusE: Enter Controller14 Event - MusE: Mata in Controller14 Händelse - - - - Time Position - Tidsposition - - - - Value - Värde - - - - EditCtrl7Dialog - - - MusE: Enter Controller Event - MusE: Mata in Controller Händelse - - - - Time Position - Tidsposition - - - - Value - Värde - - - - EditCtrl7DialogBase - - - MusE: Enter Controller - MusE: Mata in Controller - - - - Controller: - Controller: - - - - Time Position: - Tidspositions: - - - - Value: - Värde: - - - - controller value - controllervärde - - - - OK - OK - - - - Cancel - Avbryt - - - - EditCtrlBase - - - MusE: Edit Controller Event - MusE: Redigera Controllerhändelse - - - - Time Position - Tidsposition - - - - Available Controller: - Tillgänglig Controller: - - - - Create New Controller - Skapa Ny Controller - - - - Value - Värde - - - - Controller - Controller - - - - off - av - - - - &OK - &Ok - - - - &Cancel - &Avbryt - - - - Midi Port: - Midi Port: - - - - Midi Channel: - Midi Kanal: - - - - Time Position: - Tidsposition: - - - - Patch Name - Patchnamn - - - - EditEventDialog - - - Cancel - Avbryt - - - - EditInstrument - - - MusE: Create file failed - - - - - MusE: Write File failed - - - - - MusE: Save Instrument Definition - - - - - Instrument Definition (*.idf) - - - - - MusE: Enter new Category - - - - - Enter new Category: - - - - - MusE - - - - - The current Instrument contains unsaved data -Save Current Instrument? - - - - - &Save - &Spara - - - - &Nosave - - - - - &Abort - - - - - EditInstrumentBase - - - Patches - Patchar - - - - Patch Name: - Patchnamn: - - - - High Bank: - Hög Bank: - - - - Low Bank: - LÃ¥g Bank: - - - - Program: - Program: - - - - Patch/Group - Patch/Grupp - - - - &Delete - &Ta bort - - - - &New Patch - &Ny Patch - - - - New Group - Ny Grupp - - - - Drum - Trumma - - - - Controller - Controller - - - - Predefined Controller: - Fördefinierad Controller: - - - - This is a list of commonly used midi controllers. -Note that in MusE pitch and program changes are -handled like normal controllers. - Detta är en lista över vanligt förekommande controllers. -Observera att i MusE hanteras pitch och program change som -vanliga controllers. - - - - Properties - Egenskaper - - - - Name - Namn - - - - Type - Typ - - - - Pitch - Tonhöjd - - - - Midi Controller Number High Byte - Midi Controllernummer Hög Byte - - - - Midi Controller Number Low Byte - Midi Controllernummer LÃ¥g Byte - - - - Range - OmrÃ¥de - - - - Name - Namn - - - - Type - Typ - - - - Min Val - Min värde - - - - Max Val - Max värde - - - - list of defined controllers - lista med definierade controllers - - - - This is the MusE list of defined controllers. - Detta är MusEs lista med definierade controllers. - - - - Initialization - Initiering - - - - Panic - Panik - - - - Hex Entry: - Hex Värde: - - - - &File - &Arkiv - - - - Tools - Verktyg - - - - New - Ny - - - - &New - &Ny - - - - Open - Öppna - - - - &Open... - &Öppna... - - - - Save - Spara - - - - &Save - &Spara - - - - Save As - Spara som - - - - Save &As... - S&para som... - - - - Exit - Stäng - - - - E&xit - S&täng - - - - EditMetaDialog - - - MusE: Enter Meta Event - MusE: Mata in Meta Händelse - - - - Time Position - Tidsposition - - - - Meta Type - Metatyp - - - - Enter Hex - Mata in Hex - - - - EditMetaDialogBase - - - MusE: Enter Meta Event - MusE: Mata in Meta Händelse - - - - OK - OK - - - - Cancel - Avbryt - - - - Time Position: - Tidsposition: - - - - Meta Type: - Metatyp: - - - - Enter Hex - Mata in hex - - - - EditNoteDialogBase - - - MusE: Enter Note - MusE: Mata in Not - - - - OK - OK - - - - Cancel - Avbryt - - - - Length: - Längd: - - - - Time Position: - Tidsposition: - - - - Pitch: - Tonhöjd: - - - - Velocity On: - Velocity PÃ¥: - - - - Velocity Off: - Velocity Av: - - - - EditPAfterDialog - - - MusE: Enter Poly Aftertouch - MusE: Mata in Poly Aftertouch - - - - Time Position - Tidsposition - - - - Pitch - Tonhöjd - - - - EditPitchDialog - - - MusE: Enter Pitch Shift - MusE: Mata in Pitch Shift - - - - Time Position - Tidsposition - - - - Pitch - Tonhöjd - - - - EditSysexDialogBase - - - MusE: Enter SysEx - MusE: Mata in SysEx - - - - TimePosition: - Tidsposition: - - - - Comment: - Kommentar: - - - - OK - OK - - - - Cancel - Avbryt - - - - Known SysEx: - Känd SysEx: - - - - Add - Lägg till - - - - EditToolBar - - - Edit Tools - Redigeringsverktyg - - - - EffectRack - - - effect rack - effektrack - - - - move up - flytta upp - - - - move down - flytta ner - - - - remove - ta bort - - - - show gui - visa gui - - - - new - ny - - - - change - ändra - - - - bypass - - - - - show native gui - - - - - New Plugin - - - - - New Aux Send - - - - - Replace effect - - - - - Do you really want to replace the effect %1? - - - - - &Yes - - - - - &No - - - - - ExportMidiDialog - - - Save - - - - - as smf midi file - - - - - MusE: export midi smf file - - - - - FLUIDGui - - - FLUID: open Soundfile - - - - - Fluid: select Sound Font - - - - - FLUIDGuiBase - - - Load - Ladda - - - - FLUIDSynthGuiBase - - - Gain - Förstärkning - - - - Room Size - Rumsstorlek - - - - Damping - Dämpning - - - - Level - NivÃ¥ - - - - Width - Bredd - - - - Speed - Hastighet - - - - Depth - Djup - - - - Number - Nummer - - - - Type - Typ - - - - Sine - Sinus - - - - Triangle - Triangel - - - - Load - Ladda - - - - Save - Spara - - - - Delete - Ta bort - - - - Fontname - Fontnamn - - - - FileDialogButtons - - - User - Användare - - - - Project - Projekt - - - - Load: - Öppna: - - - - Songdata + -Cofiguration - SÃ¥ngdata + Konfiguration - - - - only -Songdata - enbart SÃ¥ngdata - - - - FluidSynthGui - - - Choose soundfont - - - - - FontSel - - - Size: - Storlek: - - - - GateTime - - - MusE: Modify Gate Time - MusE: Ändra Gate-tid - - - - GateTimeBase - - - MusE: Modify Gate Time - MusE: Ändra Gate-tid - - - - Range - OmrÃ¥de - - - - All Events - Alla Händelser - - - - Selected Events - Valda Händelser - - - - Looped Events - Loopade Händelser - - - - Selected & Looped - Valda & Loopade - - - - Values - Värden - - - - Rate: - Hastighet: - - - - Offset: - Offset: - - - - OK - OK - - - - Cancel - Avbryt - - - - GlobalSettingsDialogBase - - - MusE: Global Settings - MusE: Globala Inställningar - - - - &Apply - &Verkställ - - - - &Ok - &Ok - - - - &Cancel - &Avbryt - - - - Audio - Ljud - - - - Mixer - Mixer - - - - min. Meter Value - min. Metervärde - - - - min.Slider Val - min. Slider värde - - - - Midi - Midi - - - - Displayed Resolution -(Ticks/Quarternote) - Visad upplösning -(Tick/Kvartsnot) - - - - RTC Resolution -(Ticks/Sec) - RTC-Upplösning -(Tick/Sek) - - - - Help Browser: - Hjälpläsare: - - - - GUI Refresh Rate - GUI-uppdateringsfrekvens - - - - /sec - /sek - - - - Application - Applikation - - - - Start Muse - Starta MusE - - - - start with last song - starta med senaste projekt - - - - start with song - starta med projekt - - - - start song: - starta projekt: - - - - Views - Vyer - - - - show - visa - - - - height - höjd - - - - width - bredd - - - - Arranger - Arrangerare - - - - Cur - Nuv - - - - set current values - sätt nuvarande värden - - - - start with template: default.med - starta med mall: default.med - - - - show splash screen - visa splashscreen - - - - use JACK freewheel mode if possible - använd JACK freewheel om möjligt - - - - GreendotButton - - - record - - - - - LMaster - - - MusE: Mastertrack - MusE: MasterspÃ¥r - - - - new tempo - nytt tempo - - - - new signature - ny signatur - - - - Time - Tid - - - - Type - Typ - - - - Value - Värde - - - - ListEdit - - - Insert Note - Mata in Not - - - - insert Note - Mata in Not - - - - Insert SysEx - Mata in SysEx - - - - insert SysEx - Mata in SysEx - - - - Insert Ctrl - Mata in Ctrl - - - - insert Ctrl - Mata in Ctrl - - - - Insert Meta - Mata in Meta - - - - insert Meta - Mata in Meta - - - - Insert Pitch - Mata in Pitch - - - - insert Pitch - Mata in Pitch - - - - Insert Channel Aftertouch - Mata in Aftertouch för kanal - - - - insert Channel Aftertouch - Mata in Aftertouch för kanal - - - - Insert Key Aftertouch - Mata in Key Aftertouch - - - - insert Poly Aftertouch - Mata in Poly Aftertouch - - - - &Edit - &Redigera - - - - Cut - Klipp ut - - - - Copy - Kopiera - - - - Paste - Klistra in - - - - Delete Events - Ta bort Händelser - - - - List Tools - Listverktyg - - - - Insert Tools - Inmatningsverktyg - - - - Bar - Takt - - - - Comment - Kommentar - - - - MusE: List Edit - - - - - Parts - Parter - - - - Controller - Controller - - - - MITTransposeBase - - - MusE: Midi Input Plugin: Transpose - MusE: Midi Inputplugin: Transponering - - - - On - PÃ¥ - - - - Transpose: - Transponering: - - - - MPConfig - - - none - inga - - - - other raw ... - annan raw ... - - - - MusE: Midi Port Table - MusE: Midiporttabell - - - - Device Name - Enhetsnamn - - - - State - Status - - - - unknown - okänd - - - - MRConfigBase - - - MusE: Midi Input Plugin: Remote Control - MusE: Midiinputplugin: Fjärrkontroll - - - - Activate - Aktivera - - - - On - PÃ¥ - - - - Actions - Kommandon - - - - Stop - Stopp - - - - Record - Inspelning - - - - Goto Left Mark - GÃ¥ till vänster markering - - - - Play - Spela - - - - MTScale - - - bar scale - takt skala - - - - MarkerView - - - MusE: Marker - MusE: Markör - - - - add marker - lägg till markör - - - - Add Marker - Lägg till Markör - - - - delete marker - ta bort markör - - - - Delete Marker - Ta bort Markör - - - - &File - &Arkiv - - - - &Edit - &Redigera - - - - Bar:Beat:Tick - Takt:Slag:Tick - - - - Lock - LÃ¥s - - - - Text - Text - - - - Marker Properties - Markörinställningar - - - - marker-tools - - - - - edit tools - - - - - Min:Sc:Fr:Sf - - - - - MasterEdit - - - MusE: Mastertrack - MusE: MasterspÃ¥r - - - - edit tools - redigeringsverktyg - - - - EnableMaster - Aktivera Master - - - - use master track - använd master track - - - - Cursor - Markör - - - - Off - Av - - - - Snap - Fäst vid - - - - time at cursor position - tid vid markörposition - - - - tempo at cursor position - tempo vid markörposition - - - - tempo at current position - tempo vid nuvarande position - - - - time signature at current position - time signature vid nuvarande position - - - - EnableTempomap - - - - - Tempomap - - - - - Enable use of tempo map - - - - - Info - - - - - CurPos - - - - - MetronomeConfigBase - - - MusE: Metronome Config - MusE: Metronomeconfiguration - - - - Metronome - Metronom - - - - Audio Beep - Audio - Ton - - - - Midi Channel - Midi kanal - - - - Measure Note - Takt Not - - - - Measure Velocity - Takt-anslag - - - - Beat Velocity - Slag-anslag - - - - Beat Note - Slag-not - - - - Precount - Inräkning - - - - enable - pÃ¥ - - - - Bars - Takter - - - - From Mastertrack - FrÃ¥n MasterspÃ¥r - - - - &Apply - &Verställ - - - - &OK - &Ok - - - - &Cancel - &Avbryt - - - - MidiChannelInfo - - - MidiController - - - Velocity - Hastighet - - - - MidiControllerEditDialog - - - MusE: save midi controller list - MusE: spara midi-controller lista - - - - MusE: load midi controller list - MusE:ladda midi-controller lista - - - - MidiControllerEditDialogBase - - - MusE: Define Midi Controller - MusE: Definiera Midi-controller - - - - replace controller set - ersätt controller-set - - - - merge controller set - slÃ¥ ihop controller-set - - - - save controller set as - spara controller-set - - - - Name - Namn - - - - Type - Typ - - - - Min Val - Min värde - - - - Max Val - Max värde - - - - list of defined controllers - lista med definierade controllers - - - - This is the MusE list of defined controllers. - Detta är MusEs lista med definierade controllers. - - - - Properties - Egenskaper - - - - Name - Namn - - - - Max Value - Max värde - - - - Min Value - Min värde - - - - Type - Typ - - - - &New - &Ny - - - - create new entry - skapa nytt inlägg - - - - pressing the New button you create a new entry -in the MusE list of defined controllers - tryck pÃ¥ Ny knappen för att skapa nytt inlägg -i MusEs lista med definierade controllers - - - - &Delete - &Ta bort - - - - delete selected entry - ta bort valt inlägg - - - - &OK - &Ok - - - - &Cancel - &Avbryt - - - - &Add - &Lägg till - - - - Alt+A - Alt+L - - - - Predefined Controller: - Fördefinierad Controller: - - - - Managed Controller for Port - Hanterad Controller för Port - - - - Channel - Kanal - - - - This is a list of commonly used midi controllers. -Note that in MusE pitch and program changes are -handled like normal controllers. - Detta är en lista över vanligt förekommande controllers. -Observera att i MusE hanteras pitch och program change som -vanliga controllers. - - - - Pitch - Tonhöjd - - - - Midi Controller Number High Byte - Midi Controllernummer Hög Byte - - - - Midi Controller Number Low Byte - Midi Controllernummer Hög Byte - - - - Range - OmrÃ¥de - - - - MidiEditor - - - &Edit - &Redigera - - - - Cut - Klipp ut - - - - Copy - Kopiera - - - - Paste - Klistra in - - - - Play Events - Spela Händelser - - - - Step Record - Stegvis inspelning - - - - Midi Input - - - - - Follow Song - - - - - MidiFileConfig - - - Config exported Midi Files - Inställningar exporterade midifiler - - - - MusE: Config exported Midi Files - MusE: Inställningar exporterade midifiler - - - - Enable extended smf format - SlÃ¥ pÃ¥ utbyggt smf-format - - - - MidiFilterConfigBase - - - MusE: Midi Input Filter - MusE: Midi Indatafilter - - - - Record Filter - Indata Filter - - - - Note On - Not PÃ¥ - - - - Controller - Controller - - - - &OK - &Ok - - - - &Cancel - &Avbryt - - - - MidiInPortStrip - - - AlsaDevices - - - - - MidiChannel - - - - - JackDevices - - - - - MidiInputTransformDialog - - - New - Ny - - - - MidiInputTransformDialogBase - - - MusE: Midi Input Transformator - MusE: Midi inputtransformator - - - - Filter - Filter - - - - All - Alla - - - - Equal - Lika - - - - Unequal - Ej lika - - - - Note - Not - - - - Value 2 - Värde 2 - - - - Value 1 - Värde 1 - - - - Event Type - Händelsetyp - - - - Ignore - Ignorera - - - - Higher - Högre - - - - Lower - Lägre - - - - Inside - Innanför - - - - Outside - Utanför - - - - Channel - Kanal - - - - Processing - Bearbetar - - - - Keep - BehÃ¥ll - - - - Multiply - Multiplicera - - - - Divide - Dividera - - - - Invert - Invertera - - - - Flip - Flippa - - - - Random - Slumpmässig - - - - Modules - Moduler - - - - enable modul 1 - aktivera modul 1 - - - - enable modul 2 - aktivera modul 2 - - - - enable modul 3 - aktivera modul 3 - - - - enable modul 4 - aktivera modul 4 - - - - Name: - Namn: - - - - Comment: - Kommentar: - - - - Function - Funktion - - - - &New - &Ny - - - - create new preset - skapa nytt preset - - - - &Delete - &Ta bort - - - - delete preset - ta bort preset - - - - &Dismiss - &Stäng - - - - PresetList - Presetlista - - - - MidiOutPortStrip - - - MidiChannel - - - - - AlsaDevices - - - - - JackDevices - - - - - MidiPluginDialog - - - MusE: select midi plugin - - - - - File - Arkiv - - - - Name - Namn - - - - Version - - - - - Description - - - - - Ok - Ok - - - - Cancel - Avbryt - - - - MidiPort - - - not configured - ej konfigurerad - - - - unknown - okänd - - - - MidiPortRouteBase - - - MusE: Midi Port Routing - MusE: Midi Port Routing - - - - MidiRack - - - midi effect rack - - - - - move up - - - - - move down - - - - - remove - - - - - bypass - - - - - show gui - - - - - new - ny - - - - MidiRawDeviceDialogBase - - - MusE: raw midi device configuration - MusE: raw midienhets-inställningar - - - - Name - Namn - - - - Type - Typ - - - - Virt. Ports - Virt. port - - - - Speed - Hastighet - - - - Handshaking - Handskakning - - - - Virt.Ports - Virt.port - - - - Serial Port - Serieport - - - - None - Ingen - - - - &New - &Ny - - - - &Delete - &Ta bort - - - - &OK - &Ok - - - - &Cancel - &Avbryt - - - - MidiStrip - - - off - av - - - - mute - tysta - - - - pre fader listening - pre fader lyssning - - - - Off - Av - - - - VariationSend - - - - - Var - - - - - ReverbSend - - - - - Rev - - - - - ChorusSend - - - - - Cho - - - - - Pan/Balance - - - - - Pan - - - - - Tracks - SpÃ¥r - - - - OutputPorts - - - - - MidiSyncConfigBase - - - MusE: Midi Sync - MusE: Midisync - - - - Master - Master - - - - Slave - Slav - - - - Sync Source - Sync-källa - - - - all - alla - - - - midi port - midiport - - - - Midi Clock - Midiklocka - - - - Apply - Verkställ - - - - Cancel - Avbryt - - - - Type: - Typ: - - - - Offset: - Offset: - - - - hour - timma - - - - minute - minut - - - - second - sekund - - - - Ok - Ok - - - - MidiSyntiStrip - - - OutputPorts - - - - - Channel - Kanal - - - - Input Ports - - - - - MidiTimeDelegate - - - off - av - - - - MidiTrackInfo - - - Channel %1 - - - - - Midi Port - - - - - MidiTrackInfoBase - - - MusE: TrackInfo - MusE: SpÃ¥rinfo - - - - output channel - utgÃ¥ngskanal - - - - all midi events are send to this output channel - alla midihändelser skickas till denna utkanal - - - - Track Info - SpÃ¥rinfo - - - - Track Name - SpÃ¥rnamn - - - - output port - utgÃ¥ngsport - - - - off - av - - - - change stereo position - byt stereoposition - - - - select instrument patch - välj instrumentpatch - - - - Volume - Volym - - - - Channel Info - Kanalinfo - - - - Velocity - Hastighet - - - - Length - Längd - - - - input ports - inputportar - - - - input channels - inputkanaler - - - - Events from all configured channels are -recorded to this track. -You can specify more than one channel for -recording: - 1 2 3 record from channel 1 2 and 3 - 1-3 same - 1-3 5 record from channel 1 2 3 and 5 - Händelser frÃ¥n alla konfigurerade kanaler -spelas in pÃ¥ detta spÃ¥r -Du kan specificera mer än en kanal för -inspelning: - 1 2 3 spela in pÃ¥ kanal 1 2 och 3 - 1-3 samma - 1-3 5 spela in pÃ¥ kanal 1 2 3 och 5 - - - - Output Port - UtgÃ¥ngsport - - - - MidiTrackerEditor - - - &View - - - - - MidiTracker Tools - - - - - Panic - Panik - - - - Transport - - - - - row features - - - - - Number of visible rows - - - - - Quantize - Kvantisera - - - - MidiTransformDialogBase - - - &New - &Ny - - - - &Delete - &Ta bort - - - - &Apply - &Verkställ - - - - &OK - &Ok - - - - &Cancel - &Avbryt - - - - Processing - Bearbetar - - - - Event Type - Händelsetyp - - - - Keep - BehÃ¥ll - - - - Note - Not - - - - Multiply - Multiplicera - - - - Value 2 - Värde 2 - - - - Invert - Invertera - - - - Random - Slumpmässig - - - - Value 1 - Värde 1 - - - - Length - Längd - - - - Filter - Filter - - - - All - Alla - - - - Equal - Lika - - - - Unequal - Ej lika - - - - Ignore - Ignorera - - - - Higher - Högre - - - - Lower - Lägre - - - - Inside - Innanför - - - - Outside - Utanför - - - - Bar Range - Takt OmrÃ¥de - - - - Name: - Namn: - - - - Comment: - Kommentar: - - - - Range - OmrÃ¥de - - - - process all events - bearbeta alla händelser - - - - selected tracks - valda spÃ¥r - - - - inside loop - I loop - - - - Select - Välj - - - - Quantize - Kvantisera - - - - Delete - Ta bort - - - - Transform - Transformera - - - - Insert - Sätt in - - - - Copy - Kopiera - - - - Quantize Value - Kvantisera värde - - - - PresetList - Presetlista - - - - Divide - Dividera - - - - Flip - Flippa - - - - Function - Funktion - - - - MidiTransformerDialog - - - New - Ny - - - - MixdownFileDialog - - - Wave Files (*.wav);;All Files (*) - Wavefiler (*.wav;;All FIles (*) - - - - MusE: set mixdown file name - - - - - MixdownFileDialogBase - - - MusE: Set Mixdown Wavefile - MusE: Välj mixdown-ljudfil - - - - &OK - &Ok - - - - &Cancel - &Avbryt - - - - File Path - Sökväg till fil - - - - Channel - Kanal - - - - Mixer - - - MusE: Midi Mixer - MusE: Midimixer - - - - Master - Master - - - - MusE: Mixer - - - - - &Create - &Skapa - - - - &View - - - - - Routing - - - - - Show Midi Tracks - - - - - Show Midi Out Ports - - - - - Show Midi In Ports - - - - - Show Wave Tracks - - - - - Show Output Tracks - - - - - Show Group Tracks - - - - - Show Input Tracks - - - - - Show Synthesizer - - - - - MusE - - - to import a audio file you have first to selecta audio track - för att importera en ljudfil mÃ¥ste du ha valt ett ljudspÃ¥r - - - - Import Wave File - Importera ljudfil - - - - UndoRedo - Ã…ngraGörom - - - - undo - Ã¥ngra - - - - Und&o - &Ã…ngra - - - - redo - gör om - - - - Re&do - &Gör om - - - - undo last change to song - Ã¥ngra sista ändring i sÃ¥ng - - - - redo last undo - gör om sista Ã¥ngring - - - - rewind - flytta tillbaka - - - - Rewind - Spola tillbaka - - - - forward - framÃ¥t - - - - Forward - FramÃ¥t - - - - stop - stopp - - - - Stop - Stopp - - - - play - spela - - - - Play - Spela - - - - record - spela in - - - - Record - Spela in - - - - panic - panik - - - - Panic - Panik - - - - new - ny - - - - &New - &Ny - - - - open - öppna - - - - &Open - &Öppna - - - - save - spara - - - - &Save - &Spara - - - - pianoroll - pianorulle - - - - Pianoroll - Pianorulle - - - - score - partitur - - - - Score - Partitur - - - - marker - markör - - - - Marker - Markör - - - - File Buttons - Arkivknappar - - - - &File - &Arkiv - - - - Open &Recent - &Nyligen öppnade - - - - Save &As - S&para som - - - - Config &Printer - &Konfigurera skrivare - - - - Import Midifile - Importera midifil - - - - Export Midifile - Exportera midifil - - - - &Quit - A&vsluta - - - - &Edit - &Redigera - - - - C&ut - Klipp &ut - - - - &Copy - &Kopiera - - - - &Paste - K&listra in - - - - Delete Track - Ta bort spÃ¥r - - - - Add Track - Lägg Till SpÃ¥r - - - - Select &All - Markera &Allt - - - - &Deselect All - A&vmarkera Allt - - - - Invert &Selection - Invertera &Markering - - - - &Inside Loop - &I Loop - - - - &Outside Loop - &Utanför Loop - - - - All &Parts on Track - Alla &Parter i spÃ¥r - - - - Select - Välj - - - - Drums - Trummor - - - - List - Lista - - - - Graphic - Grafik - - - - Mastertrack - MasterspÃ¥r - - - - Midi &Transform - Midi &Transform - - - - Modify Gate Time - Modifiera Gate Time - - - - Modify Velocity - Modifiera Velocity - - - - Transpose - Transponera - - - - Thin Out - Tunna ut - - - - Erase Event - Ta bort Händelse - - - - Note Shift - Shifta Not - - - - Move Clock - Flytta Klocka - - - - Copy Measure - Kopiera Takt - - - - Erase Measure - Radera Takt - - - - Delete Measure - Ta bort Takt - - - - Create Measure - Skapa Takt - - - - Mix Track - Mixa SpÃ¥r - - - - Midi - Midi - - - - &Structure - &Struktur - - - - Global Cut - Globalt klipp - - - - Global Insert - Global insättning - - - - Global Split - Global delning - - - - Copy Range - Kopiera OmrÃ¥de - - - - Cut Events - Klipp ut Händelse - - - - Bigtime window - Bigtime fönster - - - - dont follow Song - följ inte SÃ¥ng - - - - follow page - följ sida - - - - follow continuous - följ kontinuerligt - - - - &Config - &Inställningar - - - - Global Settings - Globala Inställningar - - - - follow song - följ sÃ¥ng - - - - Metronome - Metronom - - - - Midi Sync - Midi Synk - - - - Midi File Config - Midi Filkonfigurering - - - - Appearance settings - Utseende inställningar - - - - Soft Synthesizer - Mjukvarusynthar - - - - Midi Ports - Midiportar - - - - Audio System - Audiosubsystem - - - - Save Configuration - Spara Inställningar - - - - Midi Input Filter - Midi Indatafilter - - - - Midi Remote Control - Midi-fjärrkontroll - - - - Random Rhythm Generator - Slumprytmgenerator - - - - &Midi - &Midi - - - - Mixer - Mixer - - - - Define Controller - Definiera Controller - - - - Reset Instr. - Resetta Instr. - - - - Init Instr. - Initiera instr. - - - - local off - lokal av - - - - &Audio - Au&dio - - - - Bounce to Track - Bounce till SpÃ¥r - - - - Bounce to File - Bounce till Fil - - - - &Help - &Hjälp - - - - Browser - Läsare - - - - &About - &Om - - - - About&Qt - Om &Qt - - - - What's &This - Vad är &Detta - - - - Unknown File Format - Okänt filformat - - - - none - inget - - - - MusE: load project - MusE: Öppna projekt - - - - MusE: Write File failed - MusE: Misslyckades med att skriva Fil - - - - The current Project contains unsaved data -Save Current Project? - Det nuvarande Projektet innehÃ¥ller osparade ändringar -Spara nuvarande Projekt? - - - - &Nosave - Spara &inte - - - - &Abort - &Avbryt - - - - MusE: About - MusE: Om - - - - MusE: Save As - MusE: Spara Som - - - - MusE: Song: - MusE: SÃ¥ng: - - - - MusE: Import Midi - MusE: Importera Midi - - - - MusE: Export Midi - MusE: Exportera Midi - - - - reading midifile - - läser midifil - - - - -failed - misslyckades - - - - Nothing to edit - Inget att redigera - - - - MusE: Copy Range - MusE: Kopiera omrÃ¥de - - - - not implemented - ej implementerat - - - - MusE: Cut Events - MusE: Klipp ut Händelse - - - - MusE: Bounce to Track - MusE: Bounce till SpÃ¥r - - - - more than one target track selected - mer än ett spÃ¥r valt som mÃ¥l - - - - wrong target track type, -select wave track as target - fel spÃ¥rtyp som mÃ¥l -välj wave-spÃ¥r som mÃ¥l - - - - no target track selected - inget spÃ¥r valt som mÃ¥l - - - - The current Project contains unsaved data -Load overwrites current Project: -Save Current Project? - Det nuvarande Projektet innehÃ¥ller osparade ändringar -Öppning ersätter nuvarande Projekt -Spara nuvarande Projekt? - - - - &Overwrite - &Ersätt - - - - no help found at: - ingen h jälp hittad vid: - - - - MusE: Open Help - Muse: Arkiv hjälp - - - - Delete Selected Tracks - Ta Bort Valda SpÃ¥r - - - - View - Vy - - - - Edit Instrument - Editera Instrument - - - - Restart Audio - Starta om Audio - - - - Take Snapshot - Ta Ögonblicksbild - - - - Clear Automation Data - Rensa Automationsdata - - - - Settings - Inställningar - - - - Configure shortcuts - Konfigurera Tangentbordsgenvägar - - - - Midi File Export - Midi Fil Export - - - - Midi Ports / Soft Synth - Midiportar / Mjukvarusynthar - - - - &Manual - &Manual - - - - &MusE homepage - &MusE hemsida - - - - &Report Bug... - &Rapportera Bugg... - - - - &About MusE - &Om MusE - - - - What's &This? - Vad är de&t här? - - - - Cannot read template - Kan inte läsa mall - - - - File open error - Fel vid öppning av fil - - - - File read error - Fel vid läsning av fil - - - - MusE: load template - MusE: ladda mall - - - - MusE: Bounce - MusE: Mixa Ner - - - - set left/right marker for bounce range - sätt vänster/höger markör för nedmixningsomrÃ¥de - - - - MusE: Bounce to File - MusE: Mixa Ner till Fil - - - - no output track found - inget utmatningsspÃ¥r kunde hittas - - - - Add midi file to current project? - - Lägg till midifil i nuvarande projekt? - - - - - &Add to Project - &Lägg till i Projekt - - - - &Replace - E&rsätt - - - - -failed: - -misslyckades: - - - - Arranger - Arrangerare - - - - Cursor - Markör - - - - Off - Av - - - - Bar - Takt - - - - Snap - Fäst vid - - - - Pitch - Tonhöjd - - - - midi pitch - midi tonhöjd - - - - global midi pitch shift - global midi tonhöjdsförändring - - - - MusE: Create tmp file failed - MusE: Skapande av temporär fil misslyckades - - - - &View - &Vy - - - - Au&tomation - Au&tomation - - - - Setti&ngs - I&nställningar - - - - MusE manual not found at: - - - - - to import a audio file you have first to selecta wave track - - - - - Failed to start audio! - - - - - Was not able to start audio, check if jack is running. - - - - - - Project Buttons - - - - - Transport - - - - - &Project - - - - - Project Properties - - - - - Crescendo - - - - - Preferences - - - - - Len - - - - - Tempo - - - - - midi tempo - - - - - N - - - - - MusE: new project - - - - - Cannot create project folder <%1> - - - - - Cannot open template file -%1 - - - - - File <%1> read error - - - - - MusE: import midi file - - - - - rewind to start position - spola tillbaka till startposition - - - - Transport: Start playback from current location - Transport: Starta uppspelning frÃ¥n nuvarande position - - - - start sequencer play - starta sequenceruppspelning - - - - Transport: Stop Playback - Transport: Stoppa uppspelning - - - - Transport: Play, Stop, Rewind - Transport: Spela, stoppa, spola tillbaka - - - - Transport: Goto left marker - Transport: GÃ¥ till vänster markering - - - - Transport: Goto right marker - Transport: GÃ¥ till höger markering - - - - Transport: Toggle metronome - Transport: Metronom av/pÃ¥ - - - - Transport: Toggle Loop section - Transport: Loopa sektion av/pÃ¥ - - - - Transport: Toggle Record - Transport: Inspelning av/pÃ¥ - - - - Edit: Copy - Redigera: Kopiera - - - - Edit: Undo - Redigera: Ã…ngra - - - - Edit: Redo - Redigera: Gör om - - - - Edit: Cut - Redigera: Klipp ut - - - - Edit: Paste, - Redigera: Klistra in - - - - Edit: Delete - Redigera: Ta bort - - - - Open - Öppna - - - - Save - Spara - - - - File: Open recent file - Arkiv: Öppna föregÃ¥ende fil - - - - File: Import midi file - Arkiv: Importera midifil - - - - File: Export midi file - Arkiv: Exportera midifil - - - - File: Import audio file - Arkiv: Importera ljudfil - - - - File: Quit MusE - Arkiv: Avsluta - - - - Edit: Select parts on track - Arkiv: Välj alla parter i spÃ¥r - - - - Open pianoroll - Öppna pianorulle - - - - Open drumeditor - Öppna trumeditor - - - - Open listeditor - Öppna listeditor - - - - Open graphical mastertrack editor - Öppna masterspÃ¥r-editor (grafisk) - - - - Open list mastertrack editor - Öppna masterspÃ¥r-editor (lista) - - - - Add midi track - Lägg till midispÃ¥r - - - - Add drum track - Lägg till trumspÃ¥r - - - - Add wave track - Lägg till ljudspÃ¥r - - - - Add audio output - Lägg till ljudutgÃ¥ng - - - - Add audio group - Lägg till ljudgrupp - - - - Add audio input - Lägg till ljudingÃ¥ng - - - - Structure: Global cut - Struktur: Globalt klipp - - - - Structure: Global insert - Struktur: Global insättning - - - - Structure: Global split - Struktur: Global delning - - - - Structure: Copy range - Struktur: Kopiera omrÃ¥de - - - - Structure: Cut events - Struktur: Klipp ut händelse - - - - View: Open mixer window - Vy: Öppna mixerfönster - - - - View: Toggle transport window - Vy: Transportfönster av/pÃ¥ - - - - View: Toggle bigtime window - Vy: Bigtimefönster av/pÃ¥ - - - - View: Open marker window - Vy: Öppna markörfönster - - - - Settings: Follow song by page - Inställningar: Följ sÃ¥ng efter sida - - - - Settings: Follow song off - Inställningar: Följ sÃ¥ng av - - - - Settings: Follow song continuous - Inställningar: Följ sÃ¥ng kontinuerligt - - - - Settings: Configure shortcuts - Inställningar: Konfigurera tangentbordsgenvängar - - - - Settings: Configure metronome - Inställningar: Konfigurera metronom - - - - Settings: Midi sync configuration - Inställningar: Midi synk konfigurationg - - - - Settings: Midi file export configuration - Inställningar: Midi fil export-konfiguration - - - - Settings: Midi ports / Soft Synth - Inställningar: Midiportar / Mjukvarusynthar - - - - Settings: Audio subsystem configuration - Inställningar: Konfiguration av ljud-undersystem - - - - Midi: Edit midi instruments - Midi: Editera midi-instrument - - - - Midi: Midi remote control - Midi: Midi fjärrkontroll - - - - Midi: Reset midi - Midi: Resetta midi - - - - Midi: Init midi - Midi: Initiera midi - - - - Midi: Midi local off - Midi: Midi lokal av - - - - Audio: Bounce audio to track - Audio: Bounce till spÃ¥r - - - - Audio: Bounce audio to file - Audio: Bounce till fil - - - - Audio: Restart audio - Audio: Starta om audio - - - - Help: Open Manual - Hjälp: Öppna manual - - - - Help: Toggle whatsthis mode - Hjälp: What's this-läge av/pÃ¥ - - - - Edit: Edit selected part - Redigera: Editera vald part - - - - Edit: Select nearest part on track above - Redigera: Välj närmsta part pÃ¥ ovanstÃ¥ende spÃ¥r - - - - Edit: Add nearest part on track above - Redigera: Lägg till närmsta part pÃ¥ ovanstÃ¥ende spÃ¥r till val - - - - Edit: Select nearest part on track below - Redigera: Välj närmsta part pÃ¥ underliggande spÃ¥r - - - - Edit: Add nearest part on track below - Redigera: Lägg till närmsta part pÃ¥ underliggande spÃ¥r till val - - - - Midi: Transpose - Midi: Transponering - - - - Edit: Select all - Redigera: Välj alla - - - - Edit: Select none - Redigera: Välj ingen - - - - Edit: Invert selection - Redigera: Invertera val - - - - Edit: Select events/parts inside locators - Redigera: Välj händelser/parter inom sektion - - - - Edit: Select events/parts outside locators - Redigera: Välj händelser/parter utanför sektion - - - - Edit: Select nearest part/event to the left - Redigera: Välj närmsta part/händelse till vänster - - - - Edit: Add nearest part/event to the left to selection - Redigera: Lägg till närmsta part/händelse till vänster till val - - - - Edit: Add nearest part/event to the right to selection - Redigera: Lägg till närmsta part/händelse till höger till val - - - - Edit: Set locators to selection - Redigera: Sätt loopsektion till valda parter/händelser - - - - Edit: Increase pitch - Redigera: Höj pitch - - - - Edit: Decrease pitch - Redigera: Sänk pitch - - - - Edit: Set fixed length on midi events - Redigera: Sätt fix längd till valda midihändelser - - - - Quantize: Over Quantize - Redigera: Överkvantisera - - - - Quantize: Note On Quantize - Kvantisering: Not pÃ¥-kvantisering - - - - Quantize: Note On/Off Quantize - Kvantisering: Not pÃ¥/av-kvantisering - - - - Quantize: Iterative Quantize - Kvantisering: Iterativ kvantisering - - - - Quantize: Configure quant - Kvantisering: Konfigurera kvantisering - - - - Quantize: Modify Gate Time - Kvantisering: Modifiera gate-tid - - - - Quantize: Modify Velocity - Kvantisering: Modifiera velocity - - - - Edit: Crescendo - Redigera: Crescendo - - - - Edit: Thin Out - Redigera: Tunna ut - - - - Edit: Erase Event - Redigera: Ta bort händelse - - - - Edit: Note Shift - Redigera: Shifta Not - - - - Edit: Move Clock - Redigera: Flytta Klocka - - - - Edit: Copy Measure - Redigera: Kopiera Takt - - - - Edit: Erase Measure - Redigera: Ta bort Takt - - - - Edit: Delete Measure - Redigera: Ta bort Takt - - - - Edit: Create Measure - Redigera: Lägg till Takt - - - - Edit: Change event color - Redigera: Ändra färg pÃ¥ händelse - - - - Tool: Pointer - Verktyg: Pekare - - - - Tool: Pencil - Verktyg: Penna - - - - Tool: Eraser - Verktyg: Radergummi - - - - Tool: Line Draw - Verktyg: Rita linje - - - - Tool: Scissor - Verktyg: Delare - - - - Tool: Glue - Verktyg: Lim - - - - Tool: Mute - Verktyg: Tysta - - - - Transport: Increase current position - Transport: Öka nuvarande position - - - - Transport: Decrease current position - Transport: Minska nuvarande position - - - - Quantize: Set quantize to 1/1 note - Kvantisering: Sätt kvantisering till 1/1-not - - - - Quantize: Set quantize to 1/2 note - Kvantisering: Sätt kvantisering till 1/2-not - - - - Quantize: Set quantize to 1/4 note - Kvantisering: Sätt kvantisering till 1/4-not - - - - Quantize: Set quantize to 1/8 note - Kvantisering: Sätt kvantisering till 1/8-not - - - - Quantize: Set quantize to 1/16 note - Kvantisering: Sätt kvantisering till 1/16-not - - - - Quantize: Set quantize to 1/32 note - Kvantisering: Sätt kvantisering till 1/32-not - - - - Quantize: Set quantize to 1/64 note - Kvantisering: Sätt kvantisering till 1/64-not - - - - Quantize: Toggle triol quantization - Kvantisering: Växla triol-kvantisering - - - - Quantize: Toggle punctuation quantization - Kvantisering: Växla punktuerad kvantisering - - - - Quantize: Toggle punctuation quantization (2) - Kvantisering: Växla punktuerad kvantisering (2) - - - - Insert Tempo - Mata in Tempo - - - - Insert Signature - Mata in tempo-signatur - - - - Change Event Position - Ändra position för händelse - - - - Edit Event Value - Redigera värde för händelse - - - - MuseApplication - - - Transport: Goto Start - - - - - Goto Start - - - - - rewind to start position - spola tillbaka till startposition - - - - Transport: Toggle Loop section - Transport: Loopa sektion av/pÃ¥ - - - - Loop - - - - - loop between left mark and right mark - loopa mellan vänster och höger markering - - - - Transport: Start playback from current location - Transport: Starta uppspelning frÃ¥n nuvarande position - - - - Play - Spela - - - - start sequencer play - starta sequenceruppspelning - - - - Transport: Play, Stop, Rewind - Transport: Spela, stoppa, spola tillbaka - - - - Transport: Stop Playback - Transport: Stoppa uppspelning - - - - Stop - Stopp - - - - stop sequencer - stoppa sequencer - - - - Transport: Goto left marker - Transport: GÃ¥ till vänster markering - - - - Transport: Goto right marker - Transport: GÃ¥ till höger markering - - - - Transport: Toggle metronome - Transport: Metronom av/pÃ¥ - - - - Transport: Toggle Record - Transport: Inspelning av/pÃ¥ - - - - Record - - - - - to record press record and then play - för att spela in, tryck pÃ¥ record och sen play - - - - Transport: Punch In - - - - - Punchin - - - - - record starts at left mark - inspelning börjar vid vänster markering - - - - Transport: Punch Out - - - - - Punchout - - - - - record stops at right mark - inspelning slutar vid höger markering - - - - Transport: Rewind - - - - - rewind - flytta tillbaka - - - - rewind current position - flytta markörposition bakÃ¥t - - - - Transport: Forward - - - - - forward - - - - - move current position - flytta markörposition - - - - Panic - Panik - - - - send note off to all midi channels - skicka note off till alla midi kanaler - - - - Edit: Undo - Redigera: Ã…ngra - - - - undo - Ã¥ngra - - - - undo last change to song - Ã¥ngra sista ändring i sÃ¥ng - - - - Edit: Redo - Redigera: Gör om - - - - redo - gör om - - - - redo last undo - gör om sista Ã¥ngring - - - - Edit: Cut - Redigera: Klipp ut - - - - Cut - Klipp ut - - - - Edit: Copy - Redigera: Kopiera - - - - Copy - Kopiera - - - - Edit: Paste, - Redigera: Klistra in - - - - Paste - Klistra in - - - - Edit: Delete - Redigera: Ta bort - - - - Delete - Ta bort - - - - Open - Öppna - - - - open project - - - - - Click this button to select a new project -You can also select the <b>Open command</b> from the Project menu. - - - - - Save - Spara - - - - save project - - - - - Click this button to save the project you are editing. -You can also select the Save command from the Project menu. - - - - - File: Save as - Arkiv: Spara som - - - - save project as... - - - - - Click this button to save a new copy of the project. - - - - - - File: Save as Template - - - - - save project as template - - - - - Click this button to save the project you are editing -for later use as a template. - - - - - File: Open recent file - Arkiv: Öppna föregÃ¥ende fil - - - - File: Import midi file - Arkiv: Importera midifil - - - - File: Export midi file - Arkiv: Exportera midifil - - - - File: Import audio file - Arkiv: Importera ljudfil - - - - File: Quit MusE - Arkiv: Avsluta - - - - Quit MusE - - - - - Edit: Select parts on track - Arkiv: Välj alla parter i spÃ¥r - - - - All &Parts on Track - Alla &Parter i spÃ¥r - - - - Open Pianoroll - - - - - Pianoroll - Pianorulle - - - - Start Pianoroll Editor - - - - - Open MidiTracker - - - - - MidiTracker - - - - - Start Midi Tracker - - - - - Open drumeditor - Öppna trumeditor - - - - Drum Editor - - - - - Start Drum Editor - - - - - Open wave editor - - - - - Wave Editor - - - - - Open listeditor - Öppna listeditor - - - - Properties - Egenskaper - - - - open Properties Editor - - - - - Open mastertrack editor - - - - - Mastertrack (Tempo) Editor - - - - - Start Mastertrack (Tempo) Editor - - - - - Add midi track - Lägg till midispÃ¥r - - - - Add drum track - Lägg till trumspÃ¥r - - - - Add wave track - Lägg till ljudspÃ¥r - - - - Add audio output - Lägg till ljudutgÃ¥ng - - - - Add audio group - Lägg till ljudgrupp - - - - Add audio input - Lägg till ljudingÃ¥ng - - - - Structure: Global cut - Struktur: Globalt klipp - - - - Structure: Global insert - Struktur: Global insättning - - - - Structure: Global split - Struktur: Global delning - - - - Structure: Copy range - Struktur: Kopiera omrÃ¥de - - - - Structure: Cut events - Struktur: Klipp ut händelse - - - - View: Open mixer 1 window - - - - - Mixer1 - - - - - Show Mixer 1 - - - - - View: Open mixer 2 window - - - - - Mixer2 - - - - - Show Mixer 2 - - - - - View: Toggle transport window - Vy: Transportfönster av/pÃ¥ - - - - Transport - - - - - Show Transport Window - - - - - View: Toggle bigtime window - Vy: Bigtimefönster av/pÃ¥ - - - - BigTime - - - - - Show BigTime Window - - - - - View: Open marker window - Vy: Öppna markörfönster - - - - Marker - Markör - - - - Show Marker List - - - - - Settings: Follow song by page - Inställningar: Följ sÃ¥ng efter sida - - - - Settings: Follow song off - Inställningar: Följ sÃ¥ng av - - - - Settings: Follow song continuous - Inställningar: Följ sÃ¥ng kontinuerligt - - - - Settings: Configure shortcuts - Inställningar: Konfigurera tangentbordsgenvängar - - - - Settings: Configure metronome - Inställningar: Konfigurera metronom - - - - Settings: Midi sync configuration - Inställningar: Midi synk konfigurationg - - - - Settings: Midi file export configuration - Inställningar: Midi fil export-konfiguration - - - - Settings: Midi ports / Soft Synth - Inställningar: Midiportar / Mjukvarusynthar - - - - Settings: Audio subsystem configuration - Inställningar: Konfiguration av ljud-undersystem - - - - Midi: Edit midi instruments - Midi: Editera midi-instrument - - - - Midi: Midi remote control - Midi: Midi fjärrkontroll - - - - Midi: Reset midi - Midi: Resetta midi - - - - Midi: Init midi - Midi: Initiera midi - - - - Midi: Midi local off - Midi: Midi lokal av - - - - Audio: Bounce audio to track - Audio: Bounce till spÃ¥r - - - - Audio: Bounce audio to file - Audio: Bounce till fil - - - - Audio: Restart audio - Audio: Starta om audio - - - - Help: Open Manual - Hjälp: Öppna manual - - - - Help: Toggle whatsthis mode - Hjälp: What's this-läge av/pÃ¥ - - - - Edit: Edit selected part - Redigera: Editera vald part - - - - Edit: Select nearest part on track above - Redigera: Välj närmsta part pÃ¥ ovanstÃ¥ende spÃ¥r - - - - Edit: Add nearest part on track above - Redigera: Lägg till närmsta part pÃ¥ ovanstÃ¥ende spÃ¥r till val - - - - Edit: Select nearest part on track below - Redigera: Välj närmsta part pÃ¥ underliggande spÃ¥r - - - - Edit: Add nearest part on track below - Redigera: Lägg till närmsta part pÃ¥ underliggande spÃ¥r till val - - - - Midi: Transpose - Midi: Transponering - - - - Transpose - Transponera - - - - Edit: Select all - Redigera: Välj alla - - - - Select All - Välj Allt - - - - Edit: Select none - Redigera: Välj ingen - - - - Deselect All - - - - - Edit: Invert selection - Redigera: Invertera val - - - - Invert Selection - - - - - Edit: Select events/parts inside locators - Redigera: Välj händelser/parter inom sektion - - - - Select Inside Loop - - - - - Edit: Select events/parts outside locators - Redigera: Välj händelser/parter utanför sektion - - - - Select Outside Loop - - - - - Edit: Select nearest part/event to the left - Redigera: Välj närmsta part/händelse till vänster - - - - Edit: Add nearest part/event to the left to selection - Redigera: Lägg till närmsta part/händelse till vänster till val - - - - Edit: Add nearest part/event to the right to selection - Redigera: Lägg till närmsta part/händelse till höger till val - - - - Edit: Set locators to selection - Redigera: Sätt loopsektion till valda parter/händelser - - - - Edit: Increase pitch - Redigera: Höj pitch - - - - Edit: Decrease pitch - Redigera: Sänk pitch - - - - Edit: Set fixed length on midi events - Redigera: Sätt fix längd till valda midihändelser - - - - Set fixed length - - - - - Quantize: Over Quantize - Redigera: Överkvantisera - - - - Over Quantize - Över Kvantisera - - - - Quantize: Note On Quantize - Kvantisering: Not pÃ¥-kvantisering - - - - Note On Quantize - Note On-kvantisera - - - - Quantize: Note On/Off Quantize - Kvantisering: Not pÃ¥/av-kvantisering - - - - Note On/Off Quantize - Note On/Off Kvantisera - - - - Quantize: Iterative Quantize - Kvantisering: Iterativ kvantisering - - - - Iterative Quantize - Iterativ kvantisering - - - - Quantize: Configure quant - Kvantisering: Konfigurera kvantisering - - - - Quantize: Modify Gate Time - Kvantisering: Modifiera gate-tid - - - - Modify Gate Time - Modifiera Gate Time - - - - Quantize: Modify Velocity - Kvantisering: Modifiera velocity - - - - Modify Velocity - Modifiera Velocity - - - - Edit: Crescendo - Redigera: Crescendo - - - - Crescendo - - - - - Edit: Thin Out - Redigera: Tunna ut - - - - Thin Out - Tunna ut - - - - Edit: Erase Event - Redigera: Ta bort händelse - - - - Erase Event - Ta bort Händelse - - - - Edit: Note Shift - Redigera: Shifta Not - - - - Note Shift - Shifta Not - - - - Edit: Move Clock - Redigera: Flytta Klocka - - - - Move Clock - Flytta Klocka - - - - Edit: Copy Measure - Redigera: Kopiera Takt - - - - Copy Measure - Kopiera Takt - - - - Edit: Erase Measure - Redigera: Ta bort Takt - - - - Erase Measure - Radera Takt - - - - Edit: Delete Measure - Redigera: Ta bort Takt - - - - Delete Measure - Ta bort Takt - - - - Edit: Create Measure - Redigera: Lägg till Takt - - - - Create Measure - Skapa Takt - - - - Edit: Change event color - Redigera: Ändra färg pÃ¥ händelse - - - - Tool: Pointer - Verktyg: Pekare - - - - Pointer - - - - - select Pointer Tool: -with the pointer tool you can: - select parts - move parts - copy parts - välj pek-verktyg: -med pekverktyget kan du: - välja parter - flytta parter - kopiera parter - - - - Tool: Pencil - Verktyg: Penna - - - - Pencil - - - - - select Pencil Tool: -with the pencil tool you can: - create new parts - modify length of parts - välj pennverktyg: -med pennverktyget kan du: - skapa parter - ändra längden pÃ¥ parter - - - - - Tool: Eraser - Verktyg: Radergummi - - - - Eraser - - - - - select Delete Tool: -with the delete tool you can delete parts - välj Suddverktyg: -med suddverktyget kan du ta bort parter - - - - Tool: Scissor - Verktyg: Delare - - - - Scissor - - - - - select Cut Tool: -with the cut tool you can split a part - välj Delningsverktyg: -med delningsverktyget kan du dela pÃ¥ parter - - - - Tool: Glue - Verktyg: Lim - - - - Glue - - - - - select Glue Tool: -with the glue tool you can glue two parts - välj Limverktyg: -med limverktyget kan du limma ihop tvÃ¥ parter - - - - Declone - - - - - Tool: Quantize - - - - - Quantize - Kvantisera - - - - select Quantize Tool: -insert display quantize event - välj Kvantiseringsverktyg: -sätt in kvantiseringshändelser - - - - Tool: Line Draw - Verktyg: Rita linje - - - - Draw - - - - - select Drawing Tool - välj Ritverktyg - - - - - Tool: Mute Parts - - - - - Mute - - - - - select Muting Tool: -click on part to mute/unmute - välj Tystningsverktyg: -klicka pÃ¥ en part för att Tysta/Avtysta - - - - Transport: Increase current position - Transport: Öka nuvarande position - - - - Transport: Decrease current position - Transport: Minska nuvarande position - - - - Quantize: Set quantize to 1/1 note - Kvantisering: Sätt kvantisering till 1/1-not - - - - Quantize: Set quantize to 1/2 note - Kvantisering: Sätt kvantisering till 1/2-not - - - - Quantize: Set quantize to 1/4 note - Kvantisering: Sätt kvantisering till 1/4-not - - - - Quantize: Set quantize to 1/8 note - Kvantisering: Sätt kvantisering till 1/8-not - - - - Quantize: Set quantize to 1/16 note - Kvantisering: Sätt kvantisering till 1/16-not - - - - Quantize: Set quantize to 1/32 note - Kvantisering: Sätt kvantisering till 1/32-not - - - - Quantize: Set quantize to 1/64 note - Kvantisering: Sätt kvantisering till 1/64-not - - - - Quantize: Toggle triol quantization - Kvantisering: Växla triol-kvantisering - - - - Quantize: Toggle punctuation quantization - Kvantisering: Växla punktuerad kvantisering - - - - Quantize: Toggle punctuation quantization (2) - Kvantisering: Växla punktuerad kvantisering (2) - - - - Insert - Sätt in - - - - Insert Tempo - Mata in Tempo - - - - Insert Signature - Mata in tempo-signatur - - - - Change Event Position - Ändra position för händelse - - - - Edit Event Value - Redigera värde för händelse - - - - NoteInfo - - - Note Info - Notinfo - - - - Pitch - Tonhöjd - - - - Start - - - - - Len - - - - - Velo On - - - - - Velo Off - - - - - OrganGuiBase - - - Presets - Preset - - - - load preset list - öppna presetlista - - - - save preset list - spara presetlista - - - - Velocity - Hastighet - - - - OutportCombo - - - Midi Output Port - - - - - PageSettings - - - Paper Size - Pappersstorlek - - - - user - användare - - - - Margins - Marginal - - - - left Margin - vänster Marginal - - - - top Margin - övre Marginal - - - - right Margin - höger Marginal - - - - bottom Margin - undre Marginal - - - - Header - Överskrift - - - - Title - Titel - - - - Author - Författare - - - - Fonts - Typsnitt - - - - Page No. - Sidnummer. - - - - Measure No - Taktnummer - - - - Track Name - SpÃ¥rnamn - - - - Lyrics - Text - - - - Layout - Utseende - - - - Bars across the Page - Takter över sidan - - - - Scale - Skala - - - - Flags - Flaggor - - - - show page no. - visa sida nr. - - - - show measure no. - visa takt nr. - - - - show track name - visa spÃ¥rnamn - - - - Apply - Verkställ - - - - Cancel - Avbryt - - - - PartCanvas - - - Cannot copy/move/clone to different Track-Type - Kan inte kopiera/flytta/klona till annan SpÃ¥rtyp - - - - C&ut - Klipp &ut - - - - &Copy - &Kopiera - - - - rename - byt namn - - - - color - färg - - - - delete - ta bort - - - - split - dela - - - - glue - lim - - - - de-clone - häv kloning - - - - pianoroll - pianorulle - - - - score - partitur - - - - list - lista - - - - drums - trummor - - - - wave edit - wave redigering - - - - Cannot paste: multiple tracks selected - Kan inte klistra in: flera spÃ¥r valda - - - - Cannot paste: no track selected - Kan inte klistra in: inget spÃ¥r valt - - - - Cannot paste midi parts to wave track - Kan inte klistra in midipart till wavespÃ¥r - - - - Cannot paste wave parts to midi track - Kan inte klistra in wavepart pÃ¥ midispÃ¥r - - - - Cannot paste: wrong data type - Kan inte klistra in: fel datatyp - - - - AutoFill... - - - - - miditracker - - - - - MusE: Get auto fill loop len - - - - - Measures: - - - - - MusE: Change Part Name - - - - - PartName: - - - - - Rename - - - - - Color - - - - - PianoRoll - - - &Edit - &Redigera - - - - Cut - Klipp ut - - - - Copy - Kopiera - - - - Paste - Klistra in - - - - Delete Events - Ta bort Händelser - - - - Select All - Välj Allt - - - - Select None - Välj Ingen - - - - Invert - Invertera - - - - Inside Loop - I loop - - - - Outside Loop - Utanför loop - - - - &Select - &Välj - - - - blue - blÃ¥ - - - - pitch colors - pitchfärger - - - - velocity colors - velocityfärger - - - - &Config - &Inställningar - - - - event color - händelsefärg - - - - &Functions - &Funktioner - - - - Over Quantize - Över Kvantisera - - - - Note On Quantize - Note On-kvantisera - - - - Note On/Off Quantize - Note On/Off Kvantisera - - - - Iterative Quantize - Iterativ kvantisering - - - - Config Quant... - Konfigurera Kvant... - - - - Modify Gate Time - Modifiera Gate Time - - - - Modify Velocity - Modifiera Velocity - - - - Transpose - Transponera - - - - Thin Out - Tunna ut - - - - Erase Event - Ta bort Händelse - - - - Note Shift - Shifta Not - - - - Move Clock - Flytta Klocka - - - - Copy Measure - Kopiera Takt - - - - Erase Measure - Radera Takt - - - - Delete Measure - Ta bort Takt - - - - Create Measure - Skapa Takt - - - - Pianoroll Tools - Verktyg Pianorulle - - - - Step Record - Stegvis inspelning - - - - Play Events - Spela Händelser - - - - Add Controller View - Lägg till Controller Vy - - - - Panic - Panik - - - - Transport - - - - - PluginDialog - - - MusE: select plugin - MusE: välj plugin - - - - Label - Etikett - - - - Name - Namn - - - - Maker - Upphovsman - - - - Ok - Ok - - - - Cancel - Avbryt - - - - Select which types of plugins should be visible in the list,<br>beware that 'all' includes plugins that probably are not usable by MusE. - Välj vilka typer av plugins som ska vara synliga i lista,<br>Observera att 'alla' inkluderar plugins som möljigtvis inte är användbara i MusE. - - - - Stereo and Mono - Stereo och Mono - - - - All - Alla - - - - Lib - - - - - AI - - - - - AO - - - - - CI - - - - - CO - - - - - IP - - - - - id - - - - - Copyright - - - - - Mono and Stereo - - - - - Stereo - - - - - Mono - - - - - Show All - - - - - Select which types of plugins should be visible in the list.<br>Note that using mono plugins on stereo tracks is not a problem, two will be used in parallell.<br>Also beware that the 'all' alternative includes plugins that probably not are usable by MusE. - - - - - Search in 'Label' and 'Name': - - - - - PluginGui - - - File Buttons - Arkiv Knappar - - - - Load Preset - Öppna Preset - - - - Save Preset - Spara Preset - - - - bypass plugin - koppla ur plugin - - - - MusE: load preset - MusE: öppna preset - - - - MusE: save preset - MusE: spara preset - - - - PreferencesDialog - - - MusE: load image - MusE: ladda bild - - - - PrinterConfig - - - MusE: Config Printer - MusE: Konfigurera Skrivare - - - - Print to file - Skriv till fil - - - - Print Command - Utskriftskommando - - - - Preview Command - Förhandsgranskningskommando - - - - Cancel - Avbryt - - - - ProjectDialog - - - MusE: create new folder - - - - - new folder: - - - - - QHeader - - - Port Number - Portnummer - - - - enable gui for device - visa gui för enhet - - - - enables recording from the device - slÃ¥ pÃ¥ inspelning frÃ¥n enhet - - - - Name of the midi device associated with this port number - Namn pÃ¥ midienhet associerad med detta portnummer - - - - Instrument connected to port - Instrument kopplat till denna port - - - - State: result of opening the device - Status: resultat av öppning av enhet - - - - mute instrument - tysta instrument - - - - sound name - ljudnamn - - - - quantisation -currently not used - kvantisering -används inte för tillfället - - - - this input note triggers the sound - denna in-not triggar ljudet - - - - note length - notlängd - - - - this note is send for the sound - denna not skickas för ljudet - - - - output channel -currently not used - utgÃ¥ngskanal -används inte för tillfället - - - - output port -currently not used - utgÃ¥ngsport -används inte för tillfället - - - - velocity level 1 - velocity nivÃ¥ 1 - - - - velocity level 2 - velocity nivÃ¥ 2 - - - - velocity level 3 - velocity nivÃ¥ 3 - - - - velocity level 4 - velocity nivÃ¥ 4 - - - - quantisation - kvantisering - - - - output channel - utgÃ¥ngskanal - - - - output port - utgÃ¥ngsport - - - - Enable Recording - SlÃ¥ pÃ¥ Inspelning - - - - Track Activity - SpÃ¥raktivitet - - - - Mute Indicator - Tyst-Indikator - - - - Solo Indicator - Solo-Indikator - - - - Track Type - SpÃ¥rtyp - - - - Track Name - SpÃ¥rnamn - - - - Output Channel Number - Kanalnummer för utgÃ¥ng - - - - Output Port - UtgÃ¥ngsport - - - - Time Lock - TidlÃ¥s - - - - Solo/Pre Fader Listening - Solo/För-reglage lyssning - - - - enables reading from device - möjliggör läsning frÃ¥n enhet - - - - enables writing to device - möjliggör skrivning till enhet - - - - QMenu - - - Add Midi Generator... - - - - - Add Soft Synth... - - - - - QPopupMenu - - - Add Soft Synth - Lägg till Mjukvarusynth - - - - QWidget - - - Velocity - Hastighet - - - - Cannot convert sysex string - Kan inte konvertera sysex-sträng - - - - Hex String too long (2048 bytes limit) - Hex-sträng för lÃ¥ng (2048 bytes maxgräns) - - - - generic midi - generell midi - - - - new - ny - - - - create peakfile for - skapa "peak"-fil - - - - Cannot transform non empty track - Kan inte transformera ej tomt spÃ¥r - - - - MusE: get file name - MusE: hämta filnamn - - - - the directory - - katalogen - - - - -does not exist -create? - -finns inte -skapa? - - - - &Create - &Skapa - - - - Cancel - Avbryt - - - - MusE: create directory - MusE: skapa katalog - - - - creating dir failed - misslyckades med att skapa katalog - - - - File - - Filen - - - - - -exists - -existerar - - - - MusE: write - MusE: skriv - - - - Overwrite - Ersätt - - - - Quit - Avsluta - - - - Open File - - Öppna fil - - - - -failed: - -misslyckades: - - - - MusE: Open File - MusE: Öppna fil - - - - None - Ingen - - - - Master - Master - - - - Group %c - Grupp %c - - - - Unknown - Okänd - - - - Group - Grupp - - - - File - Filen - - - - exists - existerar - - - - copy - %1 -to - %2 - - - - - -converting sample rate -from %1 to %2 - - - - - Abort - - - - - MusE: export midi file: - - - - - QuantConfig - - - MusE: Config Quantize - MusE: Konfigurera Kvantisering - - - - Config Quantize - Konfigurera Kvantisering - - - - Strength - Styrka - - - - Don´t Quantize - Kvantisera Inte - - - - Quant Len - Kvant Längd - - - - QuantDialog - - - Display Quantize - Visa Kvantisering - - - - Note Quantize - Not Kvantisering - - - - Rest Quantize - Rest Kvantisering - - - - Cancel - Avbryt - - - - RecordButton - - - record - - - - - RhythmBase - - - MusE: Random Rhythm Generator - MusE: Slumprytmgenerator - - - - Instrument Properties - Instrumentinställningar - - - - counts/bar - slag/takt - - - - steps/count - steg/slag - - - - # bars - # takter - - - - randomize - slumpa - - - - Group 1 - Grupp 1 - - - - Group 2 - Grupp 2 - - - - Group 3 - Grupp 3 - - - - Group 4 - Grupp 4 - - - - Group 5 - Grupp 5 - - - - listen - lyssna - - - - Instrument - Instrument - - - - Group - Grupp - - - - &New - &Ny - - - - create new entry - skapa nytt inlägg - - - - pressing the New button you create a new entry -in the MusE list of defined controllers - skapa nytt inlägg genom att trycka pÃ¥ Ny knappen -i MusEs lista över definierade controllers - - - - &Delete - &Ta bort - - - - delete selected entry - ta bort valt inlägg - - - - Up - Upp - - - - Down - Ner - - - - steps/count - steg/slag - - - - list of defined controllers - lista med definierade controllers - - - - This is the MusE list of defined controllers. - Detta är MusEs lista med definierade controllers. - - - - &File - A&rkiv - - - - &Edit - &Redigera - - - - &Help - &Hjälp - - - - Tools - Verktyg - - - - New - Ny - - - - Open - Öppna - - - - &Open... - &Öppna... - - - - Save - Spara - - - - &Save - &Spara - - - - Save As - Spara som - - - - Save &As... - S&para som... - - - - Print - Skriv ut - - - - &Print... - Skriv &ut... - - - - Exit - Stäng - - - - E&xit - S&täng - - - - Undo - Ã…ngra - - - - &Undo - &Ã…ngra - - - - Redo - Gör om - - - - &Redo - Gör &om - - - - Cut - Klipp ut - - - - &Cut - Klipp &ut - - - - Copy - Kopiera - - - - C&opy - &Öppna - - - - Paste - Klistra in - - - - &Paste - K&listra in - - - - Find - Sök - - - - &Find... - &Sök... - - - - Contents - InnehÃ¥ll - - - - &Contents... - &InnehÃ¥ll... - - - - &Index... - &Index... - - - - About - Om - - - - &About... - &Om... - - - - <b>Notice!</b><br> -Random Rhythm Generator is not enabled yet! - <b>Observera!</b><br> -Slumprytms-generator fungerar inte än! - - - - RhythmGenerator - - - Instrument Settings: - Instrumentinställningar: - - - - Instrument - Instrument - - - - add - lägg till - - - - delete - ta bort - - - - count/bar - slag/takt - - - - # bars - # takt - - - - Group Settings: - Gruppinställningar: - - - - Group - Grupp - - - - Group 1 - Grupp 1 - - - - Group 2 - Grupp 2 - - - - Group 3 - Grupp 3 - - - - Group 4 - Grupp 4 - - - - Group 5 - Grupp 5 - - - - listen - lyssna - - - - Randomize - Slumpa - - - - Rhythm Style: - Rytmstil: - - - - Clear - Rensa - - - - Open... - Öppna... - - - - Save - Spara - - - - Save as... - Spara som... - - - - Generate - Generera - - - - Close - Stäng - - - - RouteDialogBase - - - Add Route - Lägg till rutt - - - - Source: - Källa: - - - - Destination: - Destination: - - - - Connect - Koppla - - - - connect source to destination - koppla källa till destination - - - - Current Routes - Nuvarande rutter - - - - Source - Källa - - - - Remove - Ta bort - - - - remove selected route - ta bort vald rutt - - - - SS_PluginChooserBase - - - Name - Namn - - - - Label - Etikett - - - - &Cancel - &Avbryt - - - - SS_PluginFront - - - Clear and unload effect - - - - - Load effect - - - - - Toggle display of effect parameters - - - - - Turn effect on/off - - - - - Score - - - Dynamics - Dynamik - - - - &Config - &Inställningar - - - - Page Settings - Sidinställningar - - - - Staff Settings - Notsystem inställningar - - - - Background Pixmap - Bakgrundsbild - - - - Palettes - Palett - - - - Print - Skriv ut - - - - Preview Print - Förhandsgranska utskrift - - - - Lyrics - Text - - - - enter lyrics - skriv in text - - - - Text - Text - - - - enter text - skriv in Text - - - - enter chord symbol - skriv in ackordsymbol - - - - Score - Partitur - - - - to previous voice - till föregÃ¥ende röst - - - - to next voice - till nästa röst - - - - flip stem direction - ändra stämriktning - - - - move marked notes to previous voice or to upper stave in a split system - flytta de markerade noterna till föregÃ¥ende röst eller till övre notsystem i ett delat notssystem - - - - move marked notes to next voice or to lower stave in a split system - flytta de markerade noterna till nästa röst eller undre notsystem i ett delat notsystem - - - - flip stem direction of selected notes - byt stämriktning för valda noter - - - - StaffSettings - Notsysteminställningar - - - - MusE: config wallpaper - MusE: konfigurera bakgrundsbild - - - - ScoreConfig - - - Staff Settings: - Partiturinställningar: - - - - Track List - SpÃ¥rlista - - - - Key/Clef - Stämma/Klav - - - - Upper Staff - Övre notplan - - - - Lower Staff - Nedre notplan - - - - Raster - Rutnät - - - - Note Quantize - Notkvantisera - - - - Rest Quantize - Restkvantisera - - - - Mode - Läge - - - - Split System - Delat system - - - - Splitpoint - Delningspunkt - - - - Apply - Verkställ - - - - Cancel - Avbryt - - - - ScrollScale - - - next page - nästa sida - - - - previous page - förra sidan - - - - current page number - nuvarande sidnummer - - - - ShortcutCaptureDialog - - - Ok - Ok - - - - Cancel - Avbryt - - - - Shortcut conflicts with - - - - - Undefined - - - - - ShortcutCaptureDialogBase - - - Cancel - Avbryt - - - - OK - OK - - - - ShortcutConfig - - - Transport: Start playback from current location - Transport: Starta uppspelning frÃ¥n nuvarande position - - - - Transport: Toggle metronome - Transport: Metronom av/pÃ¥ - - - - Transport: Stop Playback - Transport: Stoppa uppspelning - - - - Transport: Play, Stop, Rewind - Transport: Spela, stoppa, spola tillbaka - - - - Transport: Goto left marker - Transport: GÃ¥ till vänster markering - - - - Transport: Goto right marker - Transport: GÃ¥ till höger markering - - - - Transport: Toggle Loop section - Transport: Loopa sektion av/pÃ¥ - - - - Transport: Toggle Record - Transport: Inspelning av/pÃ¥ - - - - Edit: Copy - Redigera: Kopiera - - - - Edit: Undo - Redigera: Ã…ngra - - - - Edit: Redo - Redigera: Gör om - - - - Edit: Cut - Redigera: Klipp ut - - - - Edit: Paste, - Redigera: Klistra in - - - - Edit: Delete - Redigera: Ta bort - - - - File: New project - Arkiv: Nytt projekt - - - - File: Open from disk - Arkiv: Öppna - - - - File: Save project - Arkiv: Spara - - - - File: Open recent file - Arkiv: Öppna föregÃ¥ende fil - - - - File: Save as - Arkiv: Spara som - - - - File: Load template - Arkiv: Ladda mall - - - - File: Import midi file - Arkiv: Importera midifil - - - - File: Export midi file - Arkiv: Exportera midifil - - - - File: Import audio file - Arkiv: Importera ljudfil - - - - File: Quit MusE - Arkiv: Avsluta - - - - Edit: Select parts on track - Arkiv: Välj alla parter i spÃ¥r - - - - Open pianoroll - Öppna pianorulle - - - - Open drumeditor - Öppna trumeditor - - - - Open listeditor - Öppna listeditor - - - - Open graphical mastertrack editor - Öppna masterspÃ¥r-editor (grafisk) - - - - Open list mastertrack editor - Öppna masterspÃ¥r-editor (lista) - - - - Open midi transformer - Öppna miditransformer - - - - Add midi track - Lägg till midispÃ¥r - - - - Add drum track - Lägg till trumspÃ¥r - - - - Add wave track - Lägg till ljudspÃ¥r - - - - Add audio output - Lägg till ljudutgÃ¥ng - - - - Add audio group - Lägg till ljudgrupp - - - - Add audio input - Lägg till ljudingÃ¥ng - - - - Add audio aux - Lägg till aux - - - - Structure: Global cut - Struktur: Globalt klipp - - - - Structure: Global insert - Struktur: Global insättning - - - - Structure: Global split - Struktur: Global delning - - - - Structure: Copy range - Struktur: Kopiera omrÃ¥de - - - - Structure: Cut events - Struktur: Klipp ut händelse - - - - View: Open mixer window - Vy: Öppna mixerfönster - - - - View: Toggle transport window - Vy: Transportfönster av/pÃ¥ - - - - View: Toggle bigtime window - Vy: Bigtimefönster av/pÃ¥ - - - - View: Open marker window - Vy: Öppna markörfönster - - - - Settings: Follow song by page - Inställningar: Följ sÃ¥ng efter sida - - - - Settings: Follow song off - Inställningar: Följ sÃ¥ng av - - - - Settings: Follow song continuous - Inställningar: Följ sÃ¥ng kontinuerligt - - - - Settings: Global configuration - Inställningar: Globala inställningar - - - - Settings: Configure shortcuts - Inställningar: Konfigurera tangentbordsgenvängar - - - - Settings: Configure metronome - Inställningar: Konfigurera metronom - - - - Settings: Midi sync configuration - Inställningar: Midi synk konfigurationg - - - - Settings: Midi file export configuration - Inställningar: Midi fil export-konfiguration - - - - Settings: Appearance settings - Inställningar: Utseendeinställningar - - - - Settings: Midi ports / Soft Synth - Inställningar: Midiportar / Mjukvarusynthar - - - - Settings: Audio subsystem configuration - Inställningar: Konfiguration av ljud-undersystem - - - - Midi: Edit midi instruments - Midi: Editera midi-instrument - - - - Midi: Open midi input transform - Midi: Öppna midi inputtransformator - - - - Midi: Open midi input filter - Midi: Öppna midi indatafilter - - - - Midi: Midi input transpose - Midi: Midi indata transponering - - - - Midi: Midi remote control - Midi: Midi fjärrkontroll - - - - Midi: Random rhythm generator - Midi: Slumprymtmgenerator - - - - Midi: Reset midi - Midi: Resetta midi - - - - Midi: Init midi - Midi: Initiera midi - - - - Midi: Midi local off - Midi: Midi lokal av - - - - Audio: Bounce audio to track - Audio: Bounce till spÃ¥r - - - - Audio: Bounce audio to file - Audio: Bounce till fil - - - - Audio: Restart audio - Audio: Starta om audio - - - - Automation: Mixer automation - Audio: Mixerautomation - - - - Automation: Take mixer snapshot - Audio: Mixer ögonblicksbild - - - - Automation: Clear mixer automation - Audio: Rensa mixerautomation - - - - Help: Open Manual - Hjälp: Öppna manual - - - - Help: Toggle whatsthis mode - Hjälp: What's this-läge av/pÃ¥ - - - - Edit: Edit selected part - Redigera: Editera vald part - - - - Edit: Select nearest part on track above - Redigera: Välj närmsta part pÃ¥ ovanstÃ¥ende spÃ¥r - - - - Edit: Add nearest part on track above - Redigera: Lägg till närmsta part pÃ¥ ovanstÃ¥ende spÃ¥r till val - - - - Edit: Select nearest part on track below - Redigera: Välj närmsta part pÃ¥ underliggande spÃ¥r - - - - Edit: Add nearest part on track below - Redigera: Lägg till närmsta part pÃ¥ underliggande spÃ¥r till val - - - - Midi: Transpose - Midi: Transponering - - - - Edit: Select all - Redigera: Välj alla - - - - Edit: Select none - Redigera: Välj ingen - - - - Edit: Invert selection - Redigera: Invertera val - - - - Edit: Select events/parts inside locators - Redigera: Välj händelser/parter inom sektion - - - - Edit: Select events/parts outside locators - Redigera: Välj händelser/parter utanför sektion - - - - Edit: Select nearest part/event to the left - Redigera: Välj närmsta part/händelse till vänster - - - - Edit: Add nearest part/event to the left to selection - Redigera: Lägg till närmsta part/händelse till vänster till val - - - - Edit: Add nearest part/event to the right to selection - Redigera: Lägg till närmsta part/händelse till höger till val - - - - Edit: Set locators to selection - Redigera: Sätt loopsektion till valda parter/händelser - - - - Edit: Increase pitch - Redigera: Höj pitch - - - - Edit: Decrease pitch - Redigera: Sänk pitch - - - - Edit: Set fixed length on midi events - Redigera: Sätt fix längd till valda midihändelser - - - - Quantize: Over Quantize - Redigera: Överkvantisera - - - - Quantize: Note On Quantize - Kvantisering: Not pÃ¥-kvantisering - - - - Quantize: Note On/Off Quantize - Kvantisering: Not pÃ¥/av-kvantisering - - - - Quantize: Iterative Quantize - Kvantisering: Iterativ kvantisering - - - - Quantize: Configure quant - Kvantisering: Konfigurera kvantisering - - - - Quantize: Modify Gate Time - Kvantisering: Modifiera gate-tid - - - - Quantize: Modify Velocity - Kvantisering: Modifiera velocity - - - - Edit: Crescendo - Redigera: Crescendo - - - - Edit: Thin Out - Redigera: Tunna ut - - - - Edit: Erase Event - Redigera: Ta bort händelse - - - - Edit: Note Shift - Redigera: Shifta Not - - - - Edit: Move Clock - Redigera: Flytta Klocka - - - - Edit: Copy Measure - Redigera: Kopiera Takt - - - - Edit: Erase Measure - Redigera: Ta bort Takt - - - - Edit: Delete Measure - Redigera: Ta bort Takt - - - - Edit: Create Measure - Redigera: Lägg till Takt - - - - Edit: Change event color - Redigera: Ändra färg pÃ¥ händelse - - - - Tool: Pointer - Verktyg: Pekare - - - - Tool: Pencil - Verktyg: Penna - - - - Tool: Eraser - Verktyg: Radergummi - - - - Tool: Line Draw - Verktyg: Rita linje - - - - Tool: Scissor - Verktyg: Delare - - - - Tool: Glue - Verktyg: Lim - - - - Tool: Mute - Verktyg: Tysta - - - - Transport: Increase current position - Transport: Öka nuvarande position - - - - Transport: Decrease current position - Transport: Minska nuvarande position - - - - Quantize: Set quantize to 1/1 note - Kvantisering: Sätt kvantisering till 1/1-not - - - - Quantize: Set quantize to 1/2 note - Kvantisering: Sätt kvantisering till 1/2-not - - - - Quantize: Set quantize to 1/4 note - Kvantisering: Sätt kvantisering till 1/4-not - - - - Quantize: Set quantize to 1/8 note - Kvantisering: Sätt kvantisering till 1/8-not - - - - Quantize: Set quantize to 1/16 note - Kvantisering: Sätt kvantisering till 1/16-not - - - - Quantize: Set quantize to 1/32 note - Kvantisering: Sätt kvantisering till 1/32-not - - - - Quantize: Set quantize to 1/64 note - Kvantisering: Sätt kvantisering till 1/64-not - - - - Quantize: Toggle triol quantization - Kvantisering: Växla triol-kvantisering - - - - Quantize: Toggle punctuation quantization - Kvantisering: Växla punktuerad kvantisering - - - - Quantize: Toggle punctuation quantization (2) - Kvantisering: Växla punktuerad kvantisering (2) - - - - Edit: Insert at location - Redigera: Sätt in pÃ¥ nuvarande position - - - - Insert Note - Mata in Not - - - - Insert SysEx - Mata in SysEx - - - - Insert Ctrl - Mata in Ctrl - - - - Insert Meta - Mata in Meta - - - - Insert Channel Aftertouch - Mata in Aftertouch för kanal - - - - Insert Key Aftertouch - Mata in Key Aftertouch - - - - Edit: Increase event position - Redigera: Öka position för händelse - - - - Edit: Decrease event position - Redigera: Minska position för händelse - - - - Insert Tempo - Mata in Tempo - - - - Insert Signature - Mata in tempo-signatur - - - - Change Event Position - Ändra position för händelse - - - - Edit Event Value - Redigera värde för händelse - - - - Arranger - Arrangerare - - - - Pianoroll - Pianorulle - - - - Drumeditor - Trumeditor - - - - List Mastertrack - MasterspÃ¥r, lista - - - - All categories - Alla kategorier - - - - Global - - - - - List editor - - - - - Wave editor - - - - - ShortcutConfigBase - - - Alt+A - Alt+L - - - - SigScale - - - signature scale - signaturskala - - - - SimpleSynthGui - - - Load sample dialog - - - - - Song - - - Jack shutdown! - - - - - Jack has detected a performance problem which has lead to -MusE being disconnected. -This could happen due to a number of reasons: -- a performance issue with your particular setup. -- a bug in MusE (or possibly in another connected software). -- a random hiccup which might never occur again. -- jack was voluntary stopped by you or someone else -- jack crashed -If there is a persisting problem you are much welcome to discuss it -on the MusE mailinglist. -(there is information about joining the mailinglist on the MusE - homepage which is available through the help menu) - -To proceed check the status of Jack and try to restart it and then . -click on the Restart button. - - - - - SplitLayerGui - - - start pitch for split - - - - - enable learn mode for start pitch - - - - - end pitch for split - - - - - enable learn mode for end pitch - - - - - pitch offset for split - - - - - start velocity for split - - - - - end velocity for split - - - - - velocity offset for split - - - - - StkGuiBase - - - Voices - Röster - - - - Edit - Redigera - - - - SynthConfigBase - - - MusE: Soft Synth Configuration - MusE: Mjukvarusyntinställningar - - - - Soft Synthesizer - Mjukvarusynt - - - - File - Arkiv - - - - Instances - Instanser - - - - Name - Namn - - - - list of available software synthesizers - lista av tillgängliga mjukvarusyntar - - - - Add Instance - Lägg till instans - - - - Remove Instance - Ta bort instans - - - - TLSWidget - - - Remove Subtrack - - - - - Ctrl - - - - - Velocity - Hastighet - - - - Delete Controller - - - - - TLWidget - - - Delete Track - Ta bort spÃ¥r - - - - Copy Track - - - - - Show Gui - Visa Gui - - - - Add Subtrack - - - - - Midi Output Channel - - - - - TList - - - Show Gui - Visa Gui - - - - Add Midi Track - Lägg till MidispÃ¥r - - - - Add Drum Track - Lägg till TrumspÃ¥r - - - - Add Wave Track - Lägg till WavespÃ¥r - - - - Delete Track - Ta bort spÃ¥r - - - - Track Comment - SpÃ¥rkommentar - - - - Midi - Midi - - - - Drum - Trumma - - - - Wave - Wave - - - - This is your first wave track and the project -doesn't appear to be saved yet. - -It is recommended that you save a project file now! - -By doing that you are implicitly selecting a folder -where the audio files will end up. - Detta är ditt första ljudspÃ¥r och projektet verkar inte vara sparat ännu. - -Du rekommenderas att spara projektet nu! - -Genom att göra det sÃ¥ väljer du indirekt den katalog där -ljudfilerna skall hamna. - - - - Save dialog - Spara dialog - - - - Cancel - Avbryt - - - - TemplateDialog - - - MusE presets - - - - - User presets - - - - - TimeCanvas - - - Ctrl - - - - - Add Controller View - - - - - Toolbar1 - - - Cursor - Markör - - - - Snap - Fäst vid - - - - Quantize - Kvantisera - - - - To - Till - - - - All Events - Alla Händelser - - - - Looped Ev. - Loopade Händelser. - - - - Selected Ev. - Valda Händelser. - - - - Looped+Sel. - Loopade och Valda. - - - - Solo - - - - - TrackComment - - - MusE: Track Comment - MusE: SpÃ¥rkommentar - - - - Track Comment: - SpÃ¥rkommentar: - - - - TrackInfo - - - Track Type - SpÃ¥rtyp - - - - Track Name - SpÃ¥rnamn - - - - Transport - - - Replace - Ersätt - - - - Rec Mode - Recläge - - - - Left Mark - Vänster Markering - - - - Right Mark - Höger Markering - - - - rewind to start - flytta tillbaka till början - - - - rewind - flytta tillbaka - - - - forward - frammÃ¥t - - - - stop - stopp - - - - play - spela - - - - record - spela in - - - - quantize during record - kvantisera under inspelning - - - - metronom click on/off - metronomklick av/pÃ¥ - - - - Sync - Synk - - - - external sync on/off - externsynk. av/pÃ¥ - - - - Master - Master - - - - use master track - använder masterspÃ¥r - - - - TransposeDialogBase - - - MusE: Midi Transpose - MusE: Miditransponering - - - - Value - Värde - - - - halftones - halvtoner - - - - Time - Tid - - - - all - alla - - - - between markers - mellan markeringar - - - - Parts - Parter - - - - all in selected tracks - alla i valda spÃ¥r - - - - Cancel - Avbryt - - - - OK - OK - - - - VAMGui - - - MusE: Load VAM Presets - - - - - MusE: Save VAM Presets - - - - - VAMGuiBase - - - Virtual Analogue for MusE - Virtual Analogue för MusE - - - - Waveform - VÃ¥gform - - - - Sine - Sinus - - - - Pulse - Puls - - - - Saw - SÃ¥gtand - - - - Triangle - Triangel - - - - Filter - Filter - - - - Invert - Invertera - - - - Presets - Preset - - - - load preset list - öppna presetlista - - - - save preset list - spara presetlista - - - - save preset list to a new file - spara presetlista till ny fil - - - - delete preset - ta bort preset - - - - Pitch - Tonhöjd - - - - On - PÃ¥ - - - - Velocity - - - MusE: Modify Velocity - MusE: Modifiera Velocity - - - - VelocityBase - - - MusE: Modify Velocity - MusE: Modifiera Velocity - - - - Range - OmrÃ¥de - - - - All Events - Alla Händelser - - - - Selected Events - Valda Händelser - - - - Looped Events - Loopade Händelser - - - - Selected & Looped - Valda & Loopade - - - - Values - Värden - - - - Rate: - Hastighet: - - - - Offset: - Offset: - - - - Cancel - Avbryt - - - - OK - OK - - - - WTScale - - - bar scale - takt-skala - - - - WaveEdit - - - &File - &Arkiv - - - - Functions - Funktioner - - - - Normalize - Normalisera - - - - Cursor - Markör - - - - &Edit - &Redigera - - - - Func&tions - - - - - &Gain - - - - - 200% - - - - - 150% - - - - - 75% - - - - - 50% - - - - - 25% - - - - - Other - - - - - Edit in E&xternal Editor - - - - - Mute Selection - - - - - Normalize Selection - - - - - Fade In Selection - - - - - Fade Out Selection - - - - - Reverse Selection - - - - - Select - Välj - - - - waveedit-tools - - - - - Transport - - - - - pianoroll-tools - - - - - Solo - - - - - WaveTrackInfoBase - - - MusE: TrackInfo - MusE: SpÃ¥rinfo - - - - Track Info - SpÃ¥rinfo - - - - Track Name - SpÃ¥rnamn - - - - Ports: - Portar: - - - - off - av - - - - WaveView - - - MusE - file size changed - - - - - When editing in external editor - you should not change the filesize -since it must fit the selected region. - -Missing data is muted - - - - diff --git a/muse/share/plugins/1050.ui b/muse/share/plugins/1050.ui deleted file mode 100644 index d73ec5a1..00000000 --- a/muse/share/plugins/1050.ui +++ /dev/null @@ -1,297 +0,0 @@ - - - - - freeverb - - - - 0 - 0 - 398 - 120 - - - - FreeVerb - - - true - - - - 9 - - - 6 - - - - - 0 - - - 6 - - - - - 0 - - - 6 - - - - - - 5 - 0 - 0 - 0 - - - - Wet Level - - - - - - - - 4 - 0 - 0 - 0 - - - - 2 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - 0 - - - 6 - - - - - - 5 - 0 - 0 - 0 - - - - Damping - - - - - - - - 4 - 0 - 0 - 0 - - - - 1 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - 7 - 5 - 0 - 0 - - - - 1 - - - Qt::Vertical - - - - - - - - 7 - 5 - 0 - 0 - - - - 2 - - - Qt::Vertical - - - - - - - 0 - - - 6 - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:20pt;">Freeverb1</span></p></body></html> - - - - - - - Qt::Vertical - - - - 127 - 51 - - - - - - - - - - - 7 - 5 - 0 - 0 - - - - Qt::Vertical - - - - - - - 0 - - - 6 - - - - - - 5 - 0 - 0 - 0 - - - - Room Size - - - - - - - - 4 - 0 - 0 - 0 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - qPixmapFromMimeSource - - - Awl::Slider - -
awl/slider.h
- 0 - -
- - Awl::FloatEntry - -
awl/floatentry.h
- 0 - -
-
- - -
diff --git a/muse/share/plugins/1436.ui b/muse/share/plugins/1436.ui deleted file mode 100644 index ef801ebb..00000000 --- a/muse/share/plugins/1436.ui +++ /dev/null @@ -1,1090 +0,0 @@ - - - - - freeverb - - - - 0 - 0 - 721 - 335 - - - - FreeVerb - - - true - - - - 9 - - - 6 - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 9 - - - 6 - - - - - 0 - - - 6 - - - - - 0 - - - 6 - - - - - - 5 - 0 - 0 - 0 - - - - Delay (ms) - - - - - - - - 4 - 0 - 0 - 0 - - - - 2700 - - - - - - - - 7 - 5 - 0 - 0 - - - - - 200 - 12 - 100 - - - - 2700 - - - 10 - - - 100 - - - Qt::Vertical - - - - - - - - - 0 - - - 6 - - - - - - 5 - 0 - 0 - 0 - - - - Level - - - - - - - - 4 - 0 - 0 - 0 - - - - 1 - - - 50 - - - - - - - - 7 - 5 - 0 - 0 - - - - 1 - - - 50 - - - 0.5 - - - 2 - - - Qt::Vertical - - - - - - - - - - Sans Serif - 18 - 50 - false - false - false - false - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:18pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"><span style=" font-size:18pt;">Left</span></p></body></html> - - - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 9 - - - 6 - - - - - 0 - - - 6 - - - - - 0 - - - 6 - - - - - - 5 - 0 - 0 - 0 - - - - Delay (ms) - - - - - - - - 4 - 0 - 0 - 0 - - - - 2 - - - 2700 - - - - - - - - 7 - 5 - 0 - 0 - - - - - 200 - 12 - 100 - - - - 2 - - - 2700 - - - 10 - - - 100 - - - Qt::Vertical - - - - - - - - - 0 - - - 6 - - - - - - 5 - 0 - 0 - 0 - - - - Level - - - - - - - - 4 - 0 - 0 - 0 - - - - 3 - - - 50 - - - - - - - - 7 - 5 - 0 - 0 - - - - 4 - - - 3 - - - 50 - - - 0.5 - - - 2 - - - Qt::Vertical - - - - - - - - - - Sans Serif - 18 - 50 - false - false - false - false - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:20pt;">Center</span></p></body></html> - - - - - - - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:20pt;">L/C/R Delay - 1436</span></p></body></html> - - - - - - - 0 - - - 6 - - - - - 0 - - - 6 - - - - - - 4 - 0 - 0 - 0 - - - - 9 - - - 50 - - - - - - - 9 - - - 50 - - - Qt::Horizontal - - - - - - - - - 0 - - - 6 - - - - - - 5 - 0 - 0 - 0 - - - - Spread - - - - - - - Qt::Horizontal - - - - 101 - 20 - - - - - - - - - - - - 0 - - - 6 - - - - - 0 - - - 6 - - - - - - 4 - 0 - 0 - 0 - - - - 10 - - - - - - - 10 - - - 0.01 - - - 0.1 - - - Qt::Horizontal - - - - - - - - - 0 - - - 6 - - - - - - 5 - 0 - 0 - 0 - - - - - Sans Serif - 9 - 50 - false - false - false - false - - - - Dry/Wet level - - - - - - - Qt::Horizontal - - - - 101 - 20 - - - - - - - - - - - - 0 - - - 6 - - - - - 0 - - - 6 - - - - - - 4 - 0 - 0 - 0 - - - - 6 - - - -100 - - - 100 - - - - - - - 6 - - - -100 - - - 100 - - - 0.5 - - - 1 - - - Qt::Horizontal - - - - - - - - - 0 - - - 6 - - - - - - 5 - 0 - 0 - 0 - - - - Feedback - - - - - - - Qt::Horizontal - - - - 101 - 20 - - - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 9 - - - 6 - - - - - 0 - - - 6 - - - - - 0 - - - 6 - - - - - - 5 - 0 - 0 - 0 - - - - Delay (ms) - - - - - - - - 4 - 0 - 0 - 0 - - - - 4 - - - 2700 - - - - - - - - 7 - 5 - 0 - 0 - - - - - 200 - 12 - 100 - - - - 4 - - - 2700 - - - 10 - - - 100 - - - Qt::Vertical - - - - - - - - - 0 - - - 6 - - - - - - 5 - 0 - 0 - 0 - - - - Level - - - - - - - - 4 - 0 - 0 - 0 - - - - 5 - - - 50 - - - - - - - - 7 - 5 - 0 - 0 - - - - 5 - - - 50 - - - 0.5 - - - 2 - - - Qt::Vertical - - - - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:20pt;">Right</span></p></body></html> - - - - - - - - - - - - 0 - - - 6 - - - - - 0 - - - 6 - - - - - - 4 - 0 - 0 - 0 - - - - 7 - - - 100 - - - - - - - 7 - - - 100 - - - Qt::Horizontal - - - - - - - - - 0 - - - 6 - - - - - - 5 - 0 - 0 - 0 - - - - High frequency damping (%) - - - - - - - Qt::Horizontal - - - - 101 - 20 - - - - - - - - - - - - 0 - - - 6 - - - - - 0 - - - 6 - - - - - - 4 - 0 - 0 - 0 - - - - 8 - - - 100 - - - - - - - 8 - - - 100 - - - Qt::Horizontal - - - - - - - - - 0 - - - 6 - - - - - - 5 - 0 - 0 - 0 - - - - Low frequency damping (%) - - - - - - - Qt::Horizontal - - - - 101 - 20 - - - - - - - - - - - - qPixmapFromMimeSource - - - Awl::Slider - -
awl/slider.h
- 0 - -
- - Awl::FloatEntry - -
awl/floatentry.h
- 0 - -
-
- - -
diff --git a/muse/share/plugins/2142.ui b/muse/share/plugins/2142.ui deleted file mode 100644 index 63eb1542..00000000 --- a/muse/share/plugins/2142.ui +++ /dev/null @@ -1,525 +0,0 @@ - - - - - Form1 - - - - 0 - 0 - 357 - 190 - - - - Tap-Reverberator - - - - 11 - - - 10 - - - - - 0 - - - 4 - - - - - - 7 - 5 - 0 - 0 - - - - 8 - - - 1 - - - -70 - - - 10 - - - true - - - Qt::Horizontal - - - - - - - - 7 - 5 - 0 - 0 - - - - 8 - - - 10000 - - - Qt::Horizontal - - - - - - - - 4 - 0 - 0 - 0 - - - - 1 - - - -70 - - - 10 - - - - - - - Decay [ms] - - - - - - - - 5 - 0 - 0 - 0 - - - - - - - - Dry Level [dB] - - - - - - - - 7 - 5 - 0 - 0 - - - - 8 - - - 2 - - - -70 - - - 10 - - - true - - - Qt::Horizontal - - - - - - - - 4 - 0 - 0 - 0 - - - - 2 - - - - - - - Wet Level [dB] - - - - - - - - - 0 - - - 6 - - - - - Comb filters - - - 3 - - - - - - - Allpass filters - - - 4 - - - - - - - Bandpass filters - - - 5 - - - - - - - - - Enhanced stereo - - - 6 - - - - - - - 0 - - - 6 - - - - - - 4 - 5 - 0 - 0 - - - - Preset: - - - - - - - 7 - - - - AfterBurn - - - - - AfterBurn (Long) - - - - - Ambience - - - - - Ambience (Thick) - - - - - Ambience (Thick) - HD - - - - - Cathedral - - - - - Cathedral - HD - - - - - Drum Chamber - - - - - Garage - - - - - Garage (Bright) - - - - - Gymnasium - - - - - Gymnasium (Bright) - - - - - Gymnasium (Bright) - HD - - - - - Hall (Small) - - - - - Hall (Medium) - - - - - Hall (Large) - - - - - Hall (Large) - HD - - - - - Plate (Small) - - - - - Plate (Medium) - - - - - Plate (Large) - - - - - Plate (Large) - HD - - - - - Pulse Chamber - - - - - Pulse Chamber (Reverse) - - - - - Resonator (96 ms) - - - - - Resonator (152 ms) - - - - - Resonator (208 ms) - - - - - Room (Small) - - - - - Room (Medium) - - - - - Room (Large) - - - - - Room (Large) - HD - - - - - Slap Chamber - - - - - Slap Chamber - HD - - - - - Slap Chamber (Bright) - - - - - Slap Chamber (Bright) HD - - - - - Smooth Hall (Small) - - - - - Smooth Hall (Medium) - - - - - Smooth Hall (Large) - - - - - Smooth Hall (Large) - HD - - - - - Vocal Plate - - - - - Vocal Plate - HD - - - - - Warble Chamber - - - - - Warehoouse - - - - - Warehouse - HD - - - - - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:15pt;">TAP Reverberator</span></p></body></html> - - - - - - - qPixmapFromMimeSource - - - Awl::Slider - -
awl/slider.h
- 0 - -
- - Awl::ComboBox - -
awl/combobox.h
- 0 - -
- - Awl::CheckBox - -
awl/checkbox.h
- 0 - -
- - Awl::FloatEntry - -
awl/floatentry.h
- 0 - -
-
- - -
diff --git a/muse/share/plugins/CMakeLists.txt b/muse/share/plugins/CMakeLists.txt deleted file mode 100644 index 4df55561..00000000 --- a/muse/share/plugins/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -install_files ( /share/${MusE_INSTALL_NAME}/plugins .*\\.ui ) - diff --git a/muse/share/templates/CMakeLists.txt b/muse/share/templates/CMakeLists.txt deleted file mode 100644 index 9c8a8c17..00000000 --- a/muse/share/templates/CMakeLists.txt +++ /dev/null @@ -1,30 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -install_files ( /share/${MusE_INSTALL_NAME}/templates .med - audio.med - empty.med - default.med - midiGM.med - monorecord.med - synti.med - ns5r.med - ) - diff --git a/muse/share/templates/audio.med b/muse/share/templates/audio.med deleted file mode 100644 index e35752d8..00000000 --- a/muse/share/templates/audio.med +++ /dev/null @@ -1,395 +0,0 @@ - - - - 127 - 127 - 1 - - 00:00:00:00:00 - - 0 - 0 - 0 - 0 - 0 - 1 - 1 - 0 - 0 - - - 1 - 0 - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - - - 0 - 0 - 0 - 1 - 0 - - Track 1 - 0 - 1 - 0 - 1 - - - - - 31 - 0 - - - Track 2 - 0 - 1 - 1 - 0 - - - - - 31 - 0 - - - Track 3 - 0 - 1 - 0 - - - - - 31 - 0 - - - Track 4 - 0 - 1 - 0 - - - - - 31 - 0 - - - Group 1 - 0 - 1 - 1 - 0 - - - - - 31 - 0 - - - Group 2 - 0 - 1 - 0 - - - - - 31 - 0 - - - Aux 1 - 0 - 2 - 1 - 0 - - - 31 - 0 - - - Aux 2 - 0 - 2 - 1 - 0 - - - 31 - 0 - - - Input 1 - 1 - 2 - 1 - 0 - - - - - 31 - 0 - - - Out 1 - 0 - 2 - 1 - 0 - - - 31 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 1 - 0.04 - 1 - 0 - 0 - - 144 - 578 - - - - - 0 - 500000 - - - - - 0 - 4 - 4 - - - - - - diff --git a/muse/share/templates/default.med b/muse/share/templates/default.med deleted file mode 100644 index 8edbfd8d..00000000 --- a/muse/share/templates/default.med +++ /dev/null @@ -1,132 +0,0 @@ - - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 127 - 127 - 1 - -1 - 1 - 00:00:00:00:00 - 0 - 0 - 0 - 0 - 0 - 1 - 1 - 0 - 0 - 0 - - - 2 - 63 - 127 - 63 - 70 - 9 - 0 - 0 - 0 - 4 - 4 - 0 - 0 - 1 - 0 - - 0 - 28 - 31 - 33 - 29 - - - 96 - 96 - 600 - 400 - 50 - 300 - 0 - - - 96 - 96 - 80 - 50 - 0 - 0 - 600 - 400 - 0 - - - 0 - - - - 600 - 400 - - - - 1 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 1 - - Out 1 - 0 - 0 - 0 - 0 - 2 - 20 - 0 - 1 - 0 - 1 - - - - - - - - 0 - 500000 - - - - - 0 - 4 - 4 - - - - - - diff --git a/muse/share/templates/empty.med b/muse/share/templates/empty.med deleted file mode 100644 index 87b3901b..00000000 --- a/muse/share/templates/empty.med +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/muse/share/templates/midiGM.med b/muse/share/templates/midiGM.med deleted file mode 100644 index ebd6333b..00000000 --- a/muse/share/templates/midiGM.med +++ /dev/null @@ -1,409 +0,0 @@ - - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 127 - 127 - 1 - -1 - 1 - 00:00:00:00:00 - 0 - 0 - 0 - 0 - 0 - 1 - 1 - 0 - 0 - 0 - - 1 - 298 764 - -
7 6 5 4 3 2 1 0
-
- 0 - 266 - 1 -
- - - 2 - 63 - 127 - 63 - 70 - 9 - 0 - 1 - 1 - 4 - 4 - 0 - 0 - 1 - 0 - - 0 - 28 - 31 - 33 - 29 - - GM - - - 0 - - - 0 - - - 0 - - - - - 0 - - - 0 - - - 0 - - - - - 0 - - - 0 - - - 0 - - - - - 0 - - - 0 - - - 0 - - - - - 0 - - - 0 - - - 0 - - - - - 0 - - - 0 - - - 0 - - - - - 0 - - - 0 - - - 0 - - - - - 0 - - - 0 - - - 0 - - - - - 0 - - - 0 - - - 0 - - - - - 0 - - - 0 - - - 0 - - - - - 0 - - - 0 - - - 0 - - - - - 0 - - - 0 - - - 0 - - - - - 0 - - - 0 - - - 0 - - - - - 0 - - - 0 - - - 0 - - - - - 0 - - - 0 - - - 0 - - - - - 0 - - - 0 - - - 0 - - - - - - 96 - 96 - 600 - 400 - 50 - 300 - - - 96 - 96 - 80 - 50 - 0 - 0 - 600 - 400 - 0 - - - 0 - - - - 600 - 400 - -
- - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 1 - - Track 1 - 0 - 0 - 0 - 0 - 0 - 20 - 0 - 1 - 0 - 0 - 65535 - 65535 - 0 - 0 - 0 - 0 - 100 - 100 - 1 - - - Track 2 - 0 - 0 - 0 - 0 - 0 - 20 - 0 - 0 - 0 - 65535 - 65535 - 0 - 0 - 0 - 0 - 100 - 100 - 1 - - - Track 3 - 0 - 0 - 0 - 0 - 0 - 20 - 0 - 0 - 0 - 65535 - 65535 - 0 - 0 - 0 - 0 - 100 - 100 - 1 - - - Track 4 - 0 - 0 - 0 - 0 - 0 - 20 - 0 - 0 - 0 - 65535 - 65535 - 0 - 0 - 0 - 0 - 100 - 100 - 1 - - - Track 5 - 0 - 0 - 0 - 0 - 0 - 20 - 0 - 0 - 9 - 65535 - 65535 - 0 - 0 - 0 - 0 - 100 - 100 - 1 - - - - 0 - 500000 - - - - - 0 - 4 - 4 - - - - - -
diff --git a/muse/share/templates/monorecord.med b/muse/share/templates/monorecord.med deleted file mode 100644 index 5b9c57a0..00000000 --- a/muse/share/templates/monorecord.med +++ /dev/null @@ -1,430 +0,0 @@ - - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 127 - 127 - 1 - -1 - 1 - 00:00:00:00:00 - 0 - 0 - 0 - 0 - 0 - 1 - 1 - 0 - - 0 - 298 296 - -
7 6 5 4 3 2 1 0
-
- 0 - 266 - 1 -
- - - 2 - 63 - 127 - 63 - 70 - 9 - 0 - 1 - 1 - 4 - 4 - 0 - 0 - 1 - 0 - - 0 - 28 - 31 - 33 - 29 - - GM - TASCAM US-X2Y Port 0 - 1 - - 1 - 7 - 10 - 11 - 64 - 91 - 93 - 120 - 121 - 123 - 262144 - 262145 - - - 1 - 7 - 10 - 11 - 64 - 91 - 93 - 120 - 121 - 123 - 262144 - 262145 - - - 1 - 7 - 10 - 11 - 64 - 91 - 93 - 120 - 121 - 123 - 262144 - 262145 - - - 1 - 7 - 10 - 11 - 64 - 91 - 93 - 120 - 121 - 123 - 262144 - 262145 - - - 1 - 7 - 10 - 11 - 64 - 91 - 93 - 120 - 121 - 123 - 262144 - 262145 - - - 1 - 7 - 10 - 11 - 64 - 91 - 93 - 120 - 121 - 123 - 262144 - 262145 - - - 1 - 7 - 10 - 11 - 64 - 91 - 93 - 120 - 121 - 123 - 262144 - 262145 - - - 1 - 7 - 10 - 11 - 64 - 91 - 93 - 120 - 121 - 123 - 262144 - 262145 - - - 1 - 7 - 10 - 11 - 64 - 91 - 93 - 120 - 121 - 123 - 262144 - 262145 - - - 1 - 7 - 10 - 11 - 64 - 91 - 93 - 120 - 121 - 123 - 262144 - 262145 - - - 1 - 7 - 10 - 11 - 64 - 91 - 93 - 120 - 121 - 123 - 262144 - 262145 - - - 1 - 7 - 10 - 11 - 64 - 91 - 93 - 120 - 121 - 123 - 262144 - 262145 - - - 1 - 7 - 10 - 11 - 64 - 91 - 93 - 120 - 121 - 123 - 262144 - 262145 - - - 1 - 7 - 10 - 11 - 64 - 91 - 93 - 120 - 121 - 123 - 262144 - 262145 - - - 1 - 7 - 10 - 11 - 64 - 91 - 93 - 120 - 121 - 123 - 262144 - 262145 - - - 1 - 7 - 10 - 11 - 64 - 91 - 93 - 120 - 121 - 123 - 262144 - 262145 - - - - - 96 - 96 - 600 - 400 - 50 - 300 - - - 96 - 96 - 80 - 50 - 0 - 0 - 600 - 400 - 0 - - - 0 - - - - 600 - 400 - -
- - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 1 - - Track 1 - 1 - 0 - 0 - 0 - 1 - 20 - 0 - 0 - 0 - 0 - 0 - 0.000000 - 0.000000 - - - - - - - Input 1 - 0 - 0 - 0 - 0 - 1 - 20 - 1 - 1 - 0 - 0 - 0 - 0 - 0.000000 - 0.000000 - - - - - - - Out 1 - 0 - 0 - 0 - 0 - 1 - 20 - 1 - 0 - 0 - 0 - 0 - - - - - - - alsa_pcm:capture_1 - 1:Input 1 - - - Input 1 - Out 1 - - - Input 1 - Track 1 - - - - 0 - 500000 - - - - - 0 - 4 - 4 - - - - - - - - - - - - - -
diff --git a/muse/share/templates/ns5r.med b/muse/share/templates/ns5r.med deleted file mode 100644 index 471246ea..00000000 --- a/muse/share/templates/ns5r.med +++ /dev/null @@ -1,266 +0,0 @@ - - - - 1 - - 00:00:00:00:00 - - 0 - 0 - 0 - 0 - 0 - 1 - 1 - 0 - 0 - - - 1 - 0 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - - - - - 2006-10-24T21:21:56 - 0 - 0 - 0 - 0 - 1 - 0 - - MidiOut 1 - 1 - 1 - - 31 - Korg-NS5R - 0 - 127 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - 0 - 0.04 - 1 - 0 - 0 - 0 - - 144 - 763 - - - - - 0 - 500000 - - - - - 0 - 4 - 4 - - - - - - diff --git a/muse/share/templates/synti.med b/muse/share/templates/synti.med deleted file mode 100644 index f9a811b5..00000000 --- a/muse/share/templates/synti.med +++ /dev/null @@ -1,353 +0,0 @@ - - - - 127 - 127 - 1 - - 00:00:00:00:00 - - 0 - 0 - 0 - 0 - 0 - 1 - 1 - 0 - 0 - - - 0 - 0 - - - - 12288 - 0 - 0 - 1 - 18432 - - Track 1 - 0 - 31 - 0 - 0 - 0 - 100 - 100 - - Track 1 - - 0 - 0 - - - - Out 1 - 0 - 2 - - - 31 - 0 - - - fluid-1 - 0 - 1 - 2 - 1 - - - 31 - 0 - fluid - 0 - - - organ-1 - 0 - 1 - 1 - - - 31 - 0 - organ - 0 - - - - s1-1 - 0 - 1 - 1 - 1 - - - 31 - 0 - s1 - - - vam-1 - 0 - 1 - 1 - - - 31 - 0 - vam - 0 - - - - fluid-1 - Out 1 - - - organ-1 - Out 1 - - - s1-1 - Out 1 - - - vam-1 - Out 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 1 - 0.04 - 1 - 0 - 0 - - 144 - 578 - - - - - 0 - 500000 - - - - - 0 - 4 - 4 - - - - - - diff --git a/muse/share/wallpapers/CMakeLists.txt b/muse/share/wallpapers/CMakeLists.txt deleted file mode 100644 index f098c244..00000000 --- a/muse/share/wallpapers/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -install_files ( /share/${MusE_INSTALL_NAME}/wallpapers .*\\.gif ) -install_files ( /share/${MusE_INSTALL_NAME}/wallpapers .*\\.jpg ) diff --git a/muse/share/wallpapers/gray.gif b/muse/share/wallpapers/gray.gif deleted file mode 100644 index cb30e856..00000000 Binary files a/muse/share/wallpapers/gray.gif and /dev/null differ diff --git a/muse/share/wallpapers/gray_rock.gif b/muse/share/wallpapers/gray_rock.gif deleted file mode 100644 index dcf1a19b..00000000 Binary files a/muse/share/wallpapers/gray_rock.gif and /dev/null differ diff --git a/muse/share/wallpapers/gray_stucco.gif b/muse/share/wallpapers/gray_stucco.gif deleted file mode 100644 index bcebdb02..00000000 Binary files a/muse/share/wallpapers/gray_stucco.gif and /dev/null differ diff --git a/muse/share/wallpapers/paper1.jpg b/muse/share/wallpapers/paper1.jpg deleted file mode 100644 index 1d4923e8..00000000 Binary files a/muse/share/wallpapers/paper1.jpg and /dev/null differ diff --git a/muse/share/wallpapers/paper2.jpg b/muse/share/wallpapers/paper2.jpg deleted file mode 100644 index a692fc41..00000000 Binary files a/muse/share/wallpapers/paper2.jpg and /dev/null differ diff --git a/muse/share/wallpapers/stone1.gif b/muse/share/wallpapers/stone1.gif deleted file mode 100644 index f45407cc..00000000 Binary files a/muse/share/wallpapers/stone1.gif and /dev/null differ diff --git a/muse/synti/CMakeLists.txt b/muse/synti/CMakeLists.txt deleted file mode 100644 index 7e5274ac..00000000 --- a/muse/synti/CMakeLists.txt +++ /dev/null @@ -1,42 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -include_directories( - . - ${CMAKE_CURRENT_BINARY} - ${PROJECT_SOURCE_DIR} - ${PROJECT_SOURCE_DIR}/muse - ${PROJECT_SOURCE_DIR}/muse/widgets - ${PROJECT_SOURCE_DIR}/synti - ) - -set (SubDirs libsynti s1 organ deicsonze simpledrums vam mus) - -if (ENABLE_ZYNADDSUBFX) - set (SubDirs ${SubDirs} zynaddsubfx) -endif (ENABLE_ZYNADDSUBFX) - -if (ENABLE_FLUID) - set (SubDirs ${SubDirs} fluid fluidsynth ) -endif (ENABLE_FLUID) - -subdirs(${SubDirs}) - - diff --git a/muse/synti/README b/muse/synti/README deleted file mode 100644 index cbda0fd4..00000000 --- a/muse/synti/README +++ /dev/null @@ -1,14 +0,0 @@ -s1 is a simple demo of the MusE software synthesizer interface. - It has no gui and no parameters to set. - -organ is a demo synthesizer which shows how to implement - polyphony and a gui - -fluid is demo synthesizer utilizing the fluid sythesizer library - -mus is a program which can load any of the MusE synthsizer plugins - turning them into standalone synthesizer with a JACK audio and - midi interface - - - diff --git a/muse/synti/deicsonze/ARCH_ALIN b/muse/synti/deicsonze/ARCH_ALIN deleted file mode 100644 index 87092d6f..00000000 --- a/muse/synti/deicsonze/ARCH_ALIN +++ /dev/null @@ -1,24945 +0,0 @@ -* TX81Z/DX11 Voice Archive -* $Header: /cvsroot/lmuse/muse/synti/deicsonze/ARCH_ALIN,v 1.3 2005/07/14 10:25:45 a-lin Exp $ -* Copyright 1991 by Bryan Sutula. See README file for restrictions. - - ---Bank 1 - -* CATEGORY ORCHESTRA - -* SUBCATEGORY Orchestra - -** Name: EleOrchtra -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -09 03 03 04 0b 00 02 4e 00 02 18 03 03 05 08 00 02 51 08 00 11 07 03 07 0b -00 05 63 04 06 09 10 03 05 0f 00 06 63 08 05 34 21 23 0f 00 12 18 05 04 00 -63 63 63 00 00 32 00 45 6c 65 4f 72 63 68 74 72 61 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: EleOrchtra -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -09 03 03 04 0b 00 00 4e 00 02 18 03 03 05 08 00 00 51 08 00 11 07 03 07 0b -00 00 63 04 06 09 10 03 05 0f 00 00 63 08 05 34 21 23 0f 00 12 18 05 04 00 -63 63 63 00 00 32 00 45 6c 65 4f 72 63 68 74 72 61 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Orchestra* -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 1f 00 02 0f 00 01 4b 0a 08 07 1f 00 05 0f 0b 00 61 09 0e 0f 1f 00 05 0f -00 01 63 0a 08 08 1f 00 05 0f 00 00 61 05 08 3e 21 21 07 00 32 05 02 04 00 -28 63 00 00 00 32 00 4f 72 63 68 65 73 74 72 61 2a 63 63 63 32 32 32 00 00 -00 12 00 00 00 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntOrkest -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 0c 03 04 0f 32 01 47 08 0d 10 0c 03 04 0f 32 02 3e 08 0a 0e 15 06 05 0f -1e 05 5d 13 0a 1f 15 06 05 0f 1e 05 61 08 0e 24 20 2c 14 00 42 0c 0c 04 00 -63 32 32 00 00 32 00 4f 72 6e 74 4f 72 6b 65 73 74 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntOrkest -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -10 0c 03 04 0f 32 00 47 08 0d 10 0c 03 04 0f 32 00 3e 08 0a 0e 15 06 05 0f -1e 00 5d 13 0a 1f 15 06 05 0f 1e 00 61 08 0e 24 20 2c 14 00 42 0c 0c 04 00 -63 32 32 00 00 32 00 4f 72 6e 74 4f 72 6b 65 73 74 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - -* SUBCATEGORY Symphony - -** Name: Sympathy.1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 03 0f 00 04 59 04 03 1f 1f 00 03 0f 00 04 5f 00 06 0f 1f 00 04 0f -00 05 5b 08 02 0f 1f 00 04 0f 00 06 5f 08 06 2c 23 00 00 00 02 18 04 04 00 -28 32 00 00 00 32 00 53 79 6d 70 61 74 68 79 2e 31 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sympathy.2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 03 0f 00 03 52 04 03 1f 1f 00 03 0f 00 04 55 08 06 0f 1f 00 04 0f -00 06 5b 08 02 0f 1f 00 04 0f 00 05 5e 08 06 2c 23 00 00 00 02 18 04 04 00 -28 32 00 00 00 32 00 53 79 6d 70 61 74 68 79 2e 32 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sympho * -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 04 03 04 0e 16 00 4a 03 03 0d 04 00 05 0e 1d 00 52 04 06 0c 04 03 05 0e -0e 00 63 03 03 07 04 03 05 0e 0c 00 63 04 00 3c 23 0e 0e 00 32 11 02 04 00 -28 63 00 00 00 32 00 53 79 6d 70 68 6f 20 20 20 2a 63 63 63 32 32 32 00 06 -00 18 00 06 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Symphony * -** Controls: KV, MW (LFO pitch), BC (EG amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 04 00 01 0e 00 49 4d 04 03 11 17 03 04 0f 00 00 45 04 06 0c 08 03 05 0f -00 78 63 04 03 0a 04 03 05 0e 00 78 63 03 00 3c 1f 0c 10 00 4e 05 02 04 00 -28 0c 07 00 00 32 19 53 79 6d 70 68 6f 6e 79 20 2a 63 63 63 32 32 32 00 08 -30 38 00 08 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Symphony.1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -19 13 07 02 0e 0a 04 59 13 12 0e 09 00 05 0e 00 04 51 08 03 18 09 05 04 0e -0a 04 4b 0d 0b 0c 0d 00 05 0d 00 05 63 08 03 64 26 18 0f 00 26 0c 04 04 00 -63 32 63 00 00 32 00 53 79 6d 70 68 6f 6e 79 2e 31 63 63 63 32 32 32 00 10 -00 20 00 10 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Symphony.1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -19 13 07 02 0e 0a 02 59 13 12 0e 09 00 05 0e 00 01 51 08 03 18 09 05 04 0e -0a 01 4b 0d 0b 0c 0d 00 05 0d 00 00 63 08 03 64 26 18 0f 00 26 0c 04 04 00 -63 32 63 00 00 32 00 53 79 6d 70 68 6f 6e 79 2e 31 63 63 63 32 32 32 00 10 -00 20 00 10 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Symphony.2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -19 05 00 07 0e 41 01 51 08 05 19 13 06 04 0e 0a 03 4d 19 0a 0c 0a 00 07 0f -0a 05 62 08 01 1f 0a 06 04 0b 00 02 4d 0d 00 34 22 18 0f 00 22 0c 04 04 00 -63 32 63 00 00 32 00 53 79 6d 70 68 6f 6e 79 2e 32 63 63 63 32 32 32 00 10 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Symphony.2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -19 05 00 07 0e 41 01 51 08 05 19 13 06 04 0e 0a 00 4d 19 0a 0c 0a 00 07 0f -0a 00 62 08 01 1f 0a 06 04 0e 00 00 4d 0d 00 34 22 18 0f 00 22 0c 04 04 00 -63 32 63 00 00 32 00 53 79 6d 70 68 6f 6e 79 2e 32 63 63 63 32 32 32 00 10 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Symphony.3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 05 00 04 0e 29 03 4c 04 01 0f 0c 01 05 0e 0a 03 39 08 02 0d 0a 00 06 0e -0a 03 5d 08 03 12 08 03 06 0d 00 06 58 08 01 2c 1e 00 06 00 32 0c 04 04 00 -63 32 63 00 00 32 00 53 79 6d 70 68 6f 6e 79 2e 33 63 63 63 32 32 32 00 00 -00 20 00 00 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Symphony.3 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 05 00 04 0e 29 00 4c 04 01 0f 0c 01 05 0e 0a 00 39 08 02 0d 0a 00 06 0e -0a 00 5d 08 03 12 08 03 06 0d 00 00 58 08 01 2c 1e 00 06 00 32 0c 04 04 00 -63 32 63 00 00 32 00 53 79 6d 70 68 6f 6e 79 2e 33 63 63 63 32 32 32 00 00 -00 20 00 00 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Symphony.4 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 1a 05 07 0d 34 02 49 08 0c 17 0c 00 07 0f 0a 03 4b 13 05 15 0d 05 07 0e -34 05 63 08 0b 0c 0a 00 05 0f 0a 03 63 08 01 74 1e 0b 09 00 32 00 04 04 00 -63 32 63 00 00 32 00 53 79 6d 70 68 6f 6e 79 2e 34 63 63 63 32 32 32 00 30 -00 20 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Symphony.4 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 1a 05 07 0d 34 00 49 08 0c 17 0d 00 07 0f 0a 00 3f 13 05 15 0d 05 07 0e -34 00 63 08 0b 0c 0a 00 05 0f 0a 00 5a 08 01 74 1e 0b 09 00 32 00 04 04 00 -63 32 63 00 00 32 00 53 79 6d 70 68 6f 6e 79 2e 34 63 63 63 32 32 32 00 30 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Symphony.5 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1d 03 06 05 0a 29 03 48 08 14 0c 0a 08 06 09 0a 00 4a 0d 0a 0d 0b 06 05 09 -1a 03 61 0a 04 0c 09 08 07 09 15 03 63 08 01 35 1e 1a 0c 00 22 00 04 04 00 -63 32 63 00 00 32 00 53 79 6d 70 68 6f 6e 79 2e 35 63 63 63 32 32 32 00 40 -00 40 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Symphony.5 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 03 06 04 0f 29 00 48 08 14 0c 0a 01 05 0e 0a 00 4a 08 0a 0d 0b 06 04 0f -1a 00 4f 0a 04 0c 09 00 04 0e 15 00 5e 08 01 35 1e 1a 0c 00 22 00 04 04 00 -63 32 63 00 00 32 00 53 79 6d 70 68 6f 6e 79 2e 35 63 63 63 32 32 32 00 40 -00 10 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Symphony.6 -** Controls: KV, MW (LFO pitch), MW (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 0a 02 05 05 00 40 4c 08 0a 1a 05 00 07 0e 0a 6d 50 19 04 0b 0a 03 05 0f -00 40 56 08 10 17 0a 00 06 0f 14 44 5b 0d 05 24 1d 19 3d 25 26 0c 04 04 00 -63 32 63 00 00 32 00 53 79 6d 70 68 6f 6e 79 2e 36 63 63 63 32 32 32 00 30 -00 20 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Symphony.6 -** Controls: KV, MW (LFO pitch), MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -09 0a 02 05 05 00 40 4c 08 0a 0a 05 00 07 0e 0a 41 35 13 04 13 08 02 05 0f -00 40 56 08 10 10 0a 00 06 0f 14 40 5b 08 05 24 1c 00 2a 0b 26 0c 04 04 00 -63 32 63 00 00 32 00 53 79 6d 70 68 6f 6e 79 2e 36 63 63 63 32 32 32 00 10 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Symphony.7 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 0c 04 04 0e 49 03 51 04 08 12 0c 04 04 0e 0a 04 4d 08 0a 0e 10 00 07 0e -49 03 5f 08 04 12 10 00 05 0e 00 04 51 08 01 2c 1c 00 0f 00 42 18 04 04 00 -63 32 63 00 00 32 00 53 79 6d 70 68 6f 6e 79 2e 37 63 63 63 32 32 32 00 40 -00 10 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Symphony.7 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 0c 04 04 0e 49 00 51 04 08 12 0c 04 04 0e 0a 00 4d 08 0a 0e 10 00 07 0e -49 00 5f 08 04 12 10 00 05 0e 00 00 51 08 01 2c 1c 00 0f 00 42 18 04 04 00 -63 32 63 00 00 32 00 53 79 6d 70 68 6f 6e 79 2e 37 63 63 63 32 32 32 00 40 -00 10 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* CATEGORY WIND - -* SUBCATEGORY Brass - -** Name: AnlgBrass1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0d 07 00 07 0e 0f 04 55 08 0b 0d 1f 00 07 0f 0a 04 5f 04 03 0d 1f 00 08 0f -00 04 5f 08 03 0d 1f 00 07 0f 0a 04 5f 04 03 2e 1f 0e 10 00 52 0c 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 72 61 73 73 31 63 63 63 32 32 32 00 00 -00 20 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBrass1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0d 07 00 07 0e 0f 01 55 08 0b 0d 1f 00 07 0f 0a 00 5f 04 03 0d 1f 00 08 0f -00 01 5f 08 03 0d 1f 00 07 0f 0a 00 5f 04 03 2e 1f 0e 10 00 52 0c 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 72 61 73 73 31 63 63 63 32 32 32 00 00 -00 20 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBrass2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0d 04 03 07 0c 00 02 53 04 03 0f 05 01 08 0f 00 04 56 04 03 10 1f 00 09 0f -00 06 55 04 03 0f 05 01 08 0f 00 06 5a 04 03 2d 1f 00 05 00 62 0c 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 72 61 73 73 32 63 63 63 32 32 32 00 00 -00 20 00 30 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBrass2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0d 04 03 07 0c 00 02 53 04 03 0f 05 01 08 0f 00 00 56 04 03 10 1f 00 09 0f -00 01 55 04 03 0f 05 01 08 0f 00 00 5a 04 03 2d 23 00 05 00 52 0c 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 72 61 73 73 32 63 63 63 32 32 32 00 00 -00 20 00 30 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBrass3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0d 07 00 07 0e 00 04 4d 04 01 0d 1f 00 07 0f 0a 02 5f 04 04 0d 1f 00 08 0f -00 05 5f 08 04 0f 1f 00 07 0f 0a 05 5f 08 06 3e 1f 0e 10 00 52 0c 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 72 61 73 73 33 63 63 63 32 32 32 00 20 -00 20 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBrass3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0d 07 00 07 0e 00 01 4d 08 01 0d 1f 00 07 0f 0a 01 5f 04 04 0d 1f 00 08 0f -00 01 5f 08 04 0d 1f 00 07 0f 0a 01 5f 08 06 3e 1f 0e 10 00 52 0c 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 72 61 73 73 33 63 63 63 32 32 32 00 20 -00 20 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBrass4 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0d 04 00 07 0f 00 05 53 04 0a 0f 03 04 08 01 00 03 55 04 06 10 1f 00 09 05 -00 05 55 04 04 0f 03 04 08 01 00 05 5a 04 06 2d 23 00 00 00 62 0c 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 72 61 73 73 34 63 63 63 32 32 32 00 30 -00 30 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBrass4 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -0d 04 00 07 0f 00 01 53 04 0a 0f 03 04 08 01 00 00 55 04 06 10 1f 00 09 05 -00 01 55 04 04 0f 03 04 08 01 00 00 5a 04 06 2d 23 00 00 00 62 0c 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 72 61 73 73 34 63 63 63 32 32 32 00 30 -00 30 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBrass5 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 0a 06 07 0c 00 02 53 04 0b 15 10 06 07 09 00 03 49 04 06 16 07 06 08 0f -00 03 63 04 03 10 1b 06 07 0c 00 03 62 04 06 34 23 00 05 00 32 0c 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 72 61 73 73 35 63 63 63 32 32 32 00 00 -00 20 00 30 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBrass5 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -12 0a 06 07 0c 00 01 5b 04 0b 15 10 06 07 09 00 00 59 04 06 16 07 06 08 0f -00 01 63 04 03 10 1b 06 07 0c 00 00 62 04 06 34 23 00 05 00 32 0c 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 72 61 73 73 35 63 63 63 32 32 32 00 00 -00 20 00 30 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBrass6 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 0a 06 07 0c 00 02 53 04 09 15 09 06 06 0b 1e 02 52 04 0d 0f 07 06 08 0f -00 06 4c 04 04 11 0a 05 07 0c 0f 05 62 04 06 23 1e 25 25 00 32 0c 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 72 61 73 73 36 63 63 63 32 32 32 00 20 -00 20 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBrass6 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -12 0a 06 07 0c 00 02 53 04 09 15 09 06 06 0b 1e 01 52 04 0d 16 07 06 08 0f -00 01 4c 04 04 11 0a 05 07 0c 0f 00 62 04 06 23 28 25 02 00 32 0c 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 72 61 73 73 36 63 63 63 32 32 32 00 20 -00 20 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBrass7 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -14 0a 03 0d 0c 00 02 58 04 0c 10 1f 09 0e 0d 00 02 63 04 05 16 1f 05 0d 0e -00 05 63 04 06 10 1f 06 0e 0d 00 05 62 04 06 25 22 24 0f 00 42 0c 02 05 00 -63 63 00 00 00 32 00 41 6e 6c 67 42 72 61 73 73 37 63 63 63 32 32 32 00 20 -00 40 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBrass7 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -14 0a 03 0d 0c 00 02 58 04 0c 0f 1f 09 0e 0d 00 00 63 04 05 16 1f 05 0d 0e -00 00 63 04 06 10 1f 06 0e 0d 00 00 62 04 06 25 22 24 0f 00 42 0c 02 05 00 -63 63 00 00 00 32 00 41 6e 6c 67 42 72 61 73 73 37 63 63 63 32 32 32 00 20 -00 20 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBrass8 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0a 06 0d 0f 00 01 61 00 0a 1f 0a 06 0d 0f 00 03 5e 00 04 1f 18 06 0d 0f -00 03 5e 04 03 1f 18 06 0d 0f 00 03 5e 00 05 26 28 00 00 00 32 18 02 05 00 -63 63 00 00 00 32 00 41 6e 6c 67 42 72 61 73 73 38 63 63 63 32 32 32 00 00 -00 20 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBrass8 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0a 06 0d 0f 00 01 61 00 0a 1f 0a 06 0d 0f 00 00 5e 00 04 1f 18 06 0d 0f -00 00 5e 04 03 1f 18 06 0d 0f 00 00 5e 00 05 26 28 00 00 00 32 18 02 05 00 -63 63 00 00 00 32 00 41 6e 6c 67 42 72 61 73 73 38 63 63 63 32 32 32 00 00 -00 20 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBrass9 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0a 06 0d 0f 00 01 51 04 0b 12 0c 02 0f 0a 0a 03 51 04 0e 1f 16 08 0f 0c -00 04 63 04 06 1f 06 04 0d 0c 00 03 5e 04 03 3c 2b 00 00 00 32 0c 02 05 00 -63 63 00 00 00 32 00 41 6e 6c 67 42 72 61 73 73 39 63 63 63 32 32 32 00 00 -00 10 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBrass9 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0a 06 0d 0f 00 01 51 04 0b 12 0c 02 0f 0a 0a 01 51 04 0e 1f 16 08 0f 0c -00 00 63 04 06 1f 06 04 0d 0c 00 00 5e 04 03 3c 2b 00 00 00 32 0c 02 05 00 -63 63 00 00 00 32 00 41 6e 6c 67 42 72 61 73 73 39 63 63 63 32 32 32 00 00 -00 10 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AtackBrass -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank B, voice 6 -0f 1f 04 07 0f 00 02 53 05 0d 0f 0e 00 08 0e 00 01 5b 04 02 10 1f 00 09 0f -00 04 61 05 05 10 05 00 07 0e 00 04 63 04 09 34 1c 15 06 00 52 11 04 04 00 -63 32 00 00 00 32 00 41 74 61 63 6b 42 72 61 73 73 63 63 63 32 32 32 00 01 -00 38 00 01 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Back Brass -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -0d 1f 00 08 0f 00 00 43 04 03 0d 0e 00 0f 00 00 00 47 04 03 1f 1f 00 0f 0f -00 00 00 04 03 0f 1f 00 08 0f 00 00 5a 04 03 3a 1e 00 00 00 52 0c 04 04 00 -63 32 00 00 00 32 00 42 61 63 6b 20 42 72 61 73 73 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BC1 Feed -** Controls: KV, MW (LFO pitch), BC (EG amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 03 00 0a 0e 00 3c 47 04 03 12 1f 00 0a 0f 00 04 4b 08 02 12 1f 00 0a 0f -45 04 4f 08 03 12 1f 00 0a 0f 01 05 5f 08 03 3b 23 01 0a 00 62 0c 02 04 00 -63 32 00 00 00 32 63 42 43 31 20 46 65 65 64 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BC1 Horns -** Controls: KV, MW (LFO pitch), BC (EG amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0b 09 00 08 0e 00 3b 4a 04 0b 09 1f 00 08 0f 00 24 3d 04 03 0a 1f 00 0f 0f -00 25 21 0b 03 0e 1f 00 09 0f 00 2e 63 04 0b 3a 20 05 03 00 62 0c 02 04 00 -63 63 00 00 00 32 63 42 43 31 20 48 6f 72 6e 73 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BC1 Horns -** Controls: MW (LFO pitch), BC (EG amplitude) -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -0e 09 00 08 0e 00 00 4a 04 0b 0e 1f 00 08 0f 00 20 3d 04 03 0f 1f 00 0f 0f -00 20 21 0b 03 12 1f 00 09 0f 00 28 63 04 0b 3a 20 05 03 00 62 0c 02 04 00 -63 63 00 00 00 32 63 42 43 31 20 48 6f 72 6e 73 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Brass 1 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank C, voice 9 -10 09 00 09 0a 00 01 50 04 09 10 0b 00 09 0a 00 01 52 04 0a 14 1f 00 0a 0f -00 01 62 04 0a 13 1f 00 0a 0f 00 01 62 08 0c 3c 20 06 03 00 52 18 02 04 00 -28 32 00 00 00 32 00 42 72 61 73 73 20 20 20 20 31 63 63 63 32 32 32 00 00 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Brass 1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -10 09 00 09 0d 00 01 50 04 09 10 0b 00 09 0d 00 01 52 04 0d 14 1f 00 0a 0f -00 01 62 04 0a 13 1f 00 0a 0f 00 01 62 08 0c 3c 20 06 03 00 52 18 02 04 00 -28 32 00 00 00 32 00 42 72 61 73 73 20 20 20 20 31 63 63 63 32 32 32 00 00 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Brass 1 -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -0d 0d 00 07 0d 01 00 47 04 0e 0d 0d 00 0a 0f 2d 00 4f 04 0e 0d 0d 00 08 0b -00 00 63 04 08 0d 0d 00 08 0b 00 00 63 04 09 3c 23 00 00 00 62 18 04 04 00 -63 32 00 00 00 32 00 42 72 61 73 73 20 20 20 20 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Brass 2 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank C, voice 10 -11 0a 00 09 0a 00 02 53 04 0c 0a 08 00 08 0a 00 02 59 00 08 15 1f 00 0a 0f -00 01 62 04 0e 12 1f 00 09 0f 00 01 63 00 0a 3c 20 06 03 00 52 18 02 04 00 -28 32 00 00 00 32 00 42 72 61 73 73 20 20 20 20 32 63 63 63 32 32 32 00 00 -00 30 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Brass 2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -11 0d 00 09 0d 00 02 53 04 0c 0d 08 00 08 0d 00 02 59 00 08 15 1f 00 0a 0f -00 01 62 04 0e 12 1f 00 09 0f 00 01 63 00 0a 3c 20 06 03 00 52 18 02 04 00 -28 32 00 00 00 32 00 42 72 61 73 73 20 20 20 20 32 63 63 63 32 32 32 00 00 -00 30 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Brass 2 -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -0c 07 03 04 0f 16 00 4e 00 06 0e 07 02 06 0e 21 00 54 00 06 17 0d 00 04 0f -00 00 5c 00 08 16 0d 00 06 0f 00 00 5c 00 08 34 23 00 00 00 62 18 04 04 00 -63 32 00 00 00 32 00 42 72 61 73 73 20 20 20 20 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Brass 3 -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -19 05 00 05 0e 0a 00 51 04 06 1f 04 00 05 0a 00 00 37 04 00 14 0b 0f 0a 0f -00 00 50 04 06 14 1f 00 0a 0f 00 00 63 04 00 32 23 00 00 00 62 0c 04 04 00 -63 32 00 00 00 32 00 42 72 61 73 73 20 20 20 20 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Brass 4 -** Controls: MW (LFO pitch) -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -0f 0a 00 05 0d 00 00 49 04 03 15 1f 00 0a 0f 00 00 5c 04 03 15 1f 00 0a 0f -00 00 5c 04 03 15 1f 00 0a 0f 00 00 5c 04 03 3d 23 14 0a 00 62 0c 04 04 00 -63 32 00 00 00 32 00 42 72 61 73 73 20 20 20 20 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Brass 5 -** Controls: MW (LFO pitch) -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -11 0e 00 05 0e 0a 00 4a 04 03 11 11 00 09 0c 00 00 46 04 03 1f 10 00 0f 05 -20 00 34 0b 0b 15 1f 00 0b 0f 00 00 60 04 0b 3a 23 1b 0a 00 62 0c 04 04 00 -63 32 00 00 00 32 00 42 72 61 73 73 20 20 20 20 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Brass 6 -** Controls: MW (LFO pitch) -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -1f 13 00 03 0b 00 00 55 04 03 1f 15 11 03 0c 1e 00 4f 10 03 1f 1f 00 03 0f -1e 00 46 04 03 1f 1f 00 05 0f 00 00 5a 04 03 3b 23 0f 10 00 62 0c 04 04 00 -63 32 00 00 00 32 00 42 72 61 73 73 20 20 20 20 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Brass 7 -** Controls: MW (LFO pitch) -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -1f 11 13 0c 0b 0f 00 48 22 03 1f 0b 00 03 0f 1e 00 39 04 03 1f 11 00 03 0e -1e 00 5d 04 03 19 1f 00 05 0f 00 00 5a 08 03 39 23 0f 10 00 62 0c 04 04 00 -63 32 00 00 00 32 00 42 72 61 73 73 20 20 20 20 37 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Brass 5th -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 06 06 08 0b 21 02 55 0a 02 13 05 06 08 0b 0a 04 4b 08 06 13 15 06 08 0b -0a 06 63 0a 02 13 05 06 08 0b 0a 05 63 08 06 2c 26 21 00 47 12 0c 04 05 00 -28 32 00 00 00 32 00 42 72 61 73 73 20 35 74 68 20 63 63 63 32 32 32 00 00 -00 20 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Brass 5th -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -10 06 06 08 0b 21 02 55 0a 02 13 05 06 08 0b 0a 02 4b 08 06 13 15 06 08 0b -0a 01 63 0a 02 13 05 06 08 0b 0a 00 63 08 06 2c 26 21 00 47 12 0c 04 05 00 -28 32 00 00 00 32 00 42 72 61 73 73 20 35 74 68 20 63 63 63 32 32 32 00 00 -00 20 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Brass....1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -08 07 06 08 0c 27 02 58 04 06 08 09 05 09 0e 47 03 60 04 04 14 08 06 08 0d -00 05 5a 04 02 13 07 06 08 0c 00 04 5f 04 00 3c 1f 2d 01 00 42 18 04 05 00 -28 32 00 00 00 32 00 42 72 61 73 73 2e 2e 2e 2e 31 63 63 63 32 32 32 00 20 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Brass....1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -08 07 06 08 0c 27 02 58 04 06 08 09 05 09 0e 47 01 60 04 04 15 08 06 08 0d -00 00 5a 04 02 15 07 06 08 0c 00 00 5f 04 00 3c 1f 2d 01 00 42 18 04 05 00 -28 32 00 00 00 32 00 42 72 61 73 73 2e 2e 2e 2e 31 63 63 63 32 32 32 00 20 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Brass....2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -14 1b 06 07 09 27 01 51 04 04 0e 0a 04 0a 00 00 05 4b 04 0c 0f 0a 06 07 0c -00 06 4e 04 05 11 07 06 08 0c 00 06 63 04 0d 3b 23 2d 05 00 22 18 04 05 00 -28 32 00 00 00 32 00 42 72 61 73 73 2e 2e 2e 2e 32 63 63 63 32 32 32 00 50 -00 30 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Brass....2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -14 1b 06 07 09 27 01 51 04 04 0e 0a 04 0a 00 00 01 4b 04 0c 0f 0a 06 07 0c -00 02 4e 00 05 11 07 06 08 0c 00 01 63 04 0d 3b 23 2d 05 00 22 18 04 05 00 -28 32 00 00 00 32 00 42 72 61 73 73 2e 2e 2e 2e 32 63 63 63 32 32 32 00 50 -00 30 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Brass....3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 1b 06 07 09 27 05 59 04 05 0c 0a 04 0a 00 00 05 43 04 08 0f 0a 06 07 0c -00 05 49 04 04 10 07 06 08 0c 00 05 63 04 0c 33 23 0c 0f 00 32 18 04 05 00 -28 32 00 00 00 32 00 42 72 61 73 73 2e 2e 2e 2e 33 63 63 63 32 32 32 00 20 -00 40 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Brass....3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -15 1b 06 07 09 27 02 59 04 05 0c 0a 04 0a 00 00 01 43 04 08 0f 0a 06 07 0c -00 01 49 04 04 10 07 06 08 0c 00 01 63 04 0c 33 23 0c 0f 00 32 18 04 05 00 -28 32 00 00 00 32 00 42 72 61 73 73 2e 2e 2e 2e 33 63 63 63 32 32 32 00 20 -00 40 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BrassChime -** Controls: KV, MW (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -11 04 04 09 0f 00 03 50 04 0b 1f 06 06 05 0d 00 45 52 19 03 14 07 05 06 0e -00 44 61 04 0b 1f 06 06 06 0d 00 46 53 0d 02 64 24 23 00 2b 06 18 04 04 00 -63 01 63 00 00 32 00 42 72 61 73 73 43 68 69 6d 65 63 63 63 32 32 32 00 10 -00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BrassChime -** Controls: KV, MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -11 04 04 09 0f 00 01 50 04 0b 1f 06 06 05 0d 00 41 52 19 03 14 07 05 06 0e -00 40 61 04 0b 1f 06 06 06 0d 00 41 53 0d 02 64 24 23 00 2b 06 18 04 04 00 -63 01 63 00 00 32 00 42 72 61 73 73 43 68 69 6d 65 63 63 63 32 32 32 00 10 -00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BrassEns.1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0c 11 03 06 0f 00 02 47 00 0e 15 13 05 07 0f 3c 03 44 00 00 10 1f 04 06 0f -00 04 61 00 02 0e 0c 07 06 0e 14 04 60 00 02 5c 0e 00 0d 00 12 18 04 04 00 -63 32 00 00 00 32 00 42 72 61 73 73 45 6e 73 2e 31 63 63 63 32 32 32 00 00 -00 30 00 20 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BrassEns.1 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 11 03 06 0f 00 00 47 00 0e 15 13 05 07 0f 3c 00 44 00 00 13 1f 04 06 0f -00 00 61 00 02 14 0c 07 06 0e 14 00 60 00 02 5c 0e 00 0d 00 12 18 04 04 00 -63 32 00 00 00 32 00 42 72 61 73 73 45 6e 73 2e 31 63 63 63 32 32 32 00 00 -00 30 00 20 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BrassEns.2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 11 03 06 0f 00 01 4f 04 0d 0e 13 04 07 0f 2b 01 60 04 01 13 1f 04 06 0f -00 45 62 04 01 14 0c 07 06 0e 14 04 63 04 05 35 26 00 00 26 16 18 04 04 00 -63 32 00 00 00 32 00 42 72 61 73 73 45 6e 73 2e 32 63 63 63 32 32 32 00 30 -00 60 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BrassEns.2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 11 03 06 0f 00 01 4f 04 0d 0e 13 04 07 0f 2b 01 60 04 01 13 1f 04 06 0f -00 40 62 04 01 14 0c 07 06 0e 14 01 63 04 05 35 26 00 00 26 16 18 04 04 00 -63 32 00 00 00 32 00 42 72 61 73 73 45 6e 73 2e 32 63 63 63 32 32 32 00 30 -00 60 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BrassEns.3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0e 05 03 04 0f 00 01 57 04 0a 0e 09 04 06 0f 00 02 45 04 00 0c 1f 04 06 0f -00 04 5c 04 05 0f 0c 04 05 0e 00 05 60 04 05 64 20 33 0b 00 22 18 04 04 00 -63 32 00 00 00 32 00 42 72 61 73 73 45 6e 73 2e 33 63 63 63 32 32 32 00 30 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BrassEns.3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -13 05 03 04 0f 00 01 52 00 0b 16 09 04 06 0f 00 01 45 04 03 10 1f 04 06 0f -00 00 5c 00 03 13 0c 04 05 0e 00 00 60 00 03 64 20 33 0b 00 22 18 04 04 00 -63 32 00 00 00 32 00 42 72 61 73 73 45 6e 73 2e 33 63 63 63 32 32 32 00 40 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BrassEns.4 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0f 03 09 0c 00 02 3a 04 09 14 08 04 09 0f 00 02 41 04 02 0c 0c 09 07 0f -00 05 3f 04 05 11 05 04 07 0e 00 04 63 04 04 63 20 33 0b 00 32 18 02 04 00 -63 32 00 00 00 32 00 42 72 61 73 73 45 6e 73 2e 34 63 63 63 32 32 32 00 00 -00 20 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BrassEns.4 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0f 03 09 0c 00 02 3a 04 09 1f 08 04 09 0f 00 02 41 04 02 1f 0c 09 07 0f -00 01 3f 04 05 0f 05 04 07 0e 00 00 63 04 04 63 20 33 0b 00 32 18 02 04 00 -63 32 00 00 00 32 00 42 72 61 73 73 45 6e 73 2e 34 63 63 63 32 32 32 00 00 -00 20 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BrassSynth -** Controls: KV, MW (LFO pitch) -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -0d 0a 00 06 0d 00 39 53 04 0c 09 05 00 05 0d 00 39 59 00 08 0e 16 00 07 0f -00 01 62 04 0e 0e 16 00 06 0f 00 01 63 00 0a 3c 20 06 03 00 52 18 02 04 00 -28 32 00 00 00 32 00 42 72 61 73 73 53 79 6e 74 68 63 63 63 32 32 32 00 00 -00 30 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Brass.Vibe -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 1f 06 07 09 00 02 54 04 06 10 0a 05 0a 00 00 03 52 04 03 0f 0a 06 07 0c -5a 06 4d 04 03 11 07 06 08 0c 00 06 60 04 00 73 23 00 19 00 32 18 02 05 00 -63 32 00 32 00 32 00 42 72 61 73 73 2e 56 69 62 65 63 63 63 32 32 32 00 10 -00 20 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Brass.Vibe -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -15 1f 06 07 09 00 02 54 04 06 10 0a 05 0a 00 00 02 52 04 03 0f 0a 06 07 0c -5a 00 4d 04 03 11 07 06 08 0c 00 01 60 04 00 73 23 00 19 00 32 18 02 05 00 -63 32 00 32 00 32 00 42 72 61 73 73 2e 56 69 62 65 63 63 63 32 32 32 00 10 -00 20 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Brassy * -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0e 08 00 03 0f 19 01 51 04 06 0d 08 00 04 0f 27 00 4d 04 00 12 1f 00 06 0f -09 00 63 04 06 10 0c 00 05 0f 0d 00 63 04 03 34 17 00 0b 00 52 05 02 04 00 -28 1e 00 00 00 32 00 42 72 61 73 73 79 20 20 20 2a 63 63 63 32 32 32 00 08 -00 08 00 08 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Chariots -** Controls: KV, MW (LFO amplitude) -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -0e 0e 00 02 0f 00 40 4e 04 00 0d 0e 00 02 0f 00 00 32 00 06 0f 0c 00 04 0f -00 42 63 08 08 0d 0e 00 04 0f 00 02 63 04 0e 3c 1d 00 00 08 0d 18 02 04 00 -28 32 0d 00 00 32 00 43 68 61 72 69 6f 74 73 20 20 63 63 63 32 32 32 00 20 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ChorusBras -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank B, voice 4 -0e 08 00 06 0d 00 02 4e 05 06 0e 08 00 09 0d 00 02 57 04 00 0e 12 00 08 0f -00 02 63 05 06 0e 12 00 08 0f 00 02 63 04 00 3c 1c 06 06 00 52 05 04 04 00 -63 32 00 00 00 32 00 43 68 6f 72 75 73 42 72 61 73 63 63 63 32 32 32 00 01 -00 38 00 01 00 38 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ensemble * -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 0c 00 02 0f 00 00 46 0a 00 0d 14 00 04 0f 2f 00 4e 09 06 0b 0b 00 05 0f -00 02 63 09 06 0d 0b 00 05 0f 00 02 63 13 04 3c 1e 2d 0c 00 42 05 02 04 00 -28 63 00 00 00 32 00 45 6e 73 65 6d 62 6c 65 20 2a 63 63 63 32 32 32 00 30 -00 12 00 02 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ensemble 1 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank C, voice 3 -14 06 00 04 0a 14 02 3d 1c 06 0b 04 02 04 07 14 01 52 13 00 0a 07 02 05 0a -00 01 63 09 06 0f 06 01 05 0b 00 01 5e 0a 00 3c 21 08 0c 00 52 05 02 04 00 -63 32 00 00 00 32 00 45 6e 73 65 6d 62 6c 65 20 31 63 63 63 32 32 32 00 40 -00 30 00 22 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ensemble 1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -14 06 00 04 0a 14 02 3d 1c 06 0b 04 02 04 07 14 01 52 13 00 0a 07 02 05 0d -00 01 63 09 06 0f 06 01 05 0b 00 01 5e 0a 00 3c 21 08 0c 00 52 05 02 04 00 -63 32 00 00 00 32 00 45 6e 73 65 6d 62 6c 65 20 31 63 63 63 32 32 32 00 40 -00 30 00 22 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ensemble 2 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank C, voice 4 -14 06 00 04 08 14 02 3d 1c 06 0b 04 02 04 08 14 01 50 13 00 0c 07 02 05 0b -00 01 63 09 06 11 06 01 05 0b 00 01 5e 0a 00 3c 21 08 0c 00 52 05 02 04 00 -63 32 00 00 00 32 00 45 6e 73 65 6d 62 6c 65 20 32 63 63 63 32 32 32 00 50 -00 30 00 42 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Full Brass -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank B, voice 2 -0f 1f 08 09 0f 00 03 4f 04 05 0f 1f 09 09 0f 00 02 63 04 03 10 1f 00 08 0f -00 02 63 04 05 11 1f 00 08 0f 00 02 63 04 06 3d 1d 0f 08 00 52 0c 04 04 00 -63 32 00 00 00 32 00 46 75 6c 6c 20 42 72 61 73 73 63 63 63 32 32 32 00 00 -00 30 00 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hard Brass -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -14 1f 00 0a 0f 00 00 47 04 03 1f 1f 00 0f 0f 00 00 3a 04 03 1f 1f 00 0f 0f -00 00 34 04 03 19 1f 00 0a 0f 00 00 63 04 03 3a 23 00 00 00 62 18 07 04 00 -63 63 00 00 00 32 00 48 61 72 64 20 42 72 61 73 73 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Horn -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank C, voice 14 -0a 07 00 09 0e 0a 01 4d 00 0b 10 08 00 0a 0a 1c 02 43 00 0b 10 0f 00 0a 05 -09 03 40 06 0b 0f 18 00 0a 0f 00 02 63 00 0b 3a 1e 09 02 00 62 18 02 04 00 -28 13 00 00 00 32 00 48 6f 72 6e 20 20 20 20 20 20 63 63 63 32 32 32 00 00 -00 20 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Horn -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0d 07 00 09 0e 0d 01 4d 00 0b 10 08 00 0a 0a 1c 02 43 00 0b 10 0f 00 0a 05 -09 03 40 06 0b 0f 18 00 0a 0f 00 02 63 00 0b 3a 1e 09 02 00 62 18 02 04 00 -28 13 00 00 00 32 00 48 6f 72 6e 20 20 20 20 20 20 63 63 63 32 32 32 00 00 -00 20 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Horn -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -10 09 00 09 0d 0a 00 41 04 03 0f 0b 00 08 0e 00 00 3f 04 03 1f 11 00 0f 03 -0a 00 31 18 0b 12 1f 00 0a 0f 00 00 5a 04 03 3a 23 00 00 00 62 0c 04 04 00 -63 32 00 00 00 32 00 48 6f 72 6e 20 20 20 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Horn.....1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0d 1f 0b 07 0f 00 02 55 04 04 0e 1f 00 08 0f 00 03 51 04 06 10 1f 00 09 0f -00 05 5a 08 04 0f 1f 00 08 0f 00 05 5b 04 06 3d 23 00 00 00 62 0c 02 04 00 -63 63 00 00 00 32 00 48 6f 72 6e 2e 2e 2e 2e 2e 31 63 63 63 32 32 32 00 20 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Horn.....1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -0d 1f 0b 07 0f 00 02 55 04 04 0e 1f 00 08 0f 00 01 51 04 06 10 1f 00 09 0f -00 01 5a 08 04 0f 1f 00 08 0f 00 00 5b 04 06 3d 23 00 00 00 62 0c 02 04 00 -63 63 00 00 00 32 00 48 6f 72 6e 2e 2e 2e 2e 2e 31 63 63 63 32 32 32 00 20 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Horn.....2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 0a 06 07 09 00 01 50 08 06 0f 08 06 08 0a 00 05 49 04 03 16 10 06 0a 00 -00 05 46 1a 14 10 07 06 09 0c 00 06 60 04 01 22 23 00 04 00 32 0c 02 04 00 -63 63 00 00 00 32 00 48 6f 72 6e 2e 2e 2e 2e 2e 32 63 63 63 32 32 32 00 30 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Horn.....2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 0a 06 07 09 00 01 50 08 06 0f 08 06 08 0a 00 01 49 04 03 16 10 06 0a 00 -00 02 46 1a 14 10 07 06 09 0c 00 01 60 04 01 22 23 00 04 00 32 0c 02 04 00 -63 63 00 00 00 32 00 48 6f 72 6e 2e 2e 2e 2e 2e 32 63 63 63 32 32 32 00 30 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Horn.....3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0b 1f 06 07 0f 00 01 4e 04 05 0f 09 05 07 05 42 06 54 04 1a 0f 09 06 07 04 -00 04 49 04 14 10 06 04 08 0b 00 06 60 04 02 2b 23 00 08 00 42 0c 02 04 00 -63 63 00 00 00 32 00 48 6f 72 6e 2e 2e 2e 2e 2e 33 63 63 63 32 32 32 00 10 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Horn.....3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0b 1f 06 07 0f 00 01 4e 04 05 0f 09 05 07 05 42 01 54 04 1a 0f 09 06 07 04 -00 00 49 04 14 10 06 04 08 0b 00 01 60 04 02 2b 23 00 08 00 42 0c 02 04 00 -63 63 00 00 00 32 00 48 6f 72 6e 2e 2e 2e 2e 2e 33 63 63 63 32 32 32 00 10 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Horn.....4 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 07 03 08 0c 00 03 51 04 06 10 0a 04 0a 0c 00 04 63 04 04 0f 0a 03 0a 0f -00 04 63 04 02 12 16 02 0a 0b 00 06 61 04 04 2d 20 13 09 00 32 0c 02 04 00 -63 63 00 00 00 32 00 48 6f 72 6e 2e 2e 2e 2e 2e 34 63 63 63 32 32 32 00 50 -00 10 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Horn.....4 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -12 07 03 08 0c 00 03 51 04 06 10 0a 04 0a 0c 00 00 63 04 04 0f 0a 03 0a 0f -00 01 63 04 02 12 16 02 0a 0b 00 00 61 04 04 2d 20 13 09 00 32 0c 02 04 00 -63 63 00 00 00 32 00 48 6f 72 6e 2e 2e 2e 2e 2e 34 63 63 63 32 32 32 00 50 -00 10 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Horn.....5 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 07 08 0a 0f 00 04 49 04 01 11 09 08 09 0d 00 03 53 04 0d 15 04 01 0c 0f -1e 06 3c 04 01 11 06 05 09 0f 00 05 5a 03 05 63 23 00 00 00 32 11 02 04 00 -63 63 00 00 00 32 00 48 6f 72 6e 2e 2e 2e 2e 2e 35 63 63 63 32 32 32 00 08 -00 38 00 08 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Horn.....5 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -12 07 08 0a 0f 00 02 49 04 01 11 09 08 09 0d 00 01 53 04 0d 15 04 01 0c 0f -1e 00 3c 04 01 11 06 05 09 0f 00 00 5a 03 05 63 23 00 00 00 32 11 02 04 00 -63 63 00 00 00 32 00 48 6f 72 6e 2e 2e 2e 2e 2e 35 63 63 63 32 32 32 00 08 -00 38 00 08 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Horn.....6 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 07 02 0a 0f 00 02 4f 08 06 11 08 06 09 0d 00 04 63 08 0c 15 04 01 0c 0f -1e 06 57 0d 02 10 06 05 09 0f 00 05 63 04 04 75 23 00 08 00 42 0c 02 04 00 -63 63 00 00 00 32 00 48 6f 72 6e 2e 2e 2e 2e 2e 36 63 63 63 32 32 32 00 00 -00 30 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Horn.....6 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -12 07 02 0a 0f 00 02 4f 08 06 11 08 06 09 0d 00 00 63 08 0c 15 04 01 0c 0f -1e 00 57 0d 02 10 06 05 09 0f 00 00 63 04 04 75 23 00 08 00 42 0c 02 04 00 -63 63 00 00 00 32 00 48 6f 72 6e 2e 2e 2e 2e 2e 36 63 63 63 32 32 32 00 00 -00 30 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Horn.....7 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 0a 06 07 09 00 01 4e 08 06 13 08 06 08 0a 00 04 47 04 03 0f 03 06 07 09 -55 06 3e 10 04 15 07 06 09 0c 00 05 62 04 01 2b 23 00 00 00 32 0c 02 04 00 -63 63 00 00 00 32 00 48 6f 72 6e 2e 2e 2e 2e 2e 37 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Horn.....7 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -10 0a 06 07 09 00 01 4e 08 06 13 08 06 08 0a 00 00 47 04 03 0f 03 06 07 09 -55 01 3e 10 04 15 07 06 09 0c 00 01 62 04 01 2b 23 00 00 00 32 0c 02 04 00 -63 63 00 00 00 32 00 48 6f 72 6e 2e 2e 2e 2e 2e 37 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Horns -** Controls: KV -** Source: DX100 GLIB patch (Michael Kesti and others) -0e 1f 08 07 0f 00 00 46 04 03 0e 1f 04 08 0f 00 07 4b 04 06 10 1f 05 09 0f -00 00 56 04 03 0f 1f 13 08 0f 00 00 46 04 06 3d 23 00 00 00 62 0c 02 04 00 -63 63 00 00 00 32 00 48 6f 72 6e 73 20 20 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Horns -** Controls: KV -** Source: DX100 GLIB patch (Michael Kesti and others) -1f 08 08 07 08 00 03 52 04 03 1f 0a 04 08 0f 00 03 48 04 06 1f 10 05 09 0f -00 04 5b 08 03 1f 05 09 08 0f 00 04 63 08 03 3d 23 00 00 00 62 0c 02 04 00 -63 63 00 00 00 32 00 48 6f 72 6e 73 20 20 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Horns -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -0d 1f 0b 07 0f 00 00 46 04 03 0e 1f 00 08 0f 00 00 48 04 06 10 1f 00 09 0f -00 00 5b 04 03 0f 1f 00 08 0f 00 00 5b 04 06 3d 23 00 00 00 62 0c 02 04 00 -63 63 00 00 00 32 00 48 6f 72 6e 73 20 20 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Horns BC -** Controls: KV, BC (EG amplitude) -** Source: Yamaha TX81Z factory preset, bank B, voice 8 -0e 09 00 07 0e 00 22 51 04 03 0f 1f 00 08 0f 00 22 52 05 06 11 1f 00 09 0f -00 23 63 04 00 10 1f 00 09 0f 00 2a 60 04 00 3d 1d 00 00 00 52 05 04 04 00 -63 32 00 00 00 32 63 48 6f 72 6e 73 20 42 43 20 20 63 63 63 32 32 32 00 08 -00 01 00 08 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: JonesBrass -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -0b 03 01 07 0d 1f 00 49 04 06 0b 03 01 07 0d 00 00 5d 04 0e 11 01 01 05 0d -00 00 63 04 10 16 04 01 05 0d 00 00 3c 04 10 3c 23 00 00 00 62 0c 02 04 00 -63 32 00 32 00 32 00 4a 6f 6e 65 73 42 72 61 73 73 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: LightBrass -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 04 01 06 0d 00 00 3b 04 04 1d 12 13 06 0c 00 03 41 08 03 1d 0a 09 06 0c -5a 05 42 04 03 10 03 01 09 0f 00 05 60 04 03 02 1c 0f 10 00 42 18 02 05 00 -63 32 00 32 00 32 00 4c 69 67 68 74 42 72 61 73 73 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: LightBrass -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -10 04 01 06 0d 00 00 3b 04 04 1d 12 13 06 0c 00 00 41 08 03 1d 0a 09 06 0c -5a 00 42 04 03 10 03 01 09 0f 00 01 60 04 03 02 1c 0f 10 00 42 18 02 05 00 -63 32 00 32 00 32 00 4c 69 67 68 74 42 72 61 73 73 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - ---Bank 2 - -** Name: MelloBrass -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0e 11 02 06 0d 00 02 53 04 00 0e 07 02 07 0c 00 05 5a 04 06 0f 0f 01 08 0f -5a 06 63 04 00 10 12 00 07 0f 00 06 5f 04 05 34 1c 0f 0b 00 42 18 02 05 00 -63 32 00 32 00 32 00 4d 65 6c 6c 6f 42 72 61 73 73 63 63 63 32 32 32 00 00 -00 20 00 00 00 20 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MelloBrass -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0e 11 02 06 0d 00 02 53 04 00 0e 07 02 07 0c 00 02 5a 04 06 0f 0f 01 08 0f -5a 01 63 04 00 10 12 00 07 0f 00 01 5f 04 05 34 1c 0f 0b 00 42 18 02 05 00 -63 32 00 32 00 32 00 4d 65 6c 6c 6f 42 72 61 73 73 63 63 63 32 32 32 00 00 -00 20 00 00 00 20 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MufflBrass -** Controls: KV, MW (LFO pitch) -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -16 0f 00 09 0d 00 02 52 04 0c 12 0a 00 08 0d 00 02 47 00 08 1a 1f 00 0a 0f -00 01 63 04 0e 17 1f 00 09 0f 00 01 63 00 0a 3c 20 06 03 00 52 18 02 04 00 -28 32 00 00 00 32 00 4d 75 66 66 6c 42 72 61 73 73 63 63 63 32 32 32 00 00 -00 30 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ornt Brass -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 09 09 07 0d 3f 03 4b 08 0b 12 09 09 07 0d 0d 04 52 04 0b 0f 09 09 07 0d -63 05 42 04 13 10 09 09 07 0d 23 06 63 04 0b 7a 20 3e 06 00 22 0c 02 04 00 -63 63 00 00 00 32 00 4f 72 6e 74 20 42 72 61 73 73 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ornt Brass -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -15 09 09 07 0d 3f 00 4b 08 0b 12 09 09 07 0d 0d 00 52 04 0b 0f 09 09 07 0d -63 00 42 04 13 10 09 09 07 0d 23 00 63 04 0b 7a 20 3e 06 00 22 0c 02 04 00 -63 63 00 00 00 32 00 4f 72 6e 74 20 42 72 61 73 73 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PianoBrass -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 12 06 07 0f 0a 04 5d 04 0b 1b 06 06 07 08 00 06 56 04 0b 15 07 06 08 0f -00 05 5c 04 02 1b 06 06 07 08 00 05 63 04 0d 64 23 00 00 00 22 0c 02 04 00 -28 02 00 00 00 32 00 50 69 61 6e 6f 42 72 61 73 73 63 63 63 32 32 32 00 20 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PianoBrass -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -08 1f 00 05 0f 10 04 4e 04 06 1f 05 00 0f 0b 63 06 46 0d 1b 0a 1f 00 09 0f -63 03 63 04 1b 1f 06 04 06 0f 00 06 63 08 13 3c 23 34 03 00 62 0c 07 04 00 -63 32 63 32 00 32 00 50 69 61 6e 6f 42 72 61 73 73 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PianoBrass -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -18 12 06 07 0f 0a 01 5d 04 0b 1b 06 06 07 08 00 01 56 04 0b 15 07 06 08 0f -00 00 5c 04 02 1b 06 06 07 08 00 00 63 04 0d 64 23 00 00 00 22 0c 02 04 00 -28 02 00 00 00 32 00 50 69 61 6e 6f 42 72 61 73 73 63 63 63 32 32 32 00 20 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PianoBrass -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -08 1f 00 05 0f 10 01 4e 04 06 1f 05 00 0f 0b 63 02 46 0d 1b 0a 1f 00 09 0f -63 00 63 04 1b 1f 06 04 06 0f 00 00 63 08 13 3c 23 34 03 00 62 0c 07 04 00 -63 32 63 32 00 32 00 50 69 61 6e 6f 42 72 61 73 73 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Pianobrass -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -0b 03 01 07 0d 1f 00 48 04 0e 16 0c 08 04 0b 34 00 35 2a 16 11 01 01 05 0d -00 00 63 04 10 16 04 01 05 0d 00 00 63 04 10 3c 23 00 00 00 62 0c 02 04 00 -63 32 00 32 00 32 00 50 69 61 6e 6f 62 72 61 73 73 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: POWERBRASS -** Controls: MW (LFO pitch) -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -10 0f 00 03 0c 00 00 49 0a 06 1a 1f 00 03 0f 00 00 49 04 03 13 1f 00 05 0f -00 00 48 04 03 1b 1f 00 0b 0f 00 00 63 04 03 38 20 14 1f 00 52 0c 07 04 00 -63 63 00 00 00 32 00 50 4f 57 45 52 42 52 41 53 53 63 63 63 32 32 32 00 30 -00 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PowerBrass -** Controls: MW (LFO pitch) -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -10 0f 00 03 0c 00 00 49 0a 06 1a 1f 00 03 0f 00 00 49 04 03 13 1f 00 05 0f -00 00 48 04 03 1b 1f 00 0b 0f 00 00 63 04 03 38 20 14 1f 00 52 0c 07 04 00 -63 63 00 00 00 32 00 50 6f 77 65 72 42 72 61 73 73 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SplatBrass -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 1f 00 08 0f 63 02 5b 04 03 0c 0a 04 09 0a 00 05 54 04 0c 15 1f 00 0a 0b -4c 05 45 0d 03 14 07 03 09 0c 00 05 62 04 03 73 23 01 0d 00 32 18 04 05 00 -28 32 00 00 00 32 00 53 70 6c 61 74 42 72 61 73 73 63 63 63 32 32 32 00 40 -00 20 00 20 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SplatBrass -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 1f 00 08 0f 63 02 5b 04 03 0c 0a 04 09 0a 00 01 54 04 0c 15 1f 00 0a 0b -4c 01 45 0d 03 14 07 03 09 0c 00 01 62 04 03 73 23 01 0d 00 32 18 04 05 00 -28 32 00 00 00 32 00 53 70 6c 61 74 42 72 61 73 73 63 63 63 32 32 32 00 40 -00 20 00 20 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SpitBoneBC -** Controls: KV, MW (LFO pitch), BC (EG amplitude) -** Source: Yamaha TX81Z factory preset, bank B, voice 7 -0c 05 00 08 0e 00 2a 52 04 0b 10 1f 00 08 0f 00 1a 46 04 03 1f 0f 00 08 06 -23 23 48 0b 03 0f 1f 00 09 0f 00 2a 63 04 0c 3a 1f 19 07 00 52 0c 04 04 00 -63 32 00 00 00 32 63 53 70 69 74 42 6f 6e 65 42 43 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Brass 1 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank A, voice 3 -12 0a 00 09 0e 00 01 53 04 08 12 0b 00 09 0e 00 01 52 04 0e 18 1f 00 0b 0f -00 01 62 04 00 18 1f 00 0b 0f 00 01 62 04 06 3c 21 1e 04 00 62 18 02 04 00 -28 32 00 00 00 32 00 53 79 2e 42 72 61 73 73 20 31 63 5f 63 31 32 32 00 00 -00 30 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Brass 2 -** Controls: KV -** Source: Yamaha DX11 factory preset, bank A, voice 4 -12 0c 00 09 06 00 01 55 04 08 12 0c 00 09 06 00 01 5a 04 0e 18 1f 00 0b 0f -00 01 62 04 00 18 1f 00 0b 0f 00 01 62 04 06 2c 21 00 00 00 62 0c 02 04 00 -28 32 00 00 00 32 00 53 79 2e 42 72 61 73 73 20 32 63 63 63 32 32 32 00 30 -00 30 00 70 00 70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Brass 3 -** Controls: KV -** Source: Yamaha DX11 factory preset, bank A, voice 5 -0f 08 00 04 0e 07 01 52 04 0b 12 0a 00 07 0b 00 00 2d 04 0b 0f 0b 00 05 0b -00 00 4d 04 0b 11 1f 00 0a 0f 00 01 61 04 0b 3a 1f 00 00 00 62 0c 02 04 00 -28 32 00 00 00 32 00 53 79 2e 42 72 61 73 73 20 33 63 63 63 32 32 32 00 30 -00 60 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Brass 3 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 08 00 04 0e 07 01 52 04 0b 12 0d 00 07 0b 00 00 2d 04 0b 0f 0b 00 05 0b -00 00 4d 04 0b 11 1f 00 0a 0f 00 01 61 04 0b 3a 1f 00 00 00 62 0c 02 04 00 -28 32 00 00 00 32 00 53 79 2e 42 72 61 73 73 20 33 63 63 63 32 32 32 00 30 -00 60 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Brass 4 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank A, voice 6 -0f 0f 00 01 0e 00 01 4c 04 06 0f 0f 00 01 0e 00 02 4c 04 00 11 09 00 0a 0c -00 00 63 04 06 11 09 00 0a 0c 00 00 63 04 00 3c 1c 1c 0a 00 52 18 02 04 00 -63 32 00 00 00 32 00 53 79 2e 42 72 61 73 73 20 34 63 60 63 30 32 32 00 10 -00 10 00 30 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: TightBrass -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 06 03 09 0a 21 02 5b 04 0b 13 0e 09 0a 0a 00 04 53 08 0c 15 06 06 09 0b -0a 06 63 04 0b 15 06 08 09 0c 00 05 61 04 1b 2c 22 21 00 10 32 18 04 05 00 -28 32 00 00 00 32 00 54 69 67 68 74 42 72 61 73 73 63 63 63 32 32 32 00 20 -00 20 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: TightBrass -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -12 06 03 09 0a 21 02 5b 04 0b 13 0e 09 0a 0a 00 01 53 08 0c 15 06 06 09 0b -0a 01 63 04 0b 15 06 08 09 0c 00 00 61 04 1b 2c 22 21 00 10 32 18 04 05 00 -28 32 00 00 00 32 00 54 69 67 68 74 42 72 61 73 73 63 63 63 32 32 32 00 20 -00 20 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tpt.Sect.* -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -14 0e 00 09 0e 00 01 54 04 03 15 0f 00 0a 0c 00 00 5f 08 0e 19 11 00 0a 0f -00 00 63 04 01 17 0e 00 0a 0e 00 03 63 08 05 3c 23 00 00 00 52 0c 02 04 00 -28 63 00 00 00 32 00 54 70 74 2e 53 65 63 74 2e 2a 63 63 63 32 32 32 00 00 -00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tpt&Woodwd -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 02 05 0f 1b 42 4d 05 06 07 1f 02 05 0f 27 03 4f 04 00 11 1f 00 07 0f -00 01 63 05 0e 0a 1f 00 04 0f 0c 01 60 04 08 3c 1f 0e 1c 00 32 11 04 05 00 -28 32 00 00 00 32 00 54 70 74 26 57 6f 6f 64 77 64 63 63 63 32 32 32 00 31 -00 38 00 11 00 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: WindEns..1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0e 0d 03 09 0f 23 02 49 08 05 0f 10 06 07 09 00 02 41 0b 03 12 0c 05 08 0f -45 05 4c 04 02 0c 07 05 07 0b 00 03 5f 04 02 2b 1d 1e 35 00 12 18 02 04 00 -63 32 00 00 01 32 00 57 69 6e 64 45 6e 73 2e 2e 31 63 63 63 32 32 32 00 20 -00 20 00 00 00 10 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: WindEns..1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0e 0d 03 09 0f 23 02 49 08 05 0f 10 06 07 09 00 02 41 0b 03 12 0c 05 08 0f -45 01 4c 04 02 15 07 05 07 0b 00 00 5f 04 02 2b 1d 1e 35 00 12 18 02 04 00 -63 32 00 00 01 32 00 57 69 6e 64 45 6e 73 2e 2e 31 63 63 63 32 32 32 00 20 -00 20 00 00 00 10 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: WindEns..2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0d 03 09 0f 23 02 50 00 05 16 10 06 07 09 00 02 47 04 03 0d 0c 07 08 0f -45 04 4c 00 02 0d 07 05 07 0b 00 04 5f 04 02 2b 1d 1e 35 00 12 18 02 04 00 -63 32 00 00 01 32 00 57 69 6e 64 45 6e 73 2e 2e 32 63 63 63 32 32 32 00 10 -00 10 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: WindEns..2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0d 03 09 0f 23 02 50 00 05 1f 10 06 07 09 00 01 47 04 03 14 0c 07 08 0f -45 00 4c 00 02 0f 07 05 07 0b 00 00 5f 04 02 2b 1d 1e 35 00 12 18 02 04 00 -63 32 00 00 01 32 00 57 69 6e 64 45 6e 73 2e 2e 32 63 63 63 32 32 32 00 10 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Wood Wind -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank C, voice 18 -12 08 00 0a 0e 36 01 4c 08 08 1f 1f 00 07 0f 00 01 41 08 05 10 1f 00 0c 0f -1a 03 56 04 01 0e 1f 00 0b 0f 00 03 63 08 0e 3c 20 06 04 00 52 0c 02 04 00 -28 32 00 00 00 32 00 57 6f 6f 64 20 57 69 6e 64 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 61 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Wood Wind -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -12 08 00 0a 0e 36 01 4c 08 08 1f 1f 00 07 0f 00 01 41 08 05 10 1f 00 0c 0f -1a 03 56 04 01 0e 1f 00 0b 0f 00 03 63 08 0e 3c 20 06 04 00 52 0c 02 04 00 -28 32 00 00 00 32 00 57 6f 6f 64 20 57 69 6e 64 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: pianohorn -** Description: a horn sound -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: GLIB (Michael Kesti and others) -13 05 00 0e 0a 00 05 59 04 06 1f 09 00 0b 00 43 05 4d 04 13 1f 09 05 08 0e -00 05 59 08 03 1f 12 08 08 0a 00 05 62 04 03 3c 1c 1d 10 00 52 18 01 04 00 -63 32 00 32 00 32 00 70 69 61 6e 6f 68 6f 72 6e 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY Accordion - - -** Name: Accordion* -** Controls: BC (EG amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 04 03 0a 02 10 50 40 00 03 13 04 03 07 02 00 00 43 04 02 1f 04 03 07 02 -23 50 38 13 04 0f 04 03 0a 02 10 00 63 08 03 02 23 00 00 00 5a 18 02 04 00 -28 00 00 00 00 32 63 41 63 63 6f 72 64 69 6f 6e 2a 63 63 63 32 32 32 00 60 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Accordion -** Controls: KV -** Source: Yamaha DX11 factory preset, bank C, voice 32 -14 12 00 08 0f 00 02 54 04 08 1f 1f 00 08 0f 00 00 46 04 0e 0e 1f 00 08 0f -0e 00 53 0a 08 0e 1f 00 08 0f 06 02 5c 08 0e 1c 1c 0a 00 00 62 18 02 04 00 -28 32 00 00 00 32 00 41 63 63 6f 72 64 69 6f 6e 20 63 63 63 32 32 32 00 70 -00 10 00 10 00 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Accordion1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 05 03 07 0f 0a 02 3e 19 03 1f 04 00 05 0f 00 06 49 0d 00 12 05 03 0a 0d -63 06 63 08 04 0e 1f 00 0a 0f 00 06 62 04 06 2c 12 00 03 00 62 18 02 04 00 -28 02 00 00 00 32 00 41 63 63 6f 72 64 69 6f 6e 31 63 63 63 32 32 32 00 20 -00 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Accordion1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 05 03 07 0f 0a 01 3e 19 03 1f 04 00 05 0f 00 01 49 0d 00 12 05 03 0a 0d -63 01 63 08 04 0e 1f 00 0a 0f 00 01 62 04 06 2c 12 00 03 00 62 18 02 04 00 -28 02 00 00 00 32 00 41 63 63 6f 72 64 69 6f 6e 31 63 63 63 32 32 32 00 20 -00 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Accordion2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 06 00 05 0e 0a 01 41 0a 00 1f 04 00 05 0f 00 05 37 0d 00 1f 0b 00 0a 0f -00 05 36 08 06 0e 1f 00 0a 0f 00 06 5d 04 06 3a 12 00 03 00 62 18 02 04 00 -28 02 00 00 00 32 00 41 63 63 6f 72 64 69 6f 6e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Accordion2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -10 06 00 05 0e 0a 01 41 0a 00 1f 04 00 05 0f 00 00 37 0d 00 1f 0b 00 0a 0f -00 00 36 08 06 0e 1f 00 0a 0f 00 01 5d 04 06 3a 12 00 03 00 62 18 02 04 00 -28 02 00 00 00 32 00 41 63 63 6f 72 64 69 6f 6e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Accordion3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 06 00 05 0e 0a 03 3e 1c 00 1f 04 00 05 0f 00 04 37 0d 00 1f 0b 00 0a 0f -00 04 36 0d 06 0e 1f 00 0a 0f 00 06 5c 04 06 3a 12 00 03 00 62 18 02 04 00 -28 02 00 00 00 32 00 41 63 63 6f 72 64 69 6f 6e 33 63 63 63 32 32 32 00 00 -00 20 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Accordion3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -10 06 00 05 0e 0a 02 3e 1c 00 1f 04 00 05 0f 00 00 37 0d 00 1f 0b 00 0a 0f -00 00 36 0d 06 0e 1f 00 0a 0f 00 01 5c 04 06 3a 12 00 03 00 62 18 02 04 00 -28 02 00 00 00 32 00 41 63 63 6f 72 64 69 6f 6e 33 63 63 63 32 32 32 00 00 -00 20 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Accordion4 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 06 00 05 0e 0a 02 3e 0d 00 1f 04 00 05 0f 00 06 3d 08 00 1f 0b 00 0a 0f -00 05 36 08 06 0e 1f 00 0a 0f 00 06 5c 08 06 3a 12 00 03 00 62 18 02 04 00 -28 02 00 00 00 32 00 41 63 63 6f 72 64 69 6f 6e 34 63 63 63 32 32 32 00 10 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Accordion4 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -10 06 00 05 0e 0a 02 3e 0d 00 1f 04 00 05 0f 00 01 3d 08 00 1f 0b 00 0a 0f -00 00 36 08 06 0e 1f 00 0a 0f 00 01 5c 08 06 3a 12 00 03 00 62 18 02 04 00 -28 02 00 00 00 32 00 41 63 63 6f 72 64 69 6f 6e 34 63 63 63 32 32 32 00 10 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Squeezebox -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank A, voice 32 -10 06 00 05 0e 0a 01 4a 0a 00 1f 04 00 05 0f 00 01 49 0d 00 1f 0b 00 0a 0f -00 01 46 08 06 0e 1f 00 0a 0f 00 01 5a 04 06 39 19 00 03 00 52 18 02 04 00 -63 32 00 00 00 32 00 53 71 75 65 65 7a 65 62 6f 78 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY Bag Pipe - - -** Name: Bag Pipe -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 0a 04 02 0c 00 05 57 0a 03 17 0a 04 02 0d 00 05 4e 04 03 13 07 06 0a 0c -00 06 60 04 0b 13 07 06 0a 0f 00 06 63 0a 0b 24 26 3c 06 00 32 00 02 04 00 -63 32 00 32 00 32 00 20 42 61 67 20 50 69 70 65 20 63 63 63 32 32 32 00 00 -00 20 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bag Pipe -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -18 0a 04 02 0c 00 01 57 0a 03 17 0a 04 02 0d 00 00 4e 04 03 13 07 06 0a 0c -00 01 60 04 0b 13 07 06 0a 0f 00 01 63 0a 0b 24 26 3c 06 00 32 00 02 04 00 -63 32 00 32 00 32 00 20 42 61 67 20 50 69 70 65 20 63 63 63 32 32 32 00 00 -00 20 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY Bassoon - - -** Name: Bassoon -** Controls: KV, MW (LFO pitch), MW (LFO amplitude), BC (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank B, voice 13 -10 17 00 06 0f 00 41 44 00 03 19 1f 00 07 0f 35 42 4e 00 03 10 1f 00 01 0f -00 42 4b 04 03 0f 1f 00 09 0f 00 02 5b 08 03 38 1f 08 07 0a 5e 0c 02 04 00 -63 23 1e 32 00 32 00 42 61 73 73 6f 6f 6e 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bassoon..1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 00 03 0a 0d 47 05 50 00 03 12 0d 09 0a 0d 41 05 41 04 03 12 0d 09 0a 0d -43 04 62 08 03 12 0d 09 0a 0e 00 05 63 04 04 1c 25 29 00 00 12 0c 02 04 00 -63 32 00 32 00 32 00 42 61 73 73 6f 6f 6e 2e 2e 31 63 63 63 32 32 32 00 30 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bassoon..1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -12 00 03 0a 0d 47 01 50 00 03 12 0d 09 0a 0d 41 00 41 04 03 12 0d 09 0a 0d -43 00 62 08 03 12 0d 09 0a 0e 00 00 63 04 04 1c 25 29 00 00 12 0c 02 04 00 -63 32 00 32 00 32 00 42 61 73 73 6f 6f 6e 2e 2e 31 63 63 63 32 32 32 00 30 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bassoon..2 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -11 16 00 06 0f 00 02 38 04 03 18 1f 00 08 0f 47 05 53 00 03 11 1f 00 01 0f -00 04 45 04 03 0f 1f 00 08 0f 00 04 58 08 03 20 20 0c 06 00 52 0c 00 04 00 -63 32 00 32 00 32 00 42 61 73 73 6f 6f 6e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bassoon..2 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -11 16 00 06 0f 00 00 38 04 03 18 1f 00 08 0f 47 01 53 00 03 11 1f 00 01 0f -00 01 45 04 03 0f 1f 00 08 0f 00 00 58 08 03 20 20 0c 06 00 52 0c 00 04 00 -63 32 00 32 00 32 00 42 61 73 73 6f 6f 6e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bassoon..3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 18 06 04 0f 63 01 45 04 03 13 06 06 09 0f 47 03 63 0d 03 13 18 06 09 0f -00 45 63 04 03 12 18 06 09 0f 00 03 63 08 03 35 27 21 00 26 36 0c 00 04 00 -63 32 00 32 00 32 00 42 61 73 73 6f 6f 6e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 20 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bassoon..3 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -12 18 06 04 0f 63 01 45 04 03 13 06 06 09 0f 47 00 63 0d 03 13 18 06 09 0f -00 40 63 04 03 12 18 06 09 0f 00 00 63 08 03 35 27 21 00 26 26 0c 00 04 00 -63 32 00 32 00 32 00 42 61 73 73 6f 6f 6e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 20 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bassoon..4 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -13 06 03 0a 0e 63 01 4e 00 03 12 0c 06 0a 0d 47 03 49 08 0b 13 0d 09 0a 0e -00 45 63 08 03 12 0c 06 0a 0e 00 05 63 04 0b 1c 27 21 00 26 26 0c 00 04 00 -63 32 00 32 00 32 00 42 61 73 73 6f 6f 6e 2e 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bassoon..4 -** Source: from a library of patches collected by Duane Bowker, author unknown -13 06 03 0a 0e 63 00 4e 00 03 12 0c 06 0a 0d 47 00 49 08 0b 13 0d 09 0a 0e -00 40 63 08 03 12 0c 06 0a 0e 00 00 63 04 0b 1c 27 21 00 26 26 0c 00 04 00 -63 32 00 32 00 32 00 42 61 73 73 6f 6f 6e 2e 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BassoonSyn -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 08 05 08 07 19 02 59 00 0e 16 10 00 04 0f 46 05 55 00 03 0f 06 00 0b 0f -00 06 63 04 05 10 1f 00 0a 0f 00 05 60 0a 0b 0d 23 00 00 00 02 0c 07 04 01 -63 32 00 1e 0a 32 63 42 61 73 73 6f 6f 6e 53 79 6e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BassoonSyn -** Source: from a library of patches collected by Duane Bowker, author unknown -16 08 05 08 07 19 00 59 00 0e 16 10 00 04 0f 46 00 55 00 03 0f 06 00 0b 0f -00 00 63 04 05 10 1f 00 0a 0f 00 00 60 0a 0b 0d 23 00 00 00 02 0c 07 04 01 -63 32 00 1e 0a 32 63 42 61 73 73 6f 6f 6e 53 79 6e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY Clarinet - - -** Name: Bass Clair -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -13 12 00 09 0d 22 01 47 08 0c 1f 1b 06 04 0e 41 05 3f 08 03 1f 11 00 06 0c -5a 04 52 0d 03 10 1f 00 0b 0f 00 45 55 04 0c 02 25 00 00 29 16 00 02 05 00 -63 32 00 32 00 32 00 42 61 73 73 20 43 6c 61 69 72 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bass Clair -** Source: from a library of patches collected by Duane Bowker, author unknown -13 12 00 09 0d 22 00 47 08 0c 1f 1b 06 04 0e 41 00 3f 08 03 1f 11 00 06 0c -5a 00 52 0d 03 10 1f 00 0b 0f 00 40 55 04 0c 02 25 00 00 29 16 00 02 05 00 -63 32 00 32 00 32 00 42 61 73 73 20 43 6c 61 69 72 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clairnet.1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -13 12 00 09 0d 22 01 4c 08 0b 0c 14 00 05 0e 3c 05 3b 04 03 1f 11 00 06 0c -5a 45 4f 10 03 10 1f 00 0b 0f 00 05 55 04 03 3a 22 14 0a 18 5e 0c 02 04 00 -63 32 00 32 00 32 00 43 6c 61 69 72 6e 65 74 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clairnet.1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -13 12 00 09 0d 22 01 4c 08 0b 0c 14 00 05 0e 3c 00 3b 04 03 1f 11 00 06 0c -5a 40 4f 10 03 10 1f 00 0b 0f 00 00 55 04 03 3a 22 14 0a 18 5e 0c 02 04 00 -63 32 00 32 00 32 00 43 6c 61 69 72 6e 65 74 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clairnet.2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1e 0c 0f 07 0f 41 01 33 0d 05 1f 06 04 06 0f 5c 02 46 0d 04 10 0c 0c 07 0e -47 05 54 0d 03 0f 06 06 07 0e 28 05 63 08 0b 7c 24 27 00 00 12 00 0c 04 00 -63 32 32 00 00 32 00 43 6c 61 69 72 6e 65 74 2e 32 63 63 63 32 32 32 00 30 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clairnet.2 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0c 0f 07 0f 41 00 33 0d 05 1f 06 04 06 0f 5c 00 46 0d 04 1f 0c 0c 07 0e -47 00 54 0d 03 0f 06 06 07 0e 28 00 63 08 0b 7c 24 27 00 00 12 00 0c 04 00 -63 32 32 00 00 32 00 43 6c 61 69 72 6e 65 74 2e 32 63 63 63 32 32 32 00 30 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clairnet.3 -** Controls: KV, MW (LFO pitch), MW (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 06 06 0f 36 01 51 04 03 1f 1f 04 06 0f 34 44 50 04 03 12 1f 05 09 0f -0e 05 63 00 03 12 1f 05 07 0f 0e 45 63 00 0b 3e 24 02 1f 51 16 24 0c 04 00 -63 32 32 00 00 32 00 43 6c 61 69 72 6e 65 74 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clairnet.3 -** Controls: KV, MW (LFO pitch), MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 06 06 0f 36 01 51 04 03 1f 1f 04 06 0f 34 41 50 04 03 12 1f 05 09 0f -0e 00 63 00 03 12 1f 05 07 0f 0e 40 63 00 0b 3e 24 02 1f 51 16 24 0c 04 00 -63 32 32 00 00 32 00 43 6c 61 69 72 6e 65 74 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ClaraPiano -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 07 07 08 07 00 03 47 13 0e 0b 06 07 04 07 00 04 4a 08 0b 13 06 07 03 07 -00 04 36 0d 0b 1f 07 07 04 07 00 45 62 04 0b 20 14 00 00 10 66 18 01 04 00 -63 00 00 32 00 32 00 43 6c 61 72 61 50 69 61 6e 6f 63 63 63 32 32 32 00 30 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ClaraPiano -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 07 07 08 07 00 01 47 13 0e 0b 06 07 04 07 00 01 4a 08 0b 13 06 07 03 07 -00 00 36 0d 0b 1f 07 07 04 07 00 40 62 04 0b 20 14 00 00 10 66 18 01 04 00 -63 00 00 32 00 32 00 43 6c 61 72 61 50 69 61 6e 6f 63 63 63 32 32 32 00 30 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clarinet -** Controls: KV, MW (LFO pitch), MW (LFO amplitude) -** Source: Yamaha TX81Z factory preset, bank B, voice 15 -12 02 00 09 0e 09 02 51 08 0b 0e 14 00 05 0e 00 02 48 08 0b 13 11 00 06 0b -00 43 56 0a 0b 11 1f 00 09 0f 00 02 59 04 0b 02 1f 14 07 10 5e 0c 02 04 00 -63 32 1e 00 00 32 00 43 6c 61 72 69 6e 65 74 20 20 63 63 63 32 32 32 00 00 -00 20 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clarinet 1 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank C, voice 19 -15 0a 00 07 0e 2f 01 4b 08 03 15 0f 00 07 0a 1b 03 54 08 13 10 10 00 07 0e -1f 03 41 10 0b 11 1f 00 0a 0f 00 02 5c 04 0b 3a 1e 0a 03 05 6e 18 02 04 00 -28 1a 0f 00 00 32 00 43 6c 61 72 69 6e 65 74 20 31 63 63 63 32 32 32 00 00 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clarinet 1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -15 0d 00 07 0e 2f 01 4b 08 03 15 0f 00 07 0d 1b 03 54 08 13 10 10 00 07 0e -1f 03 41 10 0b 11 1f 00 0a 0f 00 02 5c 04 0b 3a 1e 0a 03 05 6e 18 02 04 00 -28 1a 0f 00 00 32 00 43 6c 61 72 69 6e 65 74 20 31 63 63 63 32 32 32 00 00 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clarinet 2 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank C, voice 20 -1f 1f 00 09 0f 0f 02 4b 08 03 0f 0f 00 09 0a 52 02 4c 08 13 12 12 00 09 0a -3a 01 4a 0a 0b 11 1f 00 0b 0f 00 02 5e 04 0b 22 1e 0a 03 05 6e 0c 02 04 00 -28 1a 0f 00 00 32 00 43 6c 61 72 69 6e 65 74 20 32 63 63 63 32 32 32 00 00 -00 50 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clarinet 2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 09 0f 0f 02 4b 08 03 0f 0f 00 09 0d 52 02 4c 08 13 12 12 00 09 0d -3a 01 4a 0a 0b 11 1f 00 0b 0f 00 02 5e 04 0b 22 1e 0a 03 05 6e 0c 02 04 00 -28 1a 0f 00 00 32 00 43 6c 61 72 69 6e 65 74 20 32 63 63 63 32 32 32 00 00 -00 50 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: HolowClair -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 0b 06 04 0d 22 02 47 04 0c 10 04 03 08 0d 3c 04 44 08 03 0f 10 03 07 0c -04 04 5a 00 03 10 04 03 09 0f 00 05 5a 04 0c 2c 26 07 03 00 42 0c 02 04 00 -63 32 00 32 00 32 00 48 6f 6c 6f 77 43 6c 61 69 72 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: HolowClair -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 0b 06 04 0d 22 00 47 04 0c 10 04 03 08 0d 3c 01 44 13 03 0f 10 03 07 0c -04 00 5a 00 03 10 04 03 09 0f 00 00 5a 04 0c 2c 26 07 03 00 42 0c 02 04 00 -63 32 00 32 00 32 00 48 6f 6c 6f 77 43 6c 61 69 72 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynClarnet -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -07 06 01 06 0f 21 02 37 08 15 0e 07 01 06 0c 1b 03 45 0d 0b 0e 05 01 06 0b -10 02 4d 16 18 0f 08 00 06 0d 00 01 63 04 13 39 1d 00 00 00 52 18 02 04 00 -63 32 00 16 00 32 00 53 79 6e 43 6c 61 72 6e 65 74 63 63 63 32 32 32 00 70 -00 30 00 10 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY EnglishHorn - - -** Name: English Hn -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -14 0a 04 02 0c 52 02 4b 08 03 1f 0a 04 02 0c 3a 26 47 08 03 10 0a 04 0a 0b -5c 1e 63 08 03 12 07 06 0a 0d 0a 75 60 0a 03 14 1d 3c 00 24 26 0c 02 04 00 -63 32 00 00 00 32 00 45 6e 67 6c 69 73 68 20 48 6e 63 63 63 32 32 32 00 20 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: English Hn -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -14 0a 04 02 0c 52 02 4b 08 03 1f 0a 04 02 0c 3a 22 47 08 03 10 0a 04 0a 0b -5c 18 63 08 03 12 07 06 0a 0d 0a 70 60 0a 03 14 1d 3c 00 24 26 0c 02 04 00 -63 32 00 00 00 32 00 45 6e 67 6c 69 73 68 20 48 6e 63 63 63 32 32 32 00 20 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY FlugelHorn - - -** Name: Flugel * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0e 0a 00 07 0d 00 01 4d 04 0e 10 0a 00 0a 00 0d 01 3d 04 0b 15 11 00 07 06 -05 02 4f 09 0b 0e 07 01 08 0d 00 02 63 04 0b 3a 23 00 00 00 32 18 02 04 00 -28 63 00 00 00 32 00 46 6c 75 67 65 6c 20 20 20 2a 63 63 63 32 32 32 00 00 -00 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: FlugelHorn -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0c 05 00 08 00 00 01 51 04 0b 0f 1f 00 08 0f 00 04 3c 04 04 1f 0f 00 08 00 -00 06 37 07 04 10 1f 00 09 0f 00 06 5d 04 0c 2a 23 19 04 00 52 18 02 04 00 -63 63 00 00 00 32 00 46 6c 75 67 65 6c 48 6f 72 6e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: FlugelHorn -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0c 05 00 08 00 00 01 51 04 0b 0f 1f 00 08 0f 00 00 3c 04 04 1f 0f 00 08 00 -00 00 37 07 04 10 1f 00 09 0f 00 01 5d 04 0c 2a 23 19 04 00 52 18 02 04 00 -63 63 00 00 00 32 00 46 6c 75 67 65 6c 48 6f 72 6e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Flugelhorn -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank B, voice 3 -0c 05 00 08 00 00 02 4a 04 0b 0f 1f 00 08 0f 00 02 3f 04 03 1f 0f 00 08 00 -23 03 44 0b 03 10 1f 00 09 0f 00 02 5e 04 0c 3a 1f 19 07 00 52 18 04 04 00 -63 32 00 00 00 32 00 46 6c 75 67 65 6c 68 6f 72 6e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - ---Bank 3 - -* SUBCATEGORY Flute - - -** Name: AdditivFlt -** Controls: KV, MW (LFO pitch), BC (LFO pitch), BC (EG amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -02 02 01 01 0f 00 52 3c 1a 01 05 06 01 02 0d 26 63 50 0a 00 04 05 01 01 0c -12 6b 4d 09 06 0d 1f 00 04 0f 00 42 63 04 0b 03 1e 24 07 00 5a 11 02 04 00 -63 15 00 08 00 32 0e 41 64 64 69 74 69 76 46 6c 74 63 63 63 32 32 32 00 16 -00 30 00 32 00 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Alto Flute -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 0f 05 06 0f 00 00 28 08 03 0c 13 07 07 0f 47 04 3c 04 03 16 1f 04 01 0f -00 45 3d 04 03 0d 12 04 09 0f 00 04 53 04 03 2b 23 29 07 36 16 0c 02 04 00 -63 32 00 32 00 32 00 41 6c 74 6f 20 46 6c 75 74 65 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Alto Flute -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 0f 05 06 0f 00 00 28 08 03 0c 13 07 07 0f 47 00 3c 04 03 16 1f 04 01 0f -00 40 3d 04 03 0d 12 04 09 0f 00 00 53 04 03 2b 23 29 07 36 16 0c 02 04 00 -63 32 00 32 00 32 00 41 6c 74 6f 20 46 6c 75 74 65 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Alto Flute -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -0f 0f 05 06 0f 00 00 28 08 03 0c 13 07 07 0f 47 00 3c 04 03 16 1f 04 00 0f -00 40 3d 04 03 0d 12 04 09 0f 00 00 53 04 03 2b 23 29 07 36 16 0c 02 04 00 -63 32 00 32 00 32 00 41 6c 74 6f 20 46 6c 75 74 65 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bass Flute -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 0f 05 06 0f 00 03 32 04 03 0c 13 07 07 0f 47 04 3c 00 03 16 1f 04 01 0f -00 44 41 00 03 0d 12 04 09 0f 00 05 5a 04 03 2b 23 29 07 36 16 0c 02 04 00 -63 32 00 32 00 32 00 42 61 73 73 20 46 6c 75 74 65 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bass Flute -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 0f 05 06 0f 00 00 32 04 03 0c 13 07 07 0f 47 00 3c 00 03 16 1f 04 01 0f -00 40 41 04 03 0d 12 04 09 0f 00 00 5a 00 03 2b 23 29 07 36 16 0c 02 04 00 -63 32 00 32 00 32 00 42 61 73 73 20 46 6c 75 74 65 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bass Flute -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -0f 0f 05 06 0f 00 00 32 04 03 0c 13 07 07 0f 47 00 3c 00 03 16 1f 04 00 0f -00 40 41 04 03 0d 12 04 09 0f 00 00 5a 00 03 2b 23 29 07 36 16 0c 02 04 00 -63 32 00 32 00 32 00 42 61 73 73 20 46 6c 75 74 65 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Flute * -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 03 02 05 0f 19 03 4f 04 0e 1d 12 12 07 0e 00 06 47 05 0c 1d 0a 09 06 0d -00 02 59 04 08 0f 03 01 09 0f 00 04 63 04 0a 02 1d 18 06 19 42 18 02 04 00 -28 31 00 29 12 32 00 46 6c 75 74 65 20 20 20 20 2a 63 63 63 32 32 32 00 00 -00 04 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Flute -** Controls: KV, MW (LFO pitch), MW (LFO amplitude), BC (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank B, voice 11 -10 16 00 06 07 00 42 49 07 03 19 1f 00 07 0f 0b 43 47 04 03 12 19 00 01 0f -0d 42 3a 04 03 0f 1f 00 09 0f 00 42 5a 04 0b 3b 1e 07 07 0d 5e 24 02 04 00 -63 1e 40 32 00 32 00 46 6c 75 74 65 20 20 20 20 20 63 63 63 32 32 32 00 30 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Flute 1 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank C, voice 22 -11 0e 03 05 09 0e 47 39 04 0e 0b 04 00 05 0a 18 42 4d 08 16 11 10 02 05 0a -1b 42 4c 0a 0b 0f 04 00 09 0f 00 43 5a 08 0b 3b 1f 08 20 02 4a 18 02 04 00 -28 63 00 00 00 32 00 46 6c 75 74 65 20 20 20 20 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Flute 1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -11 0e 03 05 09 0e 47 39 04 0e 0b 04 00 05 0d 18 42 4d 08 16 11 10 02 05 0a -1b 42 4c 0d 0b 0f 04 00 09 0f 00 43 5a 08 0b 3b 1f 08 20 02 4a 18 02 04 00 -28 63 00 00 00 32 00 46 6c 75 74 65 20 20 20 20 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Flute 2 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank C, voice 23 -13 04 00 05 0e 03 41 35 13 10 13 04 00 05 0e 03 42 48 09 16 0f 00 00 09 0f -00 43 63 0a 08 0f 00 00 09 0f 00 43 63 09 0e 3c 1f 08 20 02 4a 05 02 04 00 -28 32 00 00 00 32 00 46 6c 75 74 65 20 20 20 20 32 63 63 63 32 32 32 00 00 -00 02 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Flute....1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 19 00 01 0d 45 04 5d 08 03 16 15 12 01 0d 59 04 56 08 02 0b 00 03 09 0d -46 05 35 08 04 11 00 03 09 0d 14 04 5a 08 03 2b 1e 14 2d 63 32 18 02 04 00 -63 32 00 00 01 32 00 46 6c 75 74 65 2e 2e 2e 2e 31 63 63 63 32 32 32 00 20 -00 30 00 00 00 20 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Flute....1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 19 00 01 0d 45 02 5d 04 03 16 15 12 01 0d 59 02 56 08 02 12 00 03 09 0d -46 01 35 04 04 12 00 03 09 0d 14 00 5a 04 03 2b 23 14 07 63 32 18 02 04 00 -63 32 00 00 01 32 00 46 6c 75 74 65 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 30 00 00 00 10 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Flute....2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 19 00 01 0d 45 02 4b 04 03 12 15 12 01 0d 59 44 58 04 03 1f 00 03 09 0d -46 45 3c 04 03 0f 00 03 09 0d 14 04 5b 04 03 02 1c 16 2a 00 36 24 02 04 00 -63 32 00 00 01 32 00 46 6c 75 74 65 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 20 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Flute....2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 19 00 01 0d 45 01 4b 04 03 12 15 12 01 0d 59 41 58 04 03 1f 00 03 09 0d -46 42 3c 04 03 0f 00 03 09 0d 14 00 5b 04 03 02 1e 16 0c 00 36 24 02 04 00 -63 32 00 00 01 32 00 46 6c 75 74 65 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 20 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Flute....3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 19 00 01 0d 45 00 41 04 03 0f 0d 0f 09 0f 00 43 29 04 03 1f 00 03 09 0d -46 45 33 04 03 0d 00 03 09 0d 14 05 5b 04 03 0a 20 14 35 00 16 24 02 04 00 -63 32 00 00 01 32 00 46 6c 75 74 65 2e 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Flute....3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 19 00 01 0d 45 00 41 04 03 0f 0d 0f 09 0f 00 43 29 1f 03 1f 00 03 09 0d -46 41 33 04 03 0d 00 03 09 0d 14 00 5b 04 03 0a 20 14 0a 00 16 24 02 04 00 -63 32 00 00 01 32 00 46 6c 75 74 65 2e 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Flute....4 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 12 00 09 0d 22 03 3b 08 08 1f 12 00 05 0e 2e 45 34 04 00 19 13 00 05 06 -00 45 53 07 06 10 1a 00 08 0f 00 04 5d 04 0e 3a 1f 09 0f 1e 5e 18 04 04 00 -63 32 00 32 00 32 00 46 6c 75 74 65 2e 2e 2e 2e 34 63 63 63 32 32 32 00 10 -00 10 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Flute....4 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 12 00 09 0d 22 01 3b 0d 08 1f 12 00 05 0e 2e 42 34 0d 00 19 13 00 05 06 -00 41 53 12 06 10 1a 00 08 0f 00 00 5d 04 0e 3a 1f 09 0f 1e 5e 18 04 04 00 -63 32 00 32 00 32 00 46 6c 75 74 65 2e 2e 2e 2e 34 63 63 63 32 32 32 00 10 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Flute....5 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 17 00 06 00 00 05 36 09 03 15 1f 00 07 0f 47 05 45 08 03 10 1f 00 01 0f -00 04 3b 04 03 10 1f 00 09 0f 00 06 57 04 03 3b 23 04 07 00 52 18 02 04 00 -63 32 00 32 00 32 00 46 6c 75 74 65 2e 2e 2e 2e 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Flute....5 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -10 17 00 06 00 00 01 36 09 03 15 1f 00 07 0f 47 01 45 08 03 10 1f 00 01 0f -00 01 3b 04 03 10 1f 00 09 0f 00 00 57 04 03 3b 23 04 07 00 52 18 02 04 00 -63 32 00 32 00 32 00 46 6c 75 74 65 2e 2e 2e 2e 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Jazz Flute -** Controls: KV, MW (LFO pitch), MW (LFO amplitude) -** Source: Yamaha TX81Z factory preset, bank C, voice 24 -13 1e 00 09 0e 00 00 63 3f 0b 1f 14 00 05 0e 24 01 51 04 03 1f 14 00 0f 01 -00 41 4d 08 03 0f 1f 00 0b 0f 00 02 63 04 0b 3b 20 11 12 33 56 18 04 04 00 -63 37 0e 00 00 32 00 4a 61 7a 7a 20 46 6c 75 74 65 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Pan Floot -** Controls: KV, MW (LFO pitch), MW (LFO amplitude) -** Source: Yamaha TX81Z factory preset, bank B, voice 12 -1b 12 00 09 0d 14 02 42 0d 08 1f 14 00 05 0e 00 42 40 08 10 19 14 00 06 06 -00 03 50 12 06 10 1f 00 08 0f 00 02 5f 04 0e 02 1e 0d 08 1a 5e 18 04 04 00 -63 32 23 00 00 32 00 50 61 6e 20 46 6c 6f 6f 74 20 63 63 63 32 32 32 00 00 -00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Pan Flute1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 15 0f 08 0f 2e 05 46 14 02 1f 06 03 07 09 00 04 3e 0a 04 12 06 03 08 0d -00 06 3a 00 0a 10 06 02 09 0e 00 06 63 0a 06 7c 2e 0e 09 00 32 0c 02 04 00 -63 32 00 32 00 32 00 50 61 6e 20 46 6c 75 74 65 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Pan Flute1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -12 15 0f 08 0f 2e 00 46 14 02 1f 06 03 07 09 00 00 3e 0a 04 12 06 03 08 0d -00 01 3a 00 0a 10 06 02 09 0e 00 01 63 0a 06 7c 2e 0e 09 00 32 0c 02 04 00 -63 32 00 32 00 32 00 50 61 6e 20 46 6c 75 74 65 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Pan Flute2 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 12 00 09 0d 22 01 46 10 08 1f 14 00 05 0e 24 44 2e 08 00 19 14 00 06 07 -00 05 37 04 06 10 1f 00 08 0f 00 05 60 04 0e 3b 1f 0d 0e 1e 5e 18 04 04 00 -63 32 00 32 00 32 00 50 61 6e 20 46 6c 75 74 65 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Pan Flute2 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 12 00 09 0d 22 01 46 10 08 1f 14 00 05 0e 24 40 2e 08 00 19 14 00 06 07 -00 00 37 04 06 10 1f 00 08 0f 00 01 60 04 0e 3b 1f 0d 0e 1e 5e 18 04 04 00 -63 32 00 32 00 32 00 50 61 6e 20 46 6c 75 74 65 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Pan Flute2 -** Controls: MW (LFO pitch) -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -11 17 01 01 06 00 40 63 0d 03 11 17 01 01 06 00 00 35 04 03 10 04 04 0a 07 -11 00 3b 04 1b 10 04 04 0a 07 11 00 63 04 02 04 63 00 14 37 47 24 04 04 00 -28 32 00 00 00 32 00 50 61 6e 20 46 6c 75 74 65 32 63 63 63 32 32 32 00 30 -00 30 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PanFlute * -** Controls: KV, MW (LFO pitch), BC (voice pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 19 07 0f 0f 3b 00 37 18 00 1f 1f 11 0f 0f 00 03 5a 0d 03 0c 19 0a 08 0f -00 02 59 04 02 0f 1f 04 07 0f 00 01 63 04 03 04 63 00 0c 13 6f 18 02 04 00 -3b 1f 00 00 00 31 00 50 61 6e 46 6c 75 74 65 20 2a 63 63 63 32 32 32 00 02 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Perc Flute -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 12 12 09 0a 00 07 5a 10 05 1f 1f 1d 07 0f 47 05 48 04 04 15 1f 00 0a 0f -00 46 63 04 03 13 15 15 09 0a 00 05 63 04 01 04 23 29 07 36 16 18 02 04 00 -63 32 00 32 00 32 00 50 65 72 63 20 46 6c 75 74 65 63 63 63 32 32 32 00 20 -00 40 00 20 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Perc Flute -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 12 12 09 0a 00 01 5a 10 05 1f 1f 1d 07 0f 47 00 48 04 04 15 1f 00 0a 0f -00 41 63 04 03 13 15 15 09 0a 00 00 63 04 01 04 23 29 07 36 16 18 02 04 00 -63 32 00 32 00 32 00 50 65 72 63 20 46 6c 75 74 65 63 63 63 32 32 32 00 00 -00 40 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PercFlute -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank B, voice 31 -1f 17 11 0a 0d 00 02 55 13 09 1f 19 00 01 0d 00 42 47 0a 00 1f 14 09 09 0b -00 02 5d 09 06 10 08 00 06 0e 00 42 63 04 0b 43 1c 04 0b 00 5a 05 04 04 00 -63 32 00 00 00 32 00 50 65 72 63 46 6c 75 74 65 20 63 63 63 32 32 32 00 00 -00 00 00 02 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Soft Flute -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 17 00 06 00 00 03 34 07 03 0f 1f 00 07 0f 47 03 3b 08 03 10 1f 00 01 0f -00 45 2c 04 03 0f 1f 00 09 0f 00 05 5e 08 03 2b 23 12 0a 35 16 18 02 04 00 -63 32 00 32 00 32 00 53 6f 66 74 20 46 6c 75 74 65 63 63 63 32 32 32 00 03 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Soft Flute -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -10 17 00 06 00 00 00 34 07 03 0f 1f 00 07 0f 47 00 3b 04 03 10 1f 00 01 0f -00 40 2c 04 03 0f 1f 00 09 0f 00 02 5e 08 03 2b 23 12 0a 35 16 18 02 04 00 -63 32 00 32 00 32 00 53 6f 66 74 20 46 6c 75 74 65 63 63 63 32 32 32 00 00 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Song Flute -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 12 15 01 0e 02 03 58 08 0b 15 1c 15 0a 0d 00 03 63 08 08 07 01 03 0a 0d -00 05 63 04 0b 12 01 03 0a 0d 00 06 63 04 0b 2e 21 00 05 00 42 18 02 04 00 -63 32 00 32 00 32 00 53 6f 6e 67 20 46 6c 75 74 65 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Song Flute -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -18 12 15 01 0e 02 00 58 08 0b 15 1c 15 0a 0d 00 00 63 08 08 07 01 03 0a 0d -00 00 63 04 0b 12 01 03 0a 0d 00 00 63 04 0b 2e 21 00 05 00 42 18 02 04 00 -63 32 00 32 00 32 00 53 6f 6e 67 20 46 6c 75 74 65 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Song Flute -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -18 12 15 00 0e 02 00 58 08 0b 15 1c 15 0a 0d 00 00 63 08 08 07 01 03 0a 0d -00 00 63 04 0b 12 01 03 0a 0d 00 00 63 04 0b 2e 21 00 05 00 42 18 02 04 00 -63 32 00 32 00 32 00 53 6f 6e 67 20 46 6c 75 74 65 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthFlute -** Controls: KV, MW (LFO pitch) -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -12 18 01 02 0b 16 03 58 21 03 12 18 00 02 0d 00 02 4b 10 13 0d 0e 04 04 07 -00 04 63 16 13 0d 18 03 04 0e 00 01 5e 04 13 14 63 00 0c 00 33 18 02 04 00 -28 32 00 00 00 32 00 53 79 6e 74 68 46 6c 75 74 65 63 63 63 32 32 32 00 40 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY FrenchHorn - - -** Name: Fr.Horn * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0c 08 03 04 0f 00 02 54 00 00 0a 08 05 07 0f 0a 02 5a 00 06 0e 1f 00 06 0f -1d 01 63 04 06 16 0d 00 06 0f 00 00 63 00 00 34 16 00 00 00 32 18 02 04 00 -28 63 00 00 00 32 00 46 72 2e 48 6f 72 6e 20 20 2a 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: FrenchHorn -** Controls: KV, MW (LFO pitch), MW (LFO amplitude) -** Source: Yamaha TX81Z factory preset, bank B, voice 5 -08 05 00 06 00 00 42 47 04 08 0e 1f 00 06 0f 00 42 43 04 00 1f 0e 00 06 00 -0e 43 3b 0b 06 0c 1f 00 06 0f 00 42 61 04 0c 39 1a 19 08 0a 4a 0c 04 04 00 -63 32 1e 00 00 32 00 46 72 65 6e 63 68 48 6f 72 6e 63 63 63 32 32 32 00 00 -20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: FrnchHorn1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 05 00 08 00 00 01 4b 04 0b 0f 1f 00 08 0f 00 03 36 04 04 0d 0f 00 08 00 -00 05 39 0b 04 12 1f 00 09 0f 00 06 62 04 0c 3a 25 00 04 00 22 18 02 04 00 -63 63 00 00 00 32 00 46 72 6e 63 68 48 6f 72 6e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: FrnchHorn1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 05 00 08 00 00 01 4b 04 0b 0f 1f 00 08 0f 00 00 36 04 04 0d 0f 00 08 00 -00 00 39 0b 04 12 1f 00 09 0f 00 01 62 04 0c 3a 25 00 04 00 22 18 02 04 00 -63 63 00 00 00 32 00 46 72 6e 63 68 48 6f 72 6e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: FrnchHorn2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 05 00 08 00 00 05 4e 04 0b 0f 1f 00 08 0f 00 04 48 04 03 0d 0f 00 08 00 -00 05 40 0d 03 12 1f 00 09 0f 00 05 5f 04 0b 1b 25 00 0a 00 32 18 02 04 00 -63 63 00 00 00 32 00 46 72 6e 63 68 48 6f 72 6e 32 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: FrnchHorn2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 05 00 08 00 00 02 4e 04 0b 0f 1f 00 08 0f 00 01 48 04 03 0d 0f 00 08 00 -00 00 40 0d 03 12 1f 00 09 0f 00 01 5f 04 0b 1b 25 00 0a 00 32 18 02 04 00 -63 63 00 00 00 32 00 46 72 6e 63 68 48 6f 72 6e 32 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY Harmonica - - -** Name: Harmonic.1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 0d 01 0a 0f 0a 03 4e 08 03 12 0c 06 09 0f 00 04 4f 04 0e 10 1f 04 0c 0f -00 06 63 08 03 1d 1f 00 0d 0f 00 05 4e 04 03 64 29 00 00 00 22 0c 02 04 00 -28 02 00 00 00 32 00 48 61 72 6d 6f 6e 69 63 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Harmonic.1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -10 0d 01 0a 0f 0a 01 4e 08 03 12 0c 06 09 0f 00 01 4f 04 0e 10 1f 04 0c 0f -00 00 63 08 03 1d 1f 00 0d 0f 00 00 4e 04 03 64 29 00 00 00 22 0c 02 04 00 -28 02 00 00 00 32 00 48 61 72 6d 6f 6e 69 63 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Harmonic.2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0b 0d 01 0a 0f 0a 02 57 04 0b 12 0c 06 09 0f 00 05 56 00 0e 10 1f 04 0c 0f -00 05 5a 04 0b 1d 1f 00 0d 0f 00 06 63 04 03 6c 29 00 00 00 22 18 02 04 00 -28 02 00 00 00 32 00 48 61 72 6d 6f 6e 69 63 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Harmonic.2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -0b 0d 01 0a 0f 0a 02 57 04 0b 12 0c 06 09 0f 00 01 56 00 0e 10 1f 04 0c 0f -00 00 5a 04 0b 1d 1f 00 0d 0f 00 00 63 04 03 6c 29 00 00 00 22 18 02 04 00 -28 02 00 00 00 32 00 48 61 72 6d 6f 6e 69 63 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Harmonica* -** Controls: KV, BC (EG amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0d 0d 01 09 0d 00 01 42 00 03 0c 08 00 09 0c 00 00 3e 00 06 0e 09 01 09 0f -00 60 3c 10 03 0d 05 01 09 0f 00 40 63 04 00 19 1f 21 00 25 3a 24 02 04 00 -28 63 00 00 00 32 29 48 61 72 6d 6f 6e 69 63 61 2a 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Harmonica -** Controls: KV, MW (LFO pitch), MW (LFO amplitude), BC (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank B, voice 16 -10 09 02 06 0d 00 41 3e 04 15 0c 0b 02 03 0e 00 41 4f 04 12 0c 0e 02 08 0d -00 42 4b 0a 1c 0d 0b 01 09 0e 00 03 63 0a 14 00 23 0f 02 1b 5e 18 04 05 00 -63 28 50 32 00 32 00 48 61 72 6d 6f 6e 69 63 61 20 63 63 63 32 32 32 00 50 -10 50 00 50 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Harmonica -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank C, voice 25 -0e 1f 00 09 0f 00 02 4b 0a 0b 0c 1f 00 09 0f 00 41 5f 04 0b 0c 1f 00 09 0f -00 41 5c 04 0b 0a 1f 00 0a 0f 00 41 5a 04 0b 06 1d 04 01 27 56 18 02 04 00 -28 32 00 00 00 32 00 48 61 72 6d 6f 6e 69 63 61 20 63 63 63 32 32 32 00 40 -00 50 00 30 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Harmonica -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0e 1f 00 09 0f 00 02 4b 0a 0b 0c 1f 00 09 0f 00 41 5f 04 0b 0c 1f 00 09 0f -00 41 5c 04 0b 0d 1f 00 0a 0f 00 41 5a 04 0b 06 1d 04 01 27 56 18 02 04 00 -28 32 00 00 00 32 00 48 61 72 6d 6f 6e 69 63 61 20 63 63 63 32 32 32 00 40 -00 50 00 30 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Harmonica1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 09 0f 00 79 29 17 00 1f 1f 00 03 0f 00 5b 3b 04 03 0f 10 09 09 0f -00 5d 61 04 03 0d 1f 00 08 0f 00 7c 63 08 03 04 1f 00 0b 00 46 18 02 04 00 -63 32 00 00 00 32 00 48 61 72 6d 6f 6e 69 63 61 31 63 63 63 32 32 32 00 10 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Harmonica1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 09 0f 00 79 29 17 00 1f 1f 00 03 0f 00 59 3b 04 03 0f 10 09 09 0f -00 59 61 04 03 0d 1f 00 08 0f 00 78 63 08 03 04 1f 00 0b 00 46 18 02 04 00 -63 32 00 00 00 32 00 48 61 72 6d 6f 6e 69 63 61 31 63 63 63 32 32 32 00 10 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Harmonica2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 09 1f 09 0a 00 3a 2f 2c 00 10 0a 05 0a 06 00 1c 4b 04 03 0f 10 09 09 0f -00 1e 5b 04 03 0d 1f 00 08 0f 00 3d 63 04 03 04 1d 3c 04 00 00 18 02 04 00 -63 32 00 00 00 32 00 48 61 72 6d 6f 6e 69 63 61 32 63 63 63 32 32 32 00 10 -00 20 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Harmonica2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 09 1f 09 0a 00 3a 2f 2c 00 10 0a 05 0a 06 00 19 4b 04 03 0f 10 09 09 0f -00 19 5b 04 03 0d 1f 00 08 0f 00 38 63 04 03 04 1d 3c 04 00 10 18 02 04 00 -63 32 00 00 00 32 00 48 61 72 6d 6f 6e 69 63 61 32 63 63 63 32 32 32 00 10 -00 20 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Harmonica3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 09 0f 00 7a 2a 08 00 1f 1f 00 07 0f 00 5a 3b 00 03 0f 10 09 09 0f -00 5d 5a 08 03 0d 1f 00 08 0f 00 7d 63 04 03 06 1f 00 0b 00 46 18 02 04 00 -63 32 00 00 00 32 00 48 61 72 6d 6f 6e 69 63 61 33 63 63 63 32 32 32 00 00 -00 30 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Harmonica3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 09 0f 00 7a 2a 08 00 1f 1f 00 07 0f 00 58 3b 00 03 0f 10 09 09 0f -00 58 5a 08 03 0d 1f 00 08 0f 00 78 63 04 03 06 1f 00 0b 00 46 18 02 04 00 -63 32 00 00 00 32 00 48 61 72 6d 6f 6e 69 63 61 33 63 63 63 32 32 32 00 00 -00 30 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY Oboe - - -** Name: BC1 Oboe -** Controls: MW (LFO pitch), BC (LFO pitch), BC (LFO amplitude), BC (EG amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0b 11 00 07 0f 63 40 63 00 1b 0f 0d 00 08 0f 12 40 40 00 1b 0e 18 00 08 0f -63 78 50 0a 1b 09 0f 00 09 0f 00 78 54 08 1b 22 23 0b 08 0a 56 18 07 04 00 -63 32 00 18 1e 32 63 42 43 31 20 4f 62 6f 65 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Oboe * -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 0a 00 02 0c 23 43 33 04 00 1f 0a 00 02 0d 22 42 3a 08 06 10 07 00 0a 0f -08 01 63 08 08 0f 07 00 0a 0f 09 01 63 0a 0e 04 22 14 19 1b 3a 18 02 04 00 -28 63 00 00 00 32 00 4f 62 6f 65 20 20 20 20 20 2a 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Oboe -** Controls: KV, MW (LFO pitch), MW (LFO amplitude) -** Source: Yamaha TX81Z factory preset, bank B, voice 14 -10 12 00 09 0d 05 01 51 00 03 12 14 00 05 0e 23 41 5b 00 03 10 0a 00 06 0d -30 02 4b 08 1b 0f 1a 00 0a 0e 06 03 59 08 0b 02 1f 11 08 0e 5e 24 02 04 00 -63 28 19 00 00 32 00 4f 62 6f 65 20 20 20 20 20 20 63 63 63 32 32 32 00 20 -00 10 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Oboe -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank C, voice 21 -14 12 00 07 0a 0a 02 53 0a 0b 1f 1f 00 03 0f 00 01 4e 04 0b 15 14 00 05 0a -09 01 3c 08 0b 12 1f 00 0b 0f 06 03 5a 0a 0b 03 1f 0a 0f 00 52 18 02 04 00 -28 32 00 00 00 32 00 4f 62 6f 65 20 20 20 20 20 20 63 63 63 32 32 32 00 20 -00 10 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Oboe -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -14 12 00 07 0d 0a 02 53 0a 0b 1f 1f 00 03 0f 00 01 4e 04 0b 15 14 00 05 0d -09 01 3c 08 0b 12 1f 00 0b 0f 06 03 5a 0a 0b 03 1f 0a 0f 00 52 18 02 04 00 -28 32 00 00 00 32 00 4f 62 6f 65 20 20 20 20 20 20 63 63 63 32 32 32 00 20 -00 10 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Oboe.....1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 04 06 07 0c 00 02 4d 08 0e 10 04 06 07 0c 00 03 4d 04 03 0f 04 06 07 0c -00 04 50 10 04 10 04 06 07 0c 00 04 5b 04 02 0d 22 07 0c 43 52 0c 02 04 00 -63 63 00 00 00 32 00 4f 62 6f 65 2e 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Oboe.....1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 04 06 07 0c 00 01 4d 08 0e 10 04 06 07 0c 00 00 4d 04 03 0f 04 06 07 0c -00 00 50 10 04 10 04 06 07 0c 00 00 5b 04 02 0d 22 07 0c 43 52 0c 02 04 00 -63 63 00 00 00 32 00 4f 62 6f 65 2e 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Oboe.....2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 04 06 07 0c 00 01 46 0d 0e 10 04 06 07 0c 00 04 45 04 03 0f 04 06 07 0c -00 05 5f 08 04 10 04 06 07 0c 00 04 5f 08 02 34 22 07 0c 43 52 18 02 04 00 -63 63 00 00 00 32 00 4f 62 6f 65 2e 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Oboe.....2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 04 06 07 0c 00 01 46 0d 0e 10 04 06 07 0c 00 00 45 04 03 0f 04 06 07 0c -00 00 5f 08 04 10 04 06 07 0c 00 00 5f 0a 02 34 22 07 0c 43 52 18 02 04 00 -63 63 00 00 00 32 00 4f 62 6f 65 2e 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Oboe.....3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0c 11 00 09 0f 63 41 55 00 0c 0f 0d 00 08 0f 12 43 47 00 1c 0d 18 00 08 00 -63 45 49 0a 1b 09 0f 00 09 0f 00 44 50 0a 1b 72 23 25 08 1e 56 18 02 05 00 -63 63 00 00 00 32 00 4f 62 6f 65 2e 2e 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Oboe.....3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0c 11 00 09 0f 63 41 55 00 0c 0f 0d 00 08 0f 12 40 47 00 1c 0e 18 00 08 00 -63 41 49 0a 1b 09 0f 00 09 0f 00 40 50 0a 1b 72 23 25 08 1e 56 18 02 05 00 -63 63 00 00 00 32 00 4f 62 6f 65 2e 2e 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ornt Oboe -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 10 02 06 0b 1b 04 49 08 0b 14 08 07 07 0b 42 42 35 2a 0b 1e 0c 04 07 0b -42 44 50 08 0b 16 06 01 09 0b 0a 04 60 0a 03 42 22 0a 11 1e 36 0c 04 04 00 -63 32 00 00 00 32 00 4f 72 6e 74 20 4f 62 6f 65 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ornt Oboe -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 10 02 06 0b 1b 00 49 08 0b 14 08 07 07 0b 42 40 35 2a 0b 1e 0c 04 07 0b -42 40 50 08 0b 16 06 01 09 0b 0a 00 60 0a 03 42 22 0a 11 1e 36 0c 04 04 00 -63 32 00 00 00 32 00 4f 72 6e 74 20 4f 62 6f 65 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY Ocarina - - -** Name: Ocarina -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 03 18 03 0f 00 04 63 0d 0b 13 03 0f 06 03 00 05 31 0d 12 13 1d 00 0a 0f -00 06 5d 0d 0b 12 03 1f 09 0e 00 07 5a 0d 13 3c 2e 27 07 36 22 0c 02 04 00 -63 63 00 00 00 32 00 4f 63 61 72 69 6e 61 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ocarina -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 03 18 03 0f 00 01 63 0d 0b 13 03 0f 06 03 00 00 31 0d 12 13 1d 00 0a 0f -00 01 5d 0d 0b 12 03 1f 09 0e 00 01 5a 0d 13 3c 2e 27 07 36 22 0c 02 04 00 -63 63 00 00 00 32 00 4f 63 61 72 69 6e 61 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY Piccolo - - -** Name: Piccolo * -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -19 12 00 05 0f 2c 40 31 23 06 0c 12 00 05 0f 13 40 3c 13 06 0e 13 00 09 0f -0a 02 63 12 08 10 13 00 09 0f 0b 01 63 13 09 3c 21 0d 0e 21 4a 11 02 04 00 -28 63 00 00 00 32 00 50 69 63 63 6f 6c 6f 20 20 2a 63 63 63 32 32 32 00 17 -00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Piccolo..1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 15 04 0a 09 00 06 32 12 03 15 03 04 0a 08 47 06 63 08 03 0f 04 05 0a 09 -00 06 63 08 03 10 06 04 0a 09 00 05 63 08 03 06 28 29 00 00 12 18 02 04 00 -63 32 00 32 00 32 00 50 69 63 63 6f 6c 6f 2e 2e 31 63 63 63 32 32 32 00 20 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Piccolo..1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 15 04 0a 09 00 01 32 12 03 15 03 04 0a 08 47 01 63 04 03 15 04 05 0a 09 -00 00 63 04 03 15 06 04 0a 09 00 00 63 08 03 06 28 29 00 00 12 18 02 04 00 -63 32 00 32 00 32 00 50 69 63 63 6f 6c 6f 2e 2e 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Piccolo..2 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 1f 0a 0e 00 00 2c 08 03 12 04 0c 0a 0e 47 04 63 08 03 12 09 09 0a 0e -00 05 63 08 03 12 12 0f 0a 0e 00 05 63 08 03 06 28 22 07 00 22 18 02 04 00 -63 32 00 32 00 32 00 50 69 63 63 6f 6c 6f 2e 2e 32 63 63 63 32 32 32 00 00 -00 20 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Piccolo..2 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 1f 0a 0e 00 00 2c 04 03 12 04 0c 0a 0e 47 01 63 0d 03 12 09 09 0a 0e -00 03 63 0d 03 12 12 0f 0a 0e 00 00 63 04 03 06 28 22 07 00 22 18 02 04 00 -63 32 00 32 00 32 00 50 69 63 63 6f 6c 6f 2e 2e 32 63 63 63 32 32 32 00 00 -00 20 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Piccolo..3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 05 05 0a 0e 00 04 4a 19 03 12 05 05 0a 0e 00 04 50 0d 03 12 05 05 0a 0e -00 04 52 0d 03 12 05 05 0a 0e 00 04 58 0d 03 06 28 29 00 00 12 18 02 04 00 -63 32 00 32 00 32 00 50 69 63 63 6f 6c 6f 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Piccolo..3 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -12 05 05 0a 0e 00 01 4a 19 03 12 05 05 0a 0e 00 01 50 0d 03 12 05 05 0a 0e -00 01 52 0d 03 12 05 05 0a 0e 00 00 58 0d 03 06 28 29 00 00 12 18 02 04 00 -63 32 00 32 00 32 00 50 69 63 63 6f 6c 6f 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - ---Bank 4 - -* SUBCATEGORY Recorder - - -** Name: OrntRecord -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -13 18 00 09 0c 00 03 4e 16 03 12 16 12 0a 07 00 04 51 08 03 12 12 00 09 0d -00 05 63 04 03 12 16 0f 09 06 00 05 5e 04 03 34 23 00 00 00 62 18 04 04 00 -28 32 00 00 00 32 00 4f 72 6e 74 52 65 63 6f 72 64 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntRecord -** Source: from a library of patches collected by Duane Bowker, author unknown -13 18 00 09 0c 00 00 4e 16 03 12 16 12 0a 07 00 00 51 08 03 12 12 00 09 0d -00 00 63 04 03 12 16 0f 09 06 00 00 5e 04 03 34 23 00 00 00 62 18 04 04 00 -28 32 00 00 00 32 00 4f 72 6e 74 52 65 63 6f 72 64 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Recorder -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank C, voice 24 -14 0a 00 0a 0a 00 44 36 08 06 14 00 00 03 0f 00 42 2d 0a 00 14 1f 0f 08 0f -00 44 32 04 03 11 08 00 0b 0e 02 43 63 04 06 3a 1b 04 0f 06 46 18 02 04 00 -28 43 00 00 00 32 00 52 65 63 6f 72 64 65 72 20 20 63 63 63 31 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Recorder -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -14 0a 00 0a 0a 00 44 36 08 06 14 00 00 03 0f 00 42 2d 0d 00 14 1f 0f 08 0f -00 44 32 04 03 11 08 00 0b 0e 02 43 63 04 06 3a 1b 04 0f 06 46 18 02 04 00 -28 43 00 00 00 32 00 52 65 63 6f 72 64 65 72 20 20 63 63 63 31 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Recorder.1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 1f 16 01 0e 00 01 5d 08 1b 0f 00 03 0a 0d 00 44 61 04 0b 0f 00 03 0a 0d -00 05 61 04 0b 0f 00 03 0a 0d 00 06 61 04 0b 2e 25 2a 26 36 16 18 02 04 00 -63 63 00 00 00 32 00 52 65 63 6f 72 64 65 72 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Recorder.1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -18 1f 16 01 0e 00 01 5d 08 1b 0f 00 03 0a 0d 00 41 61 04 0b 0f 00 03 0a 0d -00 01 61 04 0b 0f 00 03 0a 0d 00 01 61 04 0b 2e 25 2a 26 36 16 18 02 04 00 -63 63 00 00 00 32 00 52 65 63 6f 72 64 65 72 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Recorder.2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 1f 10 01 0e 00 03 00 08 1b 0d 0a 06 0a 00 00 05 63 08 03 0d 15 07 09 0c -00 45 63 08 03 0f 12 07 09 0c 00 05 5f 08 03 45 20 2a 15 43 26 18 02 04 00 -63 63 00 00 00 32 00 52 65 63 6f 72 64 65 72 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Recorder.2 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -18 1f 10 01 0e 00 00 00 08 1b 0d 0a 06 0a 00 00 00 63 08 03 0d 15 07 09 0c -00 40 63 08 03 0f 12 07 09 0c 00 00 5f 08 03 45 20 2a 15 43 26 18 02 04 00 -63 63 00 00 00 32 00 52 65 63 6f 72 64 65 72 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Recorder.2 -** Controls: MW (LFO pitch) -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -18 1f 10 00 0e 00 00 00 08 1b 0d 0a 06 0a 00 00 00 63 08 03 0d 15 07 09 0c -00 40 63 08 03 0f 12 07 09 0c 00 00 5f 08 03 45 20 2a 15 43 26 18 02 04 00 -63 63 00 00 00 32 00 52 65 63 6f 72 64 65 72 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Recorder.3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 1c 15 0c 0e 00 01 3f 08 1b 13 1d 15 0c 0e 00 06 63 08 03 10 03 03 0a 0d -00 45 63 04 0b 10 03 03 0a 0d 00 05 63 08 0b 76 20 2a 15 43 26 18 02 04 00 -63 63 00 00 00 32 00 52 65 63 6f 72 64 65 72 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Recorder.3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -18 1c 15 0c 0e 00 01 3f 08 1b 13 1d 15 0c 0e 00 00 63 08 03 10 03 03 0a 0d -00 41 63 04 0b 10 03 03 0a 0d 00 01 63 04 0b 76 20 2a 15 43 26 18 02 04 00 -63 63 00 00 00 32 00 52 65 63 6f 72 64 65 72 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Recorder.4 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 1c 15 0c 0e 00 01 3f 08 1b 13 1d 15 0c 0e 00 05 63 08 03 10 03 03 0a 0d -00 46 63 04 0b 10 03 03 0a 0d 00 07 63 04 0b 76 20 2a 15 43 26 18 02 04 00 -63 63 00 00 00 32 00 52 65 63 6f 72 64 65 72 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Recorder.4 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -18 1d 15 0a 0f 00 01 5e 08 13 10 0f 0a 0a 0f 00 01 62 04 0b 0f 09 0a 0c 04 -00 01 5e 04 0b 10 1f 03 09 0f 00 01 63 00 0b 2e 21 2a 00 00 12 18 02 04 00 -63 63 00 00 00 32 00 52 65 63 6f 72 64 65 72 2e 34 63 63 63 32 32 32 00 30 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY Saxophone - - -** Name: Alto Sax -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 1f 00 08 0f 31 00 52 00 1b 0c 1f 00 09 0f 3a 03 44 08 1b 11 1f 00 08 0f -00 01 37 12 03 0f 1f 00 08 0f 00 00 63 00 03 78 23 00 00 00 42 18 02 04 00 -63 32 00 00 00 32 00 41 6c 74 6f 20 53 61 78 20 20 63 63 63 32 32 32 00 00 -00 10 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BC1 AltSax -** Controls: KV, BC (EG amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 1f 00 08 0f 31 25 63 00 1c 0c 1f 00 08 0f 3a 25 49 00 1b 11 1f 00 08 0f -00 1d 35 12 04 0f 1f 00 08 0f 00 3d 63 04 03 28 23 00 00 00 42 18 05 04 00 -63 32 00 0a 56 32 63 42 43 31 20 41 6c 74 53 61 78 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sax -** Controls: BC (EG amplitude) -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -10 1f 00 09 0f 00 20 44 00 03 10 1f 00 09 0f 2a 20 42 00 03 10 1f 00 09 0f -00 18 30 12 06 10 1f 00 09 0f 00 38 63 04 03 3a 21 00 00 00 52 18 02 04 00 -63 32 00 00 00 32 63 3c 42 43 31 3e 20 53 61 78 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BCSexyPhon -** Controls: KV, MW (LFO pitch), BC (EG amplitude) -** Source: Yamaha TX81Z factory preset, bank C, voice 19 -1d 04 00 06 0e 00 01 51 04 09 1d 1f 00 03 0f 11 01 4b 04 08 1d 0f 00 08 0a -00 01 46 27 0b 10 1f 00 0a 0f 00 3b 63 08 0b 3a 1e 17 0c 00 52 18 02 0d 0f -63 32 01 00 00 32 63 42 43 53 65 78 79 50 68 6f 6e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ElectroSax -** Controls: KV, MW (LFO pitch) -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -1f 0a 00 09 0e 0d 39 52 00 0e 1f 0b 00 0a 0a 1c 1a 46 00 08 1f 12 00 0a 0d -09 1a 4c 10 0b 16 1b 00 0a 0f 00 02 63 00 0b 3a 1e 09 02 00 62 18 02 04 00 -28 0b 00 00 00 32 00 45 6c 65 63 74 72 6f 53 61 78 63 63 63 32 32 32 00 20 -00 30 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: GreatDXled -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0d 00 0a 0f 0c 04 40 08 03 12 0c 06 09 0f 00 05 5c 04 06 1b 1f 04 0c 0f -00 05 5c 04 03 18 1f 00 0c 0f 00 06 62 04 03 7c 29 00 00 00 32 0c 02 04 00 -28 02 00 00 00 32 00 47 72 65 61 74 44 58 6c 65 64 63 63 63 32 32 32 00 10 -00 00 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: GreatDXled -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0d 00 0a 0f 0c 01 40 08 03 12 0c 06 09 0f 00 01 5c 04 06 1b 1f 04 0c 0f -00 00 5c 04 03 18 1f 00 0c 0f 00 00 62 04 03 7c 29 00 00 00 32 0c 02 04 00 -28 02 00 00 00 32 00 47 72 65 61 74 44 58 6c 65 64 63 63 63 32 32 32 00 10 -00 00 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MelloTenor -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank B, voice 9 -11 04 00 06 0e 33 01 4c 04 0b 0f 1f 00 03 0f 34 02 50 04 0b 10 0e 00 08 0c -63 03 44 22 13 10 1f 00 0a 0f 00 02 63 08 0b 3a 1e 11 0b 00 52 0c 04 05 00 -63 32 02 32 00 32 00 4d 65 6c 6c 6f 54 65 6e 6f 72 63 63 63 32 32 32 30 30 -20 30 20 10 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: RaspAlto -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank B, voice 10 -10 1f 00 08 0f 00 42 4a 00 03 11 1f 00 08 0f 0a 43 51 00 03 11 09 00 08 0d -00 42 2b 16 06 10 1f 00 09 0f 00 42 63 04 0b 3a 1e 09 09 00 5a 24 04 04 00 -63 32 31 00 00 32 00 52 61 73 70 41 6c 74 6f 20 20 63 63 63 32 32 32 00 10 -00 20 00 54 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sax 1 -** Controls: KV -** Source: Yamaha DX11 factory preset, bank C, voice 16 -14 08 00 08 0a 17 03 49 04 0b 10 0c 00 09 0a 21 04 45 04 0b 12 13 00 06 0b -1b 04 50 0a 0b 14 1f 00 0a 0f 00 01 5f 04 0b 32 20 00 00 00 52 0c 02 04 00 -28 32 00 00 00 32 00 53 61 78 20 20 20 20 20 20 31 63 63 63 32 32 32 00 00 -00 10 00 60 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sax 1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -14 08 00 08 0d 17 03 49 04 0b 10 0c 00 09 0d 21 04 45 04 0b 12 13 00 06 0b -1b 04 50 0a 0b 14 1f 00 0a 0f 00 01 5f 04 0b 32 20 00 00 00 52 0c 02 04 00 -28 32 00 00 00 32 00 53 61 78 20 20 20 20 20 20 31 63 63 63 32 32 32 00 00 -00 10 00 60 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sax 2 -** Controls: KV -** Source: Yamaha DX11 factory preset, bank C, voice 17 -10 08 00 08 0a 2c 03 49 04 0b 11 0f 00 09 0a 0f 04 4e 04 0b 15 13 00 06 09 -00 04 41 0e 0b 12 13 00 0a 0a 00 01 5f 08 0b 32 20 00 00 00 52 0c 02 04 00 -28 32 00 00 00 32 00 53 61 78 20 20 20 20 20 20 32 63 63 63 32 32 32 00 00 -00 10 00 60 00 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sax 2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -10 08 00 08 0d 2c 03 49 04 0b 11 0f 00 09 0d 0f 04 4e 04 0b 15 13 00 06 09 -00 04 41 0e 0b 12 13 00 0a 0d 00 01 5f 08 0b 32 20 00 00 00 52 0c 02 04 00 -28 32 00 00 00 32 00 53 61 78 20 20 20 20 20 20 32 63 63 63 32 32 32 00 00 -00 10 00 60 00 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sax Synth -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 06 12 04 03 31 03 63 00 0c 0a 1f 00 08 0f 3a 26 59 00 1b 0a 1f 00 08 0f -00 1d 29 13 04 11 1f 00 08 0f 00 3e 63 04 03 28 23 00 00 00 42 18 05 04 01 -63 32 00 00 00 32 00 53 61 78 20 53 79 6e 74 68 20 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sax Synth -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -10 06 12 04 03 31 01 63 00 0c 0a 1f 00 08 0f 3a 21 59 00 1b 0a 1f 00 08 0f -00 19 29 13 04 11 1f 00 08 0f 00 38 63 04 03 28 23 00 00 00 42 18 05 04 01 -63 32 00 00 00 32 00 53 61 78 20 53 79 6e 74 68 20 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Saxophone* -** Controls: KV, MW (LFO pitch), BC (EG amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0a 04 00 06 0e 1d 61 45 04 0b 0f 1f 00 03 0f 36 02 54 04 0b 0c 0e 00 08 0c -0f 63 4d 22 0b 18 1f 00 0a 0f 00 02 63 08 0b 39 1e 11 0b 00 4a 0c 02 05 00 -63 32 04 00 00 32 23 53 61 78 6f 70 68 6f 6e 65 2a 63 63 63 32 32 32 00 30 -00 30 30 10 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Saxophone1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 03 01 09 0f 00 01 37 00 03 12 07 04 09 0f 2a 22 4a 04 03 10 04 02 09 0f -00 1d 3d 12 06 11 03 03 09 0f 00 3c 58 04 03 7b 22 0b 07 00 42 18 02 04 00 -63 32 00 00 00 32 00 53 61 78 6f 70 68 6f 6e 65 31 63 63 63 32 32 32 00 00 -00 20 00 44 00 10 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Saxophone1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 03 01 09 0f 00 01 37 00 03 12 07 04 09 0f 2a 22 4a 00 03 1f 04 02 09 0f -00 1a 3d 12 06 11 03 03 09 0f 00 38 58 04 03 7b 22 0b 07 00 42 18 02 04 00 -63 32 00 00 00 32 00 53 61 78 6f 70 68 6f 6e 65 31 63 63 63 32 32 32 00 00 -00 20 00 40 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Saxophone2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -13 1e 00 08 0f 00 00 2e 03 03 0e 1f 00 09 0d 2a 22 4b 04 03 11 1f 00 09 0e -00 1b 3b 12 06 11 05 00 08 0e 00 3b 5e 04 03 3b 21 00 00 00 52 18 02 04 00 -63 32 00 00 00 32 00 53 61 78 6f 70 68 6f 6e 65 32 63 63 63 32 32 32 00 00 -00 40 00 14 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Saxophone2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -13 1e 00 08 0f 00 00 37 03 03 0e 1f 00 09 0d 2a 22 4b 00 03 11 1f 00 09 0e -00 1b 3b 12 06 11 05 00 08 0e 00 38 5e 04 03 3b 21 00 00 00 52 18 02 04 00 -63 32 00 00 00 32 00 53 61 78 6f 70 68 6f 6e 65 32 63 63 63 32 32 32 00 00 -00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Saxophone3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -14 03 01 08 0f 19 00 41 04 03 0f 1f 00 09 0d 4b 23 4f 04 03 1f 03 00 09 0e -3d 1d 3d 0f 06 10 1e 00 08 0e 00 3d 63 04 03 3b 21 00 00 00 52 18 02 04 00 -63 32 00 00 00 32 00 53 61 78 6f 70 68 6f 6e 65 33 63 63 63 32 32 32 00 00 -00 10 00 43 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Saxophone3 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -14 03 01 08 0f 19 00 41 00 03 0f 1f 00 09 0d 4b 22 4f 00 03 1f 03 00 09 0e -3d 1a 3d 15 06 10 1e 00 08 0e 00 39 63 04 03 3b 21 00 00 00 52 18 02 04 00 -63 32 00 00 00 32 00 53 61 78 6f 70 68 6f 6e 65 33 63 63 63 32 32 32 00 00 -00 10 00 40 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Saxophone4 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 1f 00 08 0f 31 02 52 04 1c 0c 1f 00 07 0f 3a 25 42 00 1b 11 1f 00 08 0f -00 1c 3d 12 04 0f 1f 00 08 0f 00 3c 63 00 03 78 23 00 00 00 42 18 02 04 00 -63 32 00 00 00 32 00 53 61 78 6f 70 68 6f 6e 65 34 63 63 63 32 32 32 00 00 -00 30 00 04 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Saxophone4 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 1f 00 08 0f 31 02 52 00 1c 0c 1f 00 07 0f 3a 22 42 04 1b 11 1f 00 08 0f -00 19 3d 12 04 0f 1f 00 08 0f 00 38 63 04 03 78 23 00 00 00 42 18 02 04 00 -63 32 00 00 00 32 00 53 61 78 6f 70 68 6f 6e 65 34 63 63 63 32 32 32 00 00 -00 30 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Saxophone5 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 0f 00 09 0f 0a 03 4f 00 03 11 1f 00 08 0e 14 04 4e 00 0b 11 0f 00 08 0e -00 05 2f 17 03 11 1f 00 09 0f 00 04 63 04 03 32 1e 11 0a 00 52 18 02 04 00 -63 32 00 00 00 32 00 53 61 78 6f 70 68 6f 6e 65 35 63 63 63 32 32 32 00 10 -00 30 00 42 00 30 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Saxophone5 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -10 0f 00 09 0f 0a 01 4f 00 03 11 1f 00 08 0e 14 01 4e 00 0b 11 0f 00 08 0e -00 03 2f 17 03 11 1f 00 09 0f 00 01 63 04 03 32 1e 11 0a 00 52 18 02 04 00 -63 32 00 00 00 32 00 53 61 78 6f 70 68 6f 6e 65 35 63 63 63 32 32 32 00 10 -00 30 00 42 00 30 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Saxophone6 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -13 1e 00 08 0f 00 03 46 04 03 0c 1f 00 09 0d 2a 24 4b 04 03 0f 1f 00 09 0e -00 1c 39 10 03 11 1e 00 08 0e 00 3c 63 04 03 7b 21 05 09 00 52 18 02 04 00 -63 32 00 00 00 32 00 53 61 78 6f 70 68 6f 6e 65 36 63 63 63 32 32 32 00 40 -00 40 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Saxophone6 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -13 1e 00 08 0f 00 00 46 04 03 0c 1f 00 09 0d 2a 21 4b 00 03 0f 1f 00 09 0e -00 19 39 04 03 11 1e 00 08 0e 00 38 63 04 03 7b 21 05 09 00 52 18 02 04 00 -63 32 00 00 00 32 00 53 61 78 6f 70 68 6f 6e 65 36 63 63 63 32 32 32 00 00 -00 30 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SopranoSax -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -10 1f 00 08 0f 0c 42 2c 04 03 13 1f 00 08 0f 26 42 58 00 03 11 09 00 08 08 -2d 42 1e 16 06 11 1f 00 09 0f 00 44 63 04 0b 02 1e 09 09 00 5a 24 04 04 00 -63 32 31 12 00 32 00 53 6f 70 72 61 6e 6f 53 61 78 63 63 63 32 32 32 00 00 -00 20 00 50 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY Trombone - - -** Name: Mute Trmbn -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 1f 00 08 0f 00 01 4a 00 03 15 1f 00 08 0f 00 03 2c 00 03 16 19 12 09 0f -01 05 54 00 0b 12 1f 00 08 0f 00 05 5e 04 03 3a 27 00 29 00 22 0c 06 04 00 -63 63 00 00 00 32 00 4d 75 74 65 20 54 72 6d 62 6e 63 63 63 32 32 32 00 00 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Mute Trmbn -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 1f 00 08 0f 00 01 4a 00 03 15 1f 00 08 0f 00 00 2c 00 03 16 19 12 09 0f -01 01 54 00 0b 12 1f 00 08 0f 00 01 5e 04 03 3a 27 00 29 00 22 0c 06 04 00 -63 63 00 00 00 32 00 4d 75 74 65 20 54 72 6d 62 6e 63 63 63 32 32 32 00 00 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Trombone * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0b 0a 00 08 0d 00 03 4e 04 0e 0c 0a 00 06 0d 00 02 53 04 0e 1f 08 00 08 0d -14 03 2a 0a 0b 0e 07 00 08 0d 00 00 63 04 0b 3a 1d 00 00 00 52 0c 05 04 00 -28 63 00 00 00 32 00 54 72 6f 6d 62 6f 6e 65 20 2a 63 63 63 32 32 32 00 00 -00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Trombone -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank C, voice 13 -0e 0b 00 09 0e 0f 02 50 00 0b 10 0c 00 0a 0a 1c 02 47 00 0b 10 11 00 0a 05 -09 03 47 06 0b 0f 18 00 0b 0f 00 02 63 00 0b 3a 20 09 03 00 52 18 02 04 00 -28 32 00 00 00 32 00 54 72 6f 6d 62 6f 6e 65 20 20 63 52 63 2f 32 32 00 00 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Trombone -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -0f 1f 00 08 0f 00 00 42 04 03 0f 1f 00 08 0f 00 00 2e 04 03 1f 0e 00 08 00 -01 00 52 0b 13 13 1f 00 08 0f 00 00 5a 04 04 3a 23 00 00 00 62 0c 02 04 00 -63 63 00 00 00 32 00 54 72 6f 6d 62 6f 6e 65 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Trombone.1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 1f 00 08 0f 00 01 52 04 03 15 1f 00 08 0f 00 04 36 04 03 14 0e 00 08 00 -01 05 57 08 13 12 1f 00 08 0f 00 06 5e 04 03 32 27 00 29 00 22 0c 06 04 00 -63 63 00 00 00 32 00 54 72 6f 6d 62 6f 6e 65 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Trombone.1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 1f 00 08 0f 00 01 52 04 03 15 1f 00 08 0f 00 01 36 04 03 14 0e 00 08 00 -01 01 57 08 13 12 1f 00 08 0f 00 01 5e 04 03 32 27 00 29 00 22 0c 06 04 00 -63 63 00 00 00 32 00 54 72 6f 6d 62 6f 6e 65 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Trombone.2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 1f 00 08 0f 00 01 4f 00 03 15 1f 00 08 0f 00 04 2b 04 03 0f 10 05 08 06 -01 06 50 0b 13 12 1f 00 08 0f 00 04 5d 04 03 3a 27 00 29 00 22 0c 06 04 00 -63 63 00 00 00 32 00 54 72 6f 6d 62 6f 6e 65 2e 32 63 63 63 32 32 32 00 00 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Trombone.2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 1f 00 08 0f 00 01 4f 00 03 15 1f 00 08 0f 00 02 2b 04 03 0f 10 05 08 06 -01 00 50 0b 13 12 1f 00 08 0f 00 00 5d 04 03 3a 27 00 29 00 22 0c 06 04 00 -63 63 00 00 00 32 00 54 72 6f 6d 62 6f 6e 65 2e 32 63 63 63 32 32 32 00 00 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY Trumpet - - -** Name: 2 Trumpets -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -10 05 00 08 0b 0f 05 58 04 08 10 1f 00 07 0f 0f 05 54 05 0e 0f 10 00 0c 00 -1a 04 2d 0a 0c 10 1f 00 07 0f 00 07 60 04 0b 02 23 19 06 00 52 11 04 04 00 -63 1d 00 08 27 32 00 32 20 54 72 75 6d 70 65 74 73 63 63 63 32 32 32 00 38 -00 31 20 02 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BC1Trumpet -** Controls: MW (LFO pitch), BC (EG amplitude) -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -10 1f 00 08 0f 00 38 48 04 0b 0e 1f 00 08 0f 00 20 3c 04 03 10 1f 00 08 0f -00 38 24 0b 03 12 1f 00 09 0f 00 20 63 04 0b 3a 23 13 04 00 62 18 02 04 00 -63 63 00 00 00 32 63 42 43 31 54 72 75 6d 70 65 74 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BC1 Trumpt -** Controls: KV, MW (LFO pitch), BC (LFO pitch), BC (EG amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 1f 00 08 0f 00 3d 49 04 0b 0e 1f 00 08 0f 00 25 42 04 03 10 1f 00 08 0f -00 3d 20 0b 03 12 1f 00 09 0f 00 26 63 04 0b 2a 23 13 04 00 62 18 02 04 00 -63 63 00 03 03 32 63 42 43 31 20 54 72 75 6d 70 74 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: FanfarTpts -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank B, voice 29 -1f 06 06 04 0f 00 40 48 05 00 0c 08 07 05 0f 05 00 52 04 00 0f 07 03 07 0e -08 03 63 04 06 0f 08 04 05 0f 00 03 63 04 06 7c 1f 00 06 00 4a 11 02 04 00 -63 32 00 00 00 32 00 46 61 6e 66 61 72 54 70 74 73 63 63 63 32 32 32 06 01 -00 38 00 08 00 48 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Mute Trmpt -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 0a 08 08 0d 00 01 4c 08 00 15 1b 07 08 0a 00 04 43 08 14 0f 10 07 07 09 -02 05 36 0a 14 12 07 09 09 0f 00 06 63 08 0c 1a 22 23 05 00 22 0c 02 04 00 -63 63 00 00 00 32 00 4d 75 74 65 20 54 72 6d 70 74 63 63 63 32 32 32 00 20 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Mute Trmpt -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 0a 08 08 0d 00 01 4c 04 00 15 1b 07 08 0a 00 00 43 0a 14 0f 10 07 07 09 -02 00 36 0b 14 12 07 09 09 0f 00 00 63 0a 0c 1a 22 23 05 00 22 0c 02 04 00 -63 63 00 00 00 32 00 4d 75 74 65 20 54 72 6d 70 74 63 63 63 32 32 32 00 20 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ornt Trmpt -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -11 05 06 07 0d 00 02 32 04 03 12 10 06 07 0d 00 03 55 04 0b 13 16 06 07 09 -00 05 4a 04 13 12 10 06 07 0f 01 04 63 04 0b 7b 24 00 0c 00 52 0c 02 04 00 -63 63 00 00 00 32 00 4f 72 6e 74 20 54 72 6d 70 74 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ornt Trmpt -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -11 05 06 07 0d 00 00 32 04 03 12 10 06 07 0d 00 00 55 04 0b 13 16 06 07 09 -00 00 4a 04 13 12 10 06 07 0f 01 00 63 04 0b 7b 24 00 0c 00 52 0c 02 04 00 -63 63 00 00 00 32 00 4f 72 6e 74 20 54 72 6d 70 74 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Trumpet * -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 09 00 07 0e 0a 53 52 04 10 15 1f 00 09 0f 00 2a 63 04 03 15 1f 00 09 0f -00 2a 63 04 04 15 1f 00 09 0f 00 12 63 04 02 3d 63 00 0e 00 4a 18 02 04 00 -28 63 00 48 00 32 00 54 72 75 6d 70 65 74 20 20 2a 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Trumpet -** Controls: KV -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -0c 05 00 06 0f 00 02 49 04 03 19 1f 00 07 0f 0b 03 47 04 03 12 0b 00 01 0f -0d 02 3a 04 03 10 1f 00 09 0f 00 42 5a 04 0c 02 1c 19 00 00 5e 18 04 04 00 -63 0b 00 00 19 32 63 54 72 75 6d 70 65 74 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Trumpet -** Controls: MW (LFO pitch) -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -10 1f 00 08 0f 00 38 48 04 0b 0e 1f 00 08 0f 00 20 3c 04 03 10 1f 00 08 0f -00 38 24 0b 03 12 1f 00 09 0f 00 20 63 04 0b 3a 23 13 04 00 62 18 02 04 00 -63 63 00 00 00 32 00 20 20 20 54 72 75 6d 70 65 74 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Trumpet 1 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank C, voice 11 -12 10 00 09 0a 0a 01 4e 04 0b 13 0e 00 0a 0a 1c 02 43 04 0b 10 0f 00 0a 05 -09 03 40 06 0b 14 18 00 0b 0f 00 02 63 04 0b 3a 1f 09 04 00 62 18 02 04 00 -28 13 00 00 00 32 00 54 72 75 6d 70 65 74 20 20 31 63 63 63 32 32 32 00 00 -00 30 00 30 00 50 00 00 00 0c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Trumpet 1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -12 10 00 09 0d 0d 01 4e 04 0b 13 0e 00 0a 0a 1c 02 43 04 0b 10 0f 00 0a 05 -09 03 40 06 0b 14 18 00 0b 0f 00 02 63 04 0b 3a 1f 09 04 00 62 18 02 04 00 -28 13 00 00 00 32 00 54 72 75 6d 70 65 74 20 20 31 63 63 63 32 32 32 00 00 -00 30 00 30 00 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Trumpet 2 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank C, voice 12 -10 0e 00 03 0e 00 01 4e 04 03 0c 0e 00 03 0e 28 01 40 04 03 0c 0c 00 09 00 -00 07 33 03 03 13 09 00 0a 0f 12 04 63 04 03 3a 20 14 1a 00 32 18 02 04 00 -63 3c 00 00 00 32 00 54 72 75 6d 70 65 74 20 20 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Trumpet 3 -** Description: A trumpet similar to DX11 factory preset 'Trumpet 2' -** Controls: KV -** Source: Art Hitzeman -0e 0d 00 03 0e 00 01 4e 00 03 0a 0d 00 03 0e 28 01 40 04 03 0a 0b 00 09 00 -00 07 33 03 03 11 08 00 0a 0f 12 04 63 04 03 3a 20 14 1a 00 32 24 02 04 00 -63 00 00 00 00 32 00 54 72 75 6d 70 65 74 20 20 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Trumpet..1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 0a 07 09 0f 00 02 50 04 0a 0f 0f 05 0a 00 00 06 46 07 13 0f 07 09 07 0b -00 06 42 04 0b 12 07 05 0a 0d 00 07 63 04 04 7a 1d 1e 0f 00 42 0c 02 04 00 -63 63 00 00 00 32 00 54 72 75 6d 70 65 74 2e 2e 31 63 63 63 32 32 32 00 00 -00 03 00 20 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Trumpet..1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 0a 07 09 0f 00 02 50 04 0a 0f 0f 05 0a 00 00 01 46 07 13 0f 07 09 07 0b -00 00 42 04 0b 12 07 05 0a 0d 00 01 63 04 04 7a 1d 1e 0f 00 42 0c 02 04 00 -63 63 00 00 00 32 00 54 72 75 6d 70 65 74 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 20 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Trumpet..2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 0a 07 09 0f 00 41 4e 04 0a 0f 0f 05 0a 00 00 04 41 04 13 0f 10 06 07 0e -02 06 46 0b 0b 12 07 05 0a 0d 00 06 63 04 04 3a 23 1e 17 10 36 0c 02 04 00 -63 63 00 00 00 32 00 54 72 75 6d 70 65 74 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Trumpet..2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 0a 07 09 0f 00 41 4e 04 0a 0f 0f 05 0a 00 00 00 41 04 13 0f 10 06 07 0e -02 00 46 0b 0b 12 07 05 0a 0d 00 01 63 04 04 3a 23 1e 17 10 36 0c 02 04 00 -63 63 00 00 00 32 00 54 72 75 6d 70 65 74 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Trumpet..3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 0a 06 08 0d 00 02 59 04 0a 15 1c 06 08 0c 00 04 4f 04 15 0f 10 06 09 0e -02 06 49 0d 09 13 07 06 09 0d 00 06 63 04 04 2a 23 00 00 00 22 0c 02 04 00 -63 63 00 00 00 32 00 54 72 75 6d 70 65 74 2e 2e 33 63 63 63 32 32 32 00 00 -00 20 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Trumpet..3 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 0a 06 08 0d 00 02 59 04 0a 15 1c 06 08 0c 00 00 4f 04 15 0f 10 06 09 0e -02 00 49 0d 09 13 07 06 09 0d 00 01 63 04 04 2a 23 00 00 00 22 0c 02 04 00 -63 63 00 00 00 32 00 54 72 75 6d 70 65 74 2e 2e 33 63 63 63 32 32 32 00 00 -00 20 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Trumpet..4 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 0a 06 08 0d 00 42 53 04 0a 15 1c 06 08 0c 00 03 4d 04 13 0f 03 06 07 09 -02 06 31 10 0a 13 07 06 09 0d 00 07 63 04 04 3a 22 00 08 2e 46 0c 02 04 00 -63 63 00 00 00 32 00 54 72 75 6d 70 65 74 2e 2e 34 63 63 63 32 32 32 00 00 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Trumpet..4 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 0a 06 08 0d 00 42 53 04 0a 15 1c 06 08 0c 00 00 4d 04 13 0f 03 06 07 09 -02 00 31 10 0a 13 07 06 09 0d 00 01 63 04 04 3a 22 00 08 2e 46 0c 02 04 00 -63 63 00 00 00 32 00 54 72 75 6d 70 65 74 2e 2e 34 63 63 63 32 32 32 00 00 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Trumpet..5 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0c 0a 06 08 0d 00 02 4d 04 0a 15 1c 06 08 0c 00 05 46 04 13 0f 03 06 07 09 -02 06 34 07 0a 15 07 06 09 0d 00 06 63 04 04 2a 22 23 05 00 22 0c 02 04 00 -63 63 00 00 00 32 00 54 72 75 6d 70 65 74 2e 2e 35 63 63 63 32 32 32 00 00 -00 20 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Trumpet..5 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0c 0a 06 08 0d 00 02 4d 04 0a 15 1c 06 08 0c 00 00 46 04 13 0f 03 06 07 09 -02 00 34 07 0a 15 07 06 09 0d 00 01 63 04 04 2a 22 23 05 00 22 0c 02 04 00 -63 63 00 00 00 32 00 54 72 75 6d 70 65 74 2e 2e 35 63 63 63 32 32 32 00 00 -00 20 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Trumpet81Z -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank B, voice 1 -0f 1f 04 08 0f 00 3a 51 04 0b 0e 1f 00 08 0f 00 22 4b 04 03 0f 1a 0b 08 0d -00 3b 36 09 03 12 1f 00 08 0f 00 22 5d 04 0b 3a 1e 19 05 00 52 18 04 04 00 -63 32 00 00 00 32 00 54 72 75 6d 70 65 74 38 31 5a 63 63 63 32 32 32 00 00 -00 50 00 51 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: TrumptSolo -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank C, voice 18 -13 00 00 04 0f 00 00 3a 0b 06 0f 1f 03 0a 0f 05 01 5d 05 00 11 0e 06 0a 09 -08 00 36 03 06 13 1f 01 08 0f 00 02 63 04 03 3b 1d 03 0f 01 42 11 07 04 00 -63 32 00 00 00 32 00 54 72 75 6d 70 74 53 6f 6c 6f 63 63 63 32 32 32 00 61 -00 11 00 06 00 08 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Trumpet V -** Controls: KV, MW (LFO pitch), BC (voice pitch) -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -0f 1f 04 08 0f 00 3a 52 04 0b 0e 1f 00 08 0f 00 22 4b 04 03 10 1f 0b 08 0f -00 3b 2f 0b 03 12 1f 00 09 0f 00 22 63 04 0b 3a 1e 13 04 00 42 18 02 04 00 -63 63 00 00 00 00 00 54 72 75 6d 70 65 74 20 56 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY Tuba - - -** Name: << Tuba >> -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0f 05 06 0d 45 03 4c 00 03 14 0d 02 07 09 59 04 48 00 03 0f 10 03 07 09 -46 05 48 00 03 0e 0f 03 08 0f 14 06 63 04 03 2b 23 00 00 00 32 0c 02 04 00 -63 32 00 00 01 32 00 3c 3c 20 54 75 62 61 20 3e 3e 63 63 63 32 32 32 00 00 -00 00 00 20 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: << Tuba >> -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0f 05 06 0d 45 01 4c 00 03 14 0d 02 07 09 59 00 48 00 03 0f 10 03 07 09 -46 00 48 00 03 0e 0f 03 08 0f 14 01 63 04 03 2b 23 00 00 00 32 0c 02 04 00 -63 32 00 00 01 32 00 3c 3c 20 54 75 62 61 20 3e 3e 63 63 63 32 32 32 00 00 -00 00 00 20 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tuba -** Controls: KV -** Source: Yamaha DX11 factory preset, bank C, voice 15 -0f 0f 00 09 09 15 01 52 00 03 10 0a 00 06 0a 00 01 47 00 03 10 0c 00 09 0b -00 01 45 00 03 10 0a 00 0b 0a 0e 02 63 00 03 3a 1f 00 00 00 52 0c 02 04 00 -63 32 00 00 00 32 00 54 75 62 61 20 20 20 20 20 20 63 63 63 32 32 32 00 00 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tuba -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 0f 00 09 09 15 01 52 00 03 10 0d 00 06 0a 00 01 47 00 03 10 0c 00 09 0b -00 01 45 00 03 10 0d 00 0b 0d 0e 02 63 00 03 3a 1f 00 00 00 52 0c 02 04 00 -63 32 00 00 00 32 00 54 75 62 61 20 20 20 20 20 20 63 63 63 32 32 32 00 00 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY Whistle - - -** Name: Whistle * -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 0f 0f 00 00 00 08 03 0b 10 00 09 0e 00 00 63 08 02 0a 0f 1c 09 00 -00 00 63 08 00 0c 0f 00 09 0e 00 00 63 08 06 05 20 16 15 43 52 18 0c 04 00 -28 63 00 00 00 32 00 57 68 69 73 74 6c 65 20 20 2a 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Whistle..1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -13 1c 15 03 0e 00 03 00 08 03 13 06 03 0a 0d 00 44 00 08 03 13 06 03 0a 0d -00 45 00 08 03 13 06 03 0a 0d 00 06 63 08 03 3e 25 0b 26 63 36 18 04 04 00 -28 32 00 00 00 32 00 57 68 69 73 74 6c 65 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Whistle..1 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -13 1c 15 03 0e 00 00 00 08 03 13 06 03 0a 0d 00 40 00 08 03 13 06 03 0a 0d -00 40 00 08 03 13 06 03 0a 0d 00 00 63 08 03 3e 25 0b 26 63 36 18 04 04 00 -28 32 00 00 00 32 00 57 68 69 73 74 6c 65 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Whistle..2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -08 1f 07 05 0f 47 05 62 0d 05 08 1f 02 05 0f 00 03 3e 0d 02 07 1f 02 05 0f -4e 04 3c 0d 0b 07 1f 02 05 0f 00 04 63 0d 1b 57 22 00 14 00 32 0c 04 04 00 -28 32 00 00 00 32 00 57 68 69 73 74 6c 65 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Whistle..2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -08 1f 07 05 0f 47 01 62 0d 05 08 1f 02 05 0f 00 01 3e 0d 02 07 1f 02 05 0f -4e 01 3c 0d 0b 07 1f 02 05 0f 00 00 63 0d 1b 57 22 00 14 00 32 0c 04 04 00 -28 32 00 00 00 32 00 57 68 69 73 74 6c 65 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Whistle..3 -** Controls: KV, MW (LFO pitch), BC (voice pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0f 00 08 00 00 03 42 08 03 19 10 00 09 08 00 04 42 04 03 0f 09 00 08 0f -00 06 5d 08 03 0d 08 00 09 0e 1a 06 62 08 03 3c 23 09 0b 00 42 18 02 04 00 -63 32 00 00 00 33 00 57 68 69 73 74 6c 65 2e 2e 33 63 63 63 32 32 32 00 00 -00 20 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Whistle..3 -** Controls: KV, MW (LFO pitch), BC (voice pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0f 00 08 00 00 01 42 08 03 19 10 00 09 08 00 00 42 04 03 0f 09 00 08 0f -00 01 5d 08 03 0d 08 00 09 0e 1a 01 62 08 03 3c 23 09 0b 00 42 18 02 04 00 -63 32 00 00 00 33 00 57 68 69 73 74 6c 65 2e 2e 33 63 63 63 32 32 32 00 00 -00 20 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Whistling -** Controls: KV, MW (LFO pitch), BC (voice pitch) -** Source: Yamaha TX81Z factory preset, bank D, voice 20 -1f 0f 00 08 00 00 04 4e 07 03 19 10 00 09 08 00 00 38 01 03 0f 09 00 08 0f -00 02 4e 08 03 0d 08 00 09 0e 1a 02 5e 08 03 3c 23 03 0f 00 62 18 02 04 00 -63 32 00 00 00 33 00 57 68 69 73 74 6c 69 6e 67 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - ---Bank 5 - -* CATEGORY STRINGS - -* SUBCATEGORY Strings - -** Name: AnlgStr..1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0d 0a 00 07 0e 28 04 51 04 08 0e 05 12 08 0c 00 00 4f 04 04 0c 0a 00 07 0e -07 05 63 04 00 0d 04 12 08 0c 14 04 5f 04 03 2c 26 21 20 47 12 0c 06 04 00 -63 32 00 32 00 32 00 41 6e 6c 67 53 74 72 2e 2e 31 63 63 63 32 32 32 00 40 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgStr..1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0d 0a 00 07 0e 28 01 51 04 08 0e 05 12 08 0c 00 00 4f 04 04 0c 0a 00 07 0e -07 00 63 04 00 0d 04 12 08 0c 14 00 5f 04 03 2c 26 21 20 47 12 0c 06 04 00 -63 32 00 32 00 32 00 41 6e 6c 67 53 74 72 2e 2e 31 63 63 63 32 32 32 00 40 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgStr..2 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0e 0a 00 07 0e 1e 02 49 04 08 0d 0c 01 07 0e 00 01 4d 04 04 0d 09 00 07 0f -05 04 5b 04 00 0b 09 00 07 0e 14 03 5f 04 02 74 26 21 11 47 32 0c 06 04 00 -63 32 00 32 00 32 00 41 6e 6c 67 53 74 72 2e 2e 32 63 63 63 32 32 32 00 50 -00 30 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgStr..2 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0e 0a 00 07 0e 1e 00 49 04 08 0d 0c 01 07 0e 00 00 4d 04 04 0d 09 00 07 0f -05 00 5b 04 00 0b 09 00 07 0e 14 00 5f 04 02 74 26 21 11 47 32 0c 06 04 00 -63 32 00 32 00 32 00 41 6e 6c 67 53 74 72 2e 2e 32 63 63 63 32 32 32 00 50 -00 30 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgStr..3 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0d 09 03 06 0e 28 02 39 0d 0b 0e 0a 01 04 0e 00 02 4b 08 04 0d 0a 02 05 0f -0a 04 59 08 03 0b 0a 01 05 0d 14 04 5d 08 0b 2c 26 21 16 3b 22 0c 06 04 00 -63 32 00 32 00 32 00 41 6e 6c 67 53 74 72 2e 2e 33 63 63 63 32 32 32 00 20 -00 00 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgStr..3 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0d 09 03 06 0e 28 00 39 0d 0b 0e 0a 01 04 0e 00 00 4b 08 04 0d 0a 02 05 0f -0a 00 59 08 03 0b 0a 01 05 0d 14 00 5d 08 0b 2c 26 21 16 3b 22 0c 06 04 00 -63 32 00 32 00 32 00 41 6e 6c 67 53 74 72 2e 2e 33 63 63 63 32 32 32 00 20 -00 00 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgStr..4 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 13 00 05 0e 00 42 44 0d 02 0d 07 0e 06 06 0e 44 57 08 04 0c 1f 00 06 0f -52 05 53 0d 04 0b 1f 06 08 0f 0a 03 63 01 04 2d 22 0a 0a 08 26 0c 07 04 00 -63 63 00 00 00 32 00 41 6e 6c 67 53 74 72 2e 2e 34 63 63 63 32 32 32 00 30 -00 20 00 00 00 17 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgStr..4 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 13 00 05 0e 00 40 44 0d 02 0d 07 0e 06 06 0e 40 57 08 04 0c 1f 00 06 0f -52 00 53 0d 04 0b 1f 06 08 0f 0a 00 63 01 04 2d 22 0a 0a 08 36 0c 07 04 00 -63 63 00 00 00 32 00 41 6e 6c 67 53 74 72 2e 2e 34 63 63 63 32 32 32 00 30 -00 20 00 00 00 17 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgStr..5 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0c 03 1e 05 04 56 04 48 04 06 0c 03 1e 05 04 23 01 49 0a 0d 09 1f 01 08 0f -15 03 57 08 08 09 1f 00 05 0f 25 03 5b 04 02 54 20 0f 0a 00 52 0c 0c 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 53 74 72 2e 2e 35 63 63 63 32 32 32 00 00 -00 40 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgStr..5 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0c 03 1e 05 04 56 00 48 04 06 0c 03 1e 05 04 23 00 49 0a 0d 09 1f 01 08 0f -15 00 57 08 08 09 1f 00 05 0f 25 00 5b 04 02 54 20 0f 0a 00 52 0c 0c 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 53 74 72 2e 2e 35 63 63 63 32 32 32 00 00 -00 40 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgStr..6 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0d 03 1e 05 04 56 04 41 1f 06 0d 03 1e 05 04 23 02 48 0d 0d 0a 1f 01 08 0f -15 03 5b 08 08 0a 1f 00 05 0f 25 04 5d 08 01 54 20 0f 0a 00 52 0c 0c 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 53 74 72 2e 2e 36 63 63 63 32 32 32 00 50 -00 20 00 30 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgStr..6 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0d 03 1e 05 04 56 00 41 1f 06 0d 03 1e 05 04 23 00 48 0d 0d 0a 1f 01 08 0f -15 00 5b 08 08 0a 1f 00 05 0f 25 00 5d 08 01 54 20 0f 0a 00 52 0c 0c 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 53 74 72 2e 2e 36 63 63 63 32 32 32 00 50 -00 20 00 30 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgStr..7 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 0f 04 05 0d 56 04 3a 1f 06 0e 0b 01 05 0e 23 02 4b 08 05 0d 15 03 08 0f -15 04 57 08 00 0b 04 00 05 0f 25 04 5b 08 01 6c 20 0f 0a 00 52 0c 0c 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 53 74 72 2e 2e 37 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgStr..7 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 0f 04 05 0d 56 00 3a 1f 06 0e 0b 01 05 0e 23 00 4b 08 05 0d 15 03 08 0f -15 00 57 08 00 0b 04 00 05 0f 25 00 5b 08 01 6c 20 0f 0a 00 52 0c 0c 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 53 74 72 2e 2e 37 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgStr..8 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -13 0b 05 05 0d 0a 42 44 08 11 0d 04 02 06 0d 0e 43 5c 08 02 0c 07 06 06 0f -52 05 56 19 03 0a 03 06 08 0f 0a 04 63 08 00 2d 22 0e 0c 08 56 0c 07 04 00 -63 63 00 00 00 32 00 41 6e 6c 67 53 74 72 2e 2e 38 63 63 63 32 32 32 00 60 -00 30 00 10 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgStr..8 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -13 0b 05 05 0d 0a 40 44 08 11 0d 04 02 06 0d 0e 40 5c 08 02 0c 07 06 06 0f -52 00 56 19 03 0a 03 06 08 0f 0a 00 63 08 00 2d 22 0e 0c 08 56 0c 07 04 00 -63 63 00 00 00 32 00 41 6e 6c 67 53 74 72 2e 2e 38 63 63 63 32 32 32 00 60 -00 30 00 10 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgStr..9 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0e 0b 05 05 0e 00 42 42 04 03 0d 0c 00 05 0e 0e 41 3c 08 0e 0a 09 06 06 0f -52 04 5e 08 02 0a 03 00 06 0f 0a 04 5d 08 04 24 1e 0e 0c 08 56 00 07 04 00 -63 63 00 00 00 32 00 41 6e 6c 67 53 74 72 2e 2e 39 63 63 63 32 32 32 00 30 -00 50 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgStr..9 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0e 0b 05 05 0e 00 40 42 0d 03 0d 0c 00 05 0e 0e 40 3c 13 0e 0a 09 06 06 0f -52 00 5e 04 02 0c 03 00 06 0f 0a 00 5d 08 04 24 22 0e 0c 08 56 00 07 04 00 -63 63 00 00 00 32 00 41 6e 6c 67 53 74 72 2e 2e 39 63 63 63 32 32 32 00 30 -00 10 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgStr.10 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0c 03 1e 05 04 56 03 4c 04 00 0c 03 1e 05 04 23 02 48 04 0e 09 1f 01 08 0f -15 04 5f 04 0e 09 1f 00 05 0f 25 03 60 04 06 54 17 13 29 00 32 0c 0c 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 53 74 72 2e 31 30 63 63 63 32 32 32 00 00 -00 30 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgStr.10 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0c 03 1e 05 04 56 00 4c 00 00 0c 03 1e 05 04 23 00 48 08 0e 09 1f 01 08 0f -15 00 5f 00 0e 09 1f 00 05 0f 25 00 60 00 06 54 17 13 29 00 32 0c 0c 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 53 74 72 2e 31 30 63 63 63 32 32 32 00 00 -00 30 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgStr.11 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0b 0b 02 05 0c 23 03 49 04 08 10 03 1e 05 04 58 03 48 0d 00 0c 0b 01 07 0e -26 05 5c 08 06 0c 1f 00 05 0f 25 03 60 04 03 24 21 19 0e 00 22 24 0c 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 53 74 72 2e 31 31 63 63 63 32 32 32 00 00 -00 30 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgStr.11 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0b 0b 02 05 0c 23 00 49 04 08 10 03 1e 05 04 58 00 48 0d 00 0c 0b 01 07 0e -26 00 5c 08 06 0c 1f 00 05 0f 25 00 60 04 03 24 21 19 0e 00 22 24 0c 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 53 74 72 2e 31 31 63 63 63 32 32 32 00 00 -00 30 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BC1 String -** Controls: KV, MW (LFO pitch), BC (LFO pitch), BC (EG amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0c 03 1e 05 04 56 04 53 0d 06 0c 03 1e 05 04 23 3c 52 08 0d 09 1f 01 08 0f -15 05 57 08 08 09 1f 00 05 0f 25 06 5b 04 01 64 20 0f 0a 00 52 0c 0c 04 00 -63 32 00 05 09 32 63 42 43 31 20 53 74 72 69 6e 67 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: DualStr..1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 03 02 04 08 2d 02 4a 08 08 17 0c 07 01 0f 3f 02 3d 0d 04 0c 0b 04 07 0f -12 04 61 08 05 0c 08 00 06 0b 25 04 5b 08 06 2c 21 1e 0f 00 22 18 0c 04 00 -63 32 00 00 00 32 00 44 75 61 6c 53 74 72 2e 2e 31 63 63 63 32 32 32 00 00 -00 40 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: DualStr..1 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -18 03 02 04 08 2d 00 4a 08 08 1f 0c 07 01 0f 3f 00 3d 1c 04 09 10 04 07 0f -12 00 61 08 05 0d 08 00 06 0b 25 00 5b 04 06 2c 21 1e 0f 00 22 18 0c 04 00 -63 32 00 00 00 32 00 44 75 61 6c 53 74 72 2e 2e 31 63 63 63 32 32 32 00 00 -00 40 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: DualStr..2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 03 02 04 08 2d 03 46 08 0b 16 0c 07 01 0f 3f 02 49 04 01 09 10 04 07 0f -12 04 59 08 05 0a 08 00 06 0b 25 04 60 08 05 74 21 1e 0f 00 32 18 0c 04 00 -63 32 00 00 00 32 00 44 75 61 6c 53 74 72 2e 2e 32 63 63 63 32 32 32 00 00 -00 30 00 10 00 30 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: DualStr..2 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -18 03 02 04 08 2d 00 46 13 0b 16 0c 07 01 0f 3f 00 49 08 01 09 10 04 07 0f -12 00 59 04 05 0a 08 00 06 0b 25 00 60 08 05 74 21 1e 0f 00 32 18 0c 04 00 -63 32 00 00 00 32 00 44 75 61 6c 53 74 72 2e 2e 32 63 63 63 32 32 32 00 00 -00 30 00 10 00 30 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: DualStr..3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 05 01 05 08 2d 03 50 08 03 15 0a 01 05 0f 3f 03 38 13 00 0a 10 01 05 0f -12 03 59 08 03 0a 07 01 05 0b 25 04 5b 08 06 2c 21 1e 0f 00 22 18 0c 04 00 -63 32 00 00 00 32 00 44 75 61 6c 53 74 72 2e 2e 33 63 63 63 32 32 32 00 10 -00 10 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: DualStr..3 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -15 05 01 05 08 2d 00 50 08 03 15 0a 01 05 0f 3f 00 38 13 00 0a 10 01 05 0f -12 00 59 08 03 0a 07 01 05 0b 25 00 5b 08 06 2c 21 1e 0f 00 22 18 0c 04 00 -63 32 00 00 00 32 00 44 75 61 6c 53 74 72 2e 2e 33 63 63 63 32 32 32 00 10 -00 10 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ELKA Strg1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 16 03 04 0e 00 04 58 0d 02 18 03 03 05 08 00 04 5b 08 00 0f 04 03 07 0f -00 04 63 0d 06 09 10 03 05 0f 00 07 5f 08 05 24 21 23 0f 00 12 00 05 04 00 -63 63 63 00 00 32 00 45 4c 4b 41 20 53 74 72 67 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ELKA Strg1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -16 16 03 04 0e 00 01 58 0d 02 18 03 03 05 08 00 01 5b 08 00 0f 04 03 07 0f -00 00 63 0d 06 09 10 03 05 0f 00 01 5f 08 05 24 21 23 0f 00 12 00 05 04 00 -63 63 63 00 00 32 00 45 4c 4b 41 20 53 74 72 67 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ELKA Strg2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 16 03 04 0e 00 03 4b 08 0a 14 03 03 05 08 00 04 51 04 00 0b 04 03 07 0f -00 05 63 08 06 0b 10 03 05 0f 00 06 63 04 0d 7c 23 19 14 00 42 18 05 04 00 -63 63 63 00 00 32 00 45 4c 4b 41 20 53 74 72 67 32 63 63 63 32 32 32 00 00 -00 30 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ELKA Strg2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -15 16 03 04 0e 00 01 4b 08 0a 14 03 03 05 08 00 01 51 04 00 0b 04 03 07 0f -00 00 63 08 06 0b 10 03 05 0f 00 00 63 04 0d 7c 23 19 14 00 42 18 05 04 00 -63 63 63 00 00 32 00 45 4c 4b 41 20 53 74 72 67 32 63 63 63 32 32 32 00 00 -00 30 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: HiString 1 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank B, voice 21 -0b 04 00 04 0f 14 02 49 09 06 0a 07 00 04 0f 14 02 51 0a 00 08 1f 00 05 0f -00 01 63 09 06 0a 1f 00 05 0f 00 01 63 0a 00 3c 1f 06 09 00 52 05 04 04 00 -63 32 00 00 00 32 00 48 69 53 74 72 69 6e 67 20 31 63 63 63 32 32 32 00 02 -00 30 00 32 00 10 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: HiString 2 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank B, voice 30 -17 04 00 04 0f 14 02 49 09 06 19 07 00 04 0f 14 02 51 0a 00 15 1f 00 05 0f -00 01 63 09 06 14 1f 00 05 0f 00 01 63 0a 00 3c 1f 06 09 00 52 05 04 04 00 -63 32 00 00 00 32 00 48 69 53 74 72 69 6e 67 20 32 63 63 63 32 32 32 30 02 -20 30 00 32 00 10 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Kalimba * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1d 00 1f 01 00 00 00 3f 04 0e 1a 0d 1f 0f 00 00 00 32 08 1b 1a 0c 1f 05 00 -00 01 63 08 08 1e 12 1f 09 00 00 01 63 34 13 04 1c 00 00 00 42 18 02 04 00 -28 32 00 00 00 32 00 4b 61 6c 69 6d 62 61 20 20 2a 63 63 63 32 32 32 00 30 -00 00 00 00 09 1f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: LowString -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank B, voice 22 -0b 04 00 04 0f 14 02 49 05 06 0a 07 00 04 0f 14 02 55 04 00 09 1f 00 05 0f -00 01 63 09 06 08 1f 00 05 0f 00 01 63 04 00 3c 1d 06 0a 00 52 05 04 04 00 -63 32 00 00 00 32 00 4c 6f 77 53 74 72 69 6e 67 20 63 63 63 32 32 32 00 01 -00 38 00 32 00 18 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntPluck1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 19 16 01 0d 00 02 52 19 03 1f 09 0a 07 0c 00 02 4e 00 03 1b 15 06 0c 0d -00 05 36 16 03 1f 0a 04 06 0c 00 05 63 04 0b 7a 15 00 00 00 22 18 04 04 00 -28 32 00 00 00 32 00 4f 72 6e 74 50 6c 75 63 6b 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntPluck1 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 19 16 01 0d 00 00 52 19 03 1f 09 0a 07 0c 00 00 4e 00 03 1b 15 06 0c 0d -00 00 36 16 03 1f 0a 04 06 0c 00 00 63 04 0b 7a 15 00 00 00 22 18 04 04 00 -28 32 00 00 00 32 00 4f 72 6e 74 50 6c 75 63 6b 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntPluck1 -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -1f 19 16 00 0d 00 00 52 19 03 1f 09 0a 07 0c 00 00 4e 00 03 1b 15 06 0c 0d -00 00 36 16 03 1f 0a 04 06 0c 00 00 63 04 0b 7a 15 00 00 00 22 18 04 04 00 -28 32 00 00 00 32 00 4f 72 6e 74 50 6c 75 63 6b 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntPluck2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 07 19 07 0f 00 02 63 04 03 18 0c 0f 07 0c 00 03 41 2d 13 18 0c 0f 07 0c -00 06 63 04 0b 16 0f 16 06 0c 00 04 63 04 0b 7c 15 00 00 00 22 18 04 04 00 -28 32 00 00 00 32 00 4f 72 6e 74 50 6c 75 63 6b 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntPluck2 -** Source: from a library of patches collected by Duane Bowker, author unknown -18 07 19 07 0f 00 00 63 04 03 18 0c 0f 07 0c 00 00 41 2d 13 18 0c 0f 07 0c -00 00 63 04 0b 16 0f 16 06 0c 00 00 63 04 0b 7c 15 00 00 00 22 18 04 04 00 -28 32 00 00 00 32 00 4f 72 6e 74 50 6c 75 63 6b 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Pizz. 1 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank B, voice 25 -1f 1f 08 0a 0a 09 00 3c 04 03 1d 1d 11 0f 0a 00 01 63 04 03 1c 12 00 0b 00 -00 01 63 04 03 1f 11 0e 0f 09 00 01 5a 04 03 3e 23 00 0a 00 32 18 02 04 00 -63 32 00 00 00 32 00 50 69 7a 7a 2e 20 20 20 20 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Pizz. 1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 08 0a 0d 09 00 3c 04 03 1d 1d 11 0f 0a 00 01 63 04 03 1c 12 00 0b 00 -00 01 63 04 03 1f 11 0e 0f 09 00 01 5a 04 03 3e 23 00 0a 00 32 18 02 04 00 -63 32 00 00 00 32 00 50 69 7a 7a 2e 20 20 20 20 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Pizz. 2 -** Controls: KV -** Source: Yamaha DX11 factory preset, bank B, voice 26 -1d 10 0a 09 0f 00 01 41 04 03 1f 1f 16 0a 0a 00 00 4a 04 03 1f 1f 1f 0f 00 -00 01 51 00 03 1f 13 11 0f 00 00 01 63 04 03 39 23 00 00 00 32 18 02 04 00 -63 32 00 00 00 32 00 50 69 7a 7a 2e 20 20 20 20 32 63 63 63 32 32 32 00 00 -00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Pizz. 2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 10 0a 09 0f 00 01 41 04 03 1f 1f 16 0a 0d 00 00 4a 04 03 1f 1f 1f 0f 00 -00 01 51 00 03 1f 13 11 0f 00 00 01 63 04 03 39 23 00 00 00 32 18 02 04 00 -63 32 00 00 00 32 00 50 69 7a 7a 2e 20 20 20 20 32 63 63 63 32 32 32 00 00 -00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Pizzicato* -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1e 13 15 0f 00 2b 04 58 04 03 1f 1f 07 0a 0c 00 01 54 04 06 1f 0d 00 0a 00 -00 01 5b 04 00 1e 17 10 07 0b 00 02 63 04 03 01 23 00 00 00 32 18 02 04 00 -63 32 00 00 00 32 00 50 69 7a 7a 69 63 61 74 6f 2a 63 63 63 32 32 32 00 00 -00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Pizzicato -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank B, voice 23 -1b 18 15 0f 0a 00 01 61 04 03 1f 1f 00 07 0c 00 01 54 04 06 1f 0d 00 08 00 -00 01 5b 04 03 1f 10 00 06 00 00 01 63 04 03 39 23 00 00 00 62 18 04 04 00 -63 32 00 00 00 32 00 50 69 7a 7a 69 63 61 74 6f 20 63 63 63 32 32 32 00 00 -00 00 00 30 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ReverbStrg -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank B, voice 25 -0b 04 00 04 0f 00 01 49 05 06 0a 07 00 04 0f 00 01 49 04 00 09 1f 00 05 0f -00 01 63 09 06 09 1f 00 05 0f 00 01 63 0a 00 3c 1d 08 0a 00 52 05 04 04 00 -63 32 00 00 00 32 00 52 65 76 65 72 62 53 74 72 67 63 63 63 32 32 32 00 31 -00 28 00 32 00 30 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: StrgPad A -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0b 04 00 04 0f 14 02 48 03 01 0a 07 00 04 0f 14 02 50 04 04 09 1f 00 05 0f -00 01 63 03 01 09 1f 00 05 0f 00 01 63 04 04 3c 21 06 0c 00 52 05 04 04 00 -63 32 00 0c 00 32 00 53 74 72 67 50 61 64 20 41 20 63 63 63 32 32 32 00 16 -00 38 00 36 00 18 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: StrgPad B -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0b 04 00 04 0f 14 02 47 05 02 0a 07 00 04 0f 14 02 4e 03 00 09 1f 00 05 0f -00 01 63 04 06 08 1f 00 05 0f 00 01 63 03 00 3c 1f 06 13 00 52 05 04 04 00 -63 32 00 11 00 32 00 53 74 72 67 50 61 64 20 42 20 63 63 63 32 32 32 00 11 -00 36 00 38 00 16 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Stringed * -** Controls: KV, MW (LFO pitch), BC (EG amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 00 00 04 0e 0a 50 45 09 06 1f 00 00 04 0e 0a 40 4c 0a 00 09 07 00 06 0e -00 02 63 09 10 09 07 00 06 0e 20 02 63 0a 16 3c 1c 00 0b 00 4a 05 02 04 00 -28 63 00 00 00 32 10 53 74 72 69 6e 67 65 64 20 2a 63 63 63 32 32 32 00 02 -00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: StringEns1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 03 02 04 08 41 12 42 04 0b 0a 0c 07 03 0f 63 24 39 16 00 0b 10 04 07 0f -12 1b 61 08 03 0b 07 05 05 0d 25 1b 5c 04 02 24 21 23 0c 00 22 18 0c 04 00 -63 32 00 00 00 32 00 53 74 72 69 6e 67 45 6e 73 31 63 63 63 32 32 32 00 30 -00 20 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: StringEns1 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -18 03 02 04 08 41 00 42 04 0b 16 0c 07 03 0f 63 00 3f 19 00 0b 10 04 07 0f -12 00 61 04 03 0b 07 05 05 0d 25 00 5c 08 02 24 21 23 0c 00 22 18 0c 04 00 -63 32 00 00 00 32 00 53 74 72 69 6e 67 45 6e 73 31 63 63 63 32 32 32 00 20 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: StringEns2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 01 02 05 08 41 02 4f 08 0b 16 0c 07 06 0f 63 02 3b 08 00 09 10 04 06 0f -12 03 60 0d 03 0b 08 05 06 0d 25 03 5e 08 02 2c 21 23 0c 00 22 0c 0c 04 00 -63 32 00 00 00 32 00 53 74 72 69 6e 67 45 6e 73 32 63 63 63 32 32 32 00 20 -00 60 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: StringEns2 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -18 01 02 05 08 41 00 4f 04 0b 16 0c 07 06 0f 63 00 3b 13 00 09 10 04 06 0f -12 00 60 0d 03 0b 08 05 06 0d 25 00 5e 08 02 2c 21 23 0c 00 22 0c 0c 04 00 -63 32 00 00 00 32 00 53 74 72 69 6e 67 45 6e 73 32 63 63 63 32 32 32 00 00 -00 60 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: StringEns3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 15 0a 07 0e 0a 02 4d 04 0e 0a 06 1a 08 05 28 02 34 08 0e 0f 09 07 06 0f -1e 03 63 04 04 0a 06 1a 08 05 28 03 5f 08 0e 2c 21 2e 1e 09 21 18 0c 04 00 -63 32 32 00 00 32 00 53 74 72 69 6e 67 45 6e 73 33 63 63 63 32 32 32 00 40 -00 10 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: StringEns3 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 15 0a 07 0e 0a 00 4d 04 0e 0a 06 1a 08 05 28 00 34 13 0e 0f 09 07 06 0f -1e 00 63 04 04 0a 06 1a 08 05 28 00 5f 08 0e 2c 21 2e 1e 09 12 18 0c 04 00 -63 32 32 00 00 32 00 53 74 72 69 6e 67 45 6e 73 33 63 63 63 32 32 32 00 40 -00 10 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: StringEns4 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 10 06 04 0e 39 01 50 08 00 13 09 00 04 0e 14 02 44 08 05 0b 10 00 05 0e -14 04 63 08 03 0b 10 00 07 0e 14 04 5f 0d 05 2c 1c 00 0f 00 32 18 0c 04 00 -63 32 32 00 00 32 00 53 74 72 69 6e 67 45 6e 73 34 63 63 63 32 32 32 00 20 -00 30 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: StringEns4 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -10 10 06 04 0e 39 00 50 04 00 13 09 00 04 0e 14 00 44 08 05 0f 10 00 05 0e -14 00 63 08 03 0f 10 00 07 0e 14 00 5f 08 05 2c 21 00 0f 00 32 18 0c 04 00 -63 32 32 00 00 32 00 53 74 72 69 6e 67 45 6e 73 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: StringEns5 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0c 0a 00 05 0d 39 03 44 04 06 0b 09 00 05 0e 0a 02 39 04 0b 0b 09 06 06 0c -0c 04 5e 08 04 0b 0b 00 05 0e 0a 03 60 04 02 24 21 0a 0e 00 32 18 0c 04 00 -63 32 32 00 00 32 00 53 74 72 69 6e 67 45 6e 73 35 63 63 63 32 32 32 00 40 -00 10 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: StringEns5 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -13 0f 00 05 0d 39 00 44 08 06 0b 09 00 05 0e 0a 00 39 04 0b 0f 09 06 06 0c -0c 00 5e 08 04 0c 0b 00 05 0e 0a 00 60 08 02 24 21 0a 0e 00 32 18 0c 04 00 -63 32 32 00 00 32 00 53 74 72 69 6e 67 45 6e 73 35 63 63 63 32 32 32 00 40 -00 10 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: StringEns6 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 0f 00 06 0d 39 01 50 08 06 15 0f 00 06 0d 0a 03 48 13 0b 0b 09 06 06 0c -0c 02 62 08 04 0b 17 00 06 0e 0a 03 62 0d 02 2c 21 0a 09 00 22 0c 0c 04 00 -63 32 32 00 00 32 00 53 74 72 69 6e 67 45 6e 73 36 63 63 63 32 32 32 00 40 -00 10 00 10 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: StringEns6 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -15 0f 00 06 0d 39 00 50 08 06 15 0f 00 06 0d 0a 00 48 13 0b 10 09 06 06 0c -0c 00 62 08 04 10 17 00 06 0e 0a 00 62 0d 02 2c 21 0a 09 00 22 0c 0c 04 00 -63 32 32 00 00 32 00 53 74 72 69 6e 67 45 6e 73 36 63 63 63 32 32 32 00 40 -00 10 00 10 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: StringEns7 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0d 0f 00 05 0d 28 01 53 00 00 15 0f 00 05 0d 0a 03 47 00 04 0c 09 06 06 0c -06 03 61 00 00 0b 17 00 05 0e 05 04 62 00 05 24 21 0a 09 00 22 18 0c 04 00 -63 32 32 00 00 32 00 53 74 72 69 6e 67 45 6e 73 37 63 63 63 32 32 32 00 00 -00 00 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: StringEns7 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -15 0f 00 05 0d 28 00 53 00 00 15 0f 00 05 0d 0a 00 47 00 04 0d 09 06 06 0c -06 00 61 00 00 0d 17 00 05 0e 05 00 62 00 05 24 21 0a 09 00 22 18 0c 04 00 -63 32 32 00 00 32 00 53 74 72 69 6e 67 45 6e 73 37 63 63 63 32 32 32 00 00 -00 00 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: StringEns8 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 04 09 09 0d 28 01 3e 08 08 0d 0f 00 05 0d 0a 03 44 08 04 0b 09 06 06 0c -06 05 63 08 00 0b 17 00 05 0e 05 03 62 08 05 24 21 0a 09 00 22 00 0c 04 00 -63 32 32 00 00 32 00 53 74 72 69 6e 67 45 6e 73 38 63 63 63 32 32 32 00 20 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: StringEns8 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 04 09 09 0d 28 00 3e 13 08 0f 0f 00 05 0d 0a 00 44 19 04 0d 09 06 06 0c -06 00 63 08 00 0e 17 00 05 0e 05 00 62 08 05 24 21 0a 09 00 22 00 0c 04 00 -63 32 32 00 00 32 00 53 74 72 69 6e 67 45 6e 73 38 63 63 63 32 32 32 00 20 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: StringLead -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 0d 00 05 0e 0a 03 58 08 03 0a 02 00 07 09 00 05 5a 19 08 0f 15 06 05 0f -00 05 62 08 08 0c 15 06 08 0e 00 05 5f 04 08 34 26 20 20 00 12 0c 02 04 00 -28 02 00 00 00 32 00 53 74 72 69 6e 67 4c 65 61 64 63 63 63 32 32 32 00 00 -00 30 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: StringLead -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 0d 00 05 0e 0a 01 58 08 03 0a 02 00 07 09 00 02 5a 19 08 0f 15 06 05 0f -00 00 62 08 08 0c 15 06 08 0e 00 00 5f 04 08 34 26 20 20 00 12 0c 02 04 00 -28 02 00 00 00 32 00 53 74 72 69 6e 67 4c 65 61 64 63 63 63 32 32 32 00 00 -00 30 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Strings -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: DX100 GLIB patch (Michael Kesti and others) -11 0b 05 05 0a 17 00 43 04 0c 0c 1f 08 04 0f 22 00 35 13 09 07 1f 04 05 0f -14 00 46 04 0b 0a 1f 05 06 0f 00 00 57 04 0b 3a 21 0e 2a 00 42 0c 02 04 00 -63 32 00 32 00 32 00 53 74 72 69 6e 67 73 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Strings -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: DX100 GLIB patch (Michael Kesti and others) -0a 00 05 05 0f 17 00 43 08 0c 0c 00 00 04 0f 22 00 34 13 09 0e 00 00 05 0f -14 00 46 0a 0b 0c 00 06 06 0f 00 00 4c 0a 0b 3a 21 0e 2a 00 42 0c 02 04 00 -63 32 00 32 00 32 00 53 74 72 69 6e 67 73 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Strings 1 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank C, voice 1 -1f 04 00 04 0f 1e 02 46 09 06 1f 04 00 04 0f 1e 02 46 0a 00 0c 1f 00 05 0f -1e 01 63 09 06 0c 1f 00 05 0f 1e 01 63 0a 00 3c 1f 06 0a 00 52 05 02 04 00 -63 32 00 00 00 32 00 53 74 72 69 6e 67 73 20 20 31 63 63 63 32 32 32 00 02 -00 00 00 32 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Strings 2 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank C, voice 2 -14 05 00 04 09 14 02 3d 1c 06 0a 04 02 04 09 01 01 47 13 00 0c 05 02 05 0c -00 01 63 09 06 0a 04 01 05 0c 00 01 63 0a 00 3c 1f 00 1a 00 52 05 02 04 00 -63 32 00 00 00 32 00 53 74 72 69 6e 67 73 20 20 32 63 63 63 32 32 32 00 10 -00 20 00 32 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Strings 2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -14 05 00 04 09 14 02 3d 1c 06 0d 04 02 04 09 01 01 47 13 00 0c 05 02 05 0c -00 01 63 09 06 0d 04 01 05 0c 00 01 63 0a 00 3c 1f 00 1a 00 52 05 02 04 00 -63 32 00 00 00 32 00 53 74 72 69 6e 67 73 20 20 32 63 63 63 32 32 32 00 10 -00 20 00 32 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Strings 3 -** Description: A string sound with a little horn mixed in -** Controls: KV, MW (LFO pitch) -** Source: Art Hitzeman -1f 04 00 04 0f 1e 02 46 09 06 1f 04 00 04 0f 1e 02 46 0a 00 0c 1f 00 05 0f -1e 01 63 09 06 12 1f 00 05 0f 1e 01 63 0a 00 3c 1f 06 0a 00 52 05 02 04 00 -63 32 00 00 00 32 00 53 74 72 69 6e 67 73 20 20 33 63 63 63 32 32 32 00 02 -00 00 00 32 00 70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Syn.Str 1 -** Controls: MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank A, voice 1 -1f 1f 00 03 0f 00 00 46 0a 00 1f 1f 00 03 0f 00 00 44 09 06 0b 1f 00 05 0f -1e 00 56 0a 00 0b 1f 00 05 0f 1e 00 56 0a 06 3c 23 00 2e 00 42 05 02 04 00 -63 32 00 00 00 32 00 53 79 6e 2e 53 74 72 20 20 31 63 63 63 32 32 32 00 30 -00 62 00 10 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Syn.Str 2 -** Controls: MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank A, voice 2 -1f 1f 00 03 0f 00 00 31 13 00 1f 1f 00 03 0f 00 00 3b 09 06 0c 1f 00 05 0f -1e 00 5b 0a 00 0c 1f 00 05 0f 1e 00 53 0a 06 3c 20 00 4b 00 42 05 02 04 00 -63 32 00 00 00 32 00 53 79 6e 2e 53 74 72 20 20 32 63 63 63 32 32 32 00 70 -00 62 00 30 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynString -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank B, voice 26 -1f 04 00 02 0f 0f 00 44 04 03 1f 09 03 02 0f 15 01 3a 08 00 1f 00 00 0b 0f -0c 02 44 08 06 1a 0a 00 05 0f 05 01 5c 08 13 3a 1d 06 0f 00 52 0c 04 04 00 -63 32 00 00 00 32 00 53 79 6e 53 74 72 69 6e 67 20 63 63 63 32 32 32 20 00 -30 30 10 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: T Pluck..1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 0d 0a 03 0d 00 3a 4f 0a 0a 1b 13 00 0c 07 00 1e 51 16 0b 1f 0a 0a 06 0c -00 1c 63 04 08 1b 09 0a 07 0c 00 3d 63 04 0b 6c 15 00 00 00 02 0c 02 04 00 -63 32 00 00 00 32 00 54 20 50 6c 75 63 6b 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: T Pluck..1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -16 0d 0a 03 0d 00 3a 4f 0a 0a 1b 13 00 0c 07 00 19 51 16 0b 1f 0a 0a 06 0c -00 18 63 04 08 1b 09 0a 07 0c 00 38 63 04 0b 6c 15 00 00 00 02 0c 02 04 00 -63 32 00 00 00 32 00 54 20 50 6c 75 63 6b 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: T Pluck..2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 0d 0a 03 0d 00 3b 53 08 0a 1b 13 00 0c 07 00 1d 3b 00 0b 1f 0a 0a 06 0c -00 1e 4f 16 08 1e 0a 09 06 0c 00 3d 63 04 13 72 15 00 00 00 02 18 02 04 00 -63 32 00 00 00 32 00 54 20 50 6c 75 63 6b 2e 2e 32 63 63 63 32 32 32 00 00 -00 10 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: T Pluck..2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -16 0d 0a 03 0d 00 39 53 08 0a 1b 13 00 0c 07 00 1a 3b 00 0b 1f 0a 0a 06 0c -00 19 4f 16 08 1e 0a 09 06 0c 00 38 63 04 13 72 15 00 00 00 02 18 02 04 00 -63 32 00 00 00 32 00 54 20 50 6c 75 63 6b 2e 2e 32 63 63 63 32 32 32 00 00 -00 10 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: T Pluck..3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1d 0f 09 04 0c 15 3b 53 0a 0e 15 0d 1f 03 0a 12 1d 4d 1f 19 1c 09 0f 05 0a -19 1e 63 04 0a 13 07 09 05 0e 00 3d 63 00 13 6c 22 21 00 00 12 18 02 04 00 -63 32 00 00 00 32 00 54 20 50 6c 75 63 6b 2e 2e 33 63 63 63 32 32 32 00 00 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: T Pluck..3 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 0f 09 04 0c 15 39 53 0a 0e 15 0d 1f 03 0a 12 19 4d 1f 19 1c 09 0f 05 0a -19 18 63 04 0a 13 07 09 05 0e 00 38 63 00 13 6c 22 21 00 00 12 18 02 04 00 -63 32 00 00 00 32 00 54 20 50 6c 75 63 6b 2e 2e 33 63 63 63 32 32 32 00 00 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: WarmString -** Controls: KV, MW (LFO pitch) -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -0d 05 00 04 0f 14 00 40 05 06 0c 08 00 04 0f 14 00 49 04 00 0b 1f 00 05 0f -00 03 63 09 06 0a 1f 00 05 0f 00 03 63 04 00 3c 1d 06 10 00 52 11 04 04 00 -63 32 00 00 00 32 00 57 61 72 6d 53 74 72 69 6e 67 63 63 63 32 32 32 00 01 -00 38 00 32 00 18 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: WindString -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 00 03 03 0f 56 03 63 0d 03 0d 04 02 04 0f 29 04 60 08 0b 06 00 00 04 0f -4c 06 3d 08 13 0a 04 02 06 0f 5c 05 63 08 0b 7c 29 00 00 00 22 00 02 04 00 -28 02 00 00 00 32 00 57 69 6e 64 53 74 72 69 6e 67 63 63 63 32 32 32 00 00 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: WindString -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 00 03 03 0f 56 00 63 0d 03 0d 04 02 04 0f 29 02 60 08 0b 06 00 00 04 0f -4c 00 3d 08 13 0a 04 02 06 0f 5c 00 63 08 0b 7c 29 00 00 00 22 00 02 04 00 -28 02 00 00 00 32 00 57 69 6e 64 53 74 72 69 6e 67 63 63 63 32 32 32 00 00 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: phantstrng -** Description: a string voice -** Controls: KV -** Source: GLIB (Michael Kesti and others) -08 03 06 01 0b 00 03 58 0a 02 1f 02 04 03 0e 43 03 5b 04 10 1f 0c 02 04 0a -00 03 4e 08 00 0b 09 04 06 0b 00 03 63 04 03 28 14 00 00 00 62 18 01 04 00 -63 32 00 32 00 32 00 70 68 61 6e 74 73 74 72 6e 67 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY Banjo - - -** Name: Banjo * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1e 0c 00 04 0c 00 01 51 04 15 1f 12 00 01 0f 00 00 58 04 16 1f 0a 09 01 0a -00 02 4e 19 18 1c 0b 0a 06 09 00 41 63 0a 13 7b 3a 00 00 00 09 18 02 04 00 -63 00 42 00 00 32 00 42 61 6e 6a 6f 20 20 20 20 2a 63 63 63 32 32 32 00 00 -00 20 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Banjo -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank B, voice 10 -1f 0b 08 01 0f 00 00 48 1c 15 1f 1f 00 01 0f 00 00 53 04 16 1f 07 11 01 0f -00 00 40 08 16 1f 0e 0a 06 0a 00 0b 63 0a 10 3b 1d 00 10 00 32 18 02 04 00 -63 32 00 00 00 32 00 42 61 6e 6a 6f 20 20 20 20 20 63 63 63 32 32 32 00 70 -00 30 00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Banjo....1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1e 17 00 04 0c 00 02 5a 04 0d 1f 02 03 01 0f 00 05 5a 04 0e 1f 1b 08 01 0c -00 06 42 08 0e 1f 0d 0b 06 09 00 06 63 04 10 2a 06 00 01 00 32 18 07 04 00 -63 32 00 00 00 32 00 42 61 6e 6a 6f 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Banjo....1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1e 17 00 04 0c 00 02 5a 04 0d 1f 02 03 01 0f 00 01 5a 04 0e 1f 1b 08 01 0c -00 01 42 08 0e 1f 0d 0b 06 09 00 01 63 04 10 2a 06 00 01 00 32 18 07 04 00 -63 32 00 00 00 32 00 42 61 6e 6a 6f 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Banjo....2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1e 17 00 04 0c 00 02 5b 04 0d 16 09 03 05 00 00 06 4d 13 16 1f 1b 08 05 0c -00 04 3e 08 0e 1f 0d 0b 06 09 00 05 63 04 10 2c 06 00 01 00 32 18 07 04 00 -63 32 00 00 00 32 00 42 61 6e 6a 6f 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 10 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Banjo....2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1e 17 00 04 0c 00 02 5b 04 0d 16 09 03 05 00 00 02 4d 13 16 1f 1b 08 05 0c -00 00 3e 08 0e 1f 0d 0b 06 09 00 00 63 04 10 2c 06 00 01 00 32 18 07 04 00 -63 32 00 00 00 32 00 42 61 6e 6a 6f 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 10 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Old Banjo -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank C, voice 7 -1e 17 00 04 0c 00 01 5f 04 15 1f 0b 03 01 0f 00 00 5c 04 1e 1f 1b 08 01 0c -00 02 45 19 1e 1f 0d 0b 06 09 00 03 63 0a 10 2a 23 00 00 00 62 18 07 04 00 -63 32 00 00 00 32 00 4f 6c 64 20 42 61 6e 6a 6f 20 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - - ---Bank 6 - -* SUBCATEGORY BassGuitar - - -** Name: AnalogBass -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank C, voice 13 -1f 0d 00 08 0c 1e 03 51 04 08 1f 09 00 09 0a 00 01 53 00 00 1f 0c 00 0a 0b -00 01 4a 00 06 1f 1f 00 0c 0f 00 02 63 00 03 3a 23 00 00 00 62 0c 04 04 00 -63 32 00 32 00 32 00 41 6e 61 6c 6f 67 42 61 73 73 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBass.1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0c 08 03 0a 0f 01 61 00 13 1f 0f 0b 03 0d 0c 01 4c 04 0b 15 15 08 05 0b -2e 06 36 10 0b 1f 07 0a 09 0d 00 05 63 04 13 5a 22 35 0a 00 72 0c 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 61 73 73 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBass.1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0c 08 03 0a 0f 01 61 00 13 1f 0f 0b 03 0d 0c 01 4c 04 0b 15 15 08 05 0b -2e 01 36 10 0b 1f 07 0a 09 0d 00 00 63 04 13 5a 22 35 0a 00 72 0c 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 61 73 73 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBass.2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 1b 0c 03 0c 0f 01 5f 00 03 1c 1b 11 03 0c 0c 02 4a 04 0b 18 09 0f 04 0d -2e 05 32 04 0b 1f 0f 04 09 0f 00 05 63 04 13 1a 23 00 00 00 02 0c 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 61 73 73 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBass.2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 1b 0c 03 0c 0f 01 5f 00 03 1c 1b 11 03 0c 0c 01 4a 04 0b 18 09 0f 04 0d -2e 00 32 04 0b 1f 0f 04 09 0f 00 00 63 04 13 1a 23 00 00 00 02 0c 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 61 73 73 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBass.3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0c 0c 0c 0c 0f 01 51 04 03 1f 15 12 05 0d 0c 42 57 04 0b 1f 0a 0a 03 04 -2e 45 46 08 0a 1f 07 05 0a 0f 00 06 5f 04 13 0a 26 1c 02 50 36 00 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 61 73 73 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBass.3 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0c 0c 0c 0c 0f 00 51 04 03 1f 15 12 05 0d 0c 40 57 04 0b 1f 0a 0a 03 04 -2e 40 46 08 0a 1f 07 05 0a 0f 00 00 5f 04 13 0a 26 1c 02 50 36 00 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 61 73 73 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBass.4 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0c 0c 0c 0c 00 01 5a 00 03 1f 15 12 05 0d 00 41 63 04 13 1f 0a 0a 03 04 -00 45 46 08 12 1f 07 09 0a 0f 00 04 63 04 0b 1a 26 1c 02 50 36 0c 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 61 73 73 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBass.5 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0c 0c 0c 0c 00 01 5b 00 03 1f 15 12 05 0d 00 40 63 04 13 1f 0a 0a 03 04 -00 43 46 08 12 1f 07 09 0a 0f 00 06 63 04 0b 1a 26 1c 02 50 36 0c 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 61 73 73 2e 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBass.5 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0c 0c 0c 0c 00 01 5a 00 03 1f 15 12 05 0d 00 41 63 04 13 1f 0a 0a 03 04 -00 41 46 08 12 1f 07 09 0a 0f 00 00 63 04 0b 1a 26 1c 02 50 36 0c 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 61 73 73 2e 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBass.5 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0c 0c 0c 0c 00 01 5b 00 03 1f 15 12 05 0d 00 40 63 04 13 1f 0a 0a 03 04 -00 41 46 08 12 1f 07 09 0a 0f 00 00 63 04 0b 1a 26 1c 02 50 36 0c 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 61 73 73 2e 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBass.6 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1e 1f 08 08 0f 0f 02 60 04 03 1c 1c 0a 04 09 0c 02 63 00 03 1b 0c 08 08 04 -2e 06 46 1c 03 1f 12 06 09 0f 00 05 63 00 03 1a 23 00 00 00 02 0c 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 61 73 73 2e 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBass.6 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1e 1f 08 08 0f 0f 02 60 04 03 1c 1c 0a 04 09 0c 00 63 00 03 1b 0c 08 08 04 -2e 01 46 1c 03 1f 12 06 09 0f 00 00 63 00 03 1a 23 00 00 00 02 0c 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 61 73 73 2e 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBass.7 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1e 1f 08 08 0c 0f 01 5a 04 03 1c 1f 0a 04 0f 0c 03 4c 00 03 1b 1f 08 08 0e -2e 05 63 04 03 1f 1f 06 09 0f 00 05 63 00 03 3c 23 00 00 00 02 0c 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 61 73 73 2e 37 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBass.7 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1e 1f 08 08 0c 0f 01 5a 04 03 1c 1f 0a 04 0f 0c 01 4c 00 03 1b 1f 08 08 0e -2e 00 63 04 03 1f 1f 06 09 0f 00 00 63 00 03 3c 23 00 00 00 02 0c 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 61 73 73 2e 37 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBass.8 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1e 1f 08 06 0c 0f 01 63 00 06 1c 1f 09 0a 0c 0c 02 63 00 02 1b 1f 07 09 0f -2e 05 63 04 06 1f 1f 09 0a 0c 00 05 63 04 02 2c 23 00 00 00 02 0c 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 61 73 73 2e 38 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBass.8 -** Source: from a library of patches collected by Duane Bowker, author unknown -1e 1f 08 06 0c 0f 00 63 00 06 1c 1f 09 0a 0c 0c 00 63 00 02 1b 1f 07 09 0f -2e 00 63 04 06 1f 1f 09 0a 0c 00 00 63 04 02 2c 23 00 00 00 02 0c 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 61 73 73 2e 38 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBass.9 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 07 07 09 0f 00 01 52 00 06 1c 0c 08 0a 0f 00 01 61 00 02 1c 07 07 09 0f -00 06 63 08 06 1c 07 07 09 0f 00 06 63 04 02 3c 23 00 00 00 02 0c 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 61 73 73 2e 39 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBass.9 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 07 07 09 0f 00 01 52 00 06 1c 0c 08 0a 0f 00 01 61 00 02 1c 07 07 09 0f -00 00 63 08 06 1c 07 07 09 0f 00 00 63 04 02 3c 23 00 00 00 02 0c 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 61 73 73 2e 39 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBass10 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 12 1f 07 02 00 03 32 04 06 1c 0f 1f 07 02 00 03 5e 00 02 1c 1f 06 07 0f -00 05 63 00 06 1c 1f 09 07 0f 00 05 63 00 02 3c 23 00 00 00 02 0c 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 61 73 73 31 30 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgBass10 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 12 1f 07 02 00 02 32 04 06 1c 0f 1f 07 02 00 01 5e 00 02 1c 1f 06 07 0f -00 00 63 00 06 1c 1f 09 07 0f 00 00 63 00 02 3c 23 00 00 00 02 0c 02 04 00 -63 32 00 00 00 32 00 41 6e 6c 67 42 61 73 73 31 30 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgCut.BS -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1d 12 07 08 04 00 02 61 19 1b 19 1b 09 04 0c 00 03 63 00 03 1d 0c 02 08 0d -00 04 42 19 03 1d 12 06 09 0e 00 05 63 00 03 34 23 00 00 00 32 0c 02 04 00 -63 11 06 00 00 32 00 41 6e 6c 67 43 75 74 2e 42 53 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgCut.BS -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 12 07 08 04 00 01 61 19 1b 19 1b 09 04 0c 00 01 63 00 03 1d 0c 02 08 0d -00 02 42 19 03 1d 12 06 09 0e 00 00 63 00 03 34 23 00 00 00 32 0c 02 04 00 -63 11 06 00 00 32 00 41 6e 6c 67 43 75 74 2e 42 53 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgFunkBS -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 08 02 05 06 14 03 5e 04 03 1f 1c 0f 07 04 19 03 5f 04 14 1f 1b 1f 07 0f -00 07 5d 04 0b 1f 06 12 07 0c 00 06 5c 04 0b 75 08 00 0b 00 22 00 02 04 00 -63 11 06 00 00 32 00 41 6e 6c 67 46 75 6e 6b 42 53 63 63 63 32 32 32 00 00 -00 10 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgFunkBS -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 08 02 05 06 14 01 5e 04 03 1f 1c 0f 07 04 19 01 5f 04 14 1f 1b 1f 07 0f -00 02 5d 04 0b 1f 06 12 07 0c 00 00 5c 04 0b 75 08 00 0b 00 22 00 02 04 00 -63 11 06 00 00 32 00 41 6e 6c 67 46 75 6e 6b 42 53 63 63 63 32 32 32 00 00 -00 10 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSplat -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 0c 01 09 0b 14 02 63 04 06 18 1f 1f 09 0f 19 04 61 04 06 0d 1f 08 09 0f -00 05 62 08 0d 1c 0f 07 09 0c 00 06 63 04 01 65 08 00 0b 00 22 00 02 04 00 -63 11 06 00 00 32 00 41 6e 6c 67 53 70 6c 61 74 20 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSplat -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -15 0c 01 09 0b 14 01 63 04 06 18 1f 1f 09 0f 19 02 61 04 06 0d 1f 08 09 0f -00 01 62 08 0d 1c 0f 07 09 0c 00 00 63 04 01 65 08 00 0b 00 22 00 02 04 00 -63 11 06 00 00 32 00 41 6e 6c 67 53 70 6c 61 74 20 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bass 4 -** Description: Was called "Brass 4" but sounds more like a bass guitar -** Controls: KV, MW (LFO pitch) -** Source: DX100 GLIB patch (Michael Kesti and others) -1f 19 00 05 00 00 7b 63 19 03 15 0b 00 0a 09 00 47 57 0a 06 10 08 02 0a 05 -00 46 2a 03 03 1f 0b 06 0a 0e 00 47 63 04 03 39 1c 1a 03 13 66 0c 04 04 00 -63 32 00 00 00 32 00 42 61 73 73 20 20 20 20 20 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bass 4 -** Description: Was called "Brass 4" but sounds more like a bass guitar -** Controls: KV, MW (LFO pitch) -** Source: DX100 GLIB patch (Michael Kesti and others) -1f 19 00 05 00 00 7b 4e 19 03 15 0b 00 0a 09 00 47 59 00 06 1f 08 02 0a 05 -00 42 4e 00 03 1f 0b 06 0a 0e 00 47 63 04 03 3b 1c 1a 03 13 66 0c 04 04 00 -63 32 00 00 00 32 00 42 61 73 73 20 20 20 20 20 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bass 4 -** Description: Was called "Brass 4" but sounds more like a bass guitar -** Controls: KV, MW (LFO pitch) -** Source: DX100 GLIB patch (Michael Kesti and others) -1f 19 00 05 00 00 7b 5c 00 03 15 0b 00 0a 09 00 47 57 0a 06 1f 08 02 0a 05 -00 42 4e 00 03 1f 0b 06 0a 0e 00 47 63 04 03 3b 1c 1a 03 13 66 0c 04 04 00 -63 32 00 00 00 32 00 42 61 73 73 20 20 20 20 20 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bass 4 -** Description: Was called "Brass 4" but sounds more like a bass guitar -** Controls: KV, MW (LFO pitch) -** Source: DX100 GLIB patch (Michael Kesti and others) -1f 19 00 05 00 00 7b 5c 00 03 15 0b 00 0a 09 00 47 57 0a 06 04 08 02 0a 05 -00 42 58 19 03 1f 0b 06 0a 0e 00 47 63 04 03 01 1c 1a 03 13 66 0c 04 04 00 -63 32 00 00 00 32 00 42 61 73 73 20 20 20 20 20 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bass 4 -** Description: Was called "Brass 4" but sounds more like a bass guitar -** Controls: KV -** Source: DX100 GLIB patch (Michael Kesti and others) -1f 0f 07 09 0a 0f 07 4e 16 03 1f 1f 00 04 0f 00 03 47 00 03 1f 07 05 06 0a -00 02 63 00 13 1f 07 05 06 0a 00 02 63 00 13 04 23 00 00 00 62 18 04 04 00 -63 32 00 00 00 32 00 42 61 73 73 20 20 20 20 20 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bass Pluck -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 16 06 08 0d 00 00 59 00 1b 1f 1f 1f 0f 0f 00 00 51 04 1b 1f 0d 0c 08 0a -63 04 63 04 13 1f 1f 1f 0f 0f 00 05 63 04 1b 64 26 00 00 00 32 0c 02 04 00 -63 32 00 32 00 32 00 42 61 73 73 20 50 6c 75 63 6b 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bass Pluck -** Source: from a library of patches collected by Duane Bowker, author unknown -15 16 06 08 0d 00 00 59 00 1b 1f 1f 1f 0f 0f 00 00 51 04 1b 1f 0d 0c 08 0a -63 00 63 04 13 1f 1f 1f 0f 0f 00 00 63 04 1b 64 26 00 00 00 32 0c 02 04 00 -63 32 00 32 00 32 00 42 61 73 73 20 50 6c 75 63 6b 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: <> -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 1a 07 04 04 00 01 51 1c 1b 19 1c 09 04 09 00 00 63 00 13 1b 0c 02 04 04 -63 03 4f 10 13 1c 12 06 04 0e 0e 06 63 00 1b 33 23 00 00 00 32 0c 02 04 00 -63 32 00 32 00 32 00 3c 3c 42 61 73 73 2e 30 3e 3e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: <> -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 1a 07 04 04 00 02 51 1c 1b 19 1c 09 04 09 00 00 63 00 13 1b 0c 02 04 04 -63 01 4f 10 13 1c 12 06 04 0e 0e 00 63 00 1b 33 23 00 00 00 32 0c 02 04 00 -63 32 00 32 00 32 00 3c 3c 42 61 73 73 2e 30 3e 3e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: <> -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 09 06 05 00 00 01 4c 04 13 18 1f 0c 06 0f 00 01 4a 04 0b 15 18 06 08 0e -63 03 63 04 0b 19 07 06 07 00 0e 43 62 00 13 7c 23 20 00 29 26 0c 02 04 00 -63 32 00 32 00 32 00 3c 3c 42 61 73 73 2e 31 3e 3e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: <> -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -16 09 06 05 00 00 01 4c 04 13 18 1f 0c 06 0f 00 01 4a 04 0b 15 18 06 08 0e -63 00 63 04 0b 19 07 06 07 00 0e 40 62 00 13 7c 23 20 00 29 26 0c 02 04 00 -63 32 00 32 00 32 00 3c 3c 42 61 73 73 2e 31 3e 3e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: <> -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -19 06 02 05 0e 63 01 4a 0d 13 1e 09 04 08 00 63 01 4f 04 13 1a 09 0a 08 08 -63 03 4d 0d 13 19 12 06 06 0f 63 05 63 04 13 11 21 13 00 00 02 00 02 04 00 -63 32 00 32 00 32 00 3c 3c 42 61 73 73 2e 32 3e 3e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: <> -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -19 06 02 05 0e 63 01 4a 0d 13 1e 09 04 08 00 63 01 4f 04 13 1a 09 0a 08 08 -63 01 4d 0d 13 19 12 06 06 0f 63 00 63 04 13 11 21 13 00 00 02 00 02 04 00 -63 32 00 32 00 32 00 3c 3c 42 61 73 73 2e 32 3e 3e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: <> -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -19 06 01 05 0e 63 01 5a 04 16 19 0e 07 06 0f 63 01 46 04 10 18 06 08 08 0a -63 05 41 0a 10 19 0e 07 06 0f 63 05 63 04 13 22 21 13 00 00 02 0c 02 04 00 -63 32 00 32 00 32 00 3c 3c 42 61 73 73 2e 33 3e 3e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: <> -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -19 06 01 05 0e 63 01 5a 04 16 19 0e 07 06 0f 63 01 46 04 10 18 06 08 08 0a -63 00 41 0a 10 19 0e 07 06 0f 63 00 63 04 13 22 21 13 00 00 02 0c 02 04 00 -63 32 00 32 00 32 00 3c 3c 42 61 73 73 2e 33 3e 3e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: <> -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1a 07 07 04 00 41 3f 19 13 1f 1c 09 07 09 00 41 55 0d 13 1f 0c 02 07 04 -63 44 4e 00 13 1f 12 06 07 0e 0e 45 63 04 1b 2a 63 00 00 0f 06 0c 02 04 00 -63 32 00 32 00 32 00 3c 3c 42 61 73 73 2e 34 3e 3e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: <> -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1a 07 07 04 00 41 3f 19 13 1f 1c 09 07 09 00 41 55 0d 13 1f 0c 02 07 04 -63 40 4e 00 13 1f 12 06 07 0e 0e 40 63 04 1b 2a 63 00 00 0f 06 0c 02 04 00 -63 32 00 32 00 32 00 3c 3c 42 61 73 73 2e 34 3e 3e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: <> -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 16 06 08 0d 00 01 5f 04 1b 19 12 04 0a 0c 23 01 56 08 13 19 0f 06 09 0d -63 03 63 08 13 19 0c 04 0a 0e 0e 05 63 04 13 64 26 00 00 00 32 0c 02 04 00 -63 32 00 32 00 32 00 3c 3c 42 61 73 73 2e 35 3e 3e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: <> -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -15 16 06 08 0d 00 01 5f 04 1b 19 12 04 0a 0c 23 01 56 08 13 19 0f 06 09 0d -63 00 63 08 13 19 0c 04 0a 0e 0e 00 63 04 13 64 26 00 00 00 32 0c 02 04 00 -63 32 00 32 00 32 00 3c 3c 42 61 73 73 2e 35 3e 3e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: <> -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -19 06 01 05 0e 63 01 45 0a 16 1b 0d 02 05 0e 63 01 5b 04 10 1e 0a 0c 06 08 -63 02 49 0a 10 1a 0f 06 05 0e 63 05 63 04 13 23 21 13 00 00 02 00 02 04 00 -63 32 00 32 00 32 00 3c 3c 42 61 73 73 2e 36 3e 3e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: <> -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -19 06 01 05 0e 63 01 45 0a 16 1b 0d 02 05 0e 63 01 5b 04 10 1e 0a 0c 06 08 -63 00 49 0a 10 1a 0f 06 05 0e 63 00 63 04 13 23 21 13 00 00 02 00 02 04 00 -63 32 00 32 00 32 00 3c 3c 42 61 73 73 2e 36 3e 3e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: <> -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1e 1c 05 09 0c 0f 01 53 16 1d 1e 1b 01 09 0d 0c 01 41 04 01 1d 01 01 0c 00 -2e 04 55 04 14 1e 1c 05 09 0c 00 04 63 08 13 2a 23 00 00 00 02 00 02 04 00 -63 32 00 00 00 32 00 3c 3c 42 61 73 73 2e 37 3e 3e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: <> -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1e 1c 05 09 0c 0f 01 53 16 1d 1e 1b 01 09 0d 0c 01 41 04 01 1d 01 01 0c 00 -2e 00 55 04 14 1e 1c 05 09 0c 00 00 63 08 13 2a 23 00 00 00 02 00 02 04 00 -63 32 00 00 00 32 00 3c 3c 42 61 73 73 2e 37 3e 3e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: <> -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1e 1c 0a 09 0c 0f 02 63 04 05 12 0c 07 07 0a 0c 01 61 04 01 1d 01 01 0c 00 -2e 03 63 04 04 1e 1c 05 09 0c 00 05 63 08 03 1c 23 00 00 00 02 0c 02 04 00 -63 32 00 00 00 32 00 3c 3c 42 61 73 73 2e 38 3e 3e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: <> -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1e 1c 0a 09 0c 0f 02 63 04 05 12 0c 07 07 0a 0c 01 61 04 01 1d 01 01 0c 00 -2e 00 63 04 04 1e 1c 05 09 0c 00 00 63 08 03 1c 23 00 00 00 02 0c 02 04 00 -63 32 00 00 00 32 00 3c 3c 42 61 73 73 2e 38 3e 3e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: <> -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1e 1c 06 09 0c 0f 01 3e 13 15 18 17 03 09 0d 0c 01 54 04 01 1d 01 03 0c 0a -2e 03 4d 04 14 1e 1c 06 09 0c 00 05 63 04 13 1b 23 00 00 00 02 00 02 04 00 -63 32 00 00 00 32 00 3c 3c 42 61 73 73 2e 39 3e 3e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: <> -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1e 1c 06 09 0c 0f 01 3e 13 15 18 17 03 09 0d 0c 01 54 04 01 1d 01 03 0c 0a -2e 00 4d 04 14 1e 1c 06 09 0c 00 00 63 04 13 1b 23 00 00 00 02 00 02 04 00 -63 32 00 00 00 32 00 3c 3c 42 61 73 73 2e 39 3e 3e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bass....FM -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 18 04 09 0f 00 02 4e 00 19 1f 12 12 08 0f 00 03 4b 1f 04 1f 0c 02 08 0f -00 05 54 00 0d 1f 0c 0b 0a 0f 00 05 63 04 0a 68 23 00 19 00 32 0c 02 04 00 -63 32 00 00 00 32 00 42 61 73 73 2e 2e 2e 2e 46 4d 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bass....FM -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 18 04 09 0f 00 02 4e 00 19 1f 12 12 08 0f 00 02 4b 1f 04 1f 0c 02 08 0f -00 02 54 00 0d 1f 0c 0b 0a 0f 00 00 63 04 0a 68 23 00 19 00 32 0c 02 04 00 -63 32 00 00 00 32 00 42 61 73 73 2e 2e 2e 2e 46 4d 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BombBass -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 04 07 09 0e 00 07 53 0a 08 1f 05 01 0a 0e 3f 03 51 00 08 1f 06 02 09 0d -32 03 63 00 0e 1f 1f 02 08 0f 00 07 63 04 03 3a 63 00 00 00 73 0c 04 04 00 -63 63 00 00 00 32 00 42 6f 6d 62 42 61 73 73 20 20 63 63 63 32 32 32 00 40 -00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: CutupBass -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 12 07 08 04 00 01 56 19 0b 18 1c 09 04 09 63 01 57 1c 1c 1b 0c 09 07 0d -00 04 3b 13 13 1f 12 06 07 0f 00 05 5f 00 03 1a 21 13 07 00 62 0c 02 04 00 -63 32 00 32 00 32 00 43 75 74 75 70 42 61 73 73 20 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: CutupBass -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 12 07 08 04 00 01 56 19 0b 18 1c 09 04 09 63 01 57 1c 1c 1b 0c 09 07 0d -00 01 3b 13 13 1f 12 06 07 0f 00 00 5f 00 03 1a 21 13 07 00 62 0c 02 04 00 -63 32 00 32 00 32 00 43 75 74 75 70 42 61 73 73 20 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E.Bass 1 -** Controls: KV -** Source: Yamaha DX11 factory preset, bank B, voice 27 -1f 01 00 08 04 00 03 4c 00 1b 1f 08 03 08 04 00 02 55 00 13 13 0a 05 08 04 -2b 06 3c 16 1b 1f 09 03 09 04 00 01 63 00 0b 3b 1c 00 00 00 52 0c 02 05 00 -63 4b 00 00 00 32 00 45 2e 42 61 73 73 20 20 20 31 63 63 63 32 32 32 00 00 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E.Bass 2 -** Controls: KV -** Source: Yamaha DX11 factory preset, bank B, voice 28 -1f 0f 10 07 0f 00 03 43 2d 03 1e 08 09 07 0f 23 02 52 00 03 1f 0b 0a 07 0f -00 03 41 10 03 1d 0c 0a 09 0f 28 01 63 04 03 38 1e 00 00 00 52 0c 02 04 00 -28 32 00 00 00 32 00 45 2e 42 61 73 73 20 20 20 32 63 63 63 32 32 32 00 00 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E.Bass 3 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank B, voice 29 -06 06 07 01 0a 06 42 56 00 1e 1f 05 06 01 0e 04 41 53 00 16 1f 05 06 01 0e -04 40 33 08 1e 19 05 08 07 00 00 42 63 00 16 20 1a 10 14 15 46 0c 02 04 00 -28 32 00 00 00 32 00 45 2e 42 61 73 73 20 20 20 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E.Bass 3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -06 06 07 01 0d 06 42 56 00 1e 1f 05 06 01 0e 04 41 53 00 16 1f 05 06 01 0e -04 40 33 08 1e 19 05 08 07 00 00 42 63 00 16 20 1a 10 14 15 46 0c 02 04 00 -28 32 00 00 00 32 00 45 2e 42 61 73 73 20 20 20 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ElecBass 1 -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank C, voice 9 -1f 01 00 08 04 00 03 3d 0a 1e 1f 01 00 08 00 00 00 43 00 10 1f 09 06 08 0c -1b 07 46 1c 1e 1f 09 00 09 09 00 01 63 04 03 3a 1c 00 00 00 52 0c 04 05 00 -63 4b 00 00 00 32 00 45 6c 65 63 42 61 73 73 20 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ElecBass 2 -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank C, voice 12 -1f 0e 00 0f 02 31 03 4b 28 16 1f 06 00 07 02 3b 00 4d 00 06 1f 0a 00 0f 02 -3b 03 52 04 16 1f 06 00 08 02 00 02 63 00 00 3a 22 00 00 00 62 0c 04 04 00 -63 32 00 00 00 32 00 45 6c 65 63 42 61 73 73 20 32 63 63 63 32 32 32 00 10 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Fat Lead.1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0d 0a 07 09 0e 4d 05 54 00 03 12 1f 00 0a 0f 00 05 3e 08 03 12 1f 00 0a 0f -4b 05 5f 08 03 12 1f 00 0a 0f 01 06 5f 04 03 3b 1e 05 0a 00 62 0c 02 04 00 -63 32 00 00 00 32 00 46 61 74 20 4c 65 61 64 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Fat Lead.1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0d 0a 07 09 0e 4d 03 54 00 03 12 1f 00 0a 0f 00 02 3e 08 03 12 1f 00 0a 0f -4b 01 5f 08 03 12 1f 00 0a 0f 01 00 5f 04 03 3b 1e 05 0a 00 62 0c 02 04 00 -63 32 00 00 00 32 00 46 61 74 20 4c 65 61 64 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Fat Lead.2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0b 03 01 07 0d 27 04 53 13 0d 11 1f 06 05 0f 00 04 51 00 0d 16 04 00 0a 0d -11 06 49 08 0b 16 1f 00 0a 0f 27 05 5a 00 03 62 24 00 04 00 42 0c 02 04 00 -63 63 00 00 00 32 00 46 61 74 20 4c 65 61 64 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Fat Lead.2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0b 03 01 07 0d 27 01 53 13 0d 11 1f 06 05 0f 00 01 51 00 0d 16 04 00 0a 0d -11 00 49 08 0b 16 1f 00 0a 0f 27 00 5a 00 03 62 24 00 04 00 42 0c 02 04 00 -63 63 00 00 00 32 00 46 61 74 20 4c 65 61 64 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Fat Lead.3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0b 03 01 07 0d 27 04 3f 10 0d 11 1f 06 05 0f 00 04 56 04 0d 16 04 00 0a 0d -11 05 4e 08 0b 16 1f 00 0a 0f 27 07 5a 04 03 61 24 00 04 00 42 0c 02 04 00 -63 63 00 00 00 32 00 46 61 74 20 4c 65 61 64 2e 33 63 63 63 32 32 32 00 00 -00 10 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Fat Lead.3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0b 03 01 07 0d 27 01 3f 10 0d 11 1f 06 05 0f 00 01 56 04 0d 16 04 00 0a 0d -11 00 4e 08 0b 16 1f 00 0a 0f 27 00 5a 04 03 61 24 00 04 00 42 0c 02 04 00 -63 63 00 00 00 32 00 46 61 74 20 4c 65 61 64 2e 33 63 63 63 32 32 32 00 00 -00 10 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Fat Lead.4 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0b 03 01 07 0d 27 05 55 04 0d 11 1f 06 05 0f 00 04 63 00 0d 16 04 00 0a 0d -11 07 4d 00 0b 16 1f 00 0a 0f 27 05 5a 00 03 63 24 26 34 00 42 0c 02 04 00 -63 63 00 00 00 32 00 46 61 74 20 4c 65 61 64 2e 34 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Fat Lead.4 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0b 03 01 07 0d 27 01 55 04 0d 11 1f 06 05 0f 00 02 63 00 0d 16 04 00 0a 0d -11 01 4d 00 0b 16 1f 00 0a 0f 27 00 5a 00 03 63 24 26 34 00 42 0c 02 04 00 -63 63 00 00 00 32 00 46 61 74 20 4c 65 61 64 2e 34 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: filtrsweep -** Description: a bass guitar with interesting decay -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: GLIB (Michael Kesti and others) -1f 02 03 06 00 0e 03 54 08 1b 1f 0b 00 09 0c 00 00 4e 04 04 1f 06 00 09 01 -00 00 5f 04 03 1f 1c 04 09 0a 00 03 63 08 03 38 1e 09 04 00 62 0c 02 05 00 -63 32 00 32 00 32 00 66 69 6c 74 72 73 77 65 65 70 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: FlangeBass -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 06 00 01 0e 00 01 52 04 04 1f 12 06 09 0e 00 02 52 04 1c 1f 0c 02 08 0e -00 06 45 13 12 1f 12 06 09 0e 00 05 63 04 1a 12 21 13 00 00 02 00 02 04 00 -63 32 00 32 00 32 00 46 6c 61 6e 67 65 42 61 73 73 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: FlangeBass -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 06 00 01 0e 00 01 52 04 04 1f 12 06 09 0e 00 01 52 04 1c 1f 0c 02 08 0e -00 01 45 13 12 1f 12 06 09 0e 00 00 63 04 1a 12 21 13 00 00 02 00 02 04 00 -63 32 00 32 00 32 00 46 6c 61 6e 67 65 42 61 73 73 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Fretless * -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0a 08 02 07 0f 15 03 53 00 08 11 08 03 07 0f 00 00 63 00 0b 11 06 03 07 0f -00 00 63 05 0e 11 06 03 07 0f 00 01 63 03 08 2d 17 21 09 00 52 05 02 04 00 -28 31 00 00 00 32 00 46 72 65 74 6c 65 73 73 20 2a 63 63 63 32 32 32 00 04 -00 04 00 01 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Fretless.1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -08 0c 0c 07 00 63 02 42 00 0b 1b 0d 02 08 0e 63 01 42 0a 16 1e 0d 0c 08 08 -63 04 4a 00 13 19 12 05 06 0f 63 05 60 00 13 3a 21 13 07 00 62 00 02 04 00 -63 32 00 32 00 32 00 46 72 65 74 6c 65 73 73 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Fretless.1 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -08 0c 0c 07 00 63 00 42 00 0b 1b 0d 02 08 0e 63 00 42 0a 16 1e 0d 0c 08 08 -63 00 4a 00 13 19 12 05 06 0f 63 00 60 00 13 3a 21 13 07 00 62 00 02 04 00 -63 32 00 32 00 32 00 46 72 65 74 6c 65 73 73 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Fretless.2 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 06 00 01 00 00 02 40 08 1b 1b 0d 02 05 0e 63 03 46 04 16 1e 0d 0c 06 08 -63 05 3e 10 13 19 12 05 06 0f 63 07 60 0a 13 2a 21 13 07 00 62 00 02 04 00 -63 32 00 32 00 32 00 46 72 65 74 6c 65 73 73 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Fretless.2 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 06 00 01 00 00 00 40 08 1b 1b 0d 02 05 0e 63 00 46 04 16 1e 0d 0c 06 08 -63 00 3e 10 13 19 12 05 06 0f 63 00 60 0a 13 2a 21 13 07 00 62 00 02 04 00 -63 32 00 32 00 32 00 46 72 65 74 6c 65 73 73 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Fretless.2 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -1f 06 00 00 00 00 00 40 08 1b 1b 0d 02 05 0e 63 00 46 04 16 1e 0d 0c 06 08 -63 00 3e 10 13 19 12 05 06 0f 63 00 60 0a 13 2a 21 13 07 00 62 00 02 04 00 -63 32 00 32 00 32 00 46 72 65 74 6c 65 73 73 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - ---Bank 7 - -** Name: FunkyBass1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1e 1c 0a 09 0c 0f 01 4b 04 04 12 1f 02 07 0f 00 02 46 04 11 18 00 00 07 00 -00 05 47 0a 06 1f 13 09 0a 0c 00 05 63 04 04 2a 15 00 0b 00 00 00 02 04 00 -63 32 00 00 00 32 00 46 75 6e 6b 79 42 61 73 73 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: FunkyBass1 -** Source: from a library of patches collected by Duane Bowker, author unknown -1e 1c 0a 09 0c 0f 00 4b 04 04 12 1f 02 07 0f 00 00 46 04 11 18 00 00 07 00 -00 00 47 0a 06 1f 13 09 0a 0c 00 00 63 04 04 2a 15 00 0b 00 00 00 02 04 00 -63 32 00 00 00 32 00 46 75 6e 6b 79 42 61 73 73 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: FunkyBass2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1e 1c 0a 09 0c 0f 00 50 08 05 12 1f 1f 07 0f 00 02 4b 04 11 12 1f 0c 07 0f -00 05 40 0d 12 1f 13 09 0a 0c 00 04 63 04 04 32 23 00 00 00 02 00 02 04 00 -63 32 00 00 00 32 00 46 75 6e 6b 79 42 61 73 73 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: FunkyBass2 -** Source: from a library of patches collected by Duane Bowker, author unknown -1e 1c 0a 09 0c 0f 00 50 08 05 12 1f 1f 07 0f 00 00 4b 04 11 12 1f 0c 07 0f -00 00 40 0d 12 1f 13 09 0a 0c 00 00 63 04 04 32 23 00 00 00 02 00 02 04 00 -63 32 00 00 00 32 00 46 75 6e 6b 79 42 61 73 73 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Jaco Bass -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank C, voice 14 -07 02 00 08 0f 00 00 43 04 03 10 0b 00 08 0c 00 00 50 00 0e 15 0b 0f 08 0b -00 01 51 00 08 11 08 00 08 0b 00 01 63 00 03 38 19 08 06 00 62 0c 04 05 14 -63 32 00 32 00 32 00 4a 61 63 6f 20 42 61 73 73 20 63 63 63 32 32 32 00 60 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Jaco Bass2 -** Controls: KV, MW (LFO pitch), BC (LFO pitch), BC (voice pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 06 05 08 02 00 01 46 08 03 0f 0a 00 08 0c 00 00 50 00 0e 12 0b 0f 08 0b -00 01 51 00 08 0f 08 00 08 0b 00 01 63 00 03 09 19 08 06 00 62 0c 02 05 00 -63 32 00 32 00 00 00 4a 61 63 6f 20 42 61 73 73 32 63 63 63 32 32 32 00 00 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: JazzWalker -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 0a 00 08 04 00 03 46 08 1e 1f 01 00 08 00 00 00 4a 00 10 1f 11 06 08 0d -1b 07 41 04 1e 1f 09 00 09 09 00 01 63 04 03 3b 1c 00 00 00 56 0c 04 05 00 -63 4b 00 00 00 32 00 4a 61 7a 7a 57 61 6c 6b 65 72 63 63 63 32 32 32 20 30 -30 30 30 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Kai Bass * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 13 0f 0f 00 05 63 13 13 1f 1f 00 0b 0f 00 00 44 00 10 1c 1f 0d 0f 0f -34 07 46 1c 13 1f 14 0a 0a 0d 0d 01 63 04 0e 43 1b 00 00 00 52 0c 02 04 00 -28 63 00 00 00 32 00 4b 61 69 20 42 61 73 73 20 2a 63 63 63 32 32 32 00 00 -00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: LatelyBass -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank C, voice 15 -1f 10 07 08 03 00 03 4f 04 03 1f 09 00 08 00 00 01 4a 00 0b 1f 11 00 08 00 -00 01 47 04 08 1f 09 00 08 00 00 00 63 00 0b 39 19 00 07 00 52 0c 02 04 00 -63 32 00 32 00 32 00 4c 61 74 65 6c 79 42 61 73 73 63 63 63 32 32 32 02 00 -00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MonophBass -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank C, voice 16 -1f 01 00 08 0a 00 03 43 0a 1e 1f 01 00 08 07 00 00 46 00 10 1f 09 06 08 0f -1b 07 4a 04 1e 1f 09 00 09 0f 00 01 63 04 03 3a 1c 00 00 00 52 0c 04 0d 00 -63 4b 00 00 00 32 00 4d 6f 6e 6f 70 68 42 61 73 73 63 63 63 32 32 32 00 00 -00 00 00 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MoogerBass -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 0a 07 08 03 00 06 4f 00 03 1f 09 00 08 0d 00 02 56 00 0b 1f 10 00 08 0a -00 00 60 00 08 1f 09 00 08 0f 00 00 63 00 0e 3c 1d 00 07 00 52 0c 02 0c 00 -63 32 00 32 00 32 00 4d 6f 6f 67 65 72 42 61 73 73 63 63 63 32 32 32 02 70 -00 50 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntBass.1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 03 0a 09 0d 2e 01 55 04 03 1c 10 0a 09 00 00 02 48 10 01 1c 10 0a 09 0a -00 06 4f 04 03 1c 16 04 09 0e 00 03 62 04 04 42 23 00 00 00 32 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 42 61 73 73 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntBass.1 -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 03 0a 09 0d 2e 00 55 04 03 1c 10 0a 09 00 00 00 48 10 01 1c 10 0a 09 0a -00 00 4f 04 03 1c 16 04 09 0e 00 00 62 04 04 42 23 00 00 00 32 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 42 61 73 73 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntBass.2 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 0f 0a 07 06 2e 02 4d 16 03 1c 0f 0a 07 00 00 03 41 10 01 1c 15 0a 07 0a -00 05 63 04 03 1c 13 0a 07 0e 00 05 62 04 04 44 2e 00 11 00 11 00 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 42 61 73 73 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntBass.2 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 0f 0a 07 06 2e 00 4d 16 03 1c 0f 0a 07 00 00 00 41 10 01 1c 15 0a 07 0a -00 00 63 04 03 1c 13 0a 07 0e 00 00 62 04 04 44 2e 00 11 00 11 00 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 42 61 73 73 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Precision* -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -17 0c 09 08 04 18 05 58 10 13 1f 1c 04 01 0d 00 00 53 00 18 18 15 0a 04 09 -00 03 4f 00 13 0f 1d 04 08 0e 14 00 63 00 1e 03 1d 00 00 00 52 0c 02 04 00 -28 53 00 00 00 32 00 50 72 65 63 69 73 69 6f 6e 2a 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ResoMonoBs -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0e 07 08 03 00 03 4c 04 03 1f 09 00 08 0d 00 01 52 00 0b 1f 11 00 08 0b -00 01 55 04 08 1f 09 00 08 0f 00 00 5e 00 0b 39 19 00 07 00 52 0c 02 0c 00 -63 32 00 32 00 32 00 52 65 73 6f 4d 6f 6e 6f 42 73 63 63 63 32 32 32 12 10 -00 10 00 30 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Roto Bass -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 12 07 04 04 00 01 5b 00 1b 1f 12 06 09 0e 00 01 49 00 1b 1f 0c 02 08 03 -63 04 58 13 13 1f 12 06 09 0e 0e 05 63 00 1b 22 23 00 00 00 32 0c 02 04 00 -63 32 00 32 00 32 00 52 6f 74 6f 20 42 61 73 73 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Roto Bass -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 12 07 04 04 00 01 5b 00 1b 1f 12 06 09 0e 00 01 49 00 1b 1f 0c 02 08 03 -63 01 58 13 13 1f 12 06 09 0e 0e 00 63 00 1b 22 23 00 00 00 32 0c 02 04 00 -63 32 00 32 00 32 00 52 6f 74 6f 20 42 61 73 73 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SUPER BASS -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0e 05 07 05 00 00 41 04 03 1f 05 05 07 0c 00 00 49 00 03 19 09 00 07 00 -00 40 47 08 00 1f 05 05 07 0c 00 00 63 00 03 39 19 00 09 00 52 0c 02 04 00 -28 32 00 00 00 32 00 53 55 50 45 52 20 42 41 53 53 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Science.BS -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 08 08 0a 0a 00 03 53 04 02 13 09 06 06 0c 00 03 57 04 03 14 02 0f 09 0d -00 05 63 04 04 19 03 0f 0a 0e 00 05 63 08 03 3c 23 00 00 00 02 0c 02 04 00 -63 32 00 00 00 32 00 53 63 69 65 6e 63 65 2e 42 53 63 63 63 32 32 32 00 00 -00 00 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Science.BS -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -12 08 08 0a 0a 00 01 53 04 02 13 09 06 06 0c 00 01 57 04 03 14 02 0f 09 0d -00 01 63 04 04 19 03 0f 0a 0e 00 00 63 08 03 3c 23 00 00 00 02 0c 02 04 00 -63 32 00 00 00 32 00 53 63 69 65 6e 63 65 2e 42 53 63 63 63 32 32 32 00 00 -00 00 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SlapBass -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0f 0a 08 06 00 07 5a 18 1e 1f 01 00 08 00 00 00 48 00 10 1f 09 06 08 0c -1b 06 4b 1c 1e 1f 09 00 09 09 00 01 63 04 03 00 1c 00 00 00 52 0c 04 05 00 -63 50 00 3c 00 32 00 53 6c 61 70 42 61 73 73 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SlapBass.1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 08 00 0a 08 00 01 46 04 03 18 0c 1f 09 00 00 01 49 1f 13 1e 10 07 09 0c -00 04 4c 0a 08 1e 10 07 09 0c 00 06 63 04 0b 3b 19 00 09 00 52 0c 02 04 00 -63 32 00 32 00 32 00 53 6c 61 70 42 61 73 73 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SlapBass.1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 08 00 0a 08 00 01 46 04 03 18 0c 1f 09 00 00 01 49 1f 13 1e 10 07 09 0c -00 01 4c 0a 08 1e 10 07 09 0c 00 00 63 04 0b 3b 19 00 09 00 52 0c 02 04 00 -63 32 00 32 00 32 00 53 6c 61 70 42 61 73 73 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SlapBass.2 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 1c 09 09 0c 00 01 44 10 0b 16 00 00 0a 09 00 01 4b 04 13 14 0a 05 09 0f -00 03 52 04 10 1e 10 07 09 0c 00 06 63 04 0b 2a 19 00 09 00 52 00 02 04 00 -63 32 00 32 00 32 00 53 6c 61 70 42 61 73 73 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SlapBass.2 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -18 1c 09 09 0c 00 00 44 10 0b 16 00 00 0a 09 00 00 4b 04 13 14 0a 05 09 0f -00 00 52 04 10 1e 10 07 09 0c 00 00 63 04 0b 2a 19 00 09 00 52 00 02 04 00 -63 32 00 32 00 32 00 53 6c 61 70 42 61 73 73 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SqncrBass -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank C, voice 10 -1f 0f 0f 0e 08 00 03 4b 25 06 1f 0f 05 0b 0e 4e 03 5d 00 0b 1f 13 06 08 0b -1c 03 60 00 10 1f 13 06 08 0e 00 04 63 04 0e 3b 1f 00 00 00 42 0c 02 04 00 -63 32 00 32 00 32 00 53 71 6e 63 72 42 61 73 73 20 63 63 63 32 32 32 03 60 -00 70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SqncrBass2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0f 0f 0e 08 00 03 42 25 06 1f 0f 05 0b 0f 39 03 61 00 0b 1f 13 06 08 0b -1c 03 52 00 10 1f 13 06 08 0f 00 04 63 04 0e 3b 1f 00 00 00 42 18 02 04 00 -63 32 00 32 00 32 00 53 71 6e 63 72 42 61 73 73 32 63 63 63 32 32 32 03 30 -10 30 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Bass 1 -** Controls: KV -** Source: Yamaha DX11 factory preset, bank A, voice 16 -1f 03 10 06 00 34 01 49 04 15 1f 00 12 06 0f 5e 04 63 0a 0b 14 1f 17 06 0b -3d 01 57 16 18 1f 1e 00 07 0f 00 01 5d 04 13 3a 23 00 00 00 62 00 02 04 00 -63 32 00 00 00 32 00 53 79 2e 42 61 73 73 20 20 31 63 63 63 32 32 32 00 00 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Bass 1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 03 10 06 00 34 01 49 04 15 1f 00 12 06 0f 5e 04 63 0d 0b 14 1f 17 06 0b -3d 01 57 16 18 1f 1e 00 07 0f 00 01 5d 04 13 3a 23 00 00 00 62 00 02 04 00 -63 32 00 00 00 32 00 53 79 2e 42 61 73 73 20 20 31 63 63 63 32 32 32 00 00 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Bass 2 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank A, voice 17 -1d 0e 00 06 09 00 02 51 04 0e 1f 0a 00 0a 00 00 00 61 00 01 1f 0a 00 0a 00 -00 00 61 00 06 1f 0a 00 0a 00 00 00 61 00 10 3d 1b 42 19 00 52 0c 02 04 00 -63 32 00 00 00 32 00 53 79 2e 42 61 73 73 20 20 32 63 63 63 32 32 32 00 10 -00 50 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Bass 3 -** Controls: KV -** Source: Yamaha DX11 factory preset, bank A, voice 18 -1f 12 0c 02 07 00 02 59 10 13 1e 04 02 07 09 00 02 55 00 13 1f 0c 03 07 05 -00 02 46 00 16 1e 09 03 07 00 00 00 57 00 13 00 1f 00 00 00 62 0c 02 04 00 -28 32 00 00 00 32 00 53 79 2e 42 61 73 73 20 20 33 63 63 63 32 32 32 00 10 -00 10 00 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Bass 4 -** Controls: KV -** Source: Yamaha DX11 factory preset, bank A, voice 19 -1a 0b 00 08 04 00 03 4e 00 13 1a 09 03 08 04 00 02 50 00 13 15 0b 05 08 04 -0a 05 58 00 1b 18 09 03 09 04 00 01 63 00 0b 3a 1c 00 00 00 52 0c 02 05 00 -63 4b 00 00 00 32 00 53 79 2e 42 61 73 73 20 20 34 63 63 63 32 32 32 00 00 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Bass 4 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1a 0b 00 08 04 00 03 4e 00 13 1a 09 03 08 04 00 02 50 00 13 15 0b 05 08 04 -0d 05 58 00 1b 18 09 03 09 04 00 01 63 00 0b 3a 1c 00 00 00 52 0c 02 05 00 -63 4b 00 00 00 32 00 53 79 2e 42 61 73 73 20 20 34 63 63 63 32 32 32 00 00 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Bass 5 -** Controls: KV -** Source: Yamaha DX11 factory preset, bank A, voice 20 -1f 12 08 02 0b 00 02 59 10 13 1e 06 02 07 09 00 04 56 00 13 1f 0c 03 07 05 -00 05 46 00 16 1e 05 03 07 09 00 02 5d 00 13 02 20 00 00 00 62 0c 02 04 00 -28 32 00 00 00 32 00 53 79 2e 42 61 73 73 20 20 35 63 63 63 32 32 32 00 10 -00 10 00 50 00 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Bass 6 -** Description: A clavier with bite, derived from DX11 factory preset -** 'Sy.Bass 5' -** Controls: KV -** Source: Art Hitzeman -1f 12 08 02 0b 00 02 59 10 13 1e 06 02 04 09 00 04 56 00 13 1f 0c 03 05 05 -00 05 46 00 16 1e 05 03 05 09 00 02 5d 00 13 02 20 00 00 00 62 18 02 04 00 -28 32 00 00 00 32 00 53 79 2e 42 61 73 73 20 20 36 63 63 63 32 32 32 00 10 -00 10 00 50 00 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Bass 7 -** Description: a milder version of Sy. Bass 6 -** Controls: KV -** Source: Art Hitzeman -1f 12 08 02 0b 00 02 46 1f 13 1e 06 02 04 09 00 04 56 00 13 1f 0c 03 05 05 -00 05 46 00 16 1e 05 03 05 09 00 02 5d 00 13 02 20 00 00 00 62 18 02 04 00 -28 32 00 00 00 32 00 53 79 2e 42 61 73 73 20 20 37 63 63 63 32 32 32 00 10 -00 10 00 50 00 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynFunkBas -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank C, voice 11 -1f 0f 0f 0e 09 00 03 46 1d 16 1f 0f 05 0e 0e 0d 03 63 00 0b 1f 13 06 05 0d -1c 03 63 00 00 1f 13 06 08 0f 00 04 63 04 06 3b 1f 00 00 00 42 0c 04 04 00 -63 32 00 32 00 32 00 53 79 6e 46 75 6e 6b 42 61 73 63 63 63 32 32 32 0d 6c -00 00 00 70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynFunkBs2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0d 19 08 06 00 03 3c 1d 16 1f 0f 05 07 0e 1a 03 63 00 0b 1f 13 06 05 0d -2a 03 54 00 08 1f 13 06 08 0f 00 04 63 04 06 3b 1f 00 00 00 42 18 02 04 00 -63 32 00 32 00 32 00 53 79 6e 46 75 6e 6b 42 73 32 63 63 63 32 32 32 0c 1c -00 10 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: TeknoBass* -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -19 1e 13 05 0e 2d 03 53 2f 00 15 0b 09 05 0e 0a 02 55 00 06 19 1e 09 08 0e -17 00 4a 08 00 15 02 07 06 0e 10 01 63 00 0b 02 23 00 00 00 52 18 02 04 00 -28 32 00 00 00 32 00 54 65 6b 6e 6f 42 61 73 73 2a 63 63 63 32 32 32 00 04 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Wood Bass -** Controls: KV -** Source: Yamaha DX11 factory preset, bank B, voice 30 -17 15 0c 09 0b 2c 02 63 04 0b 1f 11 0b 04 0f 27 01 47 04 0b 1c 11 0b 02 0f -31 01 4b 0a 0b 1a 15 0a 08 0f 00 01 63 04 0b 10 1f 00 00 00 52 00 02 04 00 -28 32 00 00 00 32 00 57 6f 6f 64 20 42 61 73 73 20 63 63 63 32 32 32 02 30 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: WoodBass2 -** Description: A modified version of the DX11 factory preset 'Wood Bass' -** Controls: KV -** Source: Art Hitzeman -17 15 0c 09 0b 2c 02 63 04 0b 1f 11 0b 04 0f 27 01 47 04 0b 1c 11 0b 02 0f -31 01 4b 0a 0b 1a 15 0a 05 0f 00 01 63 04 0b 10 1f 00 00 00 52 0c 02 04 00 -28 32 00 00 00 32 00 57 6f 6f 64 42 61 73 73 32 20 63 63 63 32 32 32 02 30 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY Cello - - -** Name: BowCello -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank B, voice 18 -1c 09 00 06 0e 35 00 50 04 00 0d 0a 00 06 0e 09 01 52 04 09 12 0b 00 08 09 -2c 02 49 10 0e 0c 0a 00 06 0f 00 01 63 04 0b 2a 1a 07 13 00 52 0c 04 04 00 -63 32 00 00 00 32 00 42 6f 77 43 65 6c 6c 6f 20 20 63 63 63 32 32 32 00 00 -00 10 00 10 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BoxCello -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank B, voice 19 -1c 04 00 06 0e 0f 00 48 04 06 15 09 03 04 0d 15 01 3a 08 00 11 10 00 0b 09 -0c 02 51 16 06 0b 0a 00 05 0f 05 01 63 08 13 32 1d 06 0f 00 52 0c 04 04 00 -63 32 00 00 00 32 00 42 6f 78 43 65 6c 6c 6f 20 20 63 63 63 32 32 32 00 10 -00 40 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BoxCello2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 04 00 06 0e 0f 00 48 04 06 0f 12 01 04 0d 15 01 3a 08 00 11 10 00 0b 09 -0c 02 51 16 06 0b 0a 00 05 0f 05 01 63 08 13 32 1d 06 0f 00 52 0c 04 04 00 -63 32 00 00 00 32 00 42 6f 78 43 65 6c 6c 6f 32 20 63 63 63 32 32 32 00 10 -00 40 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Cello * -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 00 00 05 0f 4d 00 48 08 0b 10 19 00 03 0e 2b 00 61 08 0b 0c 09 00 05 0d -00 01 63 08 15 0c 05 00 06 0e 4d 01 5c 13 12 3c 1f 19 15 00 32 00 02 04 00 -28 63 00 00 00 32 00 43 65 6c 6c 6f 20 20 20 20 2a 63 63 63 32 32 32 00 10 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Cello 1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: Yamaha DX11 factory preset, bank C, voice 7 -16 07 00 06 0f 00 41 4c 00 0b 15 0b 00 03 0e 00 02 35 00 0b 19 08 00 08 0c -10 05 5f 08 14 0e 0b 00 07 0e 00 02 63 00 0c 3a 1f 12 10 00 52 18 02 05 00 -63 28 50 32 00 32 00 43 65 6c 6c 6f 20 20 20 20 31 63 56 63 30 32 32 00 30 -00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Cello 2 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank C, voice 8 -1d 08 00 05 0a 12 01 4e 04 06 17 0c 00 05 0f 00 00 42 04 00 1e 0e 00 05 0f -25 01 3e 10 00 0a 06 00 07 0f 00 02 63 04 06 32 1d 16 2c 00 32 0c 02 04 00 -63 32 00 00 00 32 00 43 65 6c 6c 6f 20 20 20 20 32 63 63 63 32 32 32 00 20 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Cello 2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 08 00 05 0d 12 01 4e 04 06 17 0c 00 05 0f 00 00 42 04 00 1e 0e 00 05 0f -25 01 3e 10 00 0d 06 00 07 0f 00 02 63 04 06 32 1d 16 2c 00 32 0c 02 04 00 -63 32 00 00 00 32 00 43 65 6c 6c 6f 20 20 20 20 32 63 63 63 32 32 32 00 20 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Cello....1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 15 0a 08 0d 19 02 4c 19 0c 15 10 07 07 0c 19 01 5d 04 03 11 15 06 08 0f -3c 04 50 0a 0b 0c 09 04 06 0c 00 04 63 04 0a 5b 1b 1b 20 00 32 00 04 04 00 -63 01 63 00 00 32 00 43 65 6c 6c 6f 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Cello....1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -10 15 0a 08 0d 19 02 4c 2a 0c 1f 17 0a 07 0d 19 01 5d 04 03 10 15 0a 08 0d -3c 01 58 0a 0b 0f 09 07 06 0d 00 00 63 04 0a 5b 22 00 14 00 32 00 04 04 00 -63 01 63 00 00 32 00 43 65 6c 6c 6f 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Cello....2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -13 09 04 03 0e 02 01 53 00 12 1e 04 10 05 08 52 01 49 00 0a 14 1f 0b 05 03 -52 05 63 00 0c 0b 03 1f 06 02 10 05 60 00 0c 32 1c 2e 1e 00 42 18 0c 04 00 -63 32 32 00 00 32 00 43 65 6c 6c 6f 2e 2e 2e 2e 32 63 63 63 32 32 32 00 10 -00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Cello....2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -13 09 04 03 0e 02 01 53 00 12 1e 04 10 05 08 52 01 49 00 0a 14 1f 0b 05 03 -52 01 63 00 0c 0c 03 1f 06 02 10 00 60 00 0c 32 1c 2e 1e 00 42 18 0c 04 00 -63 32 32 00 00 32 00 43 65 6c 6c 6f 2e 2e 2e 2e 32 63 63 63 32 32 32 00 10 -00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY DoubleBass - - -** Name: ArcoBass * -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 15 00 06 0d 13 01 56 04 08 1e 05 00 06 0e 33 02 63 04 0e 0f 09 00 06 0f -00 01 63 04 06 0d 08 00 05 0e 00 05 63 04 08 3c 1e 17 0f 00 42 0c 02 04 00 -28 63 00 00 00 32 00 41 72 63 6f 42 61 73 73 20 2a 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BassBeast -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -09 09 03 05 0a 22 02 63 00 04 0b 05 04 03 0f 00 02 4a 08 02 03 08 03 05 08 -38 42 5a 0d 0e 10 05 03 06 0d 00 00 61 00 01 62 1c 06 04 06 4e 18 02 04 00 -63 32 00 00 00 32 00 42 61 73 73 42 65 61 73 74 20 63 63 63 32 32 32 07 00 -11 50 00 30 01 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BassPluck2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 16 06 08 0d 00 01 40 08 1b 15 16 06 08 0d 00 01 51 00 1b 1f 0d 0c 08 0a -63 06 63 00 13 1f 0d 0c 08 0a 63 05 63 00 13 54 26 00 00 00 32 0c 02 04 00 -63 32 00 32 00 32 00 42 61 73 73 50 6c 75 63 6b 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BassPluck2 -** Source: from a library of patches collected by Duane Bowker, author unknown -15 16 06 08 0d 00 00 40 08 1b 15 16 06 08 0d 00 00 51 00 1b 1f 0d 0c 08 0a -63 00 63 00 13 1f 0d 0c 08 0a 63 00 63 00 13 54 26 00 00 00 32 0c 02 04 00 -63 32 00 32 00 32 00 42 61 73 73 50 6c 75 63 6b 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: DoubleBass -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank B, voice 17 -1c 02 00 04 0e 63 00 4e 04 03 0d 05 00 06 0e 63 01 56 0a 08 12 07 00 06 09 -63 02 47 1b 0e 0a 0a 00 05 0f 00 01 63 04 0b 32 1a 08 0d 00 52 0c 04 04 00 -63 32 00 00 00 32 00 44 6f 75 62 6c 65 42 61 73 73 63 63 63 32 32 32 00 10 -00 00 00 03 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - ---Bank 8 - -* SUBCATEGORY Guitar - - -** Name: 12 String1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 0f 09 03 0c 39 02 4f 22 1c 0d 0f 09 02 0c 00 43 3c 0d 0a 16 1f 07 06 0f -0a 45 58 08 08 1c 07 06 06 0c 00 46 5f 08 0e 0c 22 21 00 00 36 0c 00 04 00 -63 63 00 00 00 32 00 31 32 20 53 74 72 69 6e 67 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: 12 String1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 0f 09 03 0c 39 01 4f 22 1c 0d 0f 09 02 0c 00 41 3c 0d 0a 16 1f 07 06 0f -0a 40 58 08 08 1c 07 06 06 0c 00 40 5f 08 0e 0c 22 21 00 00 36 0c 00 04 00 -63 63 00 00 00 32 00 31 32 20 53 74 72 69 6e 67 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: 12 String2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 09 04 03 0c 2b 42 51 24 1c 1a 04 01 0d 0b 00 42 53 04 1a 1b 09 06 0e 0c -0a 45 4e 04 10 1c 07 03 07 0e 00 44 63 04 16 14 23 46 00 01 3a 18 00 04 00 -63 63 00 00 00 32 00 31 32 20 53 74 72 69 6e 67 32 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: 12 String2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 09 04 03 0c 2b 41 51 24 1c 1a 04 01 0d 0b 00 41 53 04 1a 1b 09 06 0e 0c -0a 40 4e 04 10 1c 07 03 07 0e 00 40 63 04 16 14 23 46 00 01 3a 18 00 04 00 -63 63 00 00 00 32 00 31 32 20 53 74 72 69 6e 67 32 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: 5th Lead.1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -19 06 07 09 06 0f 03 58 08 0a 19 09 07 09 06 0c 05 61 0a 0d 19 0c 07 09 06 -2e 05 63 08 03 1f 15 07 09 0d 00 06 63 0a 02 2c 1e 17 00 00 22 0c 02 04 00 -63 32 00 00 00 32 00 35 74 68 20 4c 65 61 64 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: 5th Lead.1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -19 06 07 09 06 0f 01 58 08 0a 19 09 07 09 06 0c 01 61 0a 0d 19 0c 07 09 06 -2e 00 63 08 03 1f 15 07 09 0d 00 00 63 0a 02 2c 1e 17 00 00 22 0c 02 04 00 -63 32 00 00 00 32 00 35 74 68 20 4c 65 61 64 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: 5th Lead.2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 13 00 09 0c 20 03 4c 08 0a 1f 09 09 09 0c 00 05 51 0a 05 1f 1f 00 09 0f -40 05 63 08 03 1f 09 09 09 0c 00 05 63 0a 02 2c 1e 17 00 00 22 18 02 04 00 -63 32 00 00 00 32 00 35 74 68 20 4c 65 61 64 2e 32 63 63 63 32 32 32 00 00 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: 5th Lead.2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 13 00 09 0c 20 01 4c 08 0a 1f 09 09 09 0c 00 01 51 0a 05 1f 1f 00 09 0f -40 00 63 08 03 1f 09 09 09 0c 00 00 63 0a 02 2c 1e 17 00 00 22 18 02 04 00 -63 32 00 00 00 32 00 35 74 68 20 4c 65 61 64 2e 32 63 63 63 32 32 32 00 00 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Guitar1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -17 05 04 03 0e 23 03 45 08 13 1f 0c 08 05 0f 43 05 42 04 03 1f 08 11 06 0f -00 05 40 0a 03 1b 15 06 06 0e 23 04 63 08 13 31 23 00 00 00 52 0c 04 04 00 -63 32 00 00 00 32 00 41 43 20 47 75 69 74 61 72 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Guitar1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -17 05 04 03 0e 23 01 45 08 13 1f 0c 08 05 0f 43 01 42 04 03 1f 08 11 06 0f -00 01 40 0a 03 1b 15 06 06 0e 23 00 63 08 13 31 23 00 00 00 52 0c 04 04 00 -63 32 00 00 00 32 00 41 43 20 47 75 69 74 61 72 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Guitar2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0e 04 03 0e 23 02 4b 0a 13 1f 1f 08 05 0f 43 03 42 04 03 1f 15 11 06 0f -00 04 35 0a 03 1f 1f 06 0a 0e 00 03 63 04 0b 38 23 00 00 00 62 0c 04 04 00 -63 32 00 00 00 32 00 41 43 20 47 75 69 74 61 72 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Guitar2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0e 04 03 0e 23 01 4b 0a 13 1f 1f 08 05 0f 43 01 42 04 03 1f 15 11 06 0f -00 00 35 0a 03 1f 1f 06 0a 0e 00 00 63 04 0b 38 23 00 00 00 62 0c 04 04 00 -63 32 00 00 00 32 00 41 43 20 47 75 69 74 61 72 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Guitar3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0e 00 0f 0f 23 03 4c 04 1b 1f 1f 00 0b 0f 43 03 51 0a 13 1f 1a 06 0d 0d -00 04 63 04 03 1f 1f 08 0e 0f 00 04 57 08 0b 24 23 00 00 00 62 0c 04 04 00 -63 32 00 00 00 32 00 41 43 20 47 75 69 74 61 72 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Guitar3 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0e 00 0f 0f 23 02 4c 04 1b 1f 1f 00 0b 0f 43 01 51 0a 13 1f 1a 06 0d 0d -00 01 63 04 03 1f 1f 08 0e 0f 00 00 57 08 0b 24 23 00 00 00 62 0c 04 04 00 -63 32 00 00 00 32 00 41 43 20 47 75 69 74 61 72 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Guitar4 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 0f 0c 04 0f 23 41 53 04 13 1a 15 06 0b 0f 2b 41 4f 04 13 1d 0a 09 06 0f -00 45 63 04 13 1c 04 04 0e 0f 00 45 63 04 0b 34 22 33 00 01 36 0c 04 04 00 -63 32 00 00 00 32 00 41 43 20 47 75 69 74 61 72 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Guitar4 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 0f 0c 04 0f 23 41 53 04 13 1a 15 06 0b 0f 2b 41 4f 04 13 1d 0a 09 06 0f -00 40 63 04 13 1c 04 04 0e 0f 00 40 63 04 0b 34 22 33 00 01 36 0c 04 04 00 -63 32 00 00 00 32 00 41 43 20 47 75 69 74 61 72 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AllThatJaz -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank C, voice 5 -1f 09 00 06 0c 27 04 48 1c 0b 1c 06 00 04 07 37 01 43 0a 00 1f 0a 00 02 06 -3d 00 45 0a 0e 1f 12 08 08 0f 00 05 63 04 0b 38 1f 00 03 00 52 0c 03 04 00 -63 32 01 32 00 32 00 41 6c 6c 54 68 61 74 4a 61 7a 63 63 63 32 32 32 00 30 -00 10 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: A.Guitar -** Controls: KV -** Source: Yamaha DX11 factory preset, bank B, voice 8 -1f 1f 06 06 0a 28 03 4b 04 0a 1c 0a 07 07 0a 28 02 3d 0a 0a 1f 0b 07 07 0b -28 02 45 1f 0b 1b 0c 08 09 0a 00 02 62 04 0c 3a 1e 00 00 00 52 18 02 04 00 -28 32 00 00 00 32 00 41 2e 47 75 69 74 61 72 20 20 63 63 63 32 32 32 00 00 -00 20 00 40 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: A.Guitar -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 06 06 0d 28 03 4b 04 0a 1c 0a 07 07 0d 28 02 3d 0d 0a 1f 0b 07 07 0b -28 02 45 1f 0b 1b 0c 08 09 0d 00 02 62 04 0c 3a 1e 00 00 00 52 18 02 04 00 -28 32 00 00 00 32 00 41 2e 47 75 69 74 61 72 20 20 63 63 63 32 32 32 00 00 -00 20 00 40 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E.Guitar -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank B, voice 11 -1f 1f 04 03 0f 0c 01 46 0a 16 1f 1f 03 03 0f 08 00 56 04 0a 1f 1f 04 03 0f -08 01 53 00 04 18 1f 05 0b 0f 00 02 55 04 00 3a 23 1c 08 00 42 18 02 04 00 -28 63 00 00 00 32 00 45 2e 47 75 69 74 61 72 20 20 63 63 63 32 32 32 00 00 -00 20 00 60 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E.Guitar -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 04 03 0f 0c 01 46 0d 16 1f 1f 03 03 0f 08 00 56 04 0a 1f 1f 04 03 0f -08 01 53 00 04 18 1f 05 0b 0f 00 02 55 04 00 3a 23 1c 08 00 42 18 02 04 00 -28 63 00 00 00 32 00 45 2e 47 75 69 74 61 72 20 20 63 63 63 32 32 32 00 00 -00 20 00 60 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Echo Lead -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0f 09 03 0d 00 06 57 08 0e 1f 16 00 05 0e 00 05 63 04 03 1f 16 00 08 0e -00 05 63 04 0b 1f 16 00 05 0e 00 05 63 04 03 75 25 00 00 00 32 18 04 04 00 -63 01 63 00 00 32 00 45 63 68 6f 20 4c 65 61 64 20 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Echo Lead -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0f 09 03 0d 00 02 57 08 0e 1f 16 00 05 0e 00 00 63 04 03 1f 16 00 08 0e -00 00 63 04 0b 1f 16 00 05 0e 00 00 63 04 03 75 25 00 00 00 32 18 04 04 00 -63 01 63 00 00 32 00 45 63 68 6f 20 4c 65 61 64 20 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: F.Guitar -** Controls: KV -** Source: Yamaha DX11 factory preset, bank B, voice 9 -1f 1f 05 06 0f 28 03 4f 04 0a 1a 09 07 07 0a 28 02 49 0a 0a 1f 0b 04 07 0b -28 02 45 1f 0b 1a 0c 06 08 0a 00 02 62 04 0c 3a 1e 00 00 00 52 18 02 04 00 -28 32 00 00 00 32 00 46 2e 47 75 69 74 61 72 20 20 63 63 63 32 32 32 00 00 -00 10 00 70 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: F.Guitar -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 05 06 0f 28 03 4f 04 0a 1a 09 07 07 0d 28 02 49 0d 0a 1f 0b 04 07 0b -28 02 45 1f 0b 1a 0c 06 08 0d 00 02 62 04 0c 3a 1e 00 00 00 52 18 02 04 00 -28 32 00 00 00 32 00 46 2e 47 75 69 74 61 72 20 20 63 63 63 32 32 32 00 00 -00 10 00 70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Flamenco -** Controls: KV -** Source: Yamaha DX11 factory preset, bank B, voice 7 -18 0b 0a 07 0a 28 02 52 0a 0b 1f 12 00 05 0f 07 02 40 04 0b 17 0f 0e 06 09 -11 06 52 0a 0b 17 13 09 08 0e 00 01 63 04 0b 31 1e 00 00 00 52 18 02 04 00 -28 32 00 00 00 32 00 46 6c 61 6d 65 6e 63 6f 20 20 63 63 63 32 32 32 00 30 -00 00 00 10 00 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Flamenco -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -18 0b 0a 07 0d 28 02 52 0a 0b 1f 12 00 05 0f 07 02 40 04 0b 17 0f 0e 06 09 -11 06 52 0a 0b 17 13 09 08 0e 00 01 63 04 0b 31 1e 00 00 00 52 18 02 04 00 -28 32 00 00 00 32 00 46 6c 61 6d 65 6e 63 6f 20 20 63 63 63 32 32 32 00 30 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Funkfifth* -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 08 00 06 0c 00 00 4a 04 00 1f 0a 00 02 0b 00 00 58 04 06 1b 1f 00 09 0f -00 00 63 04 06 1b 1e 00 09 0f 11 00 54 04 00 3c 23 00 00 00 42 0c 02 04 00 -28 63 00 00 00 32 00 46 75 6e 6b 66 69 66 74 68 2a 63 63 63 32 32 32 00 00 -00 78 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Funky Pick -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank C, voice 4 -1f 19 08 0a 03 00 03 63 10 18 1f 0c 05 0b 05 00 03 52 00 0b 1f 19 06 0b 05 -00 03 63 0a 16 1f 0f 11 09 07 00 04 63 04 03 3a 14 00 00 00 42 18 02 04 00 -63 32 00 32 00 32 00 46 75 6e 6b 79 20 50 69 63 6b 63 63 63 32 32 32 00 30 -00 00 00 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: FuzzyLead -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 05 06 07 0d 00 43 63 00 08 1c 0a 04 03 0c 00 44 58 04 10 1f 0c 02 07 0d -00 45 62 00 16 1d 0a 06 07 0d 15 46 63 04 16 2c 23 00 00 01 06 0c 02 04 00 -28 02 00 00 00 32 00 46 75 7a 7a 79 4c 65 61 64 20 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: FuzzyLead -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 05 06 07 0d 00 42 63 00 08 1c 0a 04 03 0c 00 41 58 04 10 1f 0c 02 07 0d -00 40 62 00 16 1d 0a 06 07 0d 15 40 63 04 16 2c 23 00 00 01 06 0c 02 04 00 -28 02 00 00 00 32 00 46 75 7a 7a 79 4c 65 61 64 20 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Guitar -** Controls: KV -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -1f 1f 0b 06 0a 63 03 37 08 0a 1a 0b 04 05 07 3c 01 43 0a 0a 1a 0b 04 05 07 -00 01 32 1d 08 1f 0b 0b 06 0b 1e 02 63 04 0c 32 19 00 00 00 32 0c 02 04 00 -28 63 00 00 00 32 00 47 75 69 74 61 72 20 20 20 20 63 63 63 32 32 32 00 00 -00 30 00 26 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Guitar #1 -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank C, voice 2 -1f 0e 0e 0f 0f 00 03 48 2d 06 1f 0f 04 0f 0f 25 03 5b 00 00 1f 12 06 0c 0e -1c 03 55 00 10 1f 13 07 08 0e 06 04 62 04 0e 3b 14 00 00 00 42 18 02 04 00 -63 32 00 32 00 32 00 47 75 69 74 61 72 20 23 31 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: HardHabits -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 04 0c 08 00 2f 3c 4b 04 0b 1c 15 06 08 0c 00 1f 52 24 13 1c 04 00 08 0c -1e 1c 63 04 0b 1c 07 07 08 0b 00 3f 63 04 0b 04 22 21 00 00 02 0c 02 04 00 -63 32 00 00 00 32 00 48 61 72 64 48 61 62 69 74 73 63 63 63 32 32 32 00 00 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: HardHabits -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 04 0c 08 00 2f 39 4b 04 0b 1c 15 06 08 0c 00 1a 52 24 13 1c 04 00 08 0c -1e 18 63 04 0b 1c 07 07 08 0b 00 38 63 04 0b 04 22 21 00 00 02 0c 02 04 00 -63 32 00 00 00 32 00 48 61 72 64 48 61 62 69 74 73 63 63 63 32 32 32 00 00 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: HawaiiGitr -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 09 00 06 00 27 02 38 22 0b 13 06 00 08 00 37 02 3b 0a 03 13 0a 00 09 00 -3d 02 45 0a 0e 13 12 08 08 0f 00 03 61 04 0b 32 1f 00 03 00 52 0c 03 04 00 -63 32 01 32 00 32 00 48 61 77 61 69 69 47 69 74 72 63 63 63 32 32 32 00 10 -00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: HeavyLead -** Controls: MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank C, voice 25 -11 06 08 0f 0a 2f 00 4d 04 03 1f 1f 00 0f 0f 00 00 50 00 03 1f 0c 00 0f 0d -00 00 4e 00 03 1f 1f 00 0f 0f 00 00 5a 00 03 30 20 27 06 00 62 18 07 04 00 -63 32 00 00 00 32 00 48 65 61 76 79 4c 65 61 64 20 63 63 63 32 32 32 00 00 -00 10 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: HeavyMetal -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank C, voice 6 -1f 08 00 03 0f 20 01 58 00 06 1f 03 00 02 0f 1b 01 4c 0d 02 15 05 04 03 0f -1b 00 5b 0a 05 1f 0f 00 08 0f 00 00 5c 04 03 3a 1f 16 05 00 62 18 07 04 00 -63 32 00 00 00 32 00 48 65 61 76 79 4d 65 74 61 6c 63 63 63 32 32 32 00 00 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: HollowLead -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 1f 00 07 0f 00 04 47 08 06 12 0c 06 09 0f 00 04 5a 04 0e 14 1f 00 09 0f -00 05 62 04 06 18 1f 00 0d 0f 00 05 56 04 03 74 29 00 00 00 22 18 05 04 00 -63 63 63 00 00 32 00 48 6f 6c 6c 6f 77 4c 65 61 64 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: HollowLead -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 1f 00 07 0f 00 01 47 08 06 12 0c 06 09 0f 00 01 5a 04 0e 14 1f 00 09 0f -00 00 62 04 06 18 1f 00 0d 0f 00 00 56 04 03 74 29 00 00 00 22 18 05 04 00 -63 63 63 00 00 32 00 48 6f 6c 6c 6f 77 4c 65 61 64 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Jazz Guit1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -19 09 07 07 0b 55 43 5f 0a 13 1b 09 07 07 0b 63 45 5b 0a 0b 18 09 07 07 0d -63 45 63 04 1b 16 09 07 07 09 0a 46 5f 04 03 04 19 00 01 03 16 18 00 04 00 -63 63 00 00 00 32 00 4a 61 7a 7a 20 47 75 69 74 31 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Jazz Guit1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -19 09 07 07 0b 55 41 5f 0a 13 1b 09 07 07 0b 63 42 5b 0a 0b 18 09 07 07 0d -63 40 63 04 1b 16 09 07 07 09 0a 40 5f 04 03 04 19 00 01 03 16 18 00 04 00 -63 63 00 00 00 32 00 4a 61 7a 7a 20 47 75 69 74 31 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Jazz Guit2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 11 1f 0f 00 2e 03 60 31 03 1c 07 0c 09 0e 00 03 4a 08 0b 17 1a 07 07 0d -4f 05 51 04 00 16 1a 09 09 0e 00 04 63 04 0b 04 23 00 05 00 22 0c 03 04 00 -63 63 00 00 00 32 00 4a 61 7a 7a 20 47 75 69 74 32 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Jazz Guit2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 11 1f 0f 00 2e 02 60 31 03 1c 07 0c 09 0e 00 01 4a 08 0b 17 1a 07 07 0d -4f 00 51 04 00 16 1a 09 09 0e 00 00 63 04 0b 04 23 00 05 00 22 0c 03 04 00 -63 63 00 00 00 32 00 4a 61 7a 7a 20 47 75 69 74 32 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Jazz Guit3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -19 19 08 0f 0d 2e 04 5e 2a 1b 1b 11 0c 09 0c 00 03 48 08 0b 18 19 07 07 0d -4f 04 51 04 00 16 19 09 09 0e 00 06 63 04 0b 04 23 00 05 00 22 0c 03 04 00 -63 63 00 00 00 32 00 4a 61 7a 7a 20 47 75 69 74 33 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Jazz Guit3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -19 19 08 0f 0d 2e 01 5e 2a 1b 1b 11 0c 09 0c 00 01 48 08 0b 18 19 07 07 0d -4f 00 51 04 00 16 19 09 09 0e 00 00 63 04 0b 04 23 00 05 00 22 0c 03 04 00 -63 63 00 00 00 32 00 4a 61 7a 7a 20 47 75 69 74 33 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Jazz Guit4 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 12 1f 0f 00 63 44 5b 2a 03 1b 09 07 07 0b 49 45 5c 0a 0b 18 09 07 07 0d -2d 44 63 0a 1b 16 09 07 07 09 0a 46 5f 04 03 3c 23 00 01 04 3a 18 00 04 00 -63 63 00 00 00 32 00 4a 61 7a 7a 20 47 75 69 74 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Jazz Guit4 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 12 1f 0f 00 63 42 5b 2a 03 1b 09 07 07 0b 49 42 5c 0a 0b 18 09 07 07 0d -2d 40 63 0a 1b 16 09 07 07 09 0a 40 5f 04 03 3c 23 00 01 04 3a 18 00 04 00 -63 63 00 00 00 32 00 4a 61 7a 7a 20 47 75 69 74 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: JonesLead -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 0a 04 07 0f 00 03 53 04 13 1b 0a 04 07 0c 00 04 4b 10 13 1b 18 06 07 0f -00 06 62 04 12 1b 18 06 07 0f 00 05 63 04 13 7c 2d 00 00 00 22 0c 02 04 00 -63 63 00 00 00 32 00 4a 6f 6e 65 73 4c 65 61 64 20 63 63 63 32 32 32 00 00 -00 40 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: JonesLead -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 0a 04 07 0f 00 01 53 04 13 1b 0a 04 07 0c 00 01 4b 10 13 1b 18 06 07 0f -00 00 62 04 12 1b 18 06 07 0f 00 00 63 04 13 7c 2d 00 00 00 22 0c 02 04 00 -63 63 00 00 00 32 00 4a 6f 6e 65 73 4c 65 61 64 20 63 63 63 32 32 32 00 00 -00 40 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: KickLead -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 0f 07 07 0e 19 04 52 04 10 0d 01 06 08 0c 19 06 58 04 10 1f 15 07 07 0e -00 05 63 04 08 0e 03 02 06 0e 00 46 63 04 0e 3c 0f 1d 23 3d 26 0c 04 05 00 -28 32 00 00 00 32 00 4b 69 63 6b 4c 65 61 64 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: KickLead -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -15 0f 07 07 0e 19 01 52 04 10 0d 01 06 08 0c 19 01 58 04 10 1f 15 07 07 0e -00 00 63 04 08 0e 03 02 06 0e 00 40 63 04 0e 3c 0f 1d 23 3d 26 0c 04 05 00 -28 32 00 00 00 32 00 4b 69 63 6b 4c 65 61 64 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Mute Gtr -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank B, voice 12 -1f 14 1f 03 0e 0a 02 4e 13 0b 1f 16 0a 08 0e 1e 00 52 04 1b 1f 10 09 09 0e -00 01 63 04 1b 1f 11 09 08 0e 00 01 63 04 1b 7c 1c 00 16 00 32 0c 02 04 00 -28 32 00 00 00 32 00 4d 75 74 65 20 47 74 72 20 20 63 63 63 32 32 32 00 50 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Mute Gtr -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 14 1f 03 0e 0d 02 4e 13 0b 1f 16 0d 08 0e 1e 00 52 04 1b 1f 10 09 09 0e -00 01 63 04 1b 1f 11 09 08 0e 00 01 63 04 1b 7c 1c 00 16 00 32 0c 02 04 00 -28 32 00 00 00 32 00 4d 75 74 65 20 47 74 72 20 20 63 63 63 32 32 32 00 50 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: NastyLead1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 0d 09 08 0f 00 04 61 04 08 0f 04 11 08 0c 00 04 5f 04 09 1f 15 08 08 0f -00 05 63 04 08 0f 15 06 08 0c 00 05 63 04 0e 6c 23 00 00 00 02 18 05 04 00 -63 63 63 00 00 32 00 4e 61 73 74 79 4c 65 61 64 31 63 63 63 32 32 32 00 00 -00 40 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: NastyLead1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -15 0d 09 08 0f 00 02 61 04 08 0f 04 11 08 0c 00 01 5f 04 09 1f 15 08 08 0f -00 00 63 04 08 0f 15 06 08 0c 00 00 63 04 0e 6c 23 00 00 00 02 18 05 04 00 -63 63 63 00 00 32 00 4e 61 73 74 79 4c 65 61 64 31 63 63 63 32 32 32 00 00 -00 40 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: NastyLead2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 0d 09 08 0f 00 04 62 08 00 0f 0e 05 08 07 00 05 62 04 01 1f 15 08 08 0f -00 05 63 08 00 0f 16 06 08 0e 00 05 63 10 06 6c 26 00 03 00 42 18 05 04 00 -63 63 63 00 00 32 00 4e 61 73 74 79 4c 65 61 64 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: NastyLead2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -15 0d 09 08 0f 00 02 62 08 00 0f 0e 05 08 07 00 02 62 04 01 1f 15 08 08 0f -00 00 63 08 00 0f 16 06 08 0e 00 00 63 10 06 6c 26 00 03 00 42 18 05 04 00 -63 63 63 00 00 32 00 4e 61 73 74 79 4c 65 61 64 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Nuln Guit3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 0a 04 0c 09 63 01 48 1f 0b 19 1e 09 09 09 00 03 51 0d 1c 1d 0a 04 0c 03 -00 05 5d 0d 1b 15 03 06 09 0f 0a 05 5c 04 0b 3c 23 00 1b 00 22 00 04 04 00 -63 32 00 00 00 32 00 4e 75 6c 6e 20 47 75 69 74 33 63 63 63 32 32 32 00 00 -00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Nuln Guit3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 0a 04 0c 09 63 01 48 1f 0b 19 1e 09 09 09 00 01 51 0d 1c 1d 0a 04 0c 03 -00 00 5d 0d 1b 15 03 06 09 0f 0a 00 5c 04 0b 3c 23 00 1b 00 22 00 04 04 00 -63 32 00 00 00 32 00 4e 75 6c 6e 20 47 75 69 74 33 63 63 63 32 32 32 00 00 -00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Nyln Guit1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 0f 0c 06 0b 23 02 4a 1c 13 14 15 03 07 0f 27 02 4a 04 13 15 0a 09 06 0f -00 04 43 16 03 18 04 04 06 0e 00 04 63 04 0b 3c 23 00 1b 00 22 0c 04 04 00 -63 32 00 00 00 32 00 4e 79 6c 6e 20 47 75 69 74 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Nyln Guit1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 0f 0c 06 0b 23 02 4a 1c 13 14 15 03 07 0f 27 01 4a 04 13 15 0a 09 06 0f -00 00 43 16 03 18 04 04 06 0e 00 00 63 04 0b 3c 23 00 1b 00 22 0c 04 04 00 -63 32 00 00 00 32 00 4e 79 6c 6e 20 47 75 69 74 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Nyln Guit2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 0f 0c 06 05 23 02 4f 10 13 1c 1e 03 07 04 00 05 42 3f 14 1f 19 03 07 04 -00 05 60 04 1b 18 04 03 07 04 00 04 5f 04 0b 21 23 00 1b 00 22 0c 04 04 00 -63 32 00 00 00 32 00 4e 79 6c 6e 20 47 75 69 74 32 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Nyln Guit2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 0f 0c 06 05 23 02 4f 10 13 1c 1e 03 07 04 00 01 42 3f 14 1f 19 03 07 04 -00 01 60 04 1b 18 04 03 07 04 00 00 5f 04 0b 21 23 00 1b 00 22 0c 04 04 00 -63 32 00 00 00 32 00 4e 79 6c 6e 20 47 75 69 74 32 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Nylon * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0d 08 04 0b 2f 03 4d 0d 13 1c 1f 03 05 0f 2c 02 36 03 09 1b 05 07 04 0a -29 04 4c 0d 16 15 13 08 05 0e 11 03 63 04 0a 3b 1f 00 00 00 32 11 02 04 00 -28 63 00 00 00 32 00 4e 79 6c 6f 6e 20 20 20 20 2a 63 63 63 32 32 32 00 08 -00 06 00 08 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: NylonGuit -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank C, voice 1 -1f 09 00 06 00 27 02 51 19 0b 1c 06 00 08 00 37 02 47 0a 03 1f 0a 00 09 00 -3d 02 4d 0a 0e 1f 12 08 08 0f 00 03 61 04 0b 28 1f 00 03 00 52 0c 03 04 00 -63 32 01 32 00 32 00 4e 79 6c 6f 6e 47 75 69 74 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntGuitar -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 0c 07 0a 0d 63 02 50 19 1b 1b 0c 07 0a 0d 63 02 4f 00 1b 1b 12 07 0a 0d -00 05 5b 1f 13 1b 12 07 0a 0d 00 05 62 08 15 04 23 00 00 00 62 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 47 75 69 74 61 72 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntGuitar -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 0c 07 0a 0d 63 00 50 19 1b 1b 0c 07 0a 0d 63 00 4f 00 1b 1b 12 07 0a 0d -00 00 5b 1f 13 1b 12 07 0a 0d 00 00 62 08 15 04 23 00 00 00 62 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 47 75 69 74 61 72 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ped Stl..1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -13 0f 09 06 0e 39 02 51 04 06 1c 09 0a 08 0e 00 03 59 0a 01 1f 09 09 08 0f -00 01 63 08 05 18 0c 09 07 0f 00 04 63 04 02 76 22 00 00 00 22 18 03 04 00 -63 63 00 00 00 32 00 50 65 64 20 53 74 6c 2e 2e 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ped Stl..1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -13 0f 09 06 0e 39 02 51 04 06 1c 09 0a 08 0e 00 00 59 0a 01 1f 09 09 08 0f -00 00 63 08 05 18 0c 09 07 0f 00 00 63 04 02 76 22 00 00 00 22 18 03 04 00 -63 63 00 00 00 32 00 50 65 64 20 53 74 6c 2e 2e 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ped Stl..2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -13 0f 09 06 0e 39 03 45 13 06 1c 09 0a 08 0e 00 02 63 08 01 1f 09 09 08 0f -00 05 63 04 05 0e 0c 07 08 0f 00 04 63 04 0a 76 22 00 00 00 22 18 03 04 00 -63 63 00 00 00 32 00 50 65 64 20 53 74 6c 2e 2e 32 63 63 63 32 32 32 00 00 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ped Stl..2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -13 0f 09 06 0e 39 02 45 13 06 1c 09 0a 08 0e 00 00 63 08 01 1f 09 09 08 0f -00 00 63 04 05 0e 0c 07 08 0f 00 00 63 04 0a 76 22 00 00 00 22 18 03 04 00 -63 63 00 00 00 32 00 50 65 64 20 53 74 6c 2e 2e 32 63 63 63 32 32 32 00 00 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ped Stl..3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -13 0f 09 06 0e 39 02 3c 08 06 1c 09 0a 08 0e 00 03 63 08 01 1f 09 09 08 0f -00 03 63 04 05 0e 0c 07 08 0f 00 06 63 04 0a 7d 22 00 00 00 22 18 03 04 00 -63 63 00 00 00 32 00 50 65 64 20 53 74 6c 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ped Stl..3 -** Source: from a library of patches collected by Duane Bowker, author unknown -13 0f 09 06 0e 39 00 3c 08 06 1c 09 0a 08 0e 00 00 63 08 01 1f 09 09 08 0f -00 00 63 04 05 0e 0c 07 08 0f 00 00 63 04 0a 7d 22 00 00 00 22 18 03 04 00 -63 63 00 00 00 32 00 50 65 64 20 53 74 6c 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PedalSteel -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 10 00 0c 00 27 02 3c 24 0b 1f 10 02 0a 0e 37 02 5d 04 0c 1b 06 05 0b 0d -3d 02 5a 0a 0b 1b 09 06 0b 0d 00 06 63 04 0b 03 1d 16 09 00 52 18 02 04 00 -63 19 00 0a 00 32 00 50 65 64 61 6c 53 74 65 65 6c 63 63 63 32 32 32 00 40 -00 30 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PercLead.1 -** Controls: KV, MW (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1a 0d 00 0a 0b 06 44 55 08 1b 1f 08 00 0d 0c 05 06 40 00 0b 1f 1f 00 0d 0f -0d 06 53 04 1b 1f 1f 00 0d 0f 00 45 5e 04 03 11 23 35 00 10 46 18 0c 04 00 -63 32 32 00 00 32 00 50 65 72 63 4c 65 61 64 2e 31 63 63 63 32 32 32 00 00 -00 00 00 10 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PercLead.1 -** Controls: KV, MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -1a 0d 00 0a 0b 06 41 55 08 1b 1f 08 00 0d 0c 05 01 40 00 0b 1f 1f 00 0d 0f -0d 01 53 04 1b 1f 1f 00 0d 0f 00 40 5e 04 03 11 23 35 00 10 46 18 0c 04 00 -63 32 32 00 00 32 00 50 65 72 63 4c 65 61 64 2e 31 63 63 63 32 32 32 00 00 -00 00 00 10 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PercLead.2 -** Controls: KV, MW (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1a 0d 00 0a 0b 06 46 63 04 1b 1f 08 00 0d 0c 05 04 5e 0a 0b 1f 1f 00 0d 0f -0d 06 52 04 1b 1f 1f 00 0d 0f 00 44 57 04 03 25 23 35 00 10 46 18 0c 04 00 -63 32 32 00 00 32 00 50 65 72 63 4c 65 61 64 2e 32 63 63 63 32 32 32 00 00 -00 20 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PercLead.2 -** Controls: KV, MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -1a 0d 00 0a 0b 06 42 63 04 1b 1f 08 00 0d 0c 05 00 5e 0a 0b 1f 1f 00 0d 0f -0d 00 52 04 1b 1f 1f 00 0d 0f 00 40 57 04 03 25 23 35 00 10 46 18 0c 04 00 -63 32 32 00 00 32 00 50 65 72 63 4c 65 61 64 2e 32 63 63 63 32 32 32 00 00 -00 20 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PhasedGuit -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1a 0e 0e 0f 0f 00 03 42 2d 06 16 0f 04 0f 0f 20 03 60 00 00 1c 12 06 0c 0e -14 03 5a 00 08 1f 13 07 08 0e 06 04 62 04 0e 3b 1d 00 00 00 42 18 02 04 00 -63 32 00 32 00 32 00 50 68 61 73 65 64 47 75 69 74 63 63 63 32 32 32 10 30 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Piknylon * -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1a 1e 1f 07 00 00 03 5a 28 03 1d 08 1f 05 0a 21 02 43 0a 08 1d 0d 08 02 0c -18 02 53 0a 15 1d 0a 0c 05 0a 00 03 63 04 04 02 1e 0a 09 00 32 18 02 04 00 -28 63 00 00 00 32 00 50 69 6b 6e 79 6c 6f 6e 20 2a 63 63 63 32 32 32 0a 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Power Lead -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 07 00 01 00 2e 03 5c 08 13 1f 0c 06 09 0f 4b 06 4d 00 13 1f 0d 03 09 04 -46 05 51 1c 0b 1f 12 06 09 0e 0e 05 63 04 0b 2a 23 00 00 00 02 0c 02 04 00 -28 02 00 00 00 32 00 50 6f 77 65 72 20 4c 65 61 64 63 63 63 32 32 32 00 00 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Power Lead -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 07 00 01 00 2e 01 5c 08 13 1f 0c 06 09 0f 4b 01 4d 00 13 1f 0d 03 09 04 -46 01 51 1c 0b 1f 12 06 09 0e 0e 00 63 04 0b 2a 23 00 00 00 02 0c 02 04 00 -28 02 00 00 00 32 00 50 6f 77 65 72 20 4c 65 61 64 63 63 63 32 32 32 00 00 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PowerChord -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1a 08 00 03 07 20 01 52 00 06 1c 03 00 02 0a 1b 01 4c 00 02 15 05 04 03 0a -1b 00 46 0a 05 17 0f 00 08 0f 00 40 50 04 03 3a 1e 16 02 32 46 18 07 04 00 -63 32 00 00 00 32 00 50 6f 77 65 72 43 68 6f 72 64 63 63 63 32 32 32 00 00 -00 50 00 50 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: RecLead -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -13 1f 00 06 0f 5c 01 48 0d 03 16 02 06 03 0d 00 01 5c 0d 06 15 09 09 0c 0d -00 05 63 0d 0b 12 09 09 08 0d 00 05 5f 0d 0b 0c 00 02 00 00 22 00 02 04 00 -28 02 00 00 00 32 00 52 65 63 4c 65 61 64 20 20 20 63 63 63 32 32 32 00 00 -00 20 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: RecLead -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -13 1f 00 06 0f 5c 01 48 0d 03 16 02 06 03 0d 00 01 5c 0d 06 15 09 09 0c 0d -00 00 63 0d 0b 12 09 09 08 0d 00 00 5f 0d 0b 0c 00 02 00 00 22 00 02 04 00 -28 02 00 00 00 32 00 52 65 63 4c 65 61 64 20 20 20 63 63 63 32 32 32 00 00 -00 20 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rock Guit1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 09 03 0d 0e 63 02 54 04 0e 1c 0a 02 0c 0b 00 03 41 1c 1c 1c 07 01 07 0e -00 05 5d 04 1b 1c 05 02 0a 0b 0a 05 5c 04 0d 03 23 20 00 00 32 00 04 04 00 -63 32 00 00 00 32 00 52 6f 63 6b 20 47 75 69 74 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rock Guit1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 09 03 0d 0e 63 01 54 04 0e 1c 0a 02 0c 0b 00 01 41 1c 1c 1c 07 01 07 0e -00 01 5d 04 1b 1c 05 02 0a 0b 0a 00 5c 04 0d 03 23 20 00 00 32 00 04 04 00 -63 32 00 00 00 32 00 52 6f 63 6b 20 47 75 69 74 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rock Guit2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 03 00 0a 0e 13 02 41 04 03 12 1f 00 0a 0f 00 03 46 08 02 12 1f 00 0a 0f -45 05 60 08 03 12 1f 00 0a 0f 01 05 60 08 03 1b 23 01 0a 00 62 0c 02 04 00 -63 32 00 00 00 32 00 52 6f 63 6b 20 47 75 69 74 32 63 63 63 32 32 32 00 10 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rock Guit2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 03 00 0a 0e 13 02 41 04 03 12 1f 00 0a 0f 00 01 46 08 02 12 1f 00 0a 0f -45 01 60 08 03 12 1f 00 0a 0f 01 00 60 08 03 1b 23 01 0a 00 62 0c 02 04 00 -63 32 00 00 00 32 00 52 6f 63 6b 20 47 75 69 74 32 63 63 63 32 32 32 00 10 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rock Guit3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 0f 01 0c 0e 07 03 4e 00 1e 1c 1f 06 0f 0f 00 04 54 04 0c 1c 09 03 0f 0f -00 06 4e 04 03 1c 07 07 09 0b 0a 05 56 04 0d 29 23 20 00 00 32 18 04 04 00 -63 32 00 00 00 32 00 52 6f 63 6b 20 47 75 69 74 33 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rock Guit3 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 0f 01 0c 0e 07 01 4e 00 1e 1c 1f 06 0f 0f 00 01 54 04 0c 1c 09 03 0f 0f -00 01 4e 04 03 1c 07 07 09 0b 0a 00 56 04 0d 29 23 20 00 00 32 18 04 04 00 -63 32 00 00 00 32 00 52 6f 63 6b 20 47 75 69 74 33 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rock Guit4 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 0f 0a 0c 0e 00 03 41 1c 16 1c 1f 06 0f 0f 00 04 5b 00 0c 1c 09 03 0f 0f -00 05 4e 04 03 1c 07 07 09 0b 0a 05 60 04 0d 2c 23 20 00 00 32 18 04 04 00 -63 32 00 00 00 32 00 52 6f 63 6b 20 47 75 69 74 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rock Guit4 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 0f 0a 0c 0e 00 01 41 1c 16 1c 1f 06 0f 0f 00 01 5b 00 0c 1c 09 03 0f 0f -00 00 4e 04 03 1c 07 07 09 0b 0a 00 60 04 0d 2c 23 20 00 00 32 18 04 04 00 -63 32 00 00 00 32 00 52 6f 63 6b 20 47 75 69 74 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rock Guit5 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 0f 06 07 0c 00 03 57 04 13 1c 1f 06 0f 0f 00 03 55 08 0c 1c 09 07 07 0c -00 05 5f 0a 0a 1c 07 07 09 0b 0a 05 5f 04 0d 2c 23 20 00 00 32 18 04 04 00 -63 32 00 00 00 32 00 52 6f 63 6b 20 47 75 69 74 35 63 63 63 32 32 32 00 20 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rock Guit5 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -15 0f 06 07 0c 00 01 57 04 13 1c 1f 06 0f 0f 00 01 55 08 0c 1c 09 07 07 0c -00 00 5f 0a 0a 1c 07 07 09 0b 0a 00 5f 04 0d 2c 23 20 00 00 32 18 04 04 00 -63 32 00 00 00 32 00 52 6f 63 6b 20 47 75 69 74 35 63 63 63 32 32 32 00 20 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rock Guit6 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 1f 04 07 0f 00 02 50 04 13 10 15 04 0f 0d 00 03 56 00 0c 10 1f 04 07 0f -00 05 63 0a 0a 18 04 03 09 0b 0a 05 63 04 15 24 23 20 00 00 32 18 04 04 00 -63 32 00 00 00 32 00 52 6f 63 6b 20 47 75 69 74 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rock Guit6 -** Source: from a library of patches collected by Duane Bowker, author unknown -10 1f 04 07 0f 00 00 50 04 13 10 15 04 0f 0d 00 00 56 00 0c 10 1f 04 07 0f -00 00 63 0a 0a 18 04 03 09 0b 0a 00 63 04 15 24 23 20 00 00 32 18 04 04 00 -63 32 00 00 00 32 00 52 6f 63 6b 20 47 75 69 74 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: StadiumSol -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank C, voice 17 -1f 08 00 03 0f 20 01 4e 00 06 1f 03 00 02 0f 1b 01 48 0d 02 1f 05 04 03 0f -1b 00 3c 2a 05 1e 0f 00 09 0f 00 00 5c 04 03 3a 1f 16 05 00 62 18 07 0c 00 -63 32 00 00 00 32 00 53 74 61 64 69 75 6d 53 6f 6c 63 63 63 32 32 32 00 00 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Solo 1 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank A, voice 23 -17 0f 00 0a 0c 00 00 35 0a 06 18 0e 00 0a 0c 00 00 3f 04 06 16 00 00 0a 0f -05 00 53 04 06 18 05 01 0a 0a 00 04 5c 04 00 3b 20 14 0a 00 42 0c 02 04 00 -28 46 00 00 00 32 00 53 79 2e 53 6f 6c 6f 20 20 31 63 63 63 32 32 32 00 60 -00 30 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Solo 1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -17 0f 00 0a 0c 00 00 35 0d 06 18 0e 00 0a 0c 00 00 3f 04 06 16 00 00 0a 0f -05 00 53 04 06 18 05 01 0a 0d 00 04 5c 04 00 3b 20 14 0a 00 42 0c 02 04 00 -28 46 00 00 00 32 00 53 79 2e 53 6f 6c 6f 20 20 31 63 63 63 32 32 32 00 60 -00 30 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Solo 2 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank A, voice 24 -1f 19 00 08 0b 00 00 49 04 06 1b 0a 00 0c 0c 00 02 63 08 00 1b 04 00 0c 0a -00 02 63 04 06 1f 04 00 0c 0e 00 02 63 04 06 3d 26 28 14 00 42 18 02 04 00 -28 4b 00 00 00 32 00 53 79 2e 53 6f 6c 6f 20 20 32 63 63 63 32 32 32 00 20 -00 50 00 40 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Solo 2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 19 00 08 0b 00 00 49 04 06 1b 0a 00 0c 0c 00 02 63 08 00 1b 04 00 0c 0d -00 02 63 04 06 1f 04 00 0c 0e 00 02 63 04 06 3d 26 28 14 00 42 18 02 04 00 -28 4b 00 00 00 32 00 53 79 2e 53 6f 6c 6f 20 20 32 63 63 63 32 32 32 00 20 -00 50 00 40 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Solo 3 -** Controls: KV -** Source: Yamaha DX11 factory preset, bank A, voice 25 -1f 0a 00 04 0a 07 01 4f 04 0b 1f 0a 00 07 0b 00 00 2d 04 0b 1f 0b 00 05 0b -00 00 4d 04 0b 16 1f 00 0a 0f 00 01 61 04 0b 3a 20 00 00 00 62 18 02 04 00 -28 32 00 00 00 32 00 53 79 2e 53 6f 6c 6f 20 20 33 63 63 63 32 32 32 00 30 -00 30 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Solo 3 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0a 00 04 0d 07 01 4f 04 0b 1f 0d 00 07 0b 00 00 2d 04 0b 1f 0b 00 05 0b -00 00 4d 04 0b 16 1f 00 0a 0f 00 01 61 04 0b 3a 20 00 00 00 62 18 02 04 00 -28 32 00 00 00 32 00 53 79 2e 53 6f 6c 6f 20 20 33 63 63 63 32 32 32 00 30 -00 30 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Solo 4 -** Controls: KV -** Source: Yamaha DX11 factory preset, bank A, voice 26 -1f 0a 00 04 0a 07 01 4d 08 0b 1f 0a 00 07 0b 00 00 35 08 0b 1f 0b 00 05 0b -00 00 45 04 0b 17 1f 00 0a 0f 00 01 61 04 0b 3a 20 00 00 00 62 18 02 04 00 -28 32 00 00 00 32 00 53 79 2e 53 6f 6c 6f 20 20 34 63 63 63 32 32 32 00 30 -00 30 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Solo 4 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0a 00 04 0d 07 01 4d 08 0b 1f 0d 00 07 0b 00 00 35 08 0b 1f 0b 00 05 0b -00 00 45 04 0b 17 1f 00 0a 0f 00 01 61 04 0b 3a 20 00 00 00 62 18 02 04 00 -28 32 00 00 00 32 00 53 79 2e 53 6f 6c 6f 20 20 34 63 63 63 32 32 32 00 30 -00 30 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sync Lead -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank C, voice 22 -13 12 00 09 0d 22 00 51 00 0b 1f 14 00 05 08 24 40 5c 00 03 1f 11 00 06 0c -2c 00 53 09 00 10 1f 00 0b 0f 00 00 5c 0a 0e 3a 22 11 0e 1e 5e 18 07 04 00 -63 32 00 32 00 32 00 53 79 6e 63 20 4c 65 61 64 20 63 63 63 32 32 32 00 70 -00 40 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: TwangGuitr -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1a 00 03 01 00 04 52 2f 16 1f 05 00 08 00 00 02 50 04 10 1f 0f 06 09 0a -00 02 3e 35 10 1f 09 07 09 0d 00 05 63 10 0b 32 1e 09 02 00 52 0c 04 04 00 -63 19 00 10 00 32 00 54 77 61 6e 67 47 75 69 74 72 63 63 63 32 32 32 10 54 -15 50 10 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: TwelveStrg -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank C, voice 3 -1f 0d 08 0a 08 00 03 42 24 06 1f 1f 05 0b 0b 36 03 63 07 0e 1f 0f 06 0b 0f -13 03 63 00 10 1f 13 07 09 0e 00 04 63 04 0e 3b 14 00 00 00 42 18 02 04 00 -63 32 00 32 00 32 00 54 77 65 6c 76 65 53 74 72 67 63 63 63 32 32 32 00 00 -00 37 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: slowtacky -** Description: a biting electric guitar sound -** Controls: KV -** Source: GLIB (Michael Kesti and others) -1f 0a 06 0b 02 00 05 5f 08 02 1f 02 03 0b 0e 43 05 5f 00 10 1f 12 06 08 0e -00 05 5f 00 00 16 04 08 08 0c 00 05 5f 04 03 33 14 00 00 00 62 18 01 04 00 -63 32 00 32 00 32 00 73 6c 6f 77 74 61 63 6b 79 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: slowtacky+ -** Description: 'slowtacky' (from GLIB) with added sustain -** Controls: KV -** Source: Art Hitzeman, based on a voice from GLIB (Michael Kesti and others) -1f 0a 06 07 02 00 05 5f 08 02 1f 02 03 07 0e 43 05 5f 00 10 1f 12 06 07 0e -00 05 5f 00 00 16 04 08 06 0c 00 05 5f 04 03 33 14 00 00 00 62 18 01 04 00 -63 32 00 32 00 32 00 73 6c 6f 77 74 61 63 6b 79 2b 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - ---Bank 9 - -* SUBCATEGORY Harp - - -** Name: Dbl Harp.1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 0f 09 04 0b 27 04 5f 0a 04 1c 0f 02 01 00 2d 04 5a 08 02 1c 0a 09 06 0a -1d 04 63 04 01 11 1f 04 03 0c 00 05 63 04 1d 6c 22 21 00 00 12 18 02 04 00 -63 32 00 00 01 32 00 44 62 6c 20 48 61 72 70 2e 31 63 63 63 32 32 32 00 20 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Dbl Harp.1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 0f 09 04 0b 27 01 5f 0a 04 1c 0f 02 01 00 2d 01 5a 08 02 1c 0a 09 06 0a -1d 00 63 04 01 11 1f 04 03 0c 00 01 63 04 1d 6c 22 21 00 00 12 18 02 04 00 -63 32 00 00 01 32 00 44 62 6c 20 48 61 72 70 2e 31 63 63 63 32 32 32 00 20 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Dbl Harp.2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 1b 07 06 00 63 05 5d 13 0c 1f 12 0c 04 0f 5a 04 53 0d 0a 1c 0a 07 05 00 -00 04 4c 08 01 18 12 09 05 0f 00 05 5d 04 0d 38 1b 29 01 00 32 18 02 04 00 -63 32 00 00 01 32 00 44 62 6c 20 48 61 72 70 2e 32 63 63 63 32 32 32 00 10 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Dbl Harp.2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 1b 07 06 00 63 01 5d 13 0c 1f 12 0c 04 0f 5a 01 53 0d 0a 1c 0a 07 05 00 -00 00 4c 08 01 13 12 09 05 0f 00 00 5d 04 0d 38 1b 29 01 00 32 18 02 04 00 -63 32 00 00 01 32 00 44 62 6c 20 48 61 72 70 2e 32 63 63 63 32 32 32 00 10 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Harp * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 09 00 01 00 07 02 50 08 0e 1f 12 00 05 00 00 03 4d 0a 10 1e 08 00 04 00 -0b 03 63 04 10 1b 08 00 04 00 10 03 63 04 16 34 23 00 00 00 32 18 02 04 00 -28 62 00 00 00 32 00 48 61 72 70 20 20 20 20 20 2a 63 63 63 32 32 32 00 30 -00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Harp -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank B, voice 24 -10 13 0f 04 0a 00 03 3b 14 14 1f 0e 08 07 09 00 02 42 05 0e 18 13 0d 09 0c -00 02 3c 13 08 1f 11 07 04 0f 00 42 63 04 10 3a 1b 00 00 00 52 1d 04 04 00 -63 32 00 00 00 32 00 48 61 72 70 20 20 20 20 20 20 63 63 63 32 32 32 08 00 -00 21 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Harp 1 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank B, voice 13 -17 0e 0a 03 0e 00 04 56 04 08 17 0e 0a 03 0e 00 04 56 04 0e 1f 0c 07 05 0e -00 03 63 04 08 1f 0c 07 05 0e 00 03 63 04 0e 04 1b 15 0a 01 32 18 02 04 00 -63 63 00 00 00 32 00 48 61 72 70 20 20 20 20 20 31 63 63 63 32 32 32 00 30 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Harp 1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -17 0e 0a 03 0e 00 04 56 04 08 17 0e 0a 03 0e 00 04 56 04 0e 1f 0c 07 05 0e -00 03 63 04 08 1f 0c 07 05 0e 00 03 63 04 0e 04 1b 15 0d 01 32 18 02 04 00 -63 63 00 00 00 32 00 48 61 72 70 20 20 20 20 20 31 63 63 63 32 32 32 00 30 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Harp 2 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank B, voice 14 -17 0b 0b 01 06 0a 42 3b 04 00 1c 13 00 01 00 0a 41 49 08 06 1f 13 00 01 00 -00 42 43 16 06 19 0f 0b 05 0e 00 43 63 04 08 3a 14 00 06 08 4a 18 02 04 00 -28 55 00 00 00 32 00 48 61 72 70 20 20 20 20 20 32 63 63 63 32 32 32 00 00 -00 20 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Harp.....1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -07 05 0a 07 0e 00 02 56 13 0c 1f 09 05 03 00 52 02 53 08 0b 1f 13 07 06 00 -36 05 4b 10 03 19 07 00 04 00 1d 04 5c 04 0e 3b 1b 00 02 00 32 18 02 04 00 -63 32 00 00 01 32 00 48 61 72 70 2e 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 30 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Harp.....1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -07 05 0a 07 0e 00 00 56 13 0c 1f 09 05 03 00 52 00 53 08 0b 1f 13 07 06 00 -36 02 4b 10 03 19 07 00 04 00 1d 01 5c 04 0e 3b 1b 00 02 00 32 18 02 04 00 -63 32 00 00 01 32 00 48 61 72 70 2e 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 30 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Harp.....2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 0f 09 03 0b 2d 03 53 0a 1c 1c 0d 0d 03 0a 2d 04 4d 04 0a 1c 0a 0a 04 0a -32 04 47 0a 09 1c 09 0d 04 0a 00 04 62 04 0d 58 22 21 00 00 12 18 02 04 00 -63 32 00 00 01 32 00 48 61 72 70 2e 2e 2e 2e 2e 32 63 63 63 32 32 32 00 40 -00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Harp.....2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 0f 09 03 0b 2d 00 53 0a 1c 1c 0d 0d 03 0a 2d 01 4d 04 0a 1c 0a 0a 04 0a -32 01 47 0a 09 1c 09 0d 04 0a 00 00 62 04 0d 58 22 21 00 00 12 18 02 04 00 -63 32 00 00 01 32 00 48 61 72 70 2e 2e 2e 2e 2e 32 63 63 63 32 32 32 00 40 -00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Harp....FM -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 10 06 06 00 63 01 5a 08 0b 1a 18 06 06 0f 5a 04 5b 04 00 1c 1f 1f 06 0f -00 04 4c 04 0d 13 06 00 06 0f 00 04 63 04 02 25 1b 23 0b 00 42 18 02 04 00 -63 32 00 00 01 32 00 48 61 72 70 2e 2e 2e 2e 46 4d 63 63 63 32 32 32 00 10 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Harp....FM -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 10 06 06 00 63 01 5a 08 0b 1a 18 06 06 0f 5a 01 5b 04 00 1c 1f 1f 06 0f -00 00 4c 04 0d 13 06 00 06 0f 00 00 63 04 02 25 1b 23 0b 00 42 18 02 04 00 -63 32 00 00 01 32 00 48 61 72 70 2e 2e 2e 2e 46 4d 63 63 63 32 32 32 00 10 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY Koto - - -** Name: Fuzzy Koto -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank D, voice 8 -16 02 00 04 06 09 01 4f 08 00 19 0e 01 04 00 20 01 43 19 00 1f 12 10 06 07 -00 00 54 3d 03 16 0d 06 06 02 1e 03 61 08 0e 3a 20 01 14 00 42 0c 02 04 02 -63 63 63 00 00 32 00 46 75 7a 7a 79 20 4b 6f 74 6f 63 63 63 32 32 32 00 00 -00 00 0b 50 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Koto * -** Controls: KV, MW (LFO pitch), BC (voice pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1d 15 00 05 00 0f 02 56 0d 13 1c 04 03 03 0b 0d 01 4f 04 1e 1c 07 09 05 0d -23 01 53 0d 18 1a 14 08 04 0d 00 03 63 04 10 02 1a 08 1d 00 32 18 02 04 00 -28 63 00 00 00 36 00 4b 6f 74 6f 20 20 20 20 20 2a 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Koto -** Controls: KV -** Source: Yamaha DX11 factory preset, bank B, voice 17 -1f 12 0c 06 0b 1c 03 57 16 0b 1f 1f 08 01 0f 0b 01 47 04 0b 1f 1f 06 04 0f -25 01 4b 0a 0b 19 1f 0a 06 0f 00 02 5a 08 0b 00 1e 00 00 00 62 18 02 04 00 -28 32 00 00 00 32 00 4b 6f 74 6f 20 20 20 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Koto -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 12 0c 06 0b 1c 03 57 16 0b 1f 1f 08 01 0f 0b 01 47 04 0b 1f 1f 06 04 0f -25 01 4b 0a 0b 19 1f 0a 06 0f 00 02 5a 08 0b 00 1e 00 00 00 62 18 02 04 00 -28 32 00 00 00 32 00 4b 6f 74 6f 20 20 20 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Koto.....1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0a 09 07 0c 11 02 52 0d 16 1b 1f 1d 05 0d 00 02 63 04 10 1c 0d 05 05 0c -19 05 63 04 16 1f 11 08 05 0f 00 46 5a 00 10 1c 1f 00 00 00 62 18 02 04 00 -63 32 00 32 00 32 00 4b 6f 74 6f 2e 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Koto.....1 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0a 09 07 0c 11 00 52 0d 16 1b 1f 1d 05 0d 00 00 63 04 10 1c 0d 05 05 0c -19 00 63 04 16 1f 11 08 05 0f 00 40 5a 00 10 1c 1f 00 00 00 62 18 02 04 00 -63 32 00 32 00 32 00 4b 6f 74 6f 2e 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Koto.....2 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0a 09 07 0c 11 41 47 0d 13 1b 1f 1d 05 0d 00 43 63 0a 13 1c 0d 05 05 0c -19 45 63 04 13 1f 11 08 05 0f 00 45 5a 04 13 5c 1e 00 11 14 26 18 02 04 00 -63 32 00 32 00 32 00 4b 6f 74 6f 2e 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Koto.....2 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0a 09 07 0c 11 40 47 0d 13 1b 1f 1d 05 0d 00 40 63 0a 13 1c 0d 05 05 0c -19 40 63 04 13 1f 11 08 05 0f 00 40 5a 04 13 5c 1e 00 11 14 26 18 02 04 00 -63 32 00 32 00 32 00 4b 6f 74 6f 2e 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Koto.....3 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0a 09 07 0c 11 42 47 0d 13 1f 0a 09 07 0c 11 43 4a 0d 13 1c 0d 05 05 0c -19 45 63 04 13 1c 0d 05 05 0c 19 47 5a 04 13 5c 1e 00 11 14 26 18 02 04 00 -63 32 00 32 00 32 00 4b 6f 74 6f 2e 2e 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Koto.....3 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0a 09 07 0c 11 40 47 0d 13 1f 0a 09 07 0c 11 40 4a 0d 13 1c 0d 05 05 0c -19 40 63 04 13 1c 0d 05 05 0c 19 40 5a 04 13 5c 1e 00 11 14 26 18 02 04 00 -63 32 00 32 00 32 00 4b 6f 74 6f 2e 2e 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY Lute - - -** Name: OrntLute.1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 07 04 05 08 00 04 52 08 0b 0c 07 1f 04 07 00 42 3e 00 0c 19 07 1f 04 07 -00 04 63 04 0c 18 07 09 05 0e 00 45 63 04 0b 74 34 00 00 0a 06 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 4c 75 74 65 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntLute.1 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 07 04 05 08 00 00 52 08 0b 0c 07 1f 04 07 00 40 3e 00 0c 19 07 1f 04 07 -00 00 63 04 0c 18 07 09 05 0e 00 40 63 04 0b 74 34 00 00 0a 06 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 4c 75 74 65 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntLute.2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 03 00 05 0f 00 42 59 00 0b 1f 0c 1f 05 08 00 43 46 00 0a 0c 0c 1f 04 07 -00 44 63 00 0c 15 0c 09 05 0c 00 46 61 04 0b 6c 34 00 00 0a 06 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 4c 75 74 65 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntLute.2 -** Source: from a library of patches collected by Duane Bowker, author unknown -18 03 00 05 0f 00 40 59 00 0b 1f 0c 1f 05 08 00 40 46 00 0a 0c 0c 1f 04 07 -00 40 63 00 0c 15 0c 09 05 0c 00 40 61 04 0b 6c 34 00 00 0a 06 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 4c 75 74 65 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY Mandolin - - -** Name: Mandolin.1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 19 0d 05 0c 02 04 62 2d 1b 1f 09 06 02 0b 00 04 45 0a 0b 17 0c 09 07 00 -00 06 63 04 0a 16 0c 09 07 0b 00 05 63 04 1c 74 2c 63 04 00 22 18 02 04 00 -63 32 00 32 00 32 00 4d 61 6e 64 6f 6c 69 6e 2e 31 63 63 63 32 32 32 00 00 -00 30 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Mandolin.1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 19 0d 05 0c 02 02 62 2d 1b 1f 09 06 02 0b 00 02 45 0a 0b 17 0c 09 07 00 -00 00 63 04 0a 16 0c 09 07 0b 00 00 63 04 1c 74 2c 63 04 00 22 18 02 04 00 -63 32 00 32 00 32 00 4d 61 6e 64 6f 6c 69 6e 2e 31 63 63 63 32 32 32 00 00 -00 30 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Mandolin.2 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 18 0d 05 0c 02 02 3f 2d 1b 1f 0c 06 04 0b 00 05 37 0a 0b 1f 0d 07 05 0f -00 05 5f 04 0a 16 0c 09 05 0b 00 05 5e 04 1c 3c 46 10 01 00 20 18 02 04 00 -63 32 00 32 00 32 00 4d 61 6e 64 6f 6c 69 6e 2e 32 63 63 63 32 32 32 00 40 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Mandolin.2 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 18 0d 05 0c 02 01 3f 2d 1b 1f 0c 06 04 0b 00 01 37 0a 0b 1f 0d 07 05 0f -00 00 5f 04 0a 16 0c 09 05 0b 00 00 5e 04 1c 3c 46 10 01 00 20 18 02 04 00 -63 32 00 32 00 32 00 4d 61 6e 64 6f 6c 69 6e 2e 32 63 63 63 32 32 32 00 40 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY Sitar - - -** Name: Sitar * -** Controls: KV, BC (voice pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 0f 0f 00 00 00 04 03 1e 0c 0b 01 0f 00 02 55 16 09 11 15 00 02 0f -00 03 5b 04 08 1f 18 06 04 0f 00 01 63 04 0b 03 1d 00 00 00 62 18 01 04 00 -28 0d 00 00 00 33 00 53 69 74 61 72 20 20 20 20 2a 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sitar -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank C, voice 29 -17 0e 09 01 0e 02 00 47 04 1b 1f 06 03 01 05 00 00 4b 08 16 1f 06 04 01 07 -00 00 5e 04 16 1f 05 08 01 07 00 01 5f 08 18 3b 21 00 05 00 42 18 02 04 00 -63 32 00 32 00 32 00 53 69 74 61 72 20 20 20 20 20 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sitar....1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 07 06 01 0d 52 03 51 16 0a 1f 0c 09 01 0e 27 02 58 04 0b 1f 06 06 04 0e -11 06 5b 04 13 1f 18 09 04 0e 00 05 49 37 0b 04 1c 00 00 00 22 18 01 04 00 -63 00 63 00 00 32 00 53 69 74 61 72 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sitar....1 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 07 06 01 0d 52 00 51 16 0a 1f 0c 09 01 0e 27 00 58 04 0b 1f 06 06 04 0e -11 00 5b 04 13 1f 18 09 04 0e 00 00 49 37 0b 04 1c 00 00 00 22 18 01 04 00 -63 00 63 00 00 32 00 53 69 74 61 72 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sitar....2 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -17 0e 09 04 0e 02 01 43 13 13 1f 06 03 03 05 00 02 3b 1c 16 1f 06 04 02 07 -00 05 52 04 16 1f 05 08 01 07 00 05 60 00 18 13 21 00 05 00 42 18 02 04 00 -63 32 00 32 00 32 00 53 69 74 61 72 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sitar....2 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -17 0e 09 04 0e 02 00 43 13 13 1f 06 03 03 05 00 00 3b 1c 16 1f 06 04 02 07 -00 00 52 04 16 1f 05 08 01 07 00 00 60 00 18 13 21 00 05 00 42 18 02 04 00 -63 32 00 32 00 32 00 53 69 74 61 72 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sitar....3 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1d 12 07 02 05 02 02 43 19 0c 1b 1c 0a 04 08 00 02 5b 1c 02 0f 0c 0a 02 0e -00 05 52 13 1c 1f 12 06 05 0f 00 05 60 00 0b 5a 2c 63 04 00 22 18 02 04 00 -63 32 00 32 00 32 00 53 69 74 61 72 2e 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sitar....3 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 12 07 02 05 02 00 43 19 0c 1b 1c 0a 04 08 00 00 5b 1c 02 0f 0c 0a 02 0e -00 00 52 13 1c 1f 12 06 05 0f 00 00 60 00 0b 5a 2c 63 04 00 22 18 02 04 00 -63 32 00 32 00 32 00 53 69 74 61 72 2e 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sitar.Vib -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1d 12 07 04 04 02 03 43 13 0b 1b 1d 09 03 09 00 02 3b 1c 06 0f 0c 09 05 0c -00 05 52 04 1e 1f 12 05 05 0f 00 07 60 00 00 13 21 00 05 00 42 18 02 04 00 -63 32 00 32 00 32 00 53 69 74 61 72 2e 56 69 62 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sitar.Vib -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 12 07 04 04 02 00 43 13 0b 1b 1d 09 03 09 00 00 3b 1c 06 0f 0c 09 05 0c -00 00 52 04 1e 1f 12 05 05 0f 00 00 60 00 00 13 21 00 05 00 42 18 02 04 00 -63 32 00 32 00 32 00 53 69 74 61 72 2e 56 69 62 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Sitar -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank A, voice 31 -1e 12 1f 03 09 00 00 41 3c 03 1d 0f 02 01 0f 00 00 5b 00 03 1e 0f 1f 02 0f -3b 01 57 02 03 1e 1f 0c 04 0f 00 02 5d 10 03 3a 17 00 03 00 5a 18 02 04 00 -63 32 00 00 00 32 00 53 79 2e 53 69 74 61 72 20 20 63 63 63 32 32 32 00 10 -00 00 00 76 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY Viola - - -** Name: Viola 5th -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -19 06 00 06 0f 0a 01 4c 0a 15 0f 07 00 06 0e 32 04 4e 08 0b 0b 07 06 07 0f -0a 06 57 13 0c 0d 06 06 08 0d 00 03 5f 08 03 74 22 23 0b 00 12 18 04 04 00 -63 32 63 00 00 32 00 56 69 6f 6c 61 20 35 74 68 20 63 63 63 32 32 32 00 40 -00 20 00 20 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Viola 5th -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 06 00 06 0f 0a 01 54 0a 15 10 07 00 06 0e 32 01 4e 0d 0b 0a 07 06 07 0f -0a 00 60 0a 0c 0d 06 06 08 0d 00 00 5f 04 03 74 22 23 0b 00 12 18 04 04 00 -63 32 63 00 00 32 00 56 69 6f 6c 61 20 35 74 68 20 63 63 63 32 32 32 00 00 -00 10 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Viola....1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 06 03 08 0e 00 41 4c 08 0d 1b 0d 07 07 0d 0a 44 43 19 04 0d 06 01 07 0f -00 45 60 08 03 0f 06 09 09 0d 00 45 60 08 04 7c 20 38 32 00 26 0c 04 04 00 -63 32 63 00 00 32 00 56 69 6f 6c 61 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 40 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Viola....1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0d 06 03 08 0e 00 41 4c 08 0d 1f 0d 07 07 0d 0a 41 43 19 04 0d 06 01 07 0f -00 40 60 08 03 0d 06 09 09 0d 00 41 60 13 04 7c 20 38 0e 00 26 0c 04 04 00 -63 32 63 00 00 32 00 56 69 6f 6c 61 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Viola....2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 04 06 07 0d 00 42 4e 04 03 0e 09 0d 07 03 0a 45 4f 08 14 0c 07 05 06 04 -00 46 5c 04 03 0d 06 06 05 0d 00 43 63 04 04 35 1e 2e 26 00 36 0c 04 04 00 -63 32 63 00 00 32 00 56 69 6f 6c 61 2e 2e 2e 2e 32 63 63 63 32 32 32 00 10 -00 10 00 40 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Viola....2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 04 06 07 0d 00 42 53 04 03 0e 09 0d 07 03 0a 41 4f 0d 14 0f 15 07 06 0d -00 40 63 04 03 0f 06 06 05 0d 00 41 63 04 04 34 1c 2e 1e 00 36 0c 04 04 00 -63 32 63 00 00 32 00 56 69 6f 6c 61 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 10 00 10 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ViolaSynth -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 06 02 07 0f 00 03 4a 04 0b 0f 07 09 07 07 00 03 63 00 03 0e 09 10 0d 07 -00 06 5c 04 03 0f 07 09 07 07 00 05 63 04 03 7d 23 0f 0b 00 42 18 02 04 00 -63 63 00 00 00 32 00 56 69 6f 6c 61 53 79 6e 74 68 63 63 63 32 32 32 00 00 -00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ViolaSynth -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 06 02 07 0f 00 01 4a 04 0b 0f 07 09 07 07 00 00 63 00 03 0e 09 10 0d 07 -00 00 5c 04 03 0f 07 09 07 07 00 00 63 04 03 7d 23 0f 0b 00 42 18 02 04 00 -63 63 00 00 00 32 00 56 69 6f 6c 61 53 79 6e 74 68 63 63 63 32 32 32 00 00 -00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - ---Bank 10 - -* SUBCATEGORY Violin - - -** Name: SoloViolin -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank B, voice 20 -1b 05 00 07 0e 0c 01 4e 08 04 19 0b 06 06 0f 49 02 3b 0d 03 1c 11 10 0d 07 -00 03 4b 35 03 0b 0a 00 06 0f 02 02 63 08 13 3a 1e 06 06 00 52 0c 04 04 00 -63 32 00 00 00 32 00 53 6f 6c 6f 56 69 6f 6c 69 6e 63 63 63 32 32 32 00 00 -00 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sradiv. * -** Controls: KV, MW (LFO pitch), BC (voice pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0d 0f 09 0f 2a 05 31 20 05 12 09 02 06 0f 10 00 51 08 0b 1f 0e 07 03 0a -14 02 4d 19 08 0e 05 05 09 0e 00 06 63 08 0a 00 20 00 0e 00 42 0c 02 04 00 -28 63 00 00 00 31 00 53 72 61 64 69 76 2e 20 20 2a 63 63 63 32 32 32 0c 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin 1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: Yamaha DX11 factory preset, bank C, voice 5 -16 07 00 06 0e 00 41 4e 04 0b 15 08 00 03 0b 00 02 3a 04 0b 19 08 00 08 0c -10 05 5f 0a 14 0e 0e 00 08 0a 00 02 60 08 0b 3a 20 0a 08 00 62 18 02 05 00 -63 0a 50 32 00 32 00 56 69 6f 6c 69 6e 20 20 20 31 63 62 63 30 32 32 00 00 -00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin 1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -16 07 00 06 0e 00 41 4e 04 0b 15 08 00 03 0b 00 02 3a 04 0b 19 08 00 08 0c -10 05 5f 0a 14 0e 0e 00 08 0d 00 02 60 08 0b 3a 20 0a 08 00 62 18 02 05 00 -63 0a 50 32 00 32 00 56 69 6f 6c 69 6e 20 20 20 31 63 62 63 30 32 32 00 00 -00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin 2 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank C, voice 6 -1f 02 00 04 0e 0f 00 45 04 0b 0f 0a 00 04 0a 00 02 62 04 0b 0a 04 00 07 0f -09 02 5c 08 0b 0c 09 00 08 0a 08 02 58 0a 0b 3c 1f 13 3d 00 42 18 02 04 00 -63 32 00 00 00 32 00 56 69 6f 6c 69 6e 20 20 20 32 63 54 63 2e 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin 2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 02 00 04 0e 0f 00 45 04 0b 0f 0a 00 04 0d 00 02 62 04 0b 0d 04 00 07 0f -09 02 5c 08 0b 0c 09 00 08 0d 08 02 58 0d 0b 3c 1f 13 3d 00 42 18 02 04 00 -63 32 00 00 00 32 00 56 69 6f 6c 69 6e 20 20 20 32 63 54 63 2e 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin...1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0b 06 03 02 0f 0a 42 4e 04 10 0c 00 00 07 0e 00 7c 4b 04 04 0b 03 06 05 0e -0a 45 61 04 0d 0c 00 00 07 0e 00 7f 63 04 06 6c 1e 14 18 00 36 18 04 04 00 -63 32 63 00 00 32 00 56 69 6f 6c 69 6e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 30 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin...1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -12 06 03 02 0f 0a 40 4c 04 16 15 00 00 06 0f 0a 43 55 04 05 0e 05 06 05 0e -0a 40 63 04 0b 0f 00 00 06 0e 00 40 63 08 03 6c 1c 00 18 00 36 18 04 04 00 -63 32 63 00 00 32 00 56 69 6f 6c 69 6e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin...2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 03 00 03 0e 00 28 50 04 05 0b 0d 00 03 0e 00 3d 49 0a 14 0a 08 03 07 0f -13 34 63 04 0b 0a 0c 03 06 0f 13 3f 63 04 09 24 1c 15 0e 00 42 18 02 04 00 -63 15 27 00 00 32 00 56 69 6f 6c 69 6e 2e 2e 2e 32 63 63 63 32 32 32 00 20 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin...2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 05 00 03 0e 00 00 50 08 06 0f 02 00 03 0e 00 01 3b 19 14 0c 04 03 07 0f -13 01 63 08 08 0a 01 03 06 0f 13 01 63 00 0b 2c 25 2c 0e 00 22 0c 02 04 00 -63 15 27 00 00 32 00 56 69 6f 6c 69 6e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 20 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin...3 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0e 06 07 01 0a 14 01 4e 04 15 0d 08 05 02 08 14 07 44 04 1c 0b 08 08 04 06 -0a 03 60 08 0a 0c 03 03 04 0f 0a 05 63 04 0b 6c 1f 1c 13 12 42 18 06 04 00 -63 32 00 32 00 32 00 56 69 6f 6c 69 6e 2e 2e 2e 33 63 63 63 32 32 32 00 20 -00 20 00 10 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin...3 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 04 02 01 0e 14 02 5c 08 05 1f 0f 08 02 0d 14 01 42 19 04 0d 06 03 02 0d -0a 00 60 08 0a 10 05 03 08 0e 0a 02 63 08 0b 64 23 00 07 00 32 0c 06 04 00 -63 32 00 32 00 32 00 56 69 6f 6c 69 6e 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 50 00 00 00 20 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin...4 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 04 05 06 07 2a 02 58 04 08 0a 04 10 05 0d 14 06 37 08 0d 08 04 09 05 06 -00 07 63 04 13 0a 06 06 07 0e 0a 05 63 04 0a 6c 1f 19 2e 00 32 18 04 04 00 -63 32 00 00 00 32 00 56 69 6f 6c 69 6e 2e 2e 2e 34 63 63 63 32 32 32 00 20 -02 10 00 00 06 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin...4 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -11 00 00 04 0e 2a 01 53 08 08 10 04 10 05 0d 14 01 37 19 0d 0c 07 06 04 0f -00 00 63 08 13 0d 06 06 07 0e 0a 00 63 04 0a 6c 23 00 0b 00 12 0c 06 04 00 -63 32 00 32 00 32 00 56 69 6f 6c 69 6e 2e 2e 2e 34 63 63 63 32 32 32 00 00 -02 10 00 00 06 10 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin...5 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 05 04 06 0f 14 05 50 08 00 11 0c 07 06 0a 14 04 50 08 14 0a 04 04 07 0f -00 04 63 08 14 0c 07 04 07 0f 00 03 63 08 13 6c 22 27 34 32 12 0c 04 04 00 -63 32 00 00 00 32 00 56 69 6f 6c 69 6e 2e 2e 2e 35 63 63 63 32 32 32 00 00 -00 10 00 10 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin...5 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 05 04 06 0f 14 02 53 08 00 1f 0d 07 06 0f 14 02 50 08 14 0c 04 04 07 0f -00 01 63 13 14 0c 04 04 07 0f 00 00 63 13 13 74 24 27 00 00 12 0c 06 04 00 -63 32 63 32 00 32 00 56 69 6f 6c 69 6e 2e 2e 2e 35 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin...6 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 05 04 06 0f 14 04 53 08 00 11 0d 05 06 0f 14 03 53 08 14 0a 0b 04 07 0b -00 04 63 08 12 0a 0a 03 07 0f 00 04 63 08 16 6c 1a 27 19 19 42 0c 06 04 00 -63 32 63 32 00 32 00 56 69 6f 6c 69 6e 2e 2e 2e 36 63 63 63 32 32 32 00 30 -00 20 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin...6 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 05 04 06 0f 14 02 53 08 00 1f 0d 07 06 0f 14 01 53 13 14 0c 04 04 07 0f -00 00 63 13 14 0c 04 04 07 0f 00 00 63 0d 13 74 24 27 00 00 12 0c 06 04 00 -63 32 63 32 00 32 00 56 69 6f 6c 69 6e 2e 2e 2e 36 63 63 63 32 32 32 00 00 -00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin...7 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 00 00 05 0e 2a 01 50 08 0b 0e 04 04 05 08 14 03 55 08 0a 0c 07 06 07 0f -00 04 62 08 0c 0a 08 09 08 0a 0a 04 63 08 04 6c 24 27 00 00 22 0c 06 04 00 -63 32 00 32 00 32 00 56 69 6f 6c 69 6e 2e 2e 2e 37 63 63 63 32 32 32 00 30 -00 30 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin...7 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 00 00 05 0e 2a 01 57 08 0e 1f 0c 05 05 0d 14 01 4b 19 0c 0c 07 06 07 0f -00 00 62 0d 0c 0f 06 06 08 06 0a 00 63 08 03 6c 24 27 00 00 12 0c 06 04 00 -63 32 00 32 00 32 00 56 69 6f 6c 69 6e 2e 2e 2e 37 63 63 63 32 32 32 00 30 -00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin...8 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -14 05 04 06 07 2a 01 52 08 0e 15 07 07 05 05 14 01 51 08 03 0c 06 08 07 0a -0a 00 63 08 0d 0a 05 0a 08 07 0a 01 63 08 02 24 23 27 00 00 12 0c 06 04 00 -63 32 00 32 00 32 00 56 69 6f 6c 69 6e 2e 2e 2e 38 63 63 63 32 32 32 00 20 -00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin...8 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 05 04 06 0f 2a 01 5b 08 0e 1f 0d 10 06 0e 14 01 51 19 03 0c 06 06 08 0e -0a 00 63 0d 0b 0f 05 06 08 0c 0a 01 63 08 02 24 23 27 00 00 12 0c 06 04 00 -63 32 00 32 00 32 00 56 69 6f 6c 69 6e 2e 2e 2e 38 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin...9 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 05 00 06 0f 32 02 57 08 0e 1f 0c 0c 0a 0e 14 03 49 0d 05 0c 06 06 08 0e -0a 00 60 08 04 0c 06 06 08 0e 0a 06 63 08 04 6c 1d 17 40 00 22 0c 06 04 00 -63 32 00 32 00 32 00 56 69 6f 6c 69 6e 2e 2e 2e 39 63 63 63 32 32 32 00 30 -00 20 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin...9 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 05 00 06 0f 32 02 5e 08 0e 1f 0c 0c 0a 0e 14 01 4a 13 05 0c 06 06 08 0e -0a 00 60 08 04 0c 06 06 08 0e 0a 01 5b 19 04 6c 24 27 00 00 22 0c 06 04 00 -63 32 00 32 00 32 00 56 69 6f 6c 69 6e 2e 2e 2e 39 63 63 63 32 32 32 00 30 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin..10 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 03 00 04 0c 2a 01 50 08 0c 11 02 19 05 08 14 01 57 08 0d 0b 09 06 06 0f -00 06 51 08 0b 0b 05 06 08 06 0a 05 61 08 0b 7c 1b 08 1f 00 32 0c 06 04 00 -63 32 00 32 00 32 00 56 69 6f 6c 69 6e 2e 2e 31 30 63 63 63 32 32 32 00 00 -00 30 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin..10 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0a 03 00 04 0c 2a 01 50 08 0c 10 02 19 05 08 14 01 57 08 0d 0a 09 06 06 0f -00 00 5f 08 0b 0e 05 06 08 06 0a 00 61 08 0b 7c 20 08 0c 00 32 0c 06 04 00 -63 32 00 32 00 32 00 56 69 6f 6c 69 6e 2e 2e 31 30 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin..11 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 05 00 03 0e 32 01 4f 08 0d 0e 06 00 05 01 14 06 32 0d 05 0a 06 06 07 0e -00 00 61 08 0a 0b 05 00 08 0d 0a 06 60 08 04 3c 20 2c 05 00 32 0c 06 04 00 -63 32 00 32 00 32 00 56 69 6f 6c 69 6e 2e 2e 31 31 63 63 63 32 32 32 00 00 -00 40 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin..11 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -18 05 00 03 0e 32 01 4f 08 0d 12 06 00 05 01 14 01 3e 0a 05 0a 06 06 07 0e -00 00 61 08 0a 10 07 00 08 0d 0a 00 60 08 04 3c 20 2c 05 00 32 0c 06 04 00 -63 32 00 32 00 32 00 56 69 6f 6c 69 6e 2e 2e 31 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin..12 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -11 05 04 05 0e 32 02 4a 08 0b 16 0a 06 08 0e 0a 02 41 08 03 0a 06 05 09 0e -00 04 63 08 0c 0f 08 02 08 0e 0a 04 63 08 05 6c 21 27 38 02 12 0c 06 04 00 -63 32 00 32 00 32 00 56 69 6f 6c 69 6e 2e 2e 31 32 63 63 63 32 32 32 00 20 -00 50 00 10 00 40 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin..12 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 05 04 05 0e 32 02 52 08 0b 18 0a 06 08 0e 0a 02 4d 08 03 0f 06 05 09 0e -00 00 63 13 0c 10 08 02 08 0e 0a 00 63 08 05 6c 24 27 00 00 12 0c 06 04 00 -63 32 00 32 00 32 00 56 69 6f 6c 69 6e 2e 2e 31 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 20 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin..13 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 06 02 06 0e 0c 02 42 08 0d 16 07 08 06 0f 49 03 4c 08 0d 11 11 0e 06 07 -00 03 3c 19 0b 0b 0d 00 06 0f 02 03 5a 08 11 3a 21 27 07 00 52 0c 02 04 00 -63 63 00 00 00 32 00 56 69 6f 6c 69 6e 2e 2e 31 33 63 63 63 32 32 32 00 00 -00 50 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin..13 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 06 02 06 0e 0c 01 53 08 0c 16 07 08 06 0f 49 01 4c 0d 0b 1a 11 0e 06 07 -00 00 5b 1f 0b 0c 0d 00 06 0f 02 00 5a 08 13 22 21 27 07 00 52 0c 02 04 00 -63 63 00 00 00 32 00 56 69 6f 6c 69 6e 2e 2e 31 33 63 63 63 32 32 32 00 00 -00 50 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin..14 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 06 04 06 0e 01 01 58 08 05 13 0d 10 07 0e 14 01 4d 08 04 0d 06 03 07 0e -0a 04 53 08 0a 0b 05 06 08 0c 0a 05 63 08 03 5c 23 27 05 00 32 0c 06 04 00 -63 32 00 32 00 32 00 56 69 6f 6c 69 6e 2e 2e 31 34 63 63 63 32 32 32 00 60 -00 20 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin..14 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 06 04 06 0e 01 01 59 08 05 1f 0d 10 07 0e 14 01 4a 08 04 0e 06 03 07 0e -0a 00 63 08 0a 0f 05 06 08 0c 0a 00 63 08 03 6c 23 27 05 00 32 0c 06 04 00 -63 32 00 32 00 32 00 56 69 6f 6c 69 6e 2e 2e 31 34 63 63 63 32 32 32 00 40 -00 00 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin..15 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1a 06 04 06 0e 01 01 4e 08 06 12 11 10 06 0e 14 04 4e 19 04 0d 06 03 07 0e -0a 04 60 08 0a 0b 04 05 07 0d 0a 04 5f 0d 03 6c 21 12 0f 00 42 0c 06 04 00 -63 32 00 32 00 32 00 56 69 6f 6c 69 6e 2e 2e 31 35 63 63 63 32 32 32 00 20 -00 20 00 00 00 30 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin..15 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 06 04 06 0e 01 01 4e 08 06 1d 11 10 06 0e 14 01 4e 19 04 0e 06 03 07 0e -0a 00 60 08 0a 10 04 05 07 0d 0a 01 5f 0d 03 6c 23 00 09 00 42 0c 06 04 00 -63 32 00 32 00 32 00 56 69 6f 6c 69 6e 2e 2e 31 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 30 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin..16 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 06 02 06 0e 0c 01 54 08 04 16 07 08 06 0f 49 02 2e 1f 06 1a 11 0e 06 07 -00 05 46 08 03 0b 0a 03 05 0e 00 05 56 08 0c 2a 21 27 07 00 52 0c 02 04 00 -63 63 00 00 00 32 00 56 69 6f 6c 69 6e 2e 2e 31 36 63 63 63 32 32 32 00 00 -0a 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin..16 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 06 02 06 0e 0c 01 54 08 04 16 07 08 06 0f 49 02 2e 1f 06 1a 11 0e 06 07 -00 00 46 08 03 0b 0a 03 05 0e 00 00 56 08 0c 2a 21 27 07 00 52 0c 02 04 00 -63 63 00 00 00 32 00 56 69 6f 6c 69 6e 2e 2e 31 36 63 63 63 32 32 32 00 00 -0a 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin..17 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 06 00 03 0e 00 01 48 08 0e 0d 05 00 03 0e 00 01 44 08 0e 0a 08 03 07 0f -13 05 5b 08 0b 0c 04 03 07 0f 13 06 63 08 0b 64 2c 0a 08 00 32 0c 02 04 00 -63 15 27 00 00 32 00 56 69 6f 6c 69 6e 2e 2e 31 37 63 63 63 32 32 32 00 10 -00 30 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin..17 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -18 06 00 03 0e 00 01 48 08 0e 0d 05 00 03 0e 00 01 44 0a 0e 0a 04 03 07 0f -13 00 5b 0d 0b 0c 04 03 07 0f 13 00 63 08 0b 64 2c 0a 08 00 32 0c 02 04 00 -63 15 27 00 00 32 00 56 69 6f 6c 69 6e 2e 2e 31 37 63 63 63 32 32 32 00 10 -00 30 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin..18 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1d 00 00 06 0e 2a 04 4f 08 0c 19 0f 10 06 0d 0a 01 4e 08 0b 0d 07 06 07 0f -00 04 5e 08 0b 0e 06 06 08 0e 0a 05 60 08 04 74 20 1a 1b 00 21 0c 06 04 00 -63 32 00 32 00 32 00 56 69 6f 6c 69 6e 2e 2e 31 38 63 63 63 32 32 32 00 10 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin..18 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 00 00 06 0e 2a 01 4f 0d 0c 1f 0f 10 06 0d 0a 01 4e 08 0b 0d 07 06 07 0f -00 00 5e 0d 0b 10 06 06 08 0e 0a 01 60 08 04 74 23 00 0b 00 22 0c 06 04 00 -63 32 00 32 00 32 00 56 69 6f 6c 69 6e 2e 2e 31 38 63 63 63 32 32 32 00 10 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin..19 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 06 05 06 0e 1e 02 51 08 14 18 03 07 06 08 14 03 51 08 04 0f 06 06 09 0f -0a 04 47 13 0b 0c 05 06 08 0c 0a 0c 5f 08 03 52 21 27 21 00 21 0c 06 04 00 -63 32 00 32 00 32 00 56 69 6f 6c 69 6e 2e 2e 31 39 63 63 63 32 32 32 00 30 -00 20 00 20 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violin..19 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 06 05 06 0e 1e 02 51 08 14 1f 0d 10 06 0e 14 01 51 08 04 0f 06 06 09 0f -0a 00 47 13 0b 0f 05 06 08 0c 0a 01 5f 08 03 52 24 27 01 00 22 0c 06 04 00 -63 32 00 32 00 32 00 56 69 6f 6c 69 6e 2e 2e 31 39 63 63 63 32 32 32 00 00 -00 30 00 10 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: VIOLINS -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 00 00 04 0e 42 02 44 08 00 16 08 05 07 0d 19 03 49 08 0b 0f 08 10 07 0b -01 04 4d 08 0e 0b 03 02 08 0f 13 05 5a 08 0a 68 20 19 2e 00 32 0c 0c 04 00 -63 32 32 00 00 32 00 20 56 49 4f 4c 49 4e 53 20 20 63 63 63 32 32 32 00 40 -00 20 00 30 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: VIOLINS -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 00 00 04 0e 42 00 47 08 00 1e 08 05 07 0d 19 00 53 08 0b 1f 0f 10 07 0e -01 04 49 19 0e 0f 03 02 08 0f 13 00 51 08 0a 68 23 00 0b 00 32 0c 0c 04 00 -63 32 32 00 00 32 00 20 56 49 4f 4c 49 4e 53 20 20 63 63 63 32 32 32 00 00 -00 20 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violins..1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -13 00 00 04 06 3c 01 4c 08 01 12 0f 06 06 06 09 02 40 0d 04 0b 07 06 06 06 -14 04 63 08 02 0b 09 00 05 06 28 04 62 08 03 2c 1e 18 3b 00 32 0c 0c 04 00 -63 32 32 00 00 32 00 56 69 6f 6c 69 6e 73 2e 2e 31 63 63 63 32 32 32 00 10 -00 40 00 10 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violins..1 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -10 00 00 04 06 3c 00 4c 08 01 0f 0f 06 06 06 09 00 40 19 04 0c 07 06 06 06 -14 00 63 08 02 12 09 00 05 06 28 00 62 08 03 2c 21 0a 0f 00 32 00 0c 04 00 -63 32 32 00 00 32 00 56 69 6f 6c 69 6e 73 2e 2e 31 63 63 63 32 32 32 00 10 -00 40 00 10 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violins..2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 06 00 07 0d 21 02 4e 08 05 13 0c 0c 05 0d 32 02 45 0d 04 0b 06 06 07 0e -14 03 5d 08 04 0b 07 00 07 0d 1e 05 61 08 04 2c 20 2c 14 00 42 0c 0c 04 00 -63 32 32 00 00 32 00 56 69 6f 6c 69 6e 73 2e 2e 32 63 63 63 32 32 32 00 10 -00 40 00 10 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violins..2 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -10 06 00 07 0d 21 00 4e 08 05 13 0c 0c 05 0d 32 00 45 19 04 0f 06 06 07 0e -14 00 5d 08 04 0e 07 00 07 0d 1e 00 61 08 04 2c 20 2c 14 00 42 0c 0c 04 00 -63 32 32 00 00 32 00 56 69 6f 6c 69 6e 73 2e 2e 32 63 63 63 32 32 32 00 20 -00 20 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violins..3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 06 00 07 0d 21 01 46 08 05 12 0c 0c 05 0d 32 02 43 0d 04 0b 06 06 06 0e -28 05 59 08 03 0b 07 00 07 0d 1e 04 61 08 04 6c 1e 27 34 00 32 0c 0c 04 00 -63 32 32 00 00 32 00 56 69 6f 6c 69 6e 73 2e 2e 33 63 63 63 32 32 32 00 00 -00 40 00 20 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violins..3 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -18 06 00 07 0d 21 00 46 08 05 1f 0c 0c 05 0d 32 00 43 13 04 0c 06 06 06 0e -28 00 59 08 03 10 07 00 07 0d 1e 00 61 08 04 6c 23 27 0c 00 32 0c 0c 04 00 -63 32 32 00 00 32 00 56 69 6f 6c 69 6e 73 2e 2e 33 63 63 63 32 32 32 00 00 -00 40 00 20 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violins..4 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 07 05 05 0e 41 01 50 08 05 0f 0c 0c 04 0c 33 02 57 19 05 0a 06 00 06 0e -14 04 5b 08 01 0b 05 01 07 0e 11 04 52 08 00 6c 1f 1c 25 00 32 0c 03 04 01 -63 32 32 00 00 32 00 56 69 6f 6c 69 6e 73 2e 2e 34 63 63 63 32 32 32 00 40 -00 30 00 00 00 20 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Violins..4 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 04 00 03 0e 41 01 57 08 05 0f 0c 0c 04 0c 33 02 57 19 05 0a 06 00 06 0e -14 00 5b 08 01 0d 05 01 07 0e 11 00 52 08 00 6c 25 14 0f 00 32 0c 03 04 01 -63 32 32 00 00 32 00 56 69 6f 6c 69 6e 73 2e 2e 34 63 63 63 32 32 32 00 30 -00 30 00 00 00 20 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY Other - - -** Name: 8 Stringer -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 06 00 01 0e 00 01 3f 04 03 1f 0c 06 09 0e 00 02 56 0a 1b 1f 0c 02 08 0e -00 05 41 1c 0b 1f 05 06 09 0e 00 04 63 04 13 22 21 13 00 00 02 00 02 04 00 -63 32 00 32 00 32 00 38 20 53 74 72 69 6e 67 65 72 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: 8 Stringer -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 06 00 01 0e 00 01 3f 04 03 1f 0c 06 09 0e 00 01 56 0a 1b 1f 0c 02 08 0e -00 01 41 1c 0b 1f 05 06 09 0e 00 00 63 04 13 22 21 13 00 00 02 00 02 04 00 -63 32 00 32 00 32 00 38 20 53 74 72 69 6e 67 65 72 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntInst.1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 0f 09 03 0c 2e 03 63 24 1a 1c 0f 09 06 0c 00 03 4c 13 0c 1c 0a 06 04 0c -00 04 59 08 0a 0d 1c 06 06 0c 00 05 5d 0d 14 4d 23 00 00 00 32 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 49 6e 73 74 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntInst.1 -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 0f 09 03 0c 2e 00 63 24 1a 1c 0f 09 06 0c 00 00 4c 13 0c 1c 0a 06 04 0c -00 00 59 08 0a 0d 1c 06 06 0c 00 00 5d 0d 14 4d 23 00 00 00 32 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 49 6e 73 74 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntInst.2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 18 15 05 0d 2e 03 57 13 1b 1c 09 09 04 0d 00 03 55 04 09 1c 09 09 05 0d -00 05 53 0d 0e 1c 0d 0f 05 0d 00 06 62 04 0c 75 23 00 00 00 32 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 49 6e 73 74 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntInst.2 -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 18 15 05 0d 2e 00 57 13 1b 1c 09 09 04 0d 00 00 55 04 09 1c 09 09 05 0d -00 00 53 0d 0e 1c 0d 0f 05 0d 00 00 62 04 0c 75 23 00 00 00 32 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 49 6e 73 74 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntInst.3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 09 03 04 0c 00 04 3a 19 1b 1c 1c 09 04 0f 00 04 52 04 0b 1c 09 03 06 0c -00 05 53 04 16 1c 1f 09 05 0f 00 06 62 04 14 65 23 00 00 00 32 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 49 6e 73 74 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntInst.3 -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 09 03 04 0c 00 00 3a 19 1b 1c 1c 09 04 0f 00 00 52 04 0b 1c 09 03 06 0c -00 00 53 04 16 1c 1f 09 05 0f 00 00 62 04 14 65 23 00 00 00 32 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 49 6e 73 74 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntInst.4 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1b 16 08 0d 00 03 63 0f 13 1f 0a 0a 07 0e 00 03 3e 04 0b 1b 13 06 0c 07 -00 06 47 16 0b 1f 0a 06 06 0d 00 05 5d 04 0b 4a 1f 00 00 00 12 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 49 6e 73 74 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntInst.4 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1b 16 08 0d 00 00 63 0f 13 1f 0a 0a 07 0e 00 00 3e 04 0b 1b 13 06 0c 07 -00 00 47 16 0b 1f 0a 06 06 0d 00 00 5d 04 0b 4a 1f 00 00 00 12 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 49 6e 73 74 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntInst.5 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 0c 09 05 0c 00 04 3d 1f 08 10 0c 03 09 0c 00 03 3e 08 0a 1f 15 06 05 0d -00 46 63 13 08 1f 15 06 05 0d 00 06 63 04 0e 1c 15 21 11 27 26 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 49 6e 73 74 2e 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntInst.5 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -10 0c 09 05 0c 00 00 3d 1f 08 10 0c 03 09 0c 00 00 3e 08 0a 1f 15 06 05 0d -00 40 63 13 08 1f 15 06 05 0d 00 00 63 04 0e 1c 15 21 11 27 26 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 49 6e 73 74 2e 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntInst.6 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 10 0d 03 0a 00 04 3b 0d 08 0f 0f 0d 03 0a 00 44 3c 0d 0a 1c 05 03 07 0d -00 05 47 08 08 1c 05 03 07 0d 00 07 5d 08 0e 5c 23 3c 40 60 16 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 49 6e 73 74 2e 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntInst.6 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 10 0d 03 0a 00 00 3b 0d 08 0f 0f 0d 03 0a 00 40 3c 0d 0a 1c 05 03 07 0d -00 00 47 08 08 1c 05 03 07 0d 00 00 5d 08 0e 5c 23 3c 40 60 16 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 49 6e 73 74 2e 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntInst.7 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 09 04 02 0d 00 43 4c 04 00 13 0c 12 09 0f 00 43 3c 04 02 15 12 1f 09 0f -00 45 63 04 00 10 05 06 09 0e 00 45 5d 04 06 25 23 5a 01 02 46 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 49 6e 73 74 2e 37 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntInst.7 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 09 04 02 0d 00 40 4c 04 00 13 0c 12 09 0f 00 40 3c 04 02 15 12 1f 09 0f -00 40 63 04 00 10 05 06 09 0e 00 40 5d 04 06 25 23 5a 01 02 46 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 49 6e 73 74 2e 37 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntInst.8 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 09 06 08 00 03 63 04 03 1c 1e 00 07 08 00 04 54 04 0b 1b 15 09 04 08 -00 05 5d 08 0b 1c 19 09 05 08 00 06 63 08 0b 7a 1f 00 00 00 12 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 49 6e 73 74 2e 38 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntInst.8 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 09 06 08 00 00 63 04 03 1c 1e 00 07 08 00 00 54 04 0b 1b 15 09 04 08 -00 00 5d 08 0b 1c 19 09 05 08 00 00 63 08 0b 7a 1f 00 00 00 12 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 49 6e 73 74 2e 38 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntInst.9 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 16 09 0f 0b 00 43 63 04 15 1c 09 06 03 0b 00 44 54 04 11 1f 09 04 0f 0e -00 45 5a 08 13 1c 13 09 06 0b 00 47 63 08 0b 6c 19 2e 42 0f 36 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 49 6e 73 74 2e 39 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntInst.9 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 16 09 0f 0b 00 40 63 04 15 1c 09 06 03 0b 00 40 54 04 11 1f 09 04 0f 0e -00 40 5a 08 13 1c 13 09 06 0b 00 40 63 08 0b 6c 19 2e 42 0f 36 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 49 6e 73 74 2e 39 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntInst10 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 16 18 0c 0b 00 41 47 0d 03 0f 0f 0d 06 0b 00 44 3c 0d 03 0d 0c 07 04 0d -00 44 48 00 03 1c 12 07 07 0e 00 46 63 04 03 5a 19 2e 42 0f 36 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 49 6e 73 74 31 30 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntInst10 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -18 16 18 0c 0b 00 40 47 0d 03 0f 0f 0d 06 0b 00 40 3c 0d 03 0d 0c 07 04 0d -00 40 48 00 03 1c 12 07 07 0e 00 40 63 04 03 5a 19 2e 42 0f 36 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 49 6e 73 74 31 30 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntInst11 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 18 0f 08 06 00 02 63 1c 03 1c 0c 1f 09 0a 00 42 4f 08 13 1f 06 0f 08 0f -00 44 5c 04 08 1c 0a 09 09 0a 00 05 63 04 0e 2c 28 00 00 3f 26 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 49 6e 73 74 31 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntInst11 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 18 0f 08 06 00 00 63 1c 03 1c 0c 1f 09 0a 00 40 4f 08 13 1f 06 0f 08 0f -00 40 5c 04 08 1c 0a 09 09 0a 00 00 63 04 0e 2c 28 00 00 3f 26 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 49 6e 73 74 31 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Syamisen -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: Yamaha DX11 factory preset, bank B, voice 18 -1a 0e 0f 06 06 0a 04 54 0a 13 17 12 12 07 0c 0a 04 59 10 13 18 06 00 04 0e -00 02 40 04 13 17 0f 09 06 0a 00 03 63 08 13 5b 18 02 20 00 42 18 02 04 00 -63 32 00 32 00 32 00 53 79 61 6d 69 73 65 6e 20 20 63 61 63 31 32 32 00 20 -00 30 00 70 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Syamisen -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1a 0e 0f 06 06 0a 04 54 0a 13 17 12 12 07 0c 0a 04 59 10 13 18 06 00 04 0e -00 02 40 04 13 17 0f 09 06 0d 00 03 63 08 13 5b 18 02 20 00 42 18 02 04 00 -63 32 00 32 00 32 00 53 79 61 6d 69 73 65 6e 20 20 63 61 63 31 32 32 00 20 -00 30 00 70 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Zither -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank C, voice 8 -1f 0b 06 0a 0d 1e 01 57 10 0b 1f 1f 00 03 0f 22 01 51 04 03 1f 0c 03 0a 0a -14 01 36 08 03 1f 18 06 08 0f 00 02 63 04 03 30 23 00 00 00 62 0c 04 04 00 -63 32 00 00 00 32 00 5a 69 74 68 65 72 20 20 20 20 63 63 63 32 32 32 00 30 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - ---Bank 11 - -* CATEGORY KEYBOARDS - - -* SUBCATEGORY Clavichord - - -** Name: Clav Lead -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1e 1c 00 09 0c 0f 03 4b 24 15 1e 1b 00 09 0d 0c 05 56 00 01 1d 01 00 0c 00 -2e 04 53 00 14 1e 1c 00 09 0c 00 04 63 00 15 3a 23 00 08 00 22 18 02 04 00 -63 32 00 00 00 32 00 43 6c 61 76 20 4c 65 61 64 20 63 63 63 32 32 32 00 00 -00 40 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clav Lead -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1e 1c 00 09 0c 0f 01 4b 24 15 1e 1b 00 09 0d 0c 01 56 00 01 1d 01 00 0c 00 -2e 01 53 00 14 1e 1c 00 09 0c 00 00 63 00 15 3a 23 00 08 00 22 18 02 04 00 -63 32 00 00 00 32 00 43 6c 61 76 20 4c 65 61 64 20 63 63 63 32 32 32 00 00 -00 40 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clav Perc -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1a 0f 04 09 0c 0f 03 5b 00 0a 1a 0f 04 09 0d 0c 04 63 00 13 1f 0a 04 0c 00 -2e 06 58 00 0e 19 0f 05 09 0c 00 05 63 04 10 3a 23 00 00 00 02 18 02 04 00 -63 32 00 00 00 32 00 43 6c 61 76 20 50 65 72 63 20 63 63 63 32 32 32 00 00 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clav Perc -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1a 0f 04 09 0c 0f 01 5b 00 0a 1a 0f 04 09 0d 0c 01 63 00 13 1f 0a 04 0c 00 -2e 01 58 00 0e 19 0f 05 09 0c 00 00 63 04 10 3a 23 00 00 00 02 18 02 04 00 -63 32 00 00 00 32 00 43 6c 61 76 20 50 65 72 63 20 63 63 63 32 32 32 00 00 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clav Synth -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1e 1c 04 09 0c 0f 03 5e 0d 16 1e 04 04 09 0d 0c 04 5f 00 03 1e 03 04 0c 00 -2e 04 55 00 13 1e 15 05 09 0c 00 06 63 0d 13 3a 23 1a 0f 00 32 18 02 04 00 -63 32 00 00 00 32 00 43 6c 61 76 20 53 79 6e 74 68 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clav Synth -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1e 1c 04 09 0c 0f 01 5e 0d 16 1e 04 04 09 0d 0c 01 5f 00 03 1e 03 04 0c 00 -2e 01 55 00 13 1e 15 05 09 0c 00 00 63 0d 13 3a 23 1a 0f 00 32 18 02 04 00 -63 32 00 00 00 32 00 43 6c 61 76 20 53 79 6e 74 68 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clav.....1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0b 08 0f 09 10 01 42 13 0b 1f 0c 08 05 0f 00 04 5c 00 03 1f 10 05 06 0f -5e 04 52 00 13 1c 14 08 0c 0e 00 03 63 04 0b 28 23 00 00 00 62 18 02 04 00 -63 32 00 32 00 32 00 43 6c 61 76 2e 2e 2e 2e 2e 31 63 63 63 32 32 32 00 10 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clav.....1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0b 08 0f 09 10 01 42 13 0b 1f 0c 08 05 0f 00 02 5c 00 03 1f 10 05 06 0f -5e 02 52 00 13 1c 14 08 0c 0e 00 00 63 04 0b 28 23 00 00 00 62 18 02 04 00 -63 32 00 32 00 32 00 43 6c 61 76 2e 2e 2e 2e 2e 31 63 63 63 32 32 32 00 10 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clav.....2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1e 1c 05 09 0c 0f 01 43 0d 15 1e 1b 01 09 0d 0c 03 5f 00 01 1d 01 01 0c 00 -2e 04 51 16 14 1e 1c 05 09 0c 00 03 63 00 13 1b 23 00 00 00 02 18 02 04 00 -63 32 00 00 00 32 00 43 6c 61 76 2e 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clav.....2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1e 1c 05 09 0c 0f 01 43 0d 15 1e 1b 01 09 0d 0c 01 5f 00 01 1d 01 01 0c 00 -2e 01 51 16 14 1e 1c 05 09 0c 00 00 63 00 13 1b 23 00 00 00 02 18 02 04 00 -63 32 00 00 00 32 00 43 6c 61 76 2e 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clav.....3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1e 1c 05 01 0c 20 01 54 04 15 17 1a 01 01 0d 09 03 54 04 04 1d 01 01 01 00 -32 03 44 1f 0c 18 1b 05 07 0c 02 03 63 08 13 3a 23 00 00 00 02 18 05 04 00 -63 32 32 00 00 32 00 43 6c 61 76 2e 2e 2e 2e 2e 33 63 63 63 32 32 32 00 10 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clav.....3 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1e 1c 05 01 0c 20 01 54 04 15 17 1a 01 01 0d 09 01 54 04 04 1d 01 01 01 00 -32 01 44 1f 0c 18 1b 05 07 0c 02 00 63 08 13 3a 23 00 00 00 02 18 05 04 00 -63 32 32 00 00 32 00 43 6c 61 76 2e 2e 2e 2e 2e 33 63 63 63 32 32 32 00 10 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clav.....4 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1e 15 0a 01 00 20 01 61 00 15 17 09 0f 01 00 09 04 53 00 02 1d 01 0b 01 00 -32 03 3e 1f 16 19 1b 06 09 0e 02 04 62 08 09 3a 23 00 00 00 02 18 02 04 00 -63 32 32 00 00 32 00 43 6c 61 76 2e 2e 2e 2e 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clav.....4 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1e 15 0a 01 00 20 01 61 00 15 17 09 0f 01 00 09 02 53 00 02 1d 01 0b 01 00 -32 01 3e 1f 16 19 1b 06 09 0e 02 00 62 08 09 3a 23 00 00 00 02 18 02 04 00 -63 32 32 00 00 32 00 43 6c 61 76 2e 2e 2e 2e 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clav.....5 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 10 07 08 0c 00 01 51 16 1d 19 19 06 09 0e 00 03 57 00 0a 1c 10 07 08 0c -00 03 63 00 1b 19 19 06 09 0e 00 03 62 08 09 3c 1e 00 00 00 22 18 02 04 00 -63 32 32 00 00 32 00 43 6c 61 76 2e 2e 2e 2e 2e 35 63 63 63 32 32 32 00 00 -00 00 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clav.....5 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 10 07 08 0c 00 01 51 16 1d 19 19 06 09 0e 00 01 57 00 0a 1c 10 07 08 0c -00 01 63 00 1b 19 19 06 09 0e 00 00 62 08 09 3c 1e 00 00 00 22 18 02 04 00 -63 32 32 00 00 32 00 43 6c 61 76 2e 2e 2e 2e 2e 35 63 63 63 32 32 32 00 00 -00 00 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clav.....6 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 10 07 05 0c 00 01 4e 39 1d 19 19 06 09 0e 00 03 5a 00 0a 1c 05 07 05 0c -00 03 5d 0d 1b 19 19 06 09 0e 00 06 62 08 09 3c 1e 00 00 00 22 18 02 04 00 -63 32 32 00 00 32 00 43 6c 61 76 2e 2e 2e 2e 2e 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clav.....6 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 10 07 05 0c 00 01 4e 39 1d 19 19 06 09 0e 00 01 5a 00 0a 1c 05 07 05 0c -00 01 5d 0d 1b 19 19 06 09 0e 00 00 62 08 09 3c 1e 00 00 00 22 18 02 04 00 -63 32 32 00 00 32 00 43 6c 61 76 2e 2e 2e 2e 2e 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clav.....7 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 01 02 04 07 35 00 35 24 0d 17 09 0f 01 00 09 04 53 00 02 1d 01 0b 01 00 -32 04 39 08 16 19 1b 06 09 0e 02 06 63 00 09 02 23 00 00 00 02 18 02 04 00 -63 32 32 00 00 32 00 43 6c 61 76 2e 2e 2e 2e 2e 37 63 63 63 32 32 32 00 00 -00 40 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clav.....7 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 01 02 04 07 35 00 35 24 0d 17 09 0f 01 00 09 01 53 00 02 1d 01 0b 01 00 -32 00 39 08 16 19 1b 06 09 0e 02 01 63 00 09 02 23 00 00 00 02 18 02 04 00 -63 32 32 00 00 32 00 43 6c 61 76 2e 2e 2e 2e 2e 37 63 63 63 32 32 32 00 00 -00 40 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clav.....8 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1e 1c 05 09 0c 0f 01 4c 16 15 1e 1b 01 09 0d 0c 05 53 00 01 1d 01 01 0c 00 -2e 05 59 00 14 1e 1c 05 09 0c 00 05 63 08 13 1a 23 00 00 00 02 18 02 04 00 -63 32 00 00 00 32 00 43 6c 61 76 2e 2e 2e 2e 2e 38 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clav.....8 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1e 1c 05 09 0c 0f 01 4c 16 15 1e 1b 01 09 0d 0c 01 53 00 01 1d 01 01 0c 00 -2e 01 59 00 14 1e 1c 05 09 0c 00 00 63 08 13 1a 23 00 00 00 02 18 02 04 00 -63 32 00 00 00 32 00 43 6c 61 76 2e 2e 2e 2e 2e 38 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clav.....9 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1e 1c 05 09 0c 0f 03 52 0d 15 1e 1b 01 09 0d 0c 05 63 04 01 1d 01 01 0c 00 -2e 04 62 04 14 1e 1c 05 09 0c 00 05 63 04 13 1c 23 00 00 00 02 18 02 04 00 -63 32 00 00 00 32 00 43 6c 61 76 2e 2e 2e 2e 2e 39 63 63 63 32 32 32 00 00 -00 40 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clav.....9 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1e 1c 05 09 0c 0f 00 52 0d 15 1e 1b 01 09 0d 0c 01 63 04 01 1d 01 01 0c 00 -2e 01 62 04 14 1e 1c 05 09 0c 00 01 63 04 13 1c 23 00 00 00 02 18 02 04 00 -63 32 00 00 00 32 00 43 6c 61 76 2e 2e 2e 2e 2e 39 63 63 63 32 32 32 00 00 -00 40 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clavi -** Controls: KV -** Source: Yamaha DX11 factory preset, bank B, voice 16 -1f 01 00 0f 00 00 04 4d 13 10 1f 0c 01 01 0a 00 02 54 00 09 1f 06 01 01 0e -23 03 4f 10 0e 1f 00 0a 0f 0f 00 03 58 08 0a 3a 1c 00 00 00 52 18 02 04 00 -63 32 00 32 00 32 00 43 6c 61 76 69 20 20 20 20 20 63 63 63 32 32 32 00 20 -00 20 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Clavi -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 01 00 0f 00 00 04 4d 13 10 1f 0c 01 01 0d 00 02 54 00 09 1f 06 01 01 0e -23 03 4f 10 0e 1f 00 0a 0f 0f 00 03 58 08 0d 3a 1c 00 00 00 52 18 02 04 00 -63 32 00 32 00 32 00 43 6c 61 76 69 20 20 20 20 20 63 63 63 32 32 32 00 20 -00 20 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: EZ Clav -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank A, voice 26 -1f 0b 08 0f 09 10 04 42 2d 13 1f 09 08 05 0f 00 02 49 00 03 1f 12 05 06 0f -10 03 46 10 03 1f 14 08 0c 0e 00 02 63 04 0b 30 1b 00 00 00 52 18 04 04 00 -63 32 00 00 00 32 00 45 5a 20 43 6c 61 76 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Fuzz Clavi -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank A, voice 27 -1e 1c 05 09 0c 0f 01 56 24 15 1e 1b 01 09 0d 0c 04 61 00 01 1d 01 01 0c 00 -2e 02 4d 0d 14 1e 1c 05 09 0c 00 01 63 0a 13 33 23 00 00 00 02 18 02 04 00 -63 32 00 00 00 32 00 46 75 7a 7a 20 43 6c 61 76 69 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Klavinet * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1d 06 06 06 0e 00 00 52 04 0e 1d 07 09 07 0e 00 04 4d 04 00 1d 09 06 06 0e -10 02 50 1f 16 1b 0a 07 0a 0e 00 02 63 08 0b 02 23 00 00 00 32 0c 02 04 00 -28 63 00 00 00 32 00 4b 6c 61 76 69 6e 65 74 20 2a 63 63 63 32 32 32 00 30 -00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ornt Clav -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1e 1c 05 01 0c 20 02 4e 2a 15 17 1a 01 01 0d 09 02 4b 04 04 1d 01 01 01 00 -32 04 39 04 0c 18 1b 05 07 0c 02 05 63 08 13 3a 23 00 00 00 02 18 05 04 00 -63 32 32 00 00 32 00 4f 72 6e 74 20 43 6c 61 76 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ornt Clav -** Source: from a library of patches collected by Duane Bowker, author unknown -1e 1c 05 01 0c 20 00 4e 2a 15 17 1a 01 01 0d 09 00 4b 04 04 1d 01 01 01 00 -32 00 39 04 0c 18 1b 05 07 0c 02 00 63 08 13 3a 23 00 00 00 02 18 05 04 00 -63 32 32 00 00 32 00 4f 72 6e 74 20 43 6c 61 76 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ornt Clav -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -1e 1c 05 00 0c 20 00 4e 2a 15 17 1a 01 00 0d 09 00 4b 04 04 1d 01 01 00 00 -32 00 39 04 0c 18 1b 05 07 0c 02 00 63 08 13 3a 23 00 00 00 02 18 05 04 00 -63 32 32 00 00 32 00 4f 72 6e 74 20 43 6c 61 76 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rimbaclav -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 10 00 05 00 00 00 4c 28 03 1f 12 00 04 00 00 00 43 16 03 1f 0d 00 05 00 -00 00 45 16 03 1f 07 00 06 08 00 00 63 04 03 03 23 00 00 00 62 0c 07 04 00 -63 63 00 00 00 32 00 52 69 6d 62 61 63 6c 61 76 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SplashClav -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank D, voice 21 -13 18 14 0a 0c 00 00 61 04 03 10 02 01 0a 0c 00 00 5c 1c 03 1c 0b 04 0a 0c -00 00 41 28 03 1b 0e 10 0a 0c 00 03 63 04 03 3a 55 00 39 00 42 0c 04 04 00 -28 32 00 00 00 32 00 53 70 6c 61 73 68 43 6c 61 76 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Synclav. * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1a 09 07 05 0f 00 02 51 0d 0b 1f 0c 06 02 00 00 00 57 10 0e 17 06 05 05 0d -00 00 63 04 08 1f 09 0f 06 00 00 03 5a 19 0e 2c 23 00 00 00 32 0c 02 04 00 -28 63 00 00 00 32 00 53 79 6e 63 6c 61 76 2e 20 2a 63 63 63 32 32 32 00 40 -00 00 00 30 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Thin Clav -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank A, voice 25 -1f 0b 07 0f 09 00 04 49 13 13 1f 08 07 05 0e 00 02 58 00 0c 1f 06 04 06 0f -23 03 46 10 0a 1f 07 08 0c 0d 00 02 63 08 0b 02 1c 00 00 00 52 18 04 04 00 -63 32 00 32 00 32 00 54 68 69 6e 20 43 6c 61 76 20 63 63 63 32 32 32 00 70 -00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY Harpsichord - - -** Name: Harpschrd2 -** Description: DX11 factory preset 'Harpsichrd' with slower decay -** Source: Art Hitzeman -1a 13 00 01 0d 0a 00 5b 0a 11 0f 10 00 01 0d 00 00 5d 00 1d 17 08 06 04 0c -00 00 4c 04 16 17 08 06 05 0c 00 00 58 0d 14 1c 1f 00 00 00 52 18 02 04 00 -63 32 32 00 00 32 00 48 61 72 70 73 63 68 72 64 32 63 63 63 32 32 32 00 40 -00 00 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Harpschrd3 -** Description: 'Harpschrd2' with minor changes -** Source: Art Hitzeman -1a 13 00 01 0d 0a 00 5b 05 11 0f 10 00 01 0d 00 00 5d 00 1d 17 08 06 04 0c -00 00 4c 00 16 17 08 06 05 0c 00 00 58 0d 14 1c 1f 00 00 00 52 18 02 04 00 -63 32 32 00 00 32 00 48 61 72 70 73 63 68 72 64 33 63 63 63 32 32 32 00 41 -00 00 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Harpsichrd -** Source: Yamaha DX11 factory preset, bank B, voice 15 -1a 13 00 01 0a 0a 00 5b 0a 11 0f 10 00 01 0a 00 00 5d 00 1d 17 08 06 07 0c -00 00 4c 04 16 17 08 06 07 0c 00 00 58 0a 14 1c 1f 00 00 00 52 18 02 04 00 -63 32 32 00 00 32 00 48 61 72 70 73 69 63 68 72 64 63 63 63 32 32 32 00 40 -00 00 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Harpsichrd -** Source: from a library of patches collected by Duane Bowker, author unknown -1a 13 00 01 0d 0a 00 5b 0a 11 0f 10 00 01 0d 00 00 5d 00 1d 17 08 06 07 0c -00 00 4c 04 16 17 08 06 07 0c 00 00 58 0d 14 1c 1f 00 00 00 52 18 02 04 00 -63 32 32 00 00 32 00 48 61 72 70 73 69 63 68 72 64 63 63 63 32 32 32 00 40 -00 00 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hrpsicord1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1d 01 06 0c 29 00 57 04 1b 1f 19 03 04 0d 00 03 5b 04 03 1f 1f 05 09 0d -00 06 3f 0d 13 1f 1a 01 07 0d 00 05 63 0d 1b 32 23 00 00 00 62 18 00 04 00 -63 32 00 00 00 32 00 48 72 70 73 69 63 6f 72 64 31 63 63 63 32 32 32 00 20 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hrpsicord1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1d 01 06 0c 29 01 57 04 1b 1f 19 03 04 0d 00 00 5b 04 03 1f 1f 05 09 0d -00 00 3f 0d 13 1f 1a 01 07 0d 00 02 63 0d 1b 32 23 00 00 00 62 18 00 04 00 -63 32 00 00 00 32 00 48 72 70 73 69 63 6f 72 64 31 63 63 63 32 32 32 00 20 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hrpsicord2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1d 11 00 01 0d 00 00 5b 04 1c 1c 18 00 01 0d 00 00 5b 00 0c 17 08 05 06 0c -00 05 60 00 11 1c 18 05 06 0d 00 04 60 0d 12 0c 23 00 00 00 02 24 00 04 00 -63 32 00 00 00 32 00 48 72 70 73 69 63 6f 72 64 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hrpsicord2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 11 00 01 0d 00 00 5b 04 1c 1c 18 00 01 0d 00 00 5b 00 0c 17 08 05 06 0c -00 01 60 00 11 1c 18 05 06 0d 00 01 60 0d 12 0c 23 00 00 00 02 24 00 04 00 -63 32 00 00 00 32 00 48 72 70 73 69 63 6f 72 64 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hrpsicord3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1d 01 01 0d 0f 02 5a 00 1b 1f 17 03 01 0d 00 02 57 04 03 1f 1c 05 09 0d -00 05 42 13 0b 1f 1c 01 05 0d 00 06 63 0d 1b 2a 23 00 00 00 62 18 00 04 00 -63 32 00 00 00 32 00 48 72 70 73 69 63 6f 72 64 33 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hrpsicord3 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1d 01 01 0d 0f 02 5a 00 1b 1f 17 03 01 0d 00 00 57 04 03 1f 1c 05 09 0d -00 00 42 13 0b 1f 1c 01 05 0d 00 01 63 0d 1b 2a 23 00 00 00 62 18 00 04 00 -63 32 00 00 00 32 00 48 72 70 73 69 63 6f 72 64 33 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: LiteHarpsi -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank A, voice 28 -1f 1d 00 01 0c 00 00 54 04 1b 1f 13 01 01 0f 00 01 4c 04 03 1f 1f 01 09 0f -21 01 4d 19 13 1f 1e 06 07 0d 00 00 5d 0d 13 32 1c 00 00 00 62 18 02 04 00 -63 32 00 00 00 32 00 4c 69 74 65 48 61 72 70 73 69 63 63 63 32 32 32 00 00 -30 00 30 10 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: RichHarpsi -** Source: Yamaha TX81Z factory preset, bank A, voice 29 -1a 13 00 01 0d 00 00 5b 0a 11 0f 10 00 01 0d 00 00 5d 00 1d 17 08 06 05 0c -00 00 5e 04 16 17 08 06 05 0c 00 00 56 0d 14 1c 23 00 00 00 02 18 04 04 00 -63 32 32 00 00 32 00 52 69 63 68 48 61 72 70 73 69 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - ---Bank 12 - -* SUBCATEGORY Organ1 - - -** Name: 16 8 4 2 F -** Source: Yamaha TX81Z factory preset, bank A, voice 18 -1f 1f 00 0f 0f 00 00 5a 19 06 1f 1f 00 0f 0f 00 00 5a 08 03 1f 1f 00 0f 0f -00 00 5a 0d 04 1f 1f 00 0f 0f 00 00 5a 04 00 07 23 00 00 00 62 0c 04 04 00 -63 32 00 00 00 32 00 31 36 20 38 20 34 20 32 20 46 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: <6 Tease> -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank A, voice 20 -1f 00 00 0a 0f 1b 00 3f 0d 03 1f 00 00 0a 0f 00 00 63 08 03 1f 00 00 0a 0f -00 00 5e 0d 03 1f 00 00 0a 0f 00 00 63 04 03 3e 23 00 27 00 42 0c 07 04 00 -63 63 00 63 00 32 00 3c 36 20 54 65 61 73 65 3e 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnalogOrgn -** Controls: MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank A, voice 24 -1f 1b 00 0f 0d 09 00 57 05 06 1f 1c 00 0f 0d 09 00 57 04 01 1e 01 00 0f 0d -0a 00 5f 05 06 1e 01 00 0f 0d 0a 00 5f 04 01 04 1c 15 07 00 52 05 04 04 00 -63 32 00 00 00 32 00 41 6e 61 6c 6f 67 4f 72 67 6e 63 63 63 32 32 32 00 01 -00 08 00 01 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: B3 Organ.1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0f 06 0d 0f 00 03 55 2a 04 1f 13 06 0d 0f 00 05 63 08 04 1f 18 06 0d 0f -00 04 62 0d 04 1f 06 06 0d 0f 00 05 63 00 04 07 28 00 0a 2c 12 0c 07 04 00 -63 63 00 00 00 32 00 42 33 20 4f 72 67 61 6e 2e 31 63 63 63 32 32 32 00 00 -00 20 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: B3 Organ.1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0f 06 0d 0f 00 00 55 2a 04 1f 13 06 0d 0f 00 01 63 08 04 1f 18 06 0d 0f -00 01 62 0d 04 1f 06 06 0d 0f 00 01 63 00 04 07 28 00 0a 2c 12 0c 07 04 00 -63 63 00 00 00 32 00 42 33 20 4f 72 67 61 6e 2e 31 63 63 63 32 32 32 00 00 -00 20 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: B3 Organ.2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 16 05 0d 0f 00 02 3e 08 04 1f 1f 1f 0d 0f 00 04 63 0d 04 1f 1f 02 0d 0f -00 05 63 04 04 1f 1f 07 0d 0f 00 03 63 08 04 04 28 00 0a 2c 22 18 07 04 00 -63 63 00 00 00 32 00 42 33 20 4f 72 67 61 6e 2e 32 63 63 63 32 32 32 00 00 -00 10 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: B3 Organ.2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 16 05 0d 0f 00 00 3e 08 04 1f 1f 1f 0d 0f 00 00 63 0d 04 1f 1f 02 0d 0f -00 01 63 04 04 1f 1f 07 0d 0f 00 00 63 08 04 04 28 00 0a 2c 22 18 07 04 00 -63 63 00 00 00 32 00 42 33 20 4f 72 67 61 6e 2e 32 63 63 63 32 32 32 00 00 -00 10 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: B3 Organ.3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 10 04 0d 0f 00 02 52 08 04 1f 1f 04 0d 0f 00 04 63 08 04 1f 1f 03 0d 0f -0a 03 63 08 14 1f 1f 03 0d 0f 00 04 63 04 04 06 21 00 00 00 22 0c 07 04 00 -63 63 00 00 00 32 00 42 33 20 4f 72 67 61 6e 2e 33 63 63 63 32 32 32 00 00 -00 30 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: B3 Organ.3 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 10 04 0d 0f 00 00 52 08 04 1f 1f 04 0d 0f 00 01 63 08 04 1f 1f 03 0d 0f -0a 01 63 08 14 1f 1f 03 0d 0f 00 01 63 04 04 06 21 00 00 00 22 0c 07 04 00 -63 63 00 00 00 32 00 42 33 20 4f 72 67 61 6e 2e 33 63 63 63 32 32 32 00 00 -00 30 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Big Church -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank A, voice 23 -16 00 00 0a 0f 00 01 47 1f 03 18 00 00 05 0f 5b 02 61 00 10 0f 00 00 08 0f -00 00 63 08 10 0c 00 00 05 0f 00 00 63 00 16 3c 1d 00 00 00 42 0c 04 04 00 -63 32 00 00 00 32 00 42 69 67 20 43 68 75 72 63 68 63 63 63 32 32 32 00 00 -00 70 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ChurchOrg* -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 1f 00 0a 0f 00 42 47 1f 0e 10 1f 00 08 0f 00 40 60 0d 0e 10 1f 00 07 0f -00 40 63 08 08 0b 1f 00 05 0f 14 40 63 04 10 3e 0c 0f 00 00 3a 0c 02 04 00 -28 00 1b 00 00 32 00 43 68 75 72 63 68 4f 72 67 2a 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ClosedFlut -** Description: A Closed Flute organ stop -** Source: Art Hitzeman -12 1f 00 07 0f 19 00 59 04 03 10 1f 00 06 0f 19 00 43 10 03 17 1f 00 07 0f -19 00 5a 0a 03 0e 1f 00 06 0f 19 00 20 16 03 07 23 01 00 00 62 18 02 04 00 -28 32 00 00 00 32 00 43 6c 6f 73 65 64 46 6c 75 74 63 63 63 32 32 32 00 10 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Cornopean -** Description: An organ stop -** Controls: MW (LFO pitch) -** Source: Art Hitzeman -12 1f 00 07 0f 19 00 58 00 03 10 1f 00 06 0f 19 00 5a 04 03 17 1f 00 07 0f -19 00 5a 04 03 0e 1f 00 06 0f 19 00 5a 04 03 47 23 01 06 00 41 18 02 04 00 -28 32 00 00 00 32 00 43 6f 72 6e 6f 70 65 61 6e 20 63 63 63 32 32 32 00 00 -00 40 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: DistortOrg -** Controls: KV, MW (LFO pitch), BC (LFO pitch), BC (EG amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0a 00 08 0f 00 27 42 03 1a 10 1b 00 08 06 0f 00 51 08 10 15 0a 00 08 0f -1b 1b 52 04 1e 12 1b 00 0b 0e 00 02 63 05 00 3b 23 00 01 00 52 11 02 05 00 -63 32 00 05 00 32 3c 44 69 73 74 6f 72 74 4f 72 67 63 63 63 32 32 32 20 26 -10 04 10 78 00 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Drawbar1 * -** Source: from a library of patches collected by Rod Lemcke, author unknown -17 1f 00 09 0f 32 40 5a 19 03 17 1f 00 09 0f 1e 40 63 0a 03 17 1f 00 09 0f -28 40 51 0d 03 17 1f 00 09 0f 14 40 5d 00 03 07 23 00 00 00 1a 18 02 04 00 -28 63 30 00 00 32 00 44 72 61 77 62 61 72 31 20 2a 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Drawbar2 * -** Source: from a library of patches collected by Rod Lemcke, author unknown -17 1f 00 09 0f 2f 40 4b 13 03 17 1f 00 09 0f 19 40 53 08 03 17 1f 00 09 0f -2c 40 51 10 03 17 1f 00 09 0f 0a 40 63 04 03 07 23 00 00 00 1a 18 02 04 00 -28 63 30 00 00 32 00 44 72 61 77 62 61 72 32 20 2a 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Dyno * -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0e 0f 0e 09 00 05 49 2b 08 1f 0f 05 07 0f 18 42 5a 00 06 1f 12 06 08 0d -00 02 63 00 06 1f 12 06 08 0f 00 02 63 04 00 34 14 00 01 02 4e 18 02 04 00 -63 32 00 32 00 32 00 44 79 6e 6f 20 20 20 20 20 2a 63 63 63 32 32 32 00 70 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: DynoWurlie -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank A, voice 14 -1f 1c 04 07 0a 00 03 4e 25 1e 16 07 03 07 0b 00 03 52 0d 10 1f 13 08 06 08 -00 02 5c 3c 0e 1f 04 03 07 0e 00 02 63 04 13 7c 18 03 10 0c 32 0c 02 04 00 -63 32 00 00 00 32 00 44 79 6e 6f 57 75 72 6c 69 65 63 63 63 32 32 32 1b 70 -00 00 09 0f 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Organ..1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 1f 03 0f 0f 26 05 49 04 03 1f 1f 03 0f 0f 14 05 5a 08 03 1f 1f 03 0f 0f -50 05 59 0a 03 1f 1f 03 0f 0f 19 04 5b 00 03 76 23 0e 16 00 22 18 00 04 00 -63 00 00 00 00 32 00 45 20 4f 72 67 61 6e 2e 2e 31 63 63 63 32 32 32 00 20 -00 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Organ..1 -** Source: from a library of patches collected by Duane Bowker, author unknown -15 1f 03 0f 0f 26 00 49 04 03 1f 1f 03 0f 0f 14 00 5a 08 03 1f 1f 03 0f 0f -50 00 59 0a 03 1f 1f 03 0f 0f 19 00 5b 00 03 76 23 0e 16 00 22 18 00 04 00 -63 00 00 00 00 32 00 45 20 4f 72 67 61 6e 2e 2e 31 63 63 63 32 32 32 00 20 -00 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Organ..2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 1f 03 0f 0f 26 05 2a 19 02 1f 1f 03 0f 0f 14 05 5a 0d 04 1f 1f 03 0f 0f -50 05 59 0d 01 1f 1f 03 0f 0f 19 05 63 0d 02 75 1c 00 19 00 22 00 00 04 00 -63 00 00 00 00 32 00 45 20 4f 72 67 61 6e 2e 2e 32 63 63 63 32 32 32 00 00 -00 20 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Organ..2 -** Source: from a library of patches collected by Duane Bowker, author unknown -15 1f 03 0f 0f 26 00 2a 19 02 1f 1f 03 0f 0f 14 00 5a 0d 04 1f 1f 03 0f 0f -50 00 59 0d 01 1f 1f 03 0f 0f 19 00 63 0d 02 75 1c 00 19 00 22 00 00 04 00 -63 00 00 00 00 32 00 45 20 4f 72 67 61 6e 2e 2e 32 63 63 63 32 32 32 00 00 -00 20 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Organ..3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 16 03 08 0f 00 06 4c 0d 02 1f 1f 03 0c 0f 14 05 5c 0d 04 1f 1f 1f 0c 0f -00 05 63 04 01 1f 1f 02 0c 0f 19 05 63 04 02 06 23 00 0e 00 32 18 00 04 00 -63 00 00 00 00 32 00 45 20 4f 72 67 61 6e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 30 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Organ..3 -** Source: from a library of patches collected by Duane Bowker, author unknown -18 16 03 08 0f 00 00 4c 0d 02 1f 1f 03 0c 0f 14 00 5c 0d 04 1f 1f 1f 0c 0f -00 00 63 04 01 1f 1f 02 0c 0f 19 00 63 04 02 06 23 00 0e 00 32 18 00 04 00 -63 00 00 00 00 32 00 45 20 4f 72 67 61 6e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 30 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Organ..4 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 16 00 08 0f 00 44 55 08 03 1f 1f 00 0c 0f 14 03 5c 0a 00 1f 1f 00 0c 0f -00 06 50 08 06 1f 1f 00 0c 0f 19 05 63 00 06 46 0e 00 47 4e 16 18 00 04 00 -63 00 00 00 00 32 00 45 20 4f 72 67 61 6e 2e 2e 34 63 63 63 32 32 32 00 00 -00 20 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Organ..4 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 16 00 08 0f 00 40 55 08 03 1f 1f 00 0c 0f 14 00 5c 0a 00 1f 1f 00 0c 0f -00 00 50 08 06 1f 1f 00 0c 0f 19 00 63 00 06 46 0e 00 47 4e 16 18 00 04 00 -63 00 00 00 00 32 00 45 20 4f 72 67 61 6e 2e 2e 34 63 63 63 32 32 32 00 00 -00 20 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Organ..5 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1e 16 00 08 0f 00 05 5a 04 0e 1b 1f 00 0c 0f 14 02 56 08 00 1f 1f 00 0c 0f -00 06 57 08 03 17 1f 00 0c 0f 19 05 63 00 06 47 0e 00 47 00 22 18 00 04 00 -63 00 00 00 00 32 00 45 20 4f 72 67 61 6e 2e 2e 35 63 63 63 32 32 32 00 00 -00 30 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Organ..5 -** Source: from a library of patches collected by Duane Bowker, author unknown -1e 16 00 08 0f 00 00 5a 04 0e 1b 1f 00 0c 0f 14 00 56 08 00 1f 1f 00 0c 0f -00 00 57 08 03 17 1f 00 0c 0f 19 00 63 00 06 47 0e 00 47 00 22 18 00 04 00 -63 00 00 00 00 32 00 45 20 4f 72 67 61 6e 2e 2e 35 63 63 63 32 32 32 00 00 -00 30 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Organ..6 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 0c 0f 00 04 41 08 0b 1f 1f 07 0c 0f 14 05 5c 08 03 1b 12 1f 0c 0f -00 05 50 0d 03 1c 1f 00 0c 0f 19 05 63 00 03 05 00 00 00 00 02 18 00 04 00 -63 00 00 00 00 32 00 45 20 4f 72 67 61 6e 2e 2e 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Organ..6 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 0c 0f 00 00 41 08 0b 1f 1f 07 0c 0f 14 00 5c 08 03 1b 12 1f 0c 0f -00 00 50 0d 03 1c 1f 00 0c 0f 19 00 63 00 03 05 00 00 00 00 02 18 00 04 00 -63 00 00 00 00 32 00 45 20 4f 72 67 61 6e 2e 2e 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Organ..7 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 03 0d 0f 00 03 51 00 08 1f 18 15 0a 0f 14 03 63 04 05 1b 12 06 0c 0f -00 06 63 08 06 1c 1f 06 0c 0f 19 05 63 04 06 07 21 00 0d 00 32 18 00 04 00 -63 00 00 00 00 32 00 45 20 4f 72 67 61 6e 2e 2e 37 63 63 63 32 32 32 00 00 -00 20 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Organ..7 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 03 0d 0f 00 00 51 00 08 1f 18 15 0a 0f 14 00 63 04 05 1b 12 06 0c 0f -00 00 63 08 06 1c 1f 06 0c 0f 19 00 63 04 06 07 21 00 0d 00 32 18 00 04 00 -63 00 00 00 00 32 00 45 20 4f 72 67 61 6e 2e 2e 37 63 63 63 32 32 32 00 00 -00 20 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Organ..8 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 03 0d 0f 63 05 63 13 0b 1f 18 15 0a 0f 14 05 63 04 03 1b 12 06 0c 0f -00 04 63 04 03 1c 1f 06 0c 0f 19 05 63 00 03 07 27 00 0d 00 42 18 00 04 00 -63 00 00 00 00 32 00 45 20 4f 72 67 61 6e 2e 2e 38 63 63 63 32 32 32 00 00 -00 00 00 20 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Organ..8 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 03 0d 0f 63 00 63 13 0b 1f 18 15 0a 0f 14 00 63 04 03 1b 12 06 0c 0f -00 00 63 04 03 1c 1f 06 0c 0f 19 00 63 00 03 07 27 00 0d 00 42 18 00 04 00 -63 00 00 00 00 32 00 45 20 4f 72 67 61 6e 2e 2e 38 63 63 63 32 32 32 00 00 -00 00 00 20 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Organ..9 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0c 00 09 0f 00 03 41 16 03 1f 1f 00 0a 0f 00 05 47 04 03 1f 1f 00 09 0f -00 05 14 0a 03 1f 1f 00 09 0f 00 05 5a 04 03 40 23 00 06 00 52 18 04 04 00 -28 32 00 00 00 32 00 45 20 4f 72 67 61 6e 2e 2e 39 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Organ..9 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0c 00 09 0f 00 00 41 16 03 1f 1f 00 0a 0f 00 00 47 04 03 1f 1f 00 09 0f -00 00 14 0a 03 1f 1f 00 09 0f 00 00 5a 04 03 40 23 00 06 00 52 18 04 04 00 -28 32 00 00 00 32 00 45 20 4f 72 67 61 6e 2e 2e 39 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Organ.10 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 04 0d 0f 63 03 46 0a 03 1f 1f 04 0c 0f 00 05 63 08 03 1f 1f 03 0d 0f -63 05 63 04 03 1f 1f 01 0d 0f 00 05 63 04 03 2d 2e 00 22 00 12 0c 00 04 00 -63 00 00 00 00 32 00 45 20 4f 72 67 61 6e 2e 31 30 63 63 63 32 32 32 00 00 -00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Organ.10 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 04 0d 0f 63 00 46 0a 03 1f 1f 04 0c 0f 00 00 63 08 03 1f 1f 03 0d 0f -63 00 63 04 03 1f 1f 01 0d 0f 00 00 63 04 03 2d 2e 00 22 00 12 0c 00 04 00 -63 00 00 00 00 32 00 45 20 4f 72 67 61 6e 2e 31 30 63 63 63 32 32 32 00 00 -00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Organ.11 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0c 00 09 0f 63 03 4d 04 03 1f 1f 00 0a 0f 10 06 41 04 02 1f 1f 00 09 0f -00 05 35 04 03 1f 1f 00 09 0f 01 05 5a 04 04 43 23 00 06 00 52 18 04 04 00 -28 32 00 00 00 32 00 45 20 4f 72 67 61 6e 2e 31 31 63 63 63 32 32 32 00 20 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Organ.11 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0c 00 09 0f 63 00 4d 04 03 1f 1f 00 0a 0f 10 00 41 04 02 1f 1f 00 09 0f -00 00 35 04 03 1f 1f 00 09 0f 01 00 5a 04 04 43 23 00 06 00 52 18 04 04 00 -28 32 00 00 00 32 00 45 20 4f 72 67 61 6e 2e 31 31 63 63 63 32 32 32 00 20 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Organ.12 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 03 0d 0f 63 04 44 0a 0b 04 15 03 07 0f 14 05 63 00 03 1b 12 06 0c 0f -00 05 63 04 03 19 15 0a 09 0f 19 05 5d 04 04 44 1d 00 0d 00 32 18 00 04 00 -63 00 00 00 00 32 00 45 20 4f 72 67 61 6e 2e 31 32 63 63 63 32 32 32 00 00 -00 10 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Organ.12 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 03 0d 0f 63 00 44 0a 0b 04 15 03 07 0f 14 00 63 00 03 1b 12 06 0c 0f -00 00 63 04 03 19 15 0a 09 0f 19 00 5d 04 04 44 1d 00 0d 00 32 18 00 04 00 -63 00 00 00 00 32 00 45 20 4f 72 67 61 6e 2e 31 32 63 63 63 32 32 32 00 00 -00 10 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Organ.13 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0c 00 09 0f 00 04 2d 08 03 1f 1f 00 0a 0f 00 05 47 00 03 1a 1f 02 09 0f -00 05 2a 0a 03 1a 1f 02 09 0f 00 05 5f 04 03 42 23 00 06 00 42 18 04 04 00 -28 32 00 00 00 32 00 45 20 4f 72 67 61 6e 2e 31 33 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Organ.13 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0c 00 09 0f 00 00 2d 08 03 1f 1f 00 0a 0f 00 00 47 00 03 1a 1f 02 09 0f -00 00 2a 0a 03 1a 1f 02 09 0f 00 00 5f 04 03 42 23 00 06 00 42 18 04 04 00 -28 32 00 00 00 32 00 45 20 4f 72 67 61 6e 2e 31 33 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E.Organ 1 -** Controls: MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank C, voice 26 -1f 0b 01 0f 08 18 40 5f 0a 0e 1f 1f 00 0e 0f 00 40 5f 04 06 1f 1f 00 0e 0f -00 40 63 05 00 1f 1f 00 0e 0f 00 40 5f 00 08 1f 20 00 03 00 5a 18 02 04 00 -63 32 32 00 00 32 00 45 2e 4f 72 67 61 6e 20 20 31 63 63 63 32 32 32 00 00 -00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E.Organ 2 -** Controls: MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank C, voice 27 -1f 0a 00 0b 0a 20 40 43 04 03 1f 1f 00 0c 0f 1a 00 5f 08 06 1f 09 00 0c 0f -08 00 5d 04 03 1f 1f 00 0c 0f 00 00 5f 0a 00 26 23 00 01 2a 42 0c 02 04 00 -28 32 00 00 00 32 00 45 2e 4f 72 67 61 6e 20 20 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E.Organ 2 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0d 00 0b 0d 20 40 43 04 03 1f 1f 00 0c 0f 1a 00 5f 08 06 1f 09 00 0c 0f -08 00 5d 04 03 1f 1f 00 0c 0f 00 00 5f 0a 00 26 23 00 01 2a 42 0c 02 04 00 -28 32 00 00 00 32 00 45 2e 4f 72 67 61 6e 20 20 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E.Organ 3 -** Source: Yamaha DX11 factory preset, bank C, voice 28 -1f 14 00 0f 0a 00 40 5e 0a 01 1f 1f 00 0f 0a 00 40 5c 04 00 1f 1f 00 0f 0a -00 40 63 08 05 1f 1f 00 0f 0a 00 40 63 04 06 2f 21 00 00 15 4a 18 02 04 00 -28 32 00 00 00 32 00 45 2e 4f 72 67 61 6e 20 20 33 63 63 63 32 32 32 00 00 -00 00 00 10 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E.Organ 3 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 14 00 0f 0d 00 40 5e 0a 01 1f 1f 00 0f 0d 00 40 5c 04 00 1f 1f 00 0f 0d -00 40 63 08 05 1f 1f 00 0f 0d 00 40 63 04 06 2f 21 00 00 15 4a 18 02 04 00 -28 32 00 00 00 32 00 45 2e 4f 72 67 61 6e 20 20 33 63 63 63 32 32 32 00 00 -00 00 00 10 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E.Organ 4 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: Yamaha DX11 factory preset, bank C, voice 29 -14 00 00 06 0f 1b 00 55 08 00 15 00 00 06 0f 00 00 56 08 06 18 01 00 07 0f -00 00 5c 08 00 17 01 00 06 0f 00 00 63 04 06 3f 23 00 19 00 52 0c 02 04 00 -63 32 00 63 00 32 00 45 2e 4f 72 67 61 6e 20 20 34 63 63 63 32 32 32 00 00 -00 40 00 10 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Farcheeza -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank A, voice 21 -1f 00 00 0b 0f 1b 00 5a 13 03 1f 00 00 0b 0f 00 00 63 08 03 1f 00 00 0b 0f -00 00 63 0d 03 1f 00 00 0b 0f 00 00 63 04 03 3f 23 00 12 00 42 0c 07 04 00 -63 32 00 63 00 32 00 46 61 72 63 68 65 65 7a 61 20 63 63 63 32 32 32 00 40 -00 50 00 50 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hammond * -** Controls: MW (LFO pitch), MW (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0f 00 0c 00 1c 40 61 0e 03 1c 19 00 0b 0f 14 40 63 04 06 1c 10 00 0c 0f -15 40 63 08 00 1c 06 00 0c 0f 14 40 63 00 03 2f 25 00 03 0b 3a 11 02 04 00 -28 0b 40 00 00 32 00 48 61 6d 6d 6f 6e 64 20 20 2a 63 63 63 32 32 32 00 03 -00 08 00 04 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - ---Bank 13 - -** Name: Hammond..1 -** Controls: KV, MW (LFO pitch), MW (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -02 04 10 0a 05 00 22 52 04 13 1f 08 00 0d 0c 12 26 3d 0d 03 04 1f 00 0d 0f -0d 5d 46 04 1b 16 1f 00 0d 0f 00 7c 5f 04 03 41 23 0e 10 10 46 18 05 04 00 -63 63 63 00 00 32 00 48 61 6d 6d 6f 6e 64 2e 2e 31 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hammond..1 -** Controls: KV, MW (LFO pitch), MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -02 04 10 0a 05 00 22 52 04 13 1f 08 00 0d 0c 12 21 3d 0d 03 04 1f 00 0d 0f -0d 59 46 04 1b 16 1f 00 0d 0f 00 78 5f 04 03 41 23 0e 10 10 46 18 05 04 00 -63 63 63 00 00 32 00 48 61 6d 6d 6f 6e 64 2e 2e 31 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hammond..2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 1f 00 0a 0b 19 03 4a 04 03 1f 1a 00 0d 0c 52 03 46 04 1a 1f 1f 00 0d 0f -19 06 46 04 12 1b 1e 00 09 0f 63 05 5b 08 03 03 25 00 07 00 31 0c 02 04 00 -63 32 00 00 01 32 00 48 61 6d 6d 6f 6e 64 2e 2e 32 63 63 63 32 32 32 00 20 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hammond..2 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 1f 00 0a 0b 19 00 4a 04 03 1f 1a 00 0d 0c 52 00 46 04 1a 1f 1f 00 0d 0f -19 00 46 04 12 1b 1e 00 09 0f 63 00 5b 08 03 03 25 00 07 00 31 0c 02 04 00 -63 32 00 00 01 32 00 48 61 6d 6d 6f 6e 64 2e 2e 32 63 63 63 32 32 32 00 20 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hammond..3 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0e 05 08 06 00 03 47 04 03 1f 1f 04 07 0e 00 04 5b 08 01 19 1f 00 07 0f -00 05 4e 0a 05 1f 1f 00 07 0e 00 45 63 04 04 0d 0e 00 14 18 3a 0c 02 04 00 -63 32 00 32 00 32 00 48 61 6d 6d 6f 6e 64 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hammond..3 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0e 05 08 06 00 00 47 04 03 1f 1f 04 07 0e 00 00 5b 08 01 19 1f 00 07 0f -00 00 4e 0a 05 1f 1f 00 07 0e 00 40 63 04 04 0d 0e 00 14 18 3a 0c 02 04 00 -63 32 00 32 00 32 00 48 61 6d 6d 6f 6e 64 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hammond..4 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 05 01 03 0d 2d 03 53 0a 13 1f 05 00 05 0b 2d 04 47 04 13 1f 08 00 03 0c -43 06 5c 19 1b 1c 06 04 04 07 00 05 63 04 13 3f 23 00 23 00 32 0c 06 04 00 -63 32 00 32 00 32 00 48 61 6d 6d 6f 6e 64 2e 2e 34 63 63 63 32 32 32 00 00 -00 00 00 40 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hammond..4 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 05 01 03 0d 2d 00 53 0a 13 1f 05 00 05 0b 2d 01 47 04 13 1f 08 00 03 0c -43 01 5c 19 1b 1c 06 04 04 07 00 00 63 04 13 3f 23 00 23 00 32 0c 06 04 00 -63 32 00 32 00 32 00 48 61 6d 6d 6f 6e 64 2e 2e 34 63 63 63 32 32 32 00 00 -00 00 00 40 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hammond..5 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0a 00 10 04 00 00 45 32 04 03 1d 0c 00 0f 0f 01 45 40 04 03 1a 17 00 0f 0f -51 05 56 08 0b 1e 12 00 0f 0f 10 04 63 08 0b 0c 1d 00 47 55 36 0c 0c 04 00 -63 32 00 00 00 32 00 48 61 6d 6d 6f 6e 64 2e 2e 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hammond..5 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0a 00 10 04 00 00 40 32 04 03 1d 0c 00 0f 0f 01 40 40 04 03 1a 17 00 0f 0f -51 00 56 08 0b 1e 12 00 0f 0f 10 00 63 08 0b 0c 1d 00 47 55 36 0c 0c 04 00 -63 32 00 00 00 32 00 48 61 6d 6d 6f 6e 64 2e 2e 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hammond..6 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 1f 00 0a 0b 19 03 54 04 13 1f 1a 00 0d 0c 52 05 50 04 0a 1f 1f 00 0d 0f -19 05 43 0a 1a 1b 1e 00 09 0f 63 05 63 04 03 0b 1f 00 0f 00 32 0c 02 04 00 -63 32 00 00 01 32 00 48 61 6d 6d 6f 6e 64 2e 2e 36 63 63 63 32 32 32 00 30 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hammond..6 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 1f 00 0a 0b 19 00 54 04 13 1f 1a 00 0d 0c 52 00 50 04 0a 1f 1f 00 0d 0f -19 00 43 0a 1a 1b 1e 00 09 0f 63 00 63 04 03 0b 1f 00 0f 00 32 0c 02 04 00 -63 32 00 00 01 32 00 48 61 6d 6d 6f 6e 64 2e 2e 36 63 63 63 32 32 32 00 30 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hammond..7 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -17 0d 10 04 00 00 45 46 0a 03 1d 0c 00 0f 0f 01 45 40 08 03 1a 17 00 0f 0f -51 04 55 0d 0b 1e 12 00 0f 0f 10 05 63 04 0b 04 21 00 15 23 26 0c 0c 04 00 -63 32 00 00 00 32 00 48 61 6d 6d 6f 6e 64 2e 2e 37 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hammond..7 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -17 0d 10 04 00 00 40 46 0a 03 1d 0c 00 0f 0f 01 40 40 08 03 1a 17 00 0f 0f -51 00 55 0d 0b 1e 12 00 0f 0f 10 00 63 04 0b 04 21 00 15 23 26 0c 0c 04 00 -63 32 00 00 00 32 00 48 61 6d 6d 6f 6e 64 2e 2e 37 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: HamondLead -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 16 04 0a 0f 00 04 58 00 00 12 15 04 0a 0f 00 05 63 00 08 12 15 04 0a 0f -00 06 63 00 0e 12 15 04 0a 0f 00 04 63 00 0b 06 24 0f 35 00 32 18 02 04 00 -63 63 00 00 00 32 00 48 61 6d 6f 6e 64 4c 65 61 64 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: HamondLead -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 16 04 0a 0f 00 01 58 00 00 12 15 04 0a 0f 00 00 63 00 08 12 15 04 0a 0f -00 00 63 00 0e 12 15 04 0a 0f 00 00 63 00 0b 06 24 0f 35 00 32 18 02 04 00 -63 63 00 00 00 32 00 48 61 6d 6f 6e 64 4c 65 61 64 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hmnd LS f1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 09 07 0f 0f 00 03 63 0a 05 1b 18 10 0f 0f 00 44 63 08 01 1c 18 07 0f 0f -0a 03 63 08 05 1c 18 07 0f 0f 00 05 63 04 02 2f 30 00 34 63 16 0c 07 04 00 -63 63 00 00 00 32 00 48 6d 6e 64 20 4c 53 20 66 31 63 63 63 32 32 32 00 00 -00 40 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hmnd LS f1 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 09 07 0f 0f 00 00 63 0a 05 1b 18 10 0f 0f 00 40 63 08 01 1c 18 07 0f 0f -0a 00 63 08 05 1c 18 07 0f 0f 00 00 63 04 02 2f 30 00 34 63 16 0c 07 04 00 -63 63 00 00 00 32 00 48 6d 6e 64 20 4c 53 20 66 31 63 63 63 32 32 32 00 00 -00 40 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hmnd LS f2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 18 07 0d 0f 00 03 63 04 05 1b 07 07 0d 0f 00 04 60 04 01 1c 18 07 0d 0f -0a 04 5f 04 05 1c 18 07 0d 0f 00 05 60 00 02 07 1b 00 0f 63 36 18 07 04 00 -63 63 00 00 00 32 00 48 6d 6e 64 20 4c 53 20 66 32 63 63 63 32 32 32 00 00 -00 30 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hmnd LS f2 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 18 07 0d 0f 00 00 63 04 05 1b 07 07 0d 0f 00 00 60 04 01 1c 18 07 0d 0f -0a 00 5f 04 05 1c 18 07 0d 0f 00 00 60 00 02 07 1b 00 0f 63 36 18 07 04 00 -63 63 00 00 00 32 00 48 6d 6e 64 20 4c 53 20 66 32 63 63 63 32 32 32 00 00 -00 30 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hmnd LS s1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 07 01 0d 0f 00 05 5c 04 05 1b 07 07 0d 0f 00 05 5f 08 01 1c 18 07 0d 0f -0a 05 5f 08 05 1c 18 07 0d 0f 00 05 5f 04 02 27 30 00 0e 00 22 18 07 04 00 -63 63 00 00 00 32 00 48 6d 6e 64 20 4c 53 20 73 31 63 63 63 32 32 32 00 20 -00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hmnd LS s1 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 07 01 0d 0f 00 00 5c 04 05 1b 07 07 0d 0f 00 00 5f 08 01 1c 18 07 0d 0f -0a 00 5f 08 05 1c 18 07 0d 0f 00 00 5f 04 02 27 30 00 0e 00 22 18 07 04 00 -63 63 00 00 00 32 00 48 6d 6e 64 20 4c 53 20 73 31 63 63 63 32 32 32 00 20 -00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hornopean -** Description: A loud, obnoxious organ stop -** Controls: MW (LFO pitch) -** Source: Art Hitzeman -12 1f 00 07 0f 19 00 58 00 03 10 1f 00 06 0f 19 00 5a 04 03 17 1f 00 07 0f -19 00 5a 04 03 0e 1f 00 06 0f 19 00 5a 04 03 45 00 01 04 00 62 18 02 04 00 -28 32 00 00 00 32 00 48 6f 72 6e 6f 70 65 61 6e 20 63 63 63 32 32 32 00 00 -00 70 00 60 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Jazz Organ -** Description: An organ with jazz potential -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: GLIB (Michael Kesti and others) -1f 0a 00 0b 0f 00 00 52 0a 06 1f 1f 00 0a 0f 00 00 5b 04 00 1f 12 0e 0a 0f -00 00 58 13 06 1f 1f 00 0a 0f 00 40 4f 04 06 1f 23 00 02 00 4e 0c 07 04 00 -63 32 32 32 00 32 00 4a 61 7a 7a 20 4f 72 67 61 6e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Leslie * -** Controls: MW (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 1f 07 0c 0f 42 40 59 33 03 1b 1f 00 0b 0f 00 40 63 0a 00 1b 1f 00 0b 0f -00 40 56 1c 06 1b 1f 00 0b 0f 00 40 5c 04 06 1f 22 00 05 17 66 05 02 04 00 -28 00 37 00 00 32 00 4c 65 73 6c 69 65 20 20 20 2a 63 63 63 32 32 32 00 07 -00 10 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Organ 1 -** Description: An electric organ -** Controls: KV, MW (LFO pitch), MW (LFO amplitude) -** Source: GLIB (Michael Kesti and others) -1f 0a 01 0b 00 00 7d 5f 0a 06 1f 1f 01 0a 0f 00 7f 63 08 00 1f 1f 01 0a 0f -00 7f 63 0a 06 1f 1f 01 0a 0f 00 7e 63 04 06 1f 27 00 14 1c 36 0c 04 04 00 -63 32 32 00 00 32 00 4f 72 67 61 6e 20 20 20 20 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Organ 2 -** Description: An electric organ -** Source: GLIB (Michael Kesti and others) -1f 0f 00 06 0f 00 00 40 00 03 1f 0f 00 09 0f 00 00 46 04 03 1f 0f 00 06 0f -00 00 5a 00 03 1f 0f 00 09 0f 00 00 5a 04 03 04 00 00 00 00 02 18 00 04 00 -63 32 32 32 00 32 00 4f 72 67 61 6e 20 32 20 20 20 63 63 63 32 32 32 00 00 -00 10 00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Organ 3 -** Description: An electric organ -** Source: GLIB (Michael Kesti and others) -1f 0f 00 06 0f 4e 00 50 00 03 1f 0f 00 09 0f 36 00 46 04 03 1f 0f 00 06 0f -00 00 5a 00 03 1f 0f 00 09 0f 00 00 5a 04 03 04 00 00 00 00 02 18 00 04 00 -63 32 32 32 00 32 00 4f 72 67 61 6e 20 33 20 20 20 63 63 63 32 32 32 00 00 -00 10 00 10 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ornt Organ -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 18 06 07 00 00 03 4f 3d 0b 1d 07 07 08 0b 00 02 63 04 0b 1d 07 07 08 0b -00 05 63 04 0e 1d 07 07 08 0b 00 04 5a 04 0b 2e 63 21 00 00 40 18 04 04 00 -28 32 00 00 00 32 00 4f 72 6e 74 20 4f 72 67 61 6e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ornt Organ -** Source: from a library of patches collected by Duane Bowker, author unknown -18 18 06 07 00 00 00 4f 3d 0b 1d 07 07 08 0b 00 00 63 04 0b 1d 07 07 08 0b -00 00 63 04 0e 1d 07 07 08 0b 00 00 5a 04 0b 2e 63 21 00 00 40 18 04 04 00 -28 32 00 00 00 32 00 4f 72 6e 74 20 4f 72 67 61 6e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - -* SUBCATEGORY Organ2 - - -** Name: P Organ..1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1a 1f 00 06 0f 00 0d 63 13 03 1a 1f 00 06 0f 00 0d 63 08 03 1a 1f 00 06 0f -00 0d 63 0a 03 1a 1f 00 06 0f 00 0d 63 04 03 2f 21 19 1d 00 52 0c 07 04 00 -63 63 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ..1 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1a 1f 00 06 0f 00 08 63 13 03 1a 1f 00 06 0f 00 08 63 08 03 1a 1f 00 06 0f -00 08 63 0a 03 1a 1f 00 06 0f 00 08 63 04 03 2f 21 19 1d 00 52 0c 07 04 00 -63 63 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ..2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1a 1f 00 06 0f 00 04 45 19 03 1a 1f 00 06 0f 00 06 50 04 03 1a 1f 00 06 0f -00 05 63 04 03 1a 1f 00 06 0f 00 05 63 00 03 34 21 19 1d 00 52 0c 07 04 00 -63 63 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 2e 32 63 63 63 32 32 32 00 00 -00 20 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ..2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1a 1f 00 06 0f 00 01 45 19 03 1a 1f 00 06 0f 00 01 50 04 03 1a 1f 00 06 0f -00 00 63 04 03 1a 1f 00 06 0f 00 00 63 00 03 34 21 19 1d 00 52 0c 07 04 00 -63 63 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 2e 32 63 63 63 32 32 32 00 00 -00 20 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ..3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -14 1f 13 08 0e 00 03 43 19 03 1a 1f 00 06 0f 00 03 44 04 03 10 07 07 09 0f -00 05 63 08 03 1a 1f 00 06 0f 00 05 63 08 03 34 21 19 1d 00 52 0c 07 04 00 -63 63 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 2e 33 63 63 63 32 32 32 00 30 -00 10 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ..3 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -14 1f 13 08 0e 00 00 43 19 03 1a 1f 00 06 0f 00 00 44 04 03 10 07 07 09 0f -00 00 63 08 03 1a 1f 00 06 0f 00 00 63 08 03 34 21 19 1d 00 52 0c 07 04 00 -63 63 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 2e 33 63 63 63 32 32 32 00 30 -00 10 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ..4 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 1f 00 08 0f 00 05 50 00 03 16 1f 00 07 0f 00 06 4f 04 03 0d 1f 00 06 0f -00 06 63 0d 03 15 1f 00 07 0f 00 05 63 04 03 04 23 41 00 00 12 18 07 04 00 -63 63 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 2e 34 63 63 63 32 32 32 00 60 -00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ..4 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -15 1f 00 08 0f 00 01 50 00 03 16 1f 00 07 0f 00 01 4f 04 03 0d 1f 00 06 0f -00 01 63 0d 03 15 1f 00 07 0f 00 00 63 04 03 04 23 41 00 00 12 18 07 04 00 -63 63 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 2e 34 63 63 63 32 32 32 00 60 -00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ..5 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 05 06 0f 00 02 4c 0d 03 1d 1f 05 08 0f 00 04 5a 04 02 13 1f 07 07 0f -00 05 63 08 03 18 07 06 0a 0f 00 05 63 08 04 04 23 41 00 00 12 0c 07 04 00 -63 63 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 2e 35 63 63 63 32 32 32 00 40 -00 10 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ..5 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 05 06 0f 00 01 4c 0d 03 1d 1f 05 08 0f 00 01 5a 04 02 13 1f 07 07 0f -00 00 63 08 03 18 07 06 0a 0f 00 00 63 08 04 04 23 41 00 00 12 0c 07 04 00 -63 63 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 2e 35 63 63 63 32 32 32 00 40 -00 10 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ..6 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 06 03 06 0f 00 05 4c 1f 03 12 03 03 08 0f 00 05 63 08 02 12 07 04 07 0f -00 05 63 08 03 16 03 04 0a 0f 00 05 63 04 04 2e 23 41 00 00 12 0c 07 04 00 -63 63 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 2e 36 63 63 63 32 32 32 00 10 -00 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ..6 -** Source: from a library of patches collected by Duane Bowker, author unknown -16 06 03 06 0f 00 00 4c 1f 03 12 03 03 08 0f 00 00 63 08 02 12 07 04 07 0f -00 00 63 08 03 16 03 04 0a 0f 00 00 63 04 04 2e 23 41 00 00 12 0c 07 04 00 -63 63 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 2e 36 63 63 63 32 32 32 00 10 -00 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ..7 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 07 03 07 0f 00 05 4a 1f 03 1f 05 03 09 0f 00 06 54 00 02 12 05 04 08 0f -00 06 63 08 03 0d 05 04 0a 0f 00 05 63 00 04 04 23 41 00 00 12 0c 07 04 00 -63 63 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 2e 37 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ..7 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -16 07 03 07 0f 00 01 4a 1f 03 1f 05 03 09 0f 00 01 54 00 02 12 05 04 08 0f -00 00 63 08 03 0d 05 04 0a 0f 00 00 63 00 04 04 23 41 00 00 12 0c 07 04 00 -63 63 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 2e 37 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ..8 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1a 1f 00 09 0f 00 06 4c 2a 0b 1a 1f 00 06 0f 00 06 5b 00 04 13 1f 00 0a 0f -00 05 63 08 03 10 1f 00 06 0f 00 45 63 00 04 24 21 19 16 23 46 0c 07 04 00 -63 63 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 2e 38 63 63 63 32 32 32 00 10 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ..8 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1a 1f 00 09 0f 00 01 4c 2a 0b 1a 1f 00 06 0f 00 01 5b 00 04 13 1f 00 0a 0f -00 00 63 08 03 10 1f 00 06 0f 00 40 63 00 04 24 21 19 16 23 46 0c 07 04 00 -63 63 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 2e 38 63 63 63 32 32 32 00 10 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ..9 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 06 03 07 0f 00 06 44 13 03 12 03 03 08 0f 00 06 57 08 02 12 07 04 09 0f -00 05 63 0d 03 10 03 04 0a 0f 00 05 63 04 04 2c 23 41 00 00 12 0c 07 04 00 -63 63 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 2e 39 63 63 63 32 32 32 00 00 -00 20 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ..9 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -16 06 03 07 0f 00 01 44 13 03 12 03 03 08 0f 00 01 57 08 02 12 07 04 09 0f -00 00 63 0d 03 10 03 04 0a 0f 00 00 63 04 04 2c 23 41 00 00 12 0c 07 04 00 -63 63 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 2e 39 63 63 63 32 32 32 00 00 -00 20 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ.10 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -19 00 00 0a 0f 3e 46 4e 0d 06 10 00 00 0a 0f 63 05 63 08 06 18 00 00 0a 0f -00 06 63 08 06 15 00 00 0a 0f 00 05 63 04 01 06 23 00 00 38 16 18 00 04 00 -63 00 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 31 30 63 63 63 32 32 32 00 00 -00 00 00 60 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ.10 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -19 00 00 0a 0f 3e 41 4e 0d 06 10 00 00 0a 0f 63 00 63 08 06 18 00 00 0a 0f -00 01 63 08 06 15 00 00 0a 0f 00 00 63 04 01 06 23 00 00 38 16 18 00 04 00 -63 00 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 31 30 63 63 63 32 32 32 00 00 -00 00 00 60 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ.11 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 00 00 0a 0f 00 03 47 08 02 18 00 00 05 0f 5b 04 63 00 00 0f 00 00 08 0f -00 05 63 08 10 0e 00 00 05 0f 00 05 63 00 16 3c 23 00 00 00 02 0c 00 04 00 -63 00 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 31 31 63 63 63 32 32 32 00 00 -00 70 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ.11 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -16 00 00 0a 0f 00 01 47 08 02 18 00 00 05 0f 5b 01 63 00 00 0f 00 00 08 0f -00 00 63 08 10 0e 00 00 05 0f 00 00 63 00 16 3c 23 00 00 00 02 0c 00 04 00 -63 00 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 31 31 63 63 63 32 32 32 00 00 -00 70 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ.12 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 07 01 0a 0f 00 03 56 13 05 1b 07 01 07 0f 5b 05 4f 04 02 12 07 01 09 0f -00 03 61 08 12 0d 07 07 05 0f 00 05 63 00 14 2c 23 00 00 00 02 0c 00 04 00 -63 00 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 31 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ.12 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -16 07 01 0a 0f 00 01 56 13 05 1b 07 01 07 0f 5b 00 4f 04 02 12 07 01 09 0f -00 00 61 08 12 0d 07 07 05 0f 00 00 63 00 14 2c 23 00 00 00 02 0c 00 04 00 -63 00 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 31 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ.13 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 07 00 0a 0f 43 03 4f 13 05 1f 07 00 07 03 5b 04 52 04 02 12 07 01 09 0f -2e 05 5f 08 02 0d 07 00 05 0f 00 05 63 00 04 2c 23 00 00 00 02 0c 00 04 00 -63 00 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 31 33 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ.13 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -15 07 00 0a 0f 43 01 4f 13 05 1f 07 00 07 03 5b 01 52 04 02 12 07 01 09 0f -2e 00 5f 08 02 0d 07 00 05 0f 00 00 63 00 04 2c 23 00 00 00 02 0c 00 04 00 -63 00 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 31 33 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ.14 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 07 00 07 0f 43 04 59 0d 05 15 04 00 08 0f 15 06 57 00 02 12 07 01 08 0f -2e 04 62 04 02 11 03 00 06 0f 00 05 63 00 04 2c 23 00 16 00 22 18 00 04 00 -63 00 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 31 34 63 63 63 32 32 32 00 00 -00 50 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ.14 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -15 07 00 07 0f 43 00 59 0d 05 15 04 00 08 0f 15 01 57 00 02 12 07 01 08 0f -2e 00 62 04 02 11 03 00 06 0f 00 00 63 00 04 2c 23 00 16 00 22 18 00 04 00 -63 00 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 31 34 63 63 63 32 32 32 00 00 -00 50 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ.15 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -13 04 00 07 0f 43 03 58 19 0c 12 04 00 08 0f 5b 04 5c 04 0a 0f 04 00 08 0f -2e 05 63 08 02 0f 04 00 06 0f 00 05 63 00 03 2c 23 00 00 00 02 18 00 04 00 -63 00 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 31 35 63 63 63 32 32 32 00 30 -00 30 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ.15 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -13 04 00 07 0f 43 01 58 19 0c 12 04 00 08 0f 5b 01 5c 04 0a 0f 04 00 08 0f -2e 00 63 08 02 0f 04 00 06 0f 00 00 63 00 03 2c 23 00 00 00 02 18 00 04 00 -63 00 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 31 35 63 63 63 32 32 32 00 30 -00 30 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ.16 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -13 04 00 07 0f 43 04 47 19 0c 12 04 00 08 0f 5b 03 4d 04 0a 0f 04 00 08 0f -2e 06 63 0d 02 0f 04 00 06 0f 00 05 63 00 03 2e 23 00 00 00 02 18 00 04 00 -63 00 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 31 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ.16 -** Source: from a library of patches collected by Duane Bowker, author unknown -13 04 00 07 0f 43 00 47 19 0c 12 04 00 08 0f 5b 00 4d 04 0a 0f 04 00 08 0f -2e 00 63 0d 02 0f 04 00 06 0f 00 00 63 00 03 2e 23 00 00 00 02 18 00 04 00 -63 00 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 31 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ.17 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1a 1f 00 06 0f 00 06 51 13 03 1a 1f 00 06 0f 00 06 45 08 03 1a 1f 00 06 0f -00 07 50 0a 03 1a 1f 00 06 0f 00 05 63 04 03 29 21 19 1d 00 52 0c 07 04 00 -63 63 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 31 37 63 63 63 32 32 32 00 00 -00 10 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P Organ.17 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1a 1f 00 06 0f 00 01 51 13 03 1a 1f 00 06 0f 00 01 45 08 03 1a 1f 00 06 0f -00 02 50 0a 03 1a 1f 00 06 0f 00 00 63 04 03 29 21 19 1d 00 52 0c 07 04 00 -63 63 00 00 00 32 00 50 20 4f 72 67 61 6e 2e 31 37 63 63 63 32 32 32 00 00 -00 10 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P.Organ 1 -** Source: Yamaha DX11 factory preset, bank C, voice 30 -1e 1f 00 06 0f 0a 00 4c 00 0b 0a 1f 00 0a 0f 19 00 4c 10 0e 14 1f 00 0a 0f -00 00 5a 04 0b 13 1f 00 0a 0f 19 00 4c 0a 08 16 46 00 00 00 22 18 02 04 00 -28 32 00 00 00 32 00 50 2e 4f 72 67 61 6e 20 20 31 63 63 63 32 32 32 00 20 -00 20 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P.Organ 1 -** Source: from a library of patches collected by Duane Bowker, author unknown -1e 1f 00 06 0f 0a 00 4c 00 0b 0d 1f 00 0a 0f 19 00 4c 10 0e 14 1f 00 0a 0f -00 00 5a 04 0b 13 1f 00 0a 0f 19 00 4c 0a 08 16 46 00 00 00 22 18 02 04 00 -28 32 00 00 00 32 00 50 2e 4f 72 67 61 6e 20 20 31 63 63 63 32 32 32 00 20 -00 20 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P.Organ 2 -** Source: Yamaha DX11 factory preset, bank C, voice 31 -12 1f 00 09 0f 00 00 5e 04 03 10 1f 00 08 0f 00 00 60 08 05 17 1f 00 09 0f -00 00 5f 0a 06 0e 1f 00 08 0f 00 00 5e 00 00 37 23 01 00 00 62 18 02 04 00 -28 32 00 00 00 32 00 50 2e 4f 72 67 61 6e 20 20 32 63 63 63 32 32 32 00 20 -00 30 00 20 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P.Organ 2 -** Source: from a library of patches collected by Duane Bowker, author unknown -12 1f 00 09 0f 00 00 5e 04 03 10 1f 00 08 0f 00 00 60 08 05 17 1f 00 09 0f -00 00 5f 0d 06 0e 1f 00 08 0f 00 00 5e 00 00 37 23 01 00 00 62 18 02 04 00 -28 32 00 00 00 32 00 50 2e 4f 72 67 61 6e 20 20 32 63 63 63 32 32 32 00 20 -00 30 00 20 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P.Organ 1' -** Description: DX11 factory preset 'P.Organ 1' with slower decay -** Source: Art Hitzeman -1e 1f 00 05 0f 0a 00 4c 00 0b 0a 1f 00 06 0f 19 00 4c 10 0e 14 1f 00 06 0f -00 00 5a 04 0b 13 1f 00 05 0f 19 00 4c 0a 08 16 46 00 00 00 22 18 02 04 00 -28 32 00 00 00 32 00 50 2e 4f 72 67 61 6e 20 31 27 63 63 63 32 32 32 00 20 -00 20 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P.Organ 2' -** Description: DX11 factory preset 'P.Organ 2' with slower decay -** Source: Art Hitzeman -12 1f 00 07 0f 00 00 5e 04 03 10 1f 00 06 0f 00 00 60 08 05 17 1f 00 07 0f -00 00 5f 0d 06 0e 1f 00 06 0f 00 00 5e 00 00 37 23 01 00 00 62 18 02 04 00 -28 32 00 00 00 32 00 50 2e 4f 72 67 61 6e 20 32 27 63 63 63 32 32 32 00 20 -00 30 00 20 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P.Organ 3 -** Description: A pipe organ -** Source: Art Hitzeman -12 1f 00 06 0f 00 00 5e 04 03 10 1f 00 05 0f 09 00 60 08 15 17 1f 00 07 0f -40 00 5f 0a 0e 0e 1f 00 05 0f 00 00 5e 00 10 37 23 01 00 00 62 18 02 04 00 -28 32 00 00 00 32 00 50 2e 4f 72 67 61 6e 20 33 20 63 63 63 32 32 32 00 30 -00 40 00 00 00 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P.Organ 4 -** Description: Another pipe organ -** Source: Art Hitzeman -12 1f 00 07 0f 00 00 54 04 03 10 1f 00 06 0f 63 00 63 04 03 17 1f 00 07 0f -00 00 55 08 06 0e 1f 00 06 0f 00 00 55 00 00 2f 23 01 00 00 62 18 02 04 00 -28 32 00 00 00 32 00 50 2e 4f 72 67 61 6e 20 34 20 63 63 63 32 32 32 00 10 -00 10 00 20 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P.Organ 5 -** Description: Yet another pipe organ -** Source: Art Hitzeman -12 1f 00 07 0f 00 00 5e 00 03 10 1f 00 06 0f 00 00 60 04 05 17 1f 00 07 0f -00 00 5f 08 06 0e 1f 00 06 0f 00 00 5e 00 00 37 23 01 00 00 62 18 02 04 00 -28 32 00 00 00 32 00 50 2e 4f 72 67 61 6e 20 35 20 63 63 63 32 32 32 00 00 -00 40 00 40 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PercOrgan -** Controls: MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank A, voice 17 -1f 0b 01 0b 08 18 40 5f 0a 0e 1f 1f 00 0a 0f 00 40 5f 04 00 1f 1f 00 0a 0f -00 40 63 05 06 1f 1f 00 0a 0f 00 40 5f 00 08 1f 20 00 03 00 5a 18 04 04 00 -63 32 32 00 00 32 00 50 65 72 63 4f 72 67 61 6e 20 63 63 63 32 32 32 00 00 -00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Pipe Organ -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -16 00 00 0a 0f 00 00 63 19 03 11 00 00 0a 0f 00 00 63 0d 03 17 00 00 0a 0f -00 00 63 04 03 17 00 00 0a 0f 00 00 63 00 03 07 1e 00 00 00 42 18 04 04 00 -28 32 00 00 00 32 00 50 69 70 65 20 4f 72 67 61 6e 63 63 63 32 32 32 00 70 -00 70 00 40 00 50 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PumpOrgan -** Controls: MW (LFO amplitude) -** Source: Yamaha TX81Z factory preset, bank A, voice 19 -1f 1f 00 06 0f 1e 00 4d 17 03 1f 1f 00 05 0f 00 00 50 05 04 1f 1f 00 05 0f -00 00 23 04 06 0d 1f 00 09 0f 00 40 5a 04 03 38 14 00 00 0e 3e 11 04 04 00 -63 32 0a 00 00 32 00 50 75 6d 70 4f 72 67 61 6e 20 63 63 63 32 32 32 00 25 -00 31 00 18 00 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: RevrbOrgan -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0d 03 00 05 0e 23 03 4e 05 05 0e 03 00 05 0e 23 03 4e 04 03 0b 1f 00 05 0f -00 01 63 05 06 0c 1f 00 05 0f 00 01 63 04 02 04 19 06 04 00 52 05 02 04 00 -63 0f 00 0c 00 32 00 52 65 76 72 62 4f 72 67 61 6e 63 63 63 32 32 32 00 01 -00 08 00 01 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Small Pipe -** Source: Yamaha TX81Z factory preset, bank A, voice 22 -16 00 00 0a 0f 3e 00 4b 19 06 11 00 00 0a 0f 63 00 57 0d 06 17 00 00 0a 0f -00 00 58 04 06 17 00 00 0a 0f 00 00 63 00 01 07 1e 00 00 00 42 18 04 04 00 -63 63 00 00 00 32 00 53 6d 61 6c 6c 20 50 69 70 65 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Organ 1 -** Controls: KV, MW (LFO pitch), MW (LFO amplitude) -** Source: Yamaha DX11 factory preset, bank A, voice 21 -1f 12 00 07 0a 14 02 50 0a 0b 1f 14 00 09 0e 00 42 55 08 13 1f 14 00 09 06 -00 03 63 0a 03 1f 1f 00 08 0f 00 02 63 04 0b 06 1e 0a 11 1a 5e 18 02 04 00 -63 32 23 00 00 32 00 53 79 2e 4f 72 67 61 6e 20 31 63 63 63 32 32 32 00 00 -00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Organ 1 -** Controls: KV, MW (LFO pitch), MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 12 00 07 0d 14 02 50 0d 0b 1f 14 00 09 0e 00 42 55 08 13 1f 14 00 09 06 -00 03 63 0d 03 1f 1f 00 08 0f 00 02 63 04 0b 06 1e 0d 11 1a 5e 18 02 04 00 -63 32 23 00 00 32 00 53 79 2e 4f 72 67 61 6e 20 31 63 63 63 32 32 32 00 00 -00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Organ 2 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: Yamaha DX11 factory preset, bank A, voice 22 -1b 00 00 0f 0f 1b 00 24 0a 03 1e 1c 00 04 01 00 00 44 08 02 1f 00 00 0a 0b -00 00 49 0a 04 1f 06 00 09 0f 00 00 53 04 04 3a 23 00 27 00 42 18 02 04 00 -63 63 00 63 00 32 00 53 79 2e 4f 72 67 61 6e 20 32 63 63 63 32 32 32 00 00 -00 20 00 40 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Organ 2 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 00 00 0f 0f 1b 00 24 0d 03 1e 1c 00 04 01 00 00 44 08 02 1f 00 00 0a 0b -00 00 49 0d 04 1f 06 00 09 0f 00 00 53 04 04 3a 23 00 27 00 42 18 02 04 00 -63 63 00 63 00 32 00 53 79 2e 4f 72 67 61 6e 20 32 63 63 63 32 32 32 00 00 -00 20 00 40 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tocc Organ -** Description: A pipe organ intended for Bach's Toccata & Fugue in D Minor -** (the piece the villian always plays in those horror movies) -** Source: Art Hitzeman -12 1f 00 06 0f 3c 00 5e 04 03 10 1f 00 06 0f 32 00 60 08 05 17 1f 00 07 0f -32 00 5f 0d 06 0e 1f 00 06 0f 3c 00 5e 00 00 37 23 01 00 00 62 0c 02 04 00 -28 32 00 00 00 32 00 54 6f 63 63 20 4f 72 67 61 6e 63 63 63 32 32 32 00 20 -00 30 00 20 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: VelocOrgan -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1e 07 00 0f 0d 32 07 2b 11 00 1c 08 00 0f 0d 41 07 49 12 04 19 08 00 0f 0d -41 07 5d 05 06 1c 1f 00 0a 0e 00 03 63 04 09 03 1d 15 05 00 52 05 02 04 00 -63 23 00 00 00 32 00 56 65 6c 6f 63 4f 72 67 61 6e 63 63 63 32 32 32 00 08 -00 04 00 11 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Wirlitzer* -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 07 06 07 0e 12 06 4a 08 08 1d 07 06 07 0e 00 06 54 00 0b 1d 06 06 07 0e -00 00 63 00 0e 1d 06 06 07 0e 00 02 63 04 08 34 23 00 00 00 32 18 02 04 00 -28 63 00 00 00 32 00 57 69 72 6c 69 74 7a 65 72 2a 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - ---Bank 14 - -* SUBCATEGORY Piano1 - - -** Name: AC Piano.1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 03 02 04 04 63 06 58 0a 13 16 09 06 06 0d 00 04 4d 04 0b 1b 06 01 04 04 -63 06 63 04 0b 16 09 06 06 0d 00 07 62 04 0b 2c 23 00 00 00 02 0c 02 04 00 -63 32 00 32 00 32 00 41 43 20 50 69 61 6e 6f 2e 31 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano.1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 03 02 04 04 63 01 58 0a 13 16 09 06 06 0d 00 01 4d 04 0b 1b 06 01 04 04 -63 00 63 04 0b 16 09 06 06 0d 00 00 62 04 0b 2c 23 00 00 00 02 0c 02 04 00 -63 32 00 32 00 32 00 41 43 20 50 69 61 6e 6f 2e 31 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano.2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 05 02 04 04 63 04 3b 19 13 14 05 04 06 0d 00 05 50 04 1b 14 02 02 06 0d -00 05 3d 10 0b 15 07 06 06 0c 00 06 63 04 0b 22 23 00 00 00 02 0c 02 04 00 -63 32 00 32 00 32 00 41 43 20 50 69 61 6e 6f 2e 32 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano.2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -12 05 02 04 04 63 01 3b 19 13 14 05 04 06 0d 00 01 50 04 1b 14 02 02 06 0d -00 01 3d 10 0b 15 07 06 06 0c 00 00 63 04 0b 22 23 00 00 00 02 0c 02 04 00 -63 32 00 32 00 32 00 41 43 20 50 69 61 6e 6f 2e 32 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano.3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 01 01 03 00 1b 05 49 04 0d 14 06 05 04 09 42 06 53 04 0d 12 06 0b 03 00 -42 05 44 10 09 18 06 05 05 09 01 46 60 04 0a 1a 23 0a 00 06 56 18 04 04 00 -63 32 00 00 00 32 00 41 43 20 50 69 61 6e 6f 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano.3 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -15 01 01 03 00 1b 02 49 04 0d 14 06 05 04 09 42 01 53 04 0d 12 06 0b 03 00 -42 01 44 10 09 18 06 05 05 09 01 40 60 04 0a 1a 23 0a 00 06 56 18 04 04 00 -63 32 00 00 00 32 00 41 43 20 50 69 61 6e 6f 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano.4 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 01 01 05 00 32 44 4c 04 0d 19 09 09 05 0f 01 04 53 04 06 18 06 05 06 09 -16 45 62 04 09 19 09 09 05 0f 01 45 63 04 00 2c 19 00 00 00 66 18 01 04 00 -63 00 63 00 00 32 00 41 43 20 50 69 61 6e 6f 2e 34 63 63 63 32 32 32 00 00 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano.4 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -15 01 01 05 00 32 41 4c 04 0d 19 09 09 05 0f 01 01 53 04 06 18 06 05 06 09 -16 40 62 04 09 19 09 09 05 0f 01 40 63 04 00 2c 19 00 00 00 66 18 01 04 00 -63 00 63 00 00 32 00 41 43 20 50 69 61 6e 6f 2e 34 63 63 63 32 32 32 00 00 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano.5 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -19 07 00 07 00 00 04 49 00 08 19 1f 00 06 0f 00 05 4b 00 06 18 09 00 07 00 -00 05 43 00 00 1a 05 06 05 0a 01 06 63 04 0e 03 00 00 00 00 62 18 02 04 00 -63 63 00 00 00 32 00 41 43 20 50 69 61 6e 6f 2e 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano.5 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -19 07 00 07 00 00 01 49 00 08 19 1f 00 06 0f 00 01 4b 00 06 18 09 00 07 00 -00 00 43 00 00 1a 05 06 05 0a 01 01 63 04 0e 03 00 00 00 00 62 18 02 04 00 -63 63 00 00 00 32 00 41 43 20 50 69 61 6e 6f 2e 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano.6 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 08 03 05 0d 2d 05 49 04 03 1f 05 01 05 0f 63 05 4c 0a 03 1f 04 02 05 0e -63 05 47 04 0b 1c 1e 06 06 0f 00 06 5d 04 13 3a 23 00 00 00 62 0c 00 04 00 -63 00 00 00 00 32 00 41 43 20 50 69 61 6e 6f 2e 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano.6 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 08 03 05 0d 2d 01 49 04 03 1f 05 01 05 0f 63 01 4c 0a 03 1f 04 02 05 0e -63 01 47 04 0b 1c 1e 06 06 0f 00 00 5d 04 13 3a 23 00 00 00 62 0c 00 04 00 -63 00 00 00 00 32 00 41 43 20 50 69 61 6e 6f 2e 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano.7 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 08 00 03 00 00 04 3a 08 0c 14 06 07 04 09 23 05 48 04 15 14 07 00 03 00 -00 06 36 0a 02 18 08 06 05 09 0f 06 5d 04 0b 7a 21 3c 0a 00 32 18 06 04 00 -63 32 00 32 00 32 00 41 43 20 50 69 61 6e 6f 2e 37 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano.7 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -16 08 00 03 00 00 00 3a 08 0c 14 06 07 04 09 23 00 48 04 15 14 07 00 03 00 -00 00 36 0a 02 18 08 06 05 09 0f 00 5d 04 0b 7a 21 3c 0a 00 32 18 06 04 00 -63 32 00 32 00 32 00 41 43 20 50 69 61 6e 6f 2e 37 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano.8 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 09 01 03 0e 32 43 4f 0a 11 16 09 01 03 0e 32 1d 5d 04 16 18 07 05 05 0d -00 45 63 04 0b 18 07 05 05 0d 00 75 60 04 0b 24 19 00 00 00 66 18 01 04 00 -63 00 63 00 00 32 00 41 43 20 50 69 61 6e 6f 2e 38 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano.8 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -16 09 01 03 0e 32 41 4f 0a 11 16 09 01 03 0e 32 01 5d 04 16 18 07 05 05 0d -00 40 63 04 0b 18 07 05 05 0d 00 40 60 04 0b 24 19 00 00 00 66 18 01 04 00 -63 00 63 00 00 32 00 41 43 20 50 69 61 6e 6f 2e 38 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano.9 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 09 07 07 0d 00 45 3a 10 0b 1c 09 07 07 0d 00 05 4a 0a 0c 1c 09 07 07 0d -00 43 4b 04 0a 1c 09 07 07 0d 00 45 63 04 0b 23 19 00 00 00 66 18 01 04 00 -63 00 63 00 00 32 00 41 43 20 50 69 61 6e 6f 2e 39 63 63 63 32 32 32 00 20 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano.9 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 09 07 07 0d 00 42 3a 10 0b 1c 09 07 07 0d 00 02 4a 0a 0c 1c 09 07 07 0d -00 40 4b 04 0a 1c 09 07 07 0d 00 41 63 04 0b 23 19 00 00 00 66 18 01 04 00 -63 00 63 00 00 32 00 41 43 20 50 69 61 6e 6f 2e 39 63 63 63 32 32 32 00 20 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano10 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 01 01 03 00 34 04 4b 04 0d 16 01 01 04 0c 42 04 52 00 0b 18 05 01 03 00 -63 06 45 16 10 14 08 01 06 0c 00 05 63 04 13 32 23 00 00 00 02 18 00 04 00 -63 32 00 00 00 32 00 41 43 20 50 69 61 6e 6f 31 30 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano10 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -18 01 01 03 00 34 01 4b 04 0d 16 01 01 04 0c 42 01 52 00 0b 18 05 01 03 00 -63 01 45 16 10 14 08 01 06 0c 00 00 63 04 13 32 23 00 00 00 02 18 00 04 00 -63 32 00 00 00 32 00 41 43 20 50 69 61 6e 6f 31 30 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano11 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 08 03 05 0d 00 04 49 04 0d 1f 04 02 05 0e 63 04 4a 0a 01 1f 05 04 05 0d -63 06 50 10 04 1c 1e 04 06 0f 00 05 5c 04 13 2a 23 00 00 00 62 0c 00 04 00 -63 00 00 00 00 32 00 41 43 20 50 69 61 6e 6f 31 31 63 63 63 32 32 32 00 00 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano11 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 08 03 05 0d 00 01 49 04 0d 1f 04 02 05 0e 63 01 4a 0a 01 1f 05 04 05 0d -63 01 50 10 04 1c 1e 04 06 0f 00 00 5c 04 13 2a 23 00 00 00 62 0c 00 04 00 -63 00 00 00 00 32 00 41 43 20 50 69 61 6e 6f 31 31 63 63 63 32 32 32 00 00 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano12 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 0c 09 09 06 52 45 46 0d 03 1b 05 06 09 07 27 04 41 04 13 1c 06 06 07 0c -11 45 4e 04 0b 1c 07 07 07 09 00 46 60 04 0b 1b 19 00 00 00 66 18 01 04 00 -63 00 63 00 00 32 00 41 43 20 50 69 61 6e 6f 31 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano12 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -18 0c 09 09 06 52 42 46 0d 03 1b 05 06 09 07 27 01 41 04 13 1c 06 06 07 0c -11 40 4e 04 0b 1c 07 07 07 09 00 40 60 04 0b 1b 19 00 00 00 66 18 01 04 00 -63 00 63 00 00 32 00 41 43 20 50 69 61 6e 6f 31 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano13 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -19 09 00 07 0d 00 04 46 0a 0b 19 09 00 06 0d 00 04 49 04 0c 18 09 00 07 0d -00 06 4c 04 0b 1a 09 09 07 0d 00 05 63 04 0b 2a 00 00 00 00 02 18 02 04 00 -63 63 00 00 00 32 00 41 43 20 50 69 61 6e 6f 31 33 63 63 63 32 32 32 00 20 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano13 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -19 09 00 07 0d 00 01 46 0a 0b 19 09 00 06 0d 00 01 49 04 0c 18 09 00 07 0d -00 01 4c 04 0b 1a 09 09 07 0d 00 00 63 04 0b 2a 00 00 00 00 02 18 02 04 00 -63 63 00 00 00 32 00 41 43 20 50 69 61 6e 6f 31 33 63 63 63 32 32 32 00 20 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano14 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 09 06 07 0d 00 02 38 0a 0b 1b 09 06 07 0d 00 04 46 10 0c 1b 09 06 07 0d -00 05 4c 04 0b 1b 09 06 07 0d 00 05 5d 04 0b 2a 00 00 00 00 02 18 02 04 00 -63 63 00 00 00 32 00 41 43 20 50 69 61 6e 6f 31 34 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano14 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 09 06 07 0d 00 01 38 0a 0b 1b 09 06 07 0d 00 02 46 10 0c 1b 09 06 07 0d -00 01 4c 04 0b 1b 09 06 07 0d 00 00 5d 04 0b 2a 00 00 00 00 02 18 02 04 00 -63 63 00 00 00 32 00 41 43 20 50 69 61 6e 6f 31 34 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano15 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 06 00 06 0e 00 05 2f 19 0e 13 04 04 06 0d 00 05 43 04 0a 13 04 04 06 0d -00 07 3e 0d 0c 15 07 06 06 0c 00 06 63 04 0b 2a 00 00 00 00 02 18 02 04 00 -63 63 00 00 00 32 00 41 43 20 50 69 61 6e 6f 31 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano15 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 06 00 06 0e 00 01 2f 19 0e 13 04 04 06 0d 00 01 43 04 0a 13 04 04 06 0d -00 01 3e 0d 0c 15 07 06 06 0c 00 01 63 04 0b 2a 00 00 00 00 02 18 02 04 00 -63 63 00 00 00 32 00 41 43 20 50 69 61 6e 6f 31 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano16 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 0d 05 07 0d 00 04 4c 0a 0c 13 04 03 06 0d 13 04 4e 04 0a 13 04 04 06 0d -2b 06 2d 1c 0b 15 07 06 06 0c 00 05 5d 04 0c 2a 00 00 00 00 02 0c 02 04 00 -63 63 00 00 00 32 00 41 43 20 50 69 61 6e 6f 31 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano16 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -18 0d 05 07 0d 00 01 4c 0a 0c 13 04 03 06 0d 13 01 4e 04 0a 13 04 04 06 0d -2b 01 2d 1c 0b 15 07 06 06 0c 00 00 5d 04 0c 2a 00 00 00 00 02 0c 02 04 00 -63 63 00 00 00 32 00 41 43 20 50 69 61 6e 6f 31 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano17 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 18 05 01 0a 01 05 47 16 0a 1f 0c 01 04 0d 13 05 4e 04 0b 1f 0c 01 04 0d -13 06 50 04 0c 17 07 06 08 0d 00 06 5e 04 0b 28 00 00 00 00 02 18 02 04 00 -63 63 00 00 00 32 00 41 43 20 50 69 61 6e 6f 31 37 63 63 63 32 32 32 00 00 -00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano17 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 18 05 01 0a 01 01 47 16 0a 1f 0c 01 04 0d 13 01 4e 04 0b 1f 0c 01 04 0d -13 01 50 04 0c 17 07 06 08 0d 00 00 5e 04 0b 28 00 00 00 00 02 18 02 04 00 -63 63 00 00 00 32 00 41 43 20 50 69 61 6e 6f 31 37 63 63 63 32 32 32 00 00 -00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano18 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 09 05 05 0c 01 02 51 0a 0d 19 06 15 09 0a 13 05 41 04 0a 19 08 05 05 09 -00 06 46 10 0c 19 07 05 05 09 00 06 5d 04 0c 02 00 00 00 00 02 0c 02 04 00 -63 63 00 00 00 32 00 41 43 20 50 69 61 6e 6f 31 38 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano18 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 09 05 05 0c 01 01 51 0a 0d 19 06 15 09 0a 13 01 41 04 0a 19 08 05 05 09 -00 01 46 10 0c 19 07 05 05 09 00 00 5d 04 0c 02 00 00 00 00 02 0c 02 04 00 -63 63 00 00 00 32 00 41 43 20 50 69 61 6e 6f 31 38 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano19 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0a 09 06 0c 01 05 43 16 05 19 06 06 09 0a 13 06 50 04 04 19 06 06 09 0a -13 05 4e 04 02 19 09 06 07 0d 00 06 5f 04 0a 22 00 00 00 00 02 0c 02 04 00 -63 63 00 00 00 32 00 41 43 20 50 69 61 6e 6f 31 39 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano19 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0a 09 06 0c 01 01 43 16 05 19 06 06 09 0a 13 02 50 04 04 19 06 06 09 0a -13 01 4e 04 02 19 09 06 07 0d 00 00 5f 04 0a 22 00 00 00 00 02 0c 02 04 00 -63 63 00 00 00 32 00 41 43 20 50 69 61 6e 6f 31 39 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano20 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -19 09 09 07 0d 01 05 3d 04 0b 19 09 09 07 0d 01 05 4b 0a 04 19 09 09 07 0d -01 05 41 10 03 19 09 06 07 0d 01 06 5f 04 0b 2a 00 00 00 00 02 18 02 04 00 -63 63 00 00 00 32 00 41 43 20 50 69 61 6e 6f 32 30 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano20 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -19 09 09 07 0d 01 01 3d 04 0b 19 09 09 07 0d 01 01 4b 0a 04 19 09 09 07 0d -01 01 41 10 03 19 09 06 07 0d 01 00 5f 04 0b 2a 00 00 00 00 02 18 02 04 00 -63 63 00 00 00 32 00 41 43 20 50 69 61 6e 6f 32 30 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano21 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 01 01 03 00 1b 05 47 04 0d 14 06 05 04 09 42 05 48 13 0d 12 06 0b 03 00 -42 05 4b 0d 09 18 06 05 05 09 0a 44 60 04 0a 1a 23 0a 00 06 56 18 04 04 00 -63 32 00 00 00 32 00 41 43 20 50 69 61 6e 6f 32 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AC Piano21 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -15 01 01 03 00 1b 01 47 04 0d 14 06 05 04 09 42 01 48 13 0d 12 06 0b 03 00 -42 01 4b 0d 09 18 06 05 05 09 0a 40 60 04 0a 1a 23 0a 00 06 56 18 04 04 00 -63 32 00 00 00 32 00 41 43 20 50 69 61 6e 6f 32 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BabyGrand* -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1e 10 06 07 0e 00 01 44 04 0c 1e 0c 06 03 0e 2b 02 4c 04 0c 1e 09 07 06 0e -11 03 4f 10 09 1c 0a 06 07 0e 00 02 63 04 08 1a 23 00 00 00 62 0c 02 04 00 -28 32 00 00 00 32 00 42 61 62 79 47 72 61 6e 64 2a 63 63 63 32 32 32 00 20 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bad Road * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -14 0f 18 07 02 11 02 38 1e 03 17 06 06 0a 0f 0c 05 57 04 0e 18 07 0d 0a 03 -0e 45 63 04 06 17 06 06 07 0f 00 43 63 04 08 04 23 00 00 00 0e 0c 02 04 00 -28 00 19 00 00 32 00 42 61 64 20 52 6f 61 64 20 2a 63 63 63 32 32 32 00 18 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bel/Piano* -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 09 1f 04 00 00 02 58 09 05 1c 09 1f 04 00 00 05 57 05 06 1c 09 1f 04 00 -00 42 63 04 0b 1c 09 1f 04 00 00 43 63 00 08 04 17 00 08 0c 3a 11 02 04 00 -28 63 00 00 00 32 00 42 65 6c 2f 50 69 61 6e 6f 2a 63 63 63 32 32 32 00 32 -00 01 00 08 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BellPiano1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1b 0a 05 0a 00 03 63 2d 13 1f 1b 0a 06 0f 00 05 51 08 03 1f 09 07 05 0f -00 05 63 08 03 1f 09 0c 04 0f 00 46 5e 04 03 3c 18 52 00 51 26 0c 04 04 00 -28 32 00 00 00 32 00 42 65 6c 6c 50 69 61 6e 6f 31 63 63 63 32 32 32 00 10 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BellPiano1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1b 0a 05 0a 00 01 63 2d 13 1f 1b 0a 06 0f 00 01 51 08 03 1f 09 07 05 0f -00 00 63 08 03 1f 09 0c 04 0f 00 40 5e 04 03 3c 18 52 00 51 26 0c 04 04 00 -28 32 00 00 00 32 00 42 65 6c 6c 50 69 61 6e 6f 31 63 63 63 32 32 32 00 10 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BellPiano2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1b 0a 05 0a 00 04 63 08 13 1f 1b 0a 06 0f 00 04 63 19 03 1f 09 07 05 0f -00 05 63 08 03 1f 09 0c 04 0f 00 47 5e 08 03 3e 18 52 00 51 26 0c 04 04 00 -28 32 00 00 00 32 00 42 65 6c 6c 50 69 61 6e 6f 32 63 63 63 32 32 32 00 00 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BellPiano2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1b 0a 05 0a 00 02 63 08 13 1f 1b 0a 06 0f 00 00 63 19 03 1f 09 07 05 0f -00 00 63 08 03 1f 09 0c 04 0f 00 40 5e 08 03 3e 18 52 00 51 26 0c 04 04 00 -28 32 00 00 00 32 00 42 65 6c 6c 50 69 61 6e 6f 32 63 63 63 32 32 32 00 00 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BritePiano -** Controls: KV -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -1d 04 0c 04 00 34 01 4d 04 0d 1f 07 03 04 0c 5e 03 4d 0d 0b 18 05 03 04 00 -3d 03 4e 16 18 1f 08 03 04 0d 00 02 63 04 13 3a 23 00 00 00 02 0c 02 04 00 -63 32 00 00 00 32 00 42 72 69 74 65 50 69 61 6e 6f 63 63 63 32 32 32 00 00 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Buz'dPiano -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 04 0c 06 00 34 01 4f 04 0d 1f 07 03 06 0c 5e 04 4d 0d 13 18 05 03 06 00 -3d 01 47 16 18 1f 08 03 06 0d 00 01 63 04 13 3a 23 00 00 00 02 0c 02 04 00 -63 32 00 00 00 32 00 42 75 7a 27 64 50 69 61 6e 6f 63 63 63 32 32 32 00 10 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ChibyPiano -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 15 0c 06 00 21 02 49 16 15 1f 07 03 06 0c 1b 04 47 0d 0b 18 05 03 06 00 -10 02 4a 16 18 1f 08 03 06 0d 00 02 63 04 13 3a 1d 00 00 00 52 0c 02 04 00 -63 32 00 00 00 32 00 43 68 69 62 79 50 69 61 6e 6f 63 63 63 32 32 32 00 70 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ChorusMeEP -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1e 0e 0f 0e 09 00 03 53 2a 0e 1f 00 00 07 0a 30 43 55 00 08 1f 12 06 08 0d -00 03 53 04 00 1c 04 00 07 0a 00 02 63 04 16 34 14 00 01 02 26 18 02 05 00 -63 32 00 32 00 32 00 43 68 6f 72 75 73 4d 65 45 50 63 63 63 32 32 32 00 70 -00 10 00 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: CrsPopPno -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 08 08 0b 63 03 4f 04 10 1f 1f 08 08 0b 63 03 4f 05 16 1f 19 05 06 0f -00 05 63 04 10 1f 19 05 06 0f 00 05 62 05 16 04 1a 12 00 00 4a 05 02 04 00 -62 32 00 25 00 32 00 43 72 73 50 6f 70 50 6e 6f 20 63 63 63 32 32 32 16 48 -14 41 00 58 00 51 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: DX7 EP -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank B, voice 1 -1f 0f 00 0a 07 00 44 49 2d 06 1e 06 00 06 00 10 43 59 04 00 1b 07 0a 09 07 -14 43 4f 04 03 1e 07 00 09 00 14 42 63 04 06 1c 16 00 04 0a 4e 18 02 04 00 -28 32 00 00 00 32 00 44 58 37 20 45 50 20 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Deep Grd -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank A, voice 3 -18 01 01 03 00 15 03 47 04 0d 16 01 01 05 0c 46 03 5b 00 13 18 05 01 03 00 -4a 04 36 10 08 14 08 01 05 0c 01 03 63 04 13 32 23 00 00 00 02 18 02 04 00 -63 32 00 00 00 32 00 44 65 65 70 20 47 72 64 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: DirtoyPno -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0c 0c 05 0c 1c 04 4e 13 13 1f 06 01 05 0e 00 46 55 30 0b 16 17 08 04 0d -00 04 63 00 0b 1f 09 09 05 0f 00 05 49 19 08 04 1d 11 05 00 4e 18 02 04 00 -63 32 33 1e 33 32 00 44 69 72 74 6f 79 50 6e 6f 20 63 63 63 32 32 32 0e 70 -04 2d 00 60 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: DynomiteEP -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank A, voice 13 -1f 0e 0f 0e 09 00 03 43 2d 0e 1f 0f 05 07 0f 16 43 5a 00 00 1f 12 06 08 0d -00 03 63 04 00 1f 12 06 08 0f 00 02 63 04 06 34 14 00 01 02 4e 18 02 04 00 -63 32 00 32 00 32 00 44 79 6e 6f 6d 69 74 65 45 50 63 63 63 32 32 32 00 70 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY Piano2 - - -** Name: E. Piano 3 -** Description: An electric piano -** Controls: KV, MW (LFO pitch) -** Source: Art Hitzeman -16 1d 12 03 0c 00 42 42 16 04 1c 0e 03 03 0f 14 43 4f 04 16 1b 13 01 01 0f -4d 45 39 19 10 19 07 04 05 05 0a 42 63 04 13 19 1e 00 06 02 42 18 02 04 00 -28 32 00 00 00 32 00 45 2e 20 50 69 61 6e 6f 20 33 63 63 63 32 32 32 03 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano..1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 09 00 05 00 28 02 53 04 0b 1f 08 00 07 00 00 06 4e 0a 03 19 07 00 0f 00 -00 04 5f 04 08 19 05 15 08 00 00 06 5f 04 10 2c 19 00 03 00 62 0c 01 04 00 -63 32 00 32 00 32 00 45 20 50 69 61 6e 6f 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano..1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 09 00 05 00 28 01 53 04 0b 1f 08 00 07 00 00 01 4e 0a 03 19 07 00 0f 00 -00 00 5f 04 08 19 05 15 08 00 00 00 5f 04 10 2c 19 00 03 00 62 0c 01 04 00 -63 32 00 32 00 32 00 45 20 50 69 61 6e 6f 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano..2 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0c 12 05 00 00 03 4e 16 0c 1f 07 0a 06 00 00 05 3d 1c 0a 1f 06 00 05 00 -00 06 5f 04 08 1b 06 0a 06 00 00 05 5c 04 0e 2c 14 00 05 00 62 0c 01 04 00 -63 32 00 32 00 32 00 45 20 50 69 61 6e 6f 2e 2e 32 63 63 63 32 32 32 00 10 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano..2 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0c 12 05 00 00 02 4e 16 0c 1f 07 0a 06 00 00 02 3d 1c 0a 1f 06 00 05 00 -00 00 5f 04 08 1b 06 0a 06 00 00 00 5c 04 0e 2c 14 00 05 00 62 0c 01 04 00 -63 32 00 32 00 32 00 45 20 50 69 61 6e 6f 2e 2e 32 63 63 63 32 32 32 00 10 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano..3 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1d 09 03 09 0f 63 05 59 0a 03 1a 08 02 05 0c 29 04 55 08 0b 1f 0b 09 06 0f -00 04 5d 08 13 1d 08 06 08 0f 01 07 5f 04 0b 34 14 00 03 00 52 18 01 04 00 -63 32 00 32 00 32 00 45 20 50 69 61 6e 6f 2e 2e 33 63 63 63 32 32 32 00 20 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano..3 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 09 03 09 0f 63 02 59 0a 03 1a 08 02 05 0c 29 01 55 08 0b 1f 0b 09 06 0f -00 00 5d 08 13 1d 08 06 08 0f 01 00 5f 04 0b 34 14 00 03 00 52 18 01 04 00 -63 32 00 32 00 32 00 45 20 50 69 61 6e 6f 2e 2e 33 63 63 63 32 32 32 00 20 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano..4 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1d 09 03 07 0f 63 04 56 04 03 1a 08 02 03 0c 29 05 57 0a 0b 1f 0b 09 04 0f -00 06 5b 04 13 1d 08 06 06 0f 01 06 61 08 0b 2c 14 00 03 00 52 0c 01 04 00 -63 32 00 32 00 32 00 45 20 50 69 61 6e 6f 2e 2e 34 63 63 63 32 32 32 00 20 -00 20 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano..4 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 09 03 07 0f 63 01 56 04 03 1a 08 02 03 0c 29 01 57 0a 0b 1f 0b 09 04 0f -00 00 5b 04 13 1d 08 06 06 0f 01 00 61 08 0b 2c 14 00 03 00 52 0c 01 04 00 -63 32 00 32 00 32 00 45 20 50 69 61 6e 6f 2e 2e 34 63 63 63 32 32 32 00 20 -00 20 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano..5 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 09 05 05 0e 63 04 4a 19 13 19 07 04 09 00 00 04 4b 0a 06 1f 08 05 05 00 -19 06 60 00 00 1d 08 01 06 0f 19 45 5c 00 02 0c 0f 00 00 20 66 18 01 04 00 -63 32 00 32 00 32 00 45 20 50 69 61 6e 6f 2e 2e 35 63 63 63 32 32 32 00 10 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano..5 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 09 05 05 0e 63 01 4a 19 13 19 07 04 09 00 00 01 4b 0a 06 1f 08 05 05 00 -19 00 60 00 00 1d 08 01 06 0f 19 40 5c 00 02 0c 0f 00 00 20 66 18 01 04 00 -63 32 00 32 00 32 00 45 20 50 69 61 6e 6f 2e 2e 35 63 63 63 32 32 32 00 10 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano..6 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 09 06 09 0d 39 04 56 04 0e 1c 0f 06 0c 0c 23 46 5d 04 1a 1c 06 06 0f 0d -1e 45 60 04 00 1c 07 07 0b 0c 0b 46 62 04 06 2c 22 21 00 00 36 18 00 04 00 -63 63 00 00 00 32 00 45 20 50 69 61 6e 6f 2e 2e 36 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano..6 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 09 06 09 0d 39 01 56 04 0e 1c 0f 06 0c 0c 23 42 5d 04 1a 1c 06 06 0f 0d -1e 40 60 04 00 1c 07 07 0b 0c 0b 40 62 04 06 2c 22 21 00 00 36 18 00 04 00 -63 63 00 00 00 32 00 45 20 50 69 61 6e 6f 2e 2e 36 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano..7 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 0f 07 0c 0f 63 04 55 04 0d 18 0c 0d 07 0c 30 04 4d 0a 0d 1f 06 06 06 0f -00 46 63 04 09 1f 0a 06 07 0f 01 06 5f 04 0c 24 17 00 00 27 0a 0c 01 04 00 -63 32 00 32 00 32 00 45 20 50 69 61 6e 6f 2e 2e 37 63 63 63 32 32 32 00 00 -00 30 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano..7 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 0f 07 0c 0f 63 01 55 04 0d 18 0c 0d 07 0c 30 01 4d 0a 0d 1f 06 06 06 0f -00 41 63 04 09 1f 0a 06 07 0f 01 00 5f 04 0c 24 17 00 00 27 0a 0c 01 04 00 -63 32 00 32 00 32 00 45 20 50 69 61 6e 6f 2e 2e 37 63 63 63 32 32 32 00 00 -00 30 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano..8 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0a 07 06 07 18 04 5b 04 03 1f 0a 07 06 0a 0c 04 63 04 0c 1f 06 0d 06 07 -0e 46 63 04 0b 1f 04 0f 06 09 0a 06 63 04 0b 0d 1f 00 00 20 0a 0c 01 04 00 -63 32 00 32 00 32 00 45 20 50 69 61 6e 6f 2e 2e 38 63 63 63 32 32 32 00 30 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano..8 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0a 07 06 07 18 01 5b 04 03 1f 0a 07 06 0a 0c 00 63 04 0c 1f 06 0d 06 07 -0e 40 63 04 0b 1f 04 0f 06 09 0a 00 63 04 0b 0d 1f 00 00 20 0a 0c 01 04 00 -63 32 00 32 00 32 00 45 20 50 69 61 6e 6f 2e 2e 38 63 63 63 32 32 32 00 30 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano..9 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 06 06 07 0e 63 06 46 10 04 1f 0f 06 03 0f 28 04 4c 04 0e 18 09 06 06 0e -00 05 63 04 03 1c 0f 06 06 0f 0a 07 5e 04 05 2c 63 00 00 00 02 0c 01 04 00 -63 32 00 32 00 32 00 45 20 50 69 61 6e 6f 2e 2e 39 63 63 63 32 32 32 00 00 -00 20 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano..9 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 06 06 07 0e 63 01 46 10 04 1f 0f 06 03 0f 28 01 4c 04 0e 18 09 06 06 0e -00 00 63 04 03 1c 0f 06 06 0f 0a 00 5e 04 05 2c 63 00 00 00 02 0c 01 04 00 -63 32 00 32 00 32 00 45 20 50 69 61 6e 6f 2e 2e 39 63 63 63 32 32 32 00 00 -00 20 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano.10 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 13 09 05 0d 1e 04 58 04 04 18 16 0d 08 0e 28 04 3c 22 06 18 09 06 07 0e -00 06 63 04 03 1c 0f 06 06 0f 0a 06 62 04 05 2c 63 00 00 00 02 0c 01 04 00 -63 32 00 32 00 32 00 45 20 50 69 61 6e 6f 2e 31 30 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano.10 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 13 09 05 0d 1e 01 58 04 04 18 16 0d 08 0e 28 01 3c 22 06 18 09 06 07 0e -00 01 63 04 03 1c 0f 06 06 0f 0a 00 62 04 05 2c 63 00 00 00 02 0c 01 04 00 -63 32 00 32 00 32 00 45 20 50 69 61 6e 6f 2e 31 30 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano.11 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 06 03 07 0b 4b 05 4f 04 1b 1b 19 06 06 0d 63 06 51 2a 1b 16 09 06 06 0e -00 05 61 04 03 1c 0f 04 06 0f 0a 06 5d 04 03 3c 63 00 00 00 02 18 01 04 00 -63 32 00 32 00 32 00 45 20 50 69 61 6e 6f 2e 31 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano.11 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -16 06 03 07 0b 4b 01 4f 04 1b 1b 19 06 06 0d 63 01 51 2a 1b 16 09 06 06 0e -00 01 61 04 03 1c 0f 04 06 0f 0a 00 5d 04 03 3c 63 00 00 00 02 18 01 04 00 -63 32 00 32 00 32 00 45 20 50 69 61 6e 6f 2e 31 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano.12 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 01 09 09 03 4b 05 52 10 1c 1c 18 06 02 0a 63 05 63 08 13 1b 14 09 04 0e -00 05 5a 04 05 1c 0f 06 06 0f 0a 06 62 00 03 24 00 00 00 00 02 18 01 04 00 -63 32 00 32 00 32 00 45 20 50 69 61 6e 6f 2e 31 32 63 63 63 32 32 32 00 20 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano.12 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 01 09 09 03 4b 01 52 10 1c 1c 18 06 02 0a 63 01 63 08 13 1b 14 09 04 0e -00 00 5a 04 05 1c 0f 06 06 0f 0a 00 62 00 03 24 00 00 00 00 02 18 01 04 00 -63 32 00 32 00 32 00 45 20 50 69 61 6e 6f 2e 31 32 63 63 63 32 32 32 00 20 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano.13 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 07 03 07 0d 63 46 52 04 1e 1e 16 0a 05 0b 63 45 58 24 0a 1c 06 06 0f 0d -1e 44 5c 04 08 1c 07 07 0b 0c 0b 05 63 04 06 3c 22 00 00 1a 0a 18 00 04 00 -63 63 00 00 00 32 00 45 20 50 69 61 6e 6f 2e 31 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano.13 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -16 07 03 07 0d 63 42 52 04 1e 1e 16 0a 05 0b 63 41 58 24 0a 1c 06 06 0f 0d -1e 40 5c 04 08 1c 07 07 0b 0c 0b 01 63 04 06 3c 22 00 00 1a 0a 18 00 04 00 -63 63 00 00 00 32 00 45 20 50 69 61 6e 6f 2e 31 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano.14 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 09 07 07 0b 2c 44 41 1f 0b 1e 09 07 07 0b 63 46 5a 2a 13 18 09 07 07 0d -00 44 61 04 03 1b 09 07 07 09 0a 06 62 04 0b 0c 22 00 00 1a 0a 18 00 04 00 -63 63 00 00 00 32 00 45 20 50 69 61 6e 6f 2e 31 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano.14 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -18 09 07 07 0b 2c 42 41 1f 0b 1e 09 07 07 0b 63 42 5a 2a 13 18 09 07 07 0d -00 41 61 04 03 1b 09 07 07 09 0a 01 62 04 0b 0c 22 00 00 1a 0a 18 00 04 00 -63 63 00 00 00 32 00 45 20 50 69 61 6e 6f 2e 31 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano.15 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 09 07 07 0b 55 45 39 04 13 1e 09 07 07 0b 63 45 47 1f 13 1f 18 07 07 0d -63 44 4f 08 1b 1b 09 07 07 09 0a 06 62 04 03 32 22 00 00 1a 0a 18 00 04 00 -63 63 00 00 00 32 00 45 20 50 69 61 6e 6f 2e 31 35 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano.15 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -18 09 07 07 0b 55 42 39 04 13 1e 09 07 07 0b 63 41 47 1f 13 1f 18 07 07 0d -63 41 4f 08 1b 1b 09 07 07 09 0a 01 62 04 03 32 22 00 00 1a 0a 18 00 04 00 -63 63 00 00 00 32 00 45 20 50 69 61 6e 6f 2e 31 35 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano.16 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1a 11 07 07 0b 55 04 34 16 13 1e 09 07 07 0b 63 05 35 08 13 1f 09 07 07 0d -63 04 32 08 13 1b 07 07 07 0b 0a 45 5a 04 03 70 22 00 00 27 06 18 00 04 00 -63 63 00 00 00 32 00 45 20 50 69 61 6e 6f 2e 31 36 63 63 63 32 32 32 00 10 -00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano.16 -** Source: from a library of patches collected by Duane Bowker, author unknown -1a 11 07 07 0b 55 00 34 16 13 1e 09 07 07 0b 63 00 35 08 13 1f 09 07 07 0d -63 00 32 08 13 1b 07 07 07 0b 0a 40 5a 04 03 70 22 00 00 27 06 18 00 04 00 -63 63 00 00 00 32 00 45 20 50 69 61 6e 6f 2e 31 36 63 63 63 32 32 32 00 10 -00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano.17 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 06 06 08 0d 14 06 57 16 15 1c 0f 06 0c 0c 23 46 5a 04 09 1c 06 06 0f 0d -1e 46 63 04 01 1c 04 04 0b 02 0b 45 5f 04 05 2c 22 21 00 00 36 18 00 04 00 -63 63 00 00 00 32 00 45 20 50 69 61 6e 6f 2e 31 37 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano.17 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 06 06 08 0d 14 04 57 16 15 1c 0f 06 0c 0c 23 41 5a 04 09 1c 06 06 0f 0d -1e 41 63 04 01 1c 04 04 0b 02 0b 40 5f 04 05 2c 22 21 00 00 36 18 00 04 00 -63 63 00 00 00 32 00 45 20 50 69 61 6e 6f 2e 31 37 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano.18 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 06 04 01 0b 14 04 50 19 1d 16 0f 06 0c 0c 2d 44 44 04 01 18 06 06 0f 0d -1e 46 63 08 01 19 07 07 0b 0c 0b 45 60 04 05 0c 22 21 00 00 36 18 00 04 00 -63 63 00 00 00 32 00 45 20 50 69 61 6e 6f 2e 31 38 63 63 63 32 32 32 00 00 -00 10 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano.18 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -16 06 04 01 0b 14 01 50 19 1d 16 0f 06 0c 0c 2d 41 44 04 01 18 06 06 0f 0d -1e 41 63 08 01 19 07 07 0b 0c 0b 40 60 04 05 0c 22 21 00 00 36 18 00 04 00 -63 63 00 00 00 32 00 45 20 50 69 61 6e 6f 2e 31 38 63 63 63 32 32 32 00 00 -00 10 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano.19 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0c 06 07 0f 32 04 37 2a 15 18 09 06 0a 0f 24 46 58 04 15 1f 09 06 09 0f -1e 46 63 04 05 1f 0c 06 07 0f 0b 46 61 00 03 04 22 21 00 00 36 18 00 04 00 -63 63 00 00 00 32 00 45 20 50 69 61 6e 6f 2e 31 39 63 63 63 32 32 32 00 30 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano.19 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0c 06 07 0f 32 01 37 2a 15 18 09 06 0a 0f 24 41 58 04 15 1f 09 06 09 0f -1e 41 63 04 05 1f 0c 06 07 0f 0b 40 61 00 03 04 22 21 00 00 36 18 00 04 00 -63 63 00 00 00 32 00 45 20 50 69 61 6e 6f 2e 31 39 63 63 63 32 32 32 00 30 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano.20 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0c 06 07 0f 32 07 39 1f 15 18 09 06 0a 0f 24 44 51 04 15 1f 09 06 09 0f -1e 45 5f 08 05 1f 0c 06 07 0f 0b 46 5f 04 03 0e 22 21 00 00 36 18 00 04 00 -63 63 00 00 00 32 00 45 20 50 69 61 6e 6f 2e 32 30 63 63 63 32 32 32 00 00 -00 00 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano.20 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0c 06 07 0f 32 02 39 1f 15 18 09 06 0a 0f 24 40 51 04 15 1f 09 06 09 0f -1e 40 5f 08 05 1f 0c 06 07 0f 0b 40 5f 04 03 0e 22 21 00 00 36 18 00 04 00 -63 63 00 00 00 32 00 45 20 50 69 61 6e 6f 2e 32 30 63 63 63 32 32 32 00 00 -00 00 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano.21 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 08 00 07 00 0d 01 3b 2a 0b 1f 08 00 07 00 00 01 59 04 03 1f 08 00 0a 00 -00 00 60 04 00 1f 08 11 07 00 00 00 5e 04 00 64 18 00 04 00 62 0c 01 04 00 -63 32 00 32 00 32 00 45 20 50 69 61 6e 6f 2e 32 31 63 63 63 32 32 32 00 10 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano.22 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 12 00 06 00 0d 01 46 16 0b 1f 08 00 07 00 2d 01 5a 04 0b 1f 11 00 0f 00 -00 04 63 08 00 1f 08 15 08 01 00 04 63 04 08 1c 1b 00 04 00 52 18 01 04 00 -63 32 00 32 00 32 00 45 20 50 69 61 6e 6f 2e 32 32 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E Piano.22 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 12 00 06 00 0d 01 46 16 0b 1f 08 00 07 00 2d 01 5a 04 0b 1f 11 00 0f 00 -00 00 63 08 00 1f 08 15 08 01 00 00 63 04 08 1c 1b 00 04 00 52 18 01 04 00 -63 32 00 32 00 32 00 45 20 50 69 61 6e 6f 2e 32 32 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E.Piano 1 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank B, voice 3 -1f 1f 11 0f 0f 00 46 43 31 10 1d 0b 12 06 0e 00 42 2a 28 12 1d 04 01 06 0e -00 44 45 04 0c 1d 0c 04 08 0e 14 43 63 04 16 03 10 00 08 19 5a 18 02 04 00 -28 32 00 00 00 32 00 45 2e 50 69 61 6e 6f 20 20 31 63 63 63 32 32 32 00 20 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E.Piano 2 -** Controls: KV -** Source: Yamaha DX11 factory preset, bank B, voice 4 -1f 13 0a 09 04 00 06 49 0f 03 1f 1f 00 07 0f 0b 01 49 00 03 1f 0a 08 07 0c -0c 02 31 04 03 18 1f 09 09 0f 06 02 60 00 03 02 23 00 00 00 62 24 02 04 00 -28 32 00 00 00 32 00 45 2e 50 69 61 6e 6f 20 20 32 63 63 63 32 32 32 00 10 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: E.Piano 2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 13 0d 09 04 00 06 49 0f 03 1f 1f 00 07 0f 0b 01 49 00 03 1f 0d 08 07 0c -0c 02 31 04 03 18 1f 09 09 0f 06 02 60 00 03 02 23 00 00 00 62 24 02 04 00 -28 32 00 00 00 32 00 45 2e 50 69 61 6e 6f 20 20 32 63 63 63 32 32 32 00 10 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: El.Piano * -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 08 06 07 0e 14 03 50 04 0e 1f 0f 0a 0b 0b 00 03 42 2d 0b 1f 1e 06 07 0e -00 02 63 03 08 1f 07 07 0a 0b 00 02 63 04 0b 04 15 00 0a 00 32 05 02 04 00 -28 63 00 00 00 32 00 45 6c 2e 50 69 61 6e 6f 20 2a 63 63 63 32 32 32 00 18 -00 08 00 06 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Elec Grand -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank A, voice 5 -1f 08 03 05 0d 00 02 44 04 0e 1f 04 02 05 0e 63 02 52 0a 00 1f 05 04 05 0d -63 02 42 10 05 1c 1e 06 06 0f 00 03 63 04 13 3a 23 00 00 00 62 0c 02 04 00 -63 00 00 00 00 32 00 45 6c 65 63 20 47 72 61 6e 64 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ElecPiano4 -** Controls: KV, MW (LFO pitch) -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -16 0d 12 07 00 00 42 25 22 04 1c 1f 03 05 0f 14 43 51 04 16 1b 13 01 02 0f -63 45 3b 19 18 19 07 04 06 05 0d 42 63 04 13 02 1e 00 06 02 42 18 02 04 00 -28 32 00 00 00 32 00 45 6c 65 63 50 69 61 6e 6f 34 63 63 63 32 32 32 03 50 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ElecPiano5 -** Controls: KV -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -1f 0f 00 09 07 00 41 47 2d 06 0f 06 00 05 00 00 40 3e 04 00 1b 07 0a 08 07 -00 42 63 04 03 1e 07 00 08 00 00 42 63 09 06 3c 17 00 00 1d 3a 18 02 04 00 -28 32 00 00 00 32 00 45 6c 65 63 50 69 61 6e 6f 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 02 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ElecPiano6 -** Controls: KV -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -1f 0f 00 09 07 00 41 52 2d 00 1f 0f 00 09 07 00 40 37 24 06 1b 07 0a 08 07 -00 42 63 03 00 1b 07 0a 08 07 00 42 63 02 06 3c 17 00 00 1d 3a 18 02 04 00 -28 32 00 00 00 32 00 45 6c 65 63 50 69 61 6e 6f 36 63 63 63 32 32 32 00 00 -00 00 00 01 00 02 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Electracou -** Controls: KV -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -18 0b 0a 0f 0d 28 02 4a 0a 0b 1a 12 00 0a 0f 07 00 4e 04 0b 17 0f 0e 05 09 -11 01 4e 0a 0b 1b 13 09 06 0e 00 00 63 04 0b 36 1e 00 00 00 52 18 02 04 00 -28 32 00 00 00 32 00 45 6c 65 63 74 72 61 63 6f 75 63 63 63 32 32 32 00 30 -00 00 00 70 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ElectroPno -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank A, voice 11 -1f 06 04 07 0c 00 04 36 2a 10 1f 04 03 04 0d 00 03 54 04 16 1f 0d 08 07 0c -00 44 63 04 0e 18 04 03 06 0d 00 43 63 04 13 04 14 08 02 1b 6a 0c 02 04 00 -63 32 00 00 00 32 00 45 6c 65 63 74 72 6f 50 6e 6f 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: FadePiano -** Description: Grand 2 with slowly fading sustain -** Controls: KV -** Source: Art Hitzeman -1f 0e 04 03 09 29 07 4c 04 00 16 04 02 03 0d 63 02 4c 09 16 1f 10 03 03 0a -63 02 4a 1c 15 17 04 01 05 0f 00 03 63 04 16 3a 1f 08 20 02 02 18 02 04 00 -28 63 00 00 00 32 00 46 61 64 65 50 69 61 6e 6f 20 63 63 63 32 32 32 00 00 -00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: FingersGo! -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 01 04 03 00 1a 01 48 04 1d 16 07 03 04 0b 4c 04 52 0d 13 18 05 03 03 00 -41 02 47 1c 18 1a 06 03 06 0b 00 02 61 04 13 3a 23 00 00 00 02 18 02 04 00 -63 32 00 00 00 32 00 46 69 6e 67 65 72 73 47 6f 21 63 63 63 32 32 32 00 00 -00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: FlatFlange -** Description: a fuzzy, twangy electric piano -** Controls: KV -** Source: GLIB (Michael Kesti and others) -1f 0e 0f 0e 09 00 07 57 10 06 1f 11 03 0b 0a 43 02 53 08 13 1f 02 05 08 0e -00 04 63 0a 03 1f 1f 08 08 0a 00 00 5a 04 03 00 14 00 00 00 62 18 01 04 00 -63 32 00 32 00 32 00 46 6c 61 74 46 6c 61 6e 67 65 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Fuzz Piano -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank A, voice 6 -1f 11 0b 0f 00 00 04 63 15 16 1f 0b 00 0b 0f 58 07 51 04 06 1f 09 04 09 0a -5f 07 47 2a 05 1f 07 04 0a 0d 00 03 63 04 00 5a 1b 32 02 00 62 0c 04 04 00 -63 16 00 00 00 32 00 46 75 7a 7a 20 50 69 61 6e 6f 63 63 63 32 32 32 08 70 -30 50 00 40 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: FuzzPiano -** Description: an electric piano with guitarish twang -** Controls: KV -** Source: GLIB (Michael Kesti and others) -1f 0e 0f 0e 09 00 03 4b 24 06 1f 11 03 0b 0e 43 03 51 08 13 1f 09 05 08 0e -00 03 59 0a 03 1f 12 08 08 0a 00 03 62 04 03 31 14 00 00 00 62 18 01 04 00 -63 32 00 32 00 32 00 46 75 7a 7a 50 69 61 6e 6f 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: GaragePno -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 15 1f 03 0b 00 05 53 1e 03 1f 09 04 04 0c 0f 06 47 03 16 1f 04 09 04 0c -0f 06 47 05 10 1f 1f 0a 06 0f 00 05 63 00 0b 03 1d 00 03 00 52 18 02 04 00 -63 1e 00 00 00 32 00 47 61 72 61 67 65 50 6e 6f 20 63 63 63 32 32 32 08 0d -00 56 00 51 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: GlassPiano -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 05 0f 00 03 4b 04 02 1f 1f 00 0f 0f 00 05 42 24 06 0c 09 05 05 0f -00 43 63 04 03 0c 0f 08 07 07 00 06 58 2a 04 6c 26 56 00 12 17 18 04 04 00 -28 32 00 00 00 32 00 47 6c 61 73 73 50 69 61 6e 6f 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Grand 2 -** Description: DX11 factory preset 'Grand PF' with slower decay -** Controls: KV, MW (LFO pitch) -** Source: Art Hitzeman -1f 07 01 03 0e 2b 03 4c 04 08 16 03 02 04 0c 63 02 4c 09 16 1f 07 03 04 0a -63 02 4a 1c 15 17 16 06 04 0e 00 03 63 04 16 3a 1f 00 04 00 42 18 02 04 00 -28 32 00 00 00 32 00 47 72 61 6e 64 20 32 20 20 20 63 63 63 32 32 32 00 00 -00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Grand 3 -** Description: 'Grand 2' with more treble -** Controls: KV, MW (LFO pitch) -** Source: Art Hitzeman -1f 07 01 03 0e 21 03 4c 04 08 16 03 02 04 0c 46 02 4c 09 16 1f 07 03 04 0a -46 02 4a 1c 15 17 16 06 04 0e 00 03 63 04 16 3a 1f 00 04 00 42 18 02 04 00 -28 32 00 00 00 32 00 47 72 61 6e 64 20 33 20 20 20 63 63 63 32 32 32 00 00 -00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Grand Low -** Description: Grand 2 an octave lower -** Controls: KV, MW (LFO pitch) -** Source: Art Hitzeman -1f 07 01 03 0e 2b 03 4c 04 08 16 03 02 04 0c 63 02 4c 09 16 1f 07 03 04 0a -63 02 4a 1c 15 17 16 06 04 0e 00 03 63 04 16 3a 1f 00 04 00 42 0c 02 04 00 -28 32 00 00 00 32 00 47 72 61 6e 64 20 4c 6f 77 20 63 63 63 32 32 32 00 00 -00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Grand PF -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank B, voice 5 -1f 07 01 06 0e 2b 03 4c 04 08 16 03 02 06 0c 63 02 4c 09 16 1f 07 03 07 0a -63 02 4a 1c 15 17 16 06 08 0e 00 03 63 04 16 3a 1f 00 04 00 42 18 02 04 00 -28 32 00 00 00 32 00 47 72 61 6e 64 20 50 46 20 20 63 63 63 32 32 32 00 00 -00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: GrandLow2 -** Description: (similar to Grand low) -** Controls: KV, MW (LFO pitch) -** Source: Art Hitzeman -1f 07 01 03 0e 2b 03 4c 04 08 16 03 02 04 0c 63 02 4c 09 16 1f 07 03 04 0a -63 02 4a 1c 15 17 06 03 04 0e 00 03 63 04 16 3a 1f 00 04 00 42 0c 02 04 00 -28 32 00 00 00 32 00 47 72 61 6e 64 4c 6f 77 32 20 63 63 63 32 32 32 00 00 -00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: GrandLow3 -** Description: Grand Low with slower decay -** Controls: KV, MW (LFO pitch) -** Source: Art Hitzeman -1f 07 01 03 0e 2b 03 4c 04 08 16 03 02 04 0c 63 02 4c 0e 16 1f 07 03 04 0a -63 02 4a 28 15 17 16 06 04 0e 00 03 63 04 16 3a 1f 00 04 00 42 05 02 04 00 -28 32 00 00 00 32 00 47 72 61 6e 64 4c 6f 77 33 20 63 63 63 32 32 32 00 08 -00 03 00 08 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: GrandPiano -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank A, voice 1 -1d 04 0c 06 00 34 01 4d 04 0d 1f 07 03 06 0c 5e 04 4d 0d 0b 18 05 03 06 00 -3d 01 4a 16 18 1f 08 03 06 0d 00 01 63 04 13 3a 23 00 00 00 02 0c 02 04 00 -63 32 00 00 00 32 00 47 72 61 6e 64 50 69 61 6e 6f 63 63 63 32 32 32 00 00 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: HappyPiano -** Description: a cute electric piano -** Controls: KV -** Source: GLIB (Michael Kesti and others) -1f 0e 0f 0e 09 00 03 4b 24 06 1f 11 03 0b 0e 43 03 51 08 13 1f 12 05 08 0e -00 03 59 0a 03 1f 12 08 08 0a 00 03 62 04 03 34 14 00 00 00 62 18 01 04 00 -63 32 00 32 00 32 00 48 61 70 70 79 50 69 61 6e 6f 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: HarpsPiano -** Controls: KV -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -1f 03 19 06 00 13 02 43 04 13 1f 00 0c 06 0f 25 04 55 1f 0b 14 1f 1f 06 0b -21 02 3d 16 1b 1f 1e 00 07 0f 00 02 63 04 13 62 20 00 00 00 42 18 02 04 00 -63 0e 00 00 00 32 00 48 61 72 70 73 50 69 61 6e 6f 63 63 63 32 32 32 00 60 -00 50 00 10 00 30 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hi-LowBell -** Description: yet another electric piano -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: GLIB (Michael Kesti and others) -1f 1b 0f 0e 0a 00 03 4e 1f 06 1f 09 00 0b 00 43 03 4d 04 13 1f 09 05 08 0e -00 03 59 08 03 1f 12 08 08 0a 00 03 62 00 03 3c 1c 1d 10 00 62 18 01 04 00 -63 32 00 32 00 32 00 48 69 2d 4c 6f 77 42 65 6c 6c 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: High&Long$ -** Description: a synthetic electric piano sound -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: GLIB (Michael Kesti and others) -1f 0a 00 0e 09 00 03 58 24 06 1f 0e 03 0b 0e 43 03 55 04 13 1f 12 06 08 0e -00 02 4b 04 03 1f 12 05 08 0a 00 03 62 04 03 04 1c 14 06 54 66 18 01 04 00 -63 32 00 32 00 32 00 48 69 67 68 26 4c 6f 6e 67 24 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: HonkeyTonk -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank A, voice 4 -18 01 01 03 00 00 02 30 17 0e 16 03 01 04 0c 3a 02 4e 05 16 18 1b 04 03 0d -00 03 3d 1d 0d 14 08 01 05 0c 00 03 63 03 10 20 23 00 00 00 02 11 02 04 00 -63 32 00 00 00 32 00 48 6f 6e 6b 65 79 54 6f 6e 6b 63 63 63 32 32 32 00 42 -00 01 00 0b 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ivory * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 08 03 05 0d 00 02 48 04 16 1f 04 02 05 0e 42 05 47 0a 08 1f 05 04 05 0d -51 02 48 10 0d 16 1e 06 06 0f 00 03 63 04 13 02 19 00 00 00 22 0c 02 04 00 -63 00 00 00 00 32 00 49 76 6f 72 79 20 20 20 20 2a 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: JazzyPiano -** Controls: KV, MW (LFO pitch) -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -1f 07 01 06 0e 2b 03 35 04 08 16 03 02 06 0c 4b 02 59 09 16 1f 07 03 07 0a -5b 01 4d 19 15 17 16 06 08 0e 00 03 63 04 16 3a 1f 00 04 00 42 18 02 04 00 -28 32 00 00 00 32 00 4a 61 7a 7a 79 50 69 61 6e 6f 63 63 63 32 32 32 00 00 -00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MetalWhip -** Description: electric piano / electric guitar mix -** Controls: KV -** Source: GLIB (Michael Kesti and others) -1f 0e 0f 0e 09 00 03 62 10 06 1f 11 03 0b 0e 43 03 51 08 13 1f 09 05 08 0e -00 03 59 0a 03 1f 12 08 08 0a 00 03 62 04 03 31 14 00 00 00 62 18 01 04 00 -63 32 00 32 00 32 00 4d 65 74 61 6c 57 68 69 70 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: NewElectro -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank A, voice 12 -1f 0e 0f 0e 09 00 03 29 2d 06 1f 0f 05 0b 0e 4e 02 5a 04 0b 1f 12 06 08 0e -00 03 60 04 03 1f 12 06 08 0e 00 04 63 04 0b 34 14 00 00 00 62 18 01 04 00 -63 32 00 32 00 32 00 4e 65 77 45 6c 65 63 74 72 6f 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: NewElectro -** Description: still another electric piano -** Controls: KV -** Source: GLIB (Michael Kesti and others) -1f 0e 0f 0e 09 00 06 4b 24 06 1f 0e 03 0b 0e 43 02 55 04 13 1f 12 06 08 0e -00 04 4e 04 03 1f 12 08 08 0a 00 03 62 04 03 34 14 00 00 00 62 18 01 04 00 -63 32 00 32 00 32 00 4e 65 77 45 6c 65 63 74 72 6f 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: NewElectro -** Controls: KV -** Source: DX100 GLIB patch (Michael Kesti and others) -1f 0e 0f 0e 09 00 07 4b 24 06 1f 0e 03 0b 0e 43 07 55 04 13 1f 12 06 08 0e -00 07 4e 04 03 1f 12 08 08 0a 00 07 62 04 03 34 14 00 00 00 62 18 01 04 00 -63 32 00 32 00 32 00 4e 65 77 45 6c 65 63 74 72 6f 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Old Rose -** Controls: KV -** Source: Yamaha DX11 factory preset, bank B, voice 2 -19 12 05 09 0a 25 41 54 04 05 19 0a 0a 09 0c 25 04 45 08 13 1f 13 00 09 03 -00 05 56 02 03 1a 1f 05 09 0f 00 43 60 04 09 32 19 00 00 00 5e 18 02 04 00 -28 09 0f 00 00 32 00 4f 6c 64 20 52 6f 73 65 20 20 63 63 63 32 32 32 00 30 -00 50 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Old Rose -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -19 12 05 09 0d 25 41 54 04 05 19 0d 0a 09 0c 25 04 45 08 13 1f 13 00 09 03 -00 05 56 02 03 1a 1f 05 09 0f 00 43 60 04 09 32 19 00 00 00 5e 18 02 04 00 -28 09 0f 00 00 32 00 4f 6c 64 20 52 6f 73 65 20 20 63 63 63 32 32 32 00 30 -00 50 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrganPiano -** Description: Doesn't sound like either -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: GLIB (Michael Kesti and others) -1f 1b 0f 0e 0a 00 02 4e 0a 06 1f 09 00 0b 00 43 02 4d 04 13 1f 09 05 08 0e -00 02 59 08 03 1f 12 08 08 0a 00 02 62 04 03 3c 1c 1d 10 00 62 18 01 04 00 -63 32 00 32 00 32 00 4f 72 67 61 6e 50 69 61 6e 6f 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrganPiano -** Description: a meek, organ-like electric piano -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: GLIB (Michael Kesti and others) -1f 1b 0f 0e 0a 00 03 4e 0a 06 1f 09 00 0b 00 43 03 4d 04 13 1f 09 05 08 0e -00 02 59 08 03 1f 12 08 08 0a 00 02 62 04 03 3c 1c 1d 10 00 62 18 01 04 00 -63 32 00 32 00 32 00 4f 72 67 61 6e 50 69 61 6e 6f 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ornt Piano -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 09 00 04 0a 00 02 47 04 05 19 09 04 07 06 00 02 3b 0d 03 1e 16 02 06 0f -00 05 63 08 04 1e 15 08 05 0d 00 05 5a 3e 0a 2c 1e 17 00 00 22 18 04 04 00 -28 32 00 00 00 32 00 4f 72 6e 74 20 50 69 61 6e 6f 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ornt Piano -** Source: from a library of patches collected by Duane Bowker, author unknown -16 09 00 04 0a 00 00 47 04 05 19 09 04 07 06 00 00 3b 0d 03 1e 16 02 06 0f -00 00 63 08 04 1e 15 08 05 0d 00 00 5a 3e 0a 2c 1e 17 00 00 22 18 04 04 00 -28 32 00 00 00 32 00 4f 72 6e 74 20 50 69 61 6e 6f 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PetalPiano -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 08 07 06 06 57 07 43 04 05 13 06 07 06 0a 00 00 3b 00 09 1d 08 07 06 0a -00 00 57 00 00 13 05 07 06 03 00 02 63 00 0d 01 1c 08 04 00 32 24 02 04 00 -63 32 00 00 00 32 00 50 65 74 61 6c 50 69 61 6e 6f 63 63 63 32 32 32 00 00 -00 00 00 10 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PhaseGrand -** Description: another electric piano -** Controls: KV -** Source: GLIB (Michael Kesti and others) -1d 17 02 0f 0a 52 00 47 0a 16 15 03 00 07 0e 35 04 4e 04 16 16 0f 00 02 0f -4f 03 56 04 10 13 1d 01 03 0a 0c 05 63 04 1b 33 23 00 00 00 62 18 02 04 00 -63 32 00 32 00 32 00 50 68 61 73 65 47 72 61 6e 64 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PianGuitar -** Description: Cross between a piano and a guitar, sort of -** Controls: KV -** Source: Art Hitzeman -1f 12 08 02 0b 39 02 4e 04 0b 1e 06 02 04 09 22 04 56 09 13 1f 0c 03 05 05 -27 05 46 1c 16 1e 05 03 05 09 00 02 5d 04 13 02 20 00 00 00 62 18 02 04 00 -28 32 00 00 00 32 00 50 69 61 6e 47 75 69 74 61 72 63 63 63 32 32 32 00 00 -00 02 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rag Piano -** Description: A piano for those Scott Joplin pieces -** Controls: KV, MW (LFO pitch) -** Source: Art Hitzeman -1f 07 01 03 0e 2b 03 4c 04 08 16 03 02 04 0c 63 02 4c 09 16 1f 07 03 04 0a -63 02 4a 23 15 17 16 06 04 0e 19 03 63 04 16 0a 1f 00 04 00 42 13 02 04 00 -28 32 00 00 00 32 00 52 61 67 20 50 69 61 6e 6f 20 63 63 63 33 33 33 00 05 -00 0c 00 05 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: RatRhodes -** Controls: KV, MW (LFO pitch), MW (LFO amplitude), BC (LFO pitch), BC (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 09 08 08 0a 2b 47 63 00 06 1f 18 02 06 0c 00 01 59 2c 0b 1f 19 04 05 0f -04 46 63 00 13 1f 15 0a 05 0d 07 07 57 0f 10 04 14 16 07 0c 4a 18 02 04 00 -63 32 33 2f 27 32 00 52 61 74 52 68 6f 64 65 73 20 63 63 63 32 32 32 00 30 -0c 58 00 00 00 48 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Reed Piano -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank A, voice 16 -1f 0d 10 0d 0c 00 04 27 08 13 1f 1f 00 09 0f 24 43 42 04 16 1f 06 07 0a 0d -17 03 57 08 10 1f 09 02 07 0e 00 03 63 04 13 3b 17 00 00 11 5e 0c 04 04 00 -63 32 00 32 00 32 00 52 65 65 64 20 50 69 61 6e 6f 63 63 63 32 32 32 00 03 -00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY Piano3 - -** Name: Rhodes...1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 0f 04 0f 00 01 2b 3f 06 1f 12 05 07 0e 4e 03 58 04 0b 1f 12 06 08 0e -52 05 4a 08 0b 1f 12 06 08 0e 00 44 63 04 0b 38 14 00 00 10 66 0c 00 04 00 -63 00 00 00 00 32 00 52 68 6f 64 65 73 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rhodes...1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 0f 04 0f 00 01 2b 3f 06 1f 12 05 07 0e 4e 02 58 04 0b 1f 12 06 08 0e -52 01 4a 08 0b 1f 12 06 08 0e 00 40 63 04 0b 38 14 00 00 10 66 0c 00 04 00 -63 00 00 00 00 32 00 52 68 6f 64 65 73 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rhodes...2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 04 00 08 0c 00 01 57 04 1b 1c 09 06 08 0c 4e 01 37 2a 0b 1c 04 00 08 0c -52 05 60 08 13 1c 07 07 08 0b 00 05 63 04 03 04 22 21 00 00 02 18 00 04 00 -63 00 00 00 00 32 00 52 68 6f 64 65 73 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rhodes...2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 04 00 08 0c 00 01 57 04 1b 1c 09 06 08 0c 4e 01 37 2a 0b 1c 04 00 08 0c -52 00 60 08 13 1c 07 07 08 0b 00 00 63 04 03 04 22 21 00 00 02 18 00 04 00 -63 00 00 00 00 32 00 52 68 6f 64 65 73 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rhodes...3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 04 00 08 0c 00 02 47 04 03 1c 15 0c 08 0c 4e 03 63 31 0b 1c 04 00 08 0c -00 05 5f 08 03 1c 1f 07 04 0b 00 05 62 04 0b 34 14 00 00 00 62 18 01 04 00 -63 32 00 32 00 32 00 52 68 6f 64 65 73 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rhodes...3 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 04 00 08 0c 00 02 47 04 03 1c 15 0c 08 0c 4e 01 63 31 0b 1c 04 00 08 0c -00 01 5f 08 03 1c 1f 07 04 0b 00 00 62 04 0b 34 14 00 00 00 62 18 01 04 00 -63 32 00 32 00 32 00 52 68 6f 64 65 73 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rhodes...4 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 04 00 08 0c 00 03 48 08 03 1c 15 0c 08 0c 4e 03 58 31 0b 1c 04 00 08 0c -00 05 5a 08 03 1c 1f 07 04 0b 00 04 62 08 0b 36 14 00 00 00 62 0c 01 04 00 -63 32 00 32 00 32 00 52 68 6f 64 65 73 2e 2e 2e 34 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rhodes...4 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 04 00 08 0c 00 03 48 08 03 1c 15 0c 08 0c 4e 01 58 31 0b 1c 04 00 08 0c -00 00 5a 08 03 1c 1f 07 04 0b 00 00 62 08 0b 36 14 00 00 00 62 0c 01 04 00 -63 32 00 32 00 32 00 52 68 6f 64 65 73 2e 2e 2e 34 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rhodes...5 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 09 06 07 05 00 43 52 04 0e 1c 09 05 0b 0a 4e 45 61 2a 0b 1c 06 06 07 0c -00 44 5f 04 08 1c 07 07 07 0b 00 45 63 04 0e 34 13 00 00 24 66 18 01 04 00 -63 32 00 32 00 32 00 52 68 6f 64 65 73 2e 2e 2e 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rhodes...5 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 09 06 07 05 00 42 52 04 0e 1c 09 05 0b 0a 4e 45 61 2a 0b 1c 06 06 07 0c -00 40 5f 04 08 1c 07 07 07 0b 00 42 63 04 0e 34 13 00 00 24 66 18 01 04 00 -63 32 00 32 00 32 00 52 68 6f 64 65 73 2e 2e 2e 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rhodes...6 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 03 03 02 0d 00 43 51 04 1b 1f 0d 0a 06 0d 4e 43 55 24 0b 1f 06 08 07 0d -00 45 5a 04 03 1f 0f 09 07 0d 00 45 61 04 0b 26 13 00 00 24 66 18 01 04 00 -63 32 00 32 00 32 00 52 68 6f 64 65 73 2e 2e 2e 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rhodes...6 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 03 03 02 0d 00 41 51 04 1b 1f 0d 0a 06 0d 4e 41 55 24 0b 1f 06 08 07 0d -00 40 5a 04 03 1f 0f 09 07 0d 00 40 61 04 0b 26 13 00 00 24 66 18 01 04 00 -63 32 00 32 00 32 00 52 68 6f 64 65 73 2e 2e 2e 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rhodes...7 -** Controls: KV, MW (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -19 0a 09 05 01 00 01 3d 13 16 19 0a 09 05 02 00 02 63 00 0c 19 07 09 05 07 -13 04 63 0d 0e 19 07 09 05 07 13 44 63 04 0b 7e 14 0a 00 39 06 0c 02 04 00 -63 15 27 00 00 32 00 52 68 6f 64 65 73 2e 2e 2e 37 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rhodes...7 -** Controls: KV, MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -19 0a 09 05 01 00 01 3d 13 16 19 0a 09 05 02 00 00 63 00 0c 19 07 09 05 07 -13 00 63 0d 0e 19 07 09 05 07 13 40 63 04 0b 7e 14 0a 00 39 06 0c 02 04 00 -63 15 27 00 00 32 00 52 68 6f 64 65 73 2e 2e 2e 37 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rhodes...8 -** Controls: KV, MW (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 09 00 07 0d 00 02 4c 04 1e 1c 0f 0a 05 0b 5c 03 5f 24 14 1c 06 06 07 0d -13 05 5b 04 06 1c 0f 09 07 0b 13 45 5f 04 03 7e 14 0a 00 39 06 0c 02 04 00 -63 15 27 00 00 32 00 52 68 6f 64 65 73 2e 2e 2e 38 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rhodes...8 -** Controls: KV, MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 09 00 07 0d 00 00 4c 04 1e 1c 0f 0a 05 0b 5c 01 5f 24 14 1c 06 06 07 0d -13 00 5b 04 06 1c 0f 09 07 0b 13 40 5f 04 03 7e 14 0a 00 39 06 0c 02 04 00 -63 15 27 00 00 32 00 52 68 6f 64 65 73 2e 2e 2e 38 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rhodes...9 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 04 00 08 0c 00 01 54 04 1b 1c 09 06 08 0c 4e 03 42 2a 0b 1c 04 00 08 0c -52 06 63 04 13 1c 07 07 08 0b 00 46 63 04 03 06 19 21 00 2c 06 18 00 04 00 -63 00 00 00 00 32 00 52 68 6f 64 65 73 2e 2e 2e 39 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rhodes...9 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 04 00 08 0c 00 01 54 04 1b 1c 09 06 08 0c 4e 00 42 2a 0b 1c 04 00 08 0c -52 00 63 04 13 1c 07 07 08 0b 00 40 63 04 03 06 19 21 00 2c 06 18 00 04 00 -63 00 00 00 00 32 00 52 68 6f 64 65 73 2e 2e 2e 39 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rhodes..10 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 04 00 08 0c 00 02 5b 04 1b 1c 09 06 08 0c 4e 03 57 24 1b 1c 04 00 08 0c -52 04 63 04 13 1c 07 07 08 0b 00 44 63 04 03 07 19 21 00 2c 06 18 00 04 00 -63 00 00 00 00 32 00 52 68 6f 64 65 73 2e 2e 31 30 63 63 63 32 32 32 00 20 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rhodes..10 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 04 00 08 0c 00 02 5b 04 1b 1c 09 06 08 0c 4e 00 57 24 1b 1c 04 00 08 0c -52 00 63 04 13 1c 07 07 08 0b 00 40 63 04 03 07 19 21 00 2c 06 18 00 04 00 -63 00 00 00 00 32 00 52 68 6f 64 65 73 2e 2e 31 30 63 63 63 32 32 32 00 20 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rhodes..11 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 0f 04 0f 00 03 34 0d 0e 1f 12 05 0b 0e 4e 05 45 19 03 1f 12 06 08 0e -52 04 45 04 03 1f 12 06 08 0e 00 06 63 04 03 3c 22 21 00 00 02 0c 00 04 00 -63 00 00 00 00 32 00 52 68 6f 64 65 73 2e 2e 31 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rhodes..11 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 0f 04 0f 00 01 34 0d 0e 1f 12 05 0b 0e 4e 01 45 19 03 1f 12 06 08 0e -52 00 45 04 03 1f 12 06 08 0e 00 00 63 04 03 3c 22 21 00 00 02 0c 00 04 00 -63 00 00 00 00 32 00 52 68 6f 64 65 73 2e 2e 31 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rhodes..12 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1a 04 00 08 0c 00 44 59 08 06 1a 15 0c 08 0c 4e 45 62 24 0b 1a 04 00 08 0c -00 44 63 04 00 1a 1f 07 04 0b 00 46 62 04 0b 37 13 00 00 24 66 18 01 04 00 -63 32 00 32 00 32 00 52 68 6f 64 65 73 2e 2e 31 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rhodes..12 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1a 04 00 08 0c 00 41 59 08 06 1a 15 0c 08 0c 4e 40 62 24 0b 1a 04 00 08 0c -00 40 63 04 00 1a 1f 07 04 0b 00 40 62 04 0b 37 13 00 00 24 66 18 01 04 00 -63 32 00 32 00 32 00 52 68 6f 64 65 73 2e 2e 31 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rhodes..13 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 03 02 02 0d 00 44 3d 22 1b 1f 0d 07 06 0d 32 46 45 1f 13 1f 06 04 07 0d -00 45 36 04 03 1f 0f 05 07 0d 00 45 5f 04 03 03 13 00 00 24 66 18 01 04 00 -63 32 00 32 00 32 00 52 68 6f 64 65 73 2e 2e 31 33 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rhodes..13 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 03 02 02 0d 00 41 3d 22 1b 1f 0d 07 06 0d 32 41 45 1f 13 1f 06 04 07 0d -00 41 36 04 03 1f 0f 05 07 0d 00 40 5f 04 03 03 13 00 00 24 66 18 01 04 00 -63 32 00 32 00 32 00 52 68 6f 64 65 73 2e 2e 31 33 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SkoolPiano -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank A, voice 7 -1d 01 04 03 00 1a 01 48 04 0d 16 01 03 04 0c 63 04 4e 0d 13 18 04 03 03 00 -56 01 44 16 18 1a 07 03 06 0d 00 01 61 04 13 3a 23 00 00 00 02 0c 02 04 00 -63 32 00 00 00 32 00 53 6b 6f 6f 6c 50 69 61 6e 6f 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SpacePiano -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 06 02 07 0d 00 05 3a 3a 13 1b 19 03 08 0b 00 45 63 2b 13 16 06 04 0c 0d -00 44 62 04 0b 15 09 04 07 00 00 45 61 04 13 2c 19 00 00 51 66 18 04 04 00 -28 32 00 00 00 32 00 53 70 61 63 65 50 69 61 6e 6f 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SquareFlat -** Description: a buzzy electric piano -** Controls: KV -** Source: GLIB (Michael Kesti and others) -1f 1f 00 0e 0f 00 03 5c 04 06 1f 0e 03 0b 0e 43 03 55 04 13 1f 12 06 08 0e -00 03 58 04 00 1f 12 08 08 0a 00 03 63 04 03 34 14 00 00 00 62 18 01 04 00 -63 32 00 32 00 32 00 53 71 75 61 72 65 46 6c 61 74 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sus Piano -** Description: Grand 2 with infinitely long sustain -** Controls: KV -** Source: Art Hitzeman -1f 0e 03 03 09 29 07 4c 04 00 16 04 01 03 0d 63 02 4c 09 16 1f 10 02 03 0a -63 02 4a 1c 15 17 04 00 05 0f 00 03 63 04 16 3a 1f 08 20 02 02 18 02 04 00 -28 63 00 00 00 32 00 53 75 73 20 50 69 61 6e 6f 20 63 63 63 32 32 32 00 00 -00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Thump Pno -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank A, voice 8 -1f 11 0b 0f 00 00 03 41 05 16 1f 0b 04 04 0f 55 02 55 04 16 1f 09 04 09 0e -3f 02 45 10 15 1f 09 07 07 0c 00 03 63 04 08 52 1d 13 00 00 52 0c 02 04 00 -63 16 00 00 00 32 00 54 68 75 6d 70 20 50 6e 6f 20 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Toy Piano -** Controls: KV -** Source: Yamaha DX11 factory preset, bank B, voice 24 -1f 0f 0a 07 0c 27 02 50 0a 00 1f 0e 0a 09 0a 1a 02 4f 15 06 1d 10 0e 07 0e -00 05 54 10 08 1d 10 0a 08 0a 00 01 60 08 0e 14 1a 00 00 00 62 24 02 04 00 -28 32 00 00 00 32 00 54 6f 79 20 50 69 61 6e 6f 20 63 63 63 32 32 32 00 07 -00 07 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Toy Piano -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0f 0d 07 0c 27 02 50 0a 00 1f 0e 0a 09 0d 1a 02 4f 15 06 1d 10 0e 07 0e -00 05 54 10 08 1d 10 0d 08 0d 00 01 60 08 0e 14 1a 00 00 00 62 24 02 04 00 -28 32 00 00 00 32 00 54 6f 79 20 50 69 61 6e 6f 20 63 63 63 32 32 32 00 07 -00 07 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Upright * -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 14 0a 0f 00 00 02 5e 0c 1b 17 0b 0a 0b 00 58 03 4e 0a 1c 1b 0a 10 01 00 -5e 01 50 00 0b 16 08 0a 06 00 1f 02 63 05 13 03 19 19 3c 00 42 05 02 04 00 -28 63 00 00 00 32 00 55 70 72 69 67 68 74 20 20 2a 63 63 63 32 32 32 08 7b -00 00 00 14 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Upright -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank B, voice 6 -16 1d 12 07 0c 00 42 42 07 04 1c 0e 03 05 0f 14 43 4f 04 16 1b 13 01 02 0f -63 45 39 19 18 19 07 04 06 05 0a 42 63 04 13 1a 1e 00 06 02 42 18 02 04 00 -28 32 00 00 00 32 00 55 70 72 69 67 68 74 20 20 20 63 63 63 32 32 32 0b 02 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Upright -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -16 1d 12 07 0c 00 42 42 07 04 1c 0e 03 05 0f 14 43 4f 04 16 1b 13 01 02 0f -63 45 39 19 18 19 07 04 06 05 0d 42 63 04 13 1a 1e 00 06 02 42 18 02 04 00 -28 32 00 00 00 32 00 55 70 72 69 67 68 74 20 20 20 63 63 63 32 32 32 0b 02 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: UprightBas -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -07 01 00 08 0d 16 02 4c 00 10 1f 08 05 07 0d 00 03 55 00 0e 1f 1c 03 07 0e -13 02 50 00 10 1f 0e 05 06 0d 00 03 63 00 0b 3a 1b 0f 0a 00 52 0c 04 05 00 -63 4b 00 12 00 32 00 55 70 72 69 67 68 74 42 61 73 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Uprt piano -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank A, voice 2 -13 02 01 04 0c 48 04 41 10 19 13 02 01 04 0c 45 03 59 04 10 13 02 01 04 0c -48 03 4a 10 1d 13 02 01 04 0c 00 05 63 04 1b 3a 23 00 00 00 12 18 04 04 00 -63 32 00 00 00 32 00 55 70 72 74 20 70 69 61 6e 6f 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: WiredPiano -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 00 04 03 09 1a 01 4a 04 1d 17 07 03 04 0b 0a 04 45 0d 13 19 05 03 03 0a -41 02 46 22 18 1a 06 03 06 0b 00 02 61 04 13 3a 23 00 00 00 02 0c 02 04 00 -63 32 00 00 00 32 00 57 69 72 65 64 50 69 61 6e 6f 63 63 63 32 32 32 10 00 -00 00 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Wood Piano -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank A, voice 15 -1f 0c 07 08 03 00 04 4d 04 03 1f 05 07 08 0f 00 04 50 04 0b 1f 09 00 08 00 -00 04 63 00 08 1f 09 00 08 00 00 03 63 00 0b 34 19 00 07 00 52 24 01 04 00 -63 32 00 32 00 32 00 57 6f 6f 64 20 50 69 61 6e 6f 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: britegrand -** Description: another electric piano -** Controls: KV -** Source: GLIB (Michael Kesti and others) -1d 17 02 0f 0a 07 00 4e 0a 16 15 03 00 07 0e 35 04 4e 04 16 16 0f 00 02 0f -4f 03 56 04 10 13 1d 01 03 0a 0c 05 63 04 1b 33 23 00 00 00 62 18 02 04 00 -63 32 00 32 00 32 00 62 72 69 74 65 67 72 61 6e 64 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: callipiano -** Description: an electric piano with tremolo sustain -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: GLIB (Michael Kesti and others) -1f 11 0f 0e 0a 00 03 52 0a 06 1f 01 00 0b 00 43 03 5a 04 13 1f 03 05 08 0f -00 03 5a 0a 03 1f 12 08 08 0a 00 03 63 04 03 14 1c 1d 07 00 62 18 01 04 00 -63 32 00 32 00 32 00 63 61 6c 6c 69 70 69 61 6e 6f 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: flatfunk -** Description: a percussive electric piano sound -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: GLIB (Michael Kesti and others) -1f 11 0f 0e 0a 00 04 52 13 06 1f 01 00 0b 00 43 04 5a 04 13 1f 05 05 08 0e -00 04 5a 00 03 1f 12 08 08 0a 00 04 63 04 03 10 1c 1d 10 00 62 18 01 04 00 -63 32 00 32 00 32 00 66 6c 61 74 66 75 6e 6b 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: fuzzbass -** Description: a very fuzzy bass electric piano -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: GLIB (Michael Kesti and others) -1f 05 00 0e 0a 00 03 59 00 06 1f 09 00 0b 00 43 03 4d 04 13 1f 09 05 08 0e -00 03 5c 04 03 1f 12 08 08 0a 00 03 62 04 03 3c 1c 1d 10 00 52 18 01 04 00 -63 32 00 32 00 32 00 66 75 7a 7a 62 61 73 73 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: metlmarimb -** Description: a metallic electric piano -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: GLIB (Michael Kesti and others) -1f 0e 01 0e 0c 00 03 5a 0a 06 1f 09 00 0b 00 43 03 4d 04 13 1f 09 05 08 0e -00 03 59 08 03 1f 12 08 08 0a 00 03 62 00 03 3c 1c 1d 06 00 62 18 01 04 00 -63 32 00 32 00 32 00 6d 65 74 6c 6d 61 72 69 6d 62 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: mildfilter -** Description: a variation on SquareFlat -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: GLIB (Michael Kesti and others) -1f 02 03 06 00 0e 03 54 08 1b 1f 0b 00 09 0c 00 00 3c 04 04 1f 06 00 09 01 -00 00 4b 04 03 1f 1c 04 09 0a 00 03 63 08 03 38 1e 09 04 00 62 0c 02 05 00 -63 32 00 32 00 32 00 6d 69 6c 64 66 69 6c 74 65 72 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: phaseharp -** Description: yet another electric piano -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: GLIB (Michael Kesti and others) -1f 07 00 0e 0a 00 07 62 0a 06 1f 09 00 0b 00 43 07 4d 04 13 1f 09 05 08 0e -00 01 59 08 03 1f 12 08 08 0a 00 00 62 04 03 3c 1c 1d 10 00 52 18 01 04 00 -63 32 00 32 00 32 00 70 68 61 73 65 68 61 72 70 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: pizzapiano -** Description: yet another electric piano -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: GLIB (Michael Kesti and others) -13 10 00 0e 0a 00 03 54 08 06 1f 09 00 0b 00 43 03 4d 04 13 1f 09 05 08 0e -00 03 59 08 03 1f 12 08 08 0a 00 03 62 04 03 3c 1c 1d 10 00 52 18 01 04 00 -63 32 00 32 00 32 00 70 69 7a 7a 61 70 69 61 6e 6f 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: stringback -** Description: an electric piano with interesting decay -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: GLIB (Michael Kesti and others) -06 05 00 0e 0a 00 03 52 08 06 19 02 00 0b 00 43 03 57 0a 13 1f 09 05 08 0e -00 03 59 08 03 1f 12 08 08 0a 00 03 62 04 03 3c 1c 1d 10 00 52 18 01 04 00 -63 32 00 32 00 32 00 73 74 72 69 6e 67 62 61 63 6b 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - ---Bank 17 - -* SUBCATEGORY Synthesizer1 - - -** Name: AnlgSynt.1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -05 06 07 04 0a 23 04 52 08 0b 06 03 0c 06 0d 00 05 44 10 0c 12 01 06 06 0e -00 05 63 04 05 06 06 09 06 0b 00 05 60 04 02 74 2a 00 00 00 32 0c 02 04 00 -28 02 00 00 00 32 00 41 6e 6c 67 53 79 6e 74 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSynt.1 -** Source: from a library of patches collected by Duane Bowker, author unknown -05 06 07 04 0a 23 00 52 08 0b 06 03 0c 06 0d 00 00 44 10 0c 12 01 06 06 0e -00 00 63 04 05 06 06 09 06 0b 00 00 60 04 02 74 2a 00 00 00 32 0c 02 04 00 -28 02 00 00 00 32 00 41 6e 6c 67 53 79 6e 74 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSynt.2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 02 07 0c 04 5c 06 56 04 03 0f 03 03 08 0e 00 04 5f 04 06 1f 1f 00 0f 0f -00 06 5f 04 03 1f 12 01 09 0e 00 05 5f 04 03 7c 2a 00 00 00 32 00 02 04 00 -28 02 00 00 00 32 00 41 6e 6c 67 53 79 6e 74 2e 32 63 63 63 32 32 32 00 20 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSynt.2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 02 07 0c 04 5c 01 56 04 03 0f 03 03 08 0e 00 01 5f 04 06 1f 1f 00 0f 0f -00 00 5f 04 03 1f 12 01 09 0e 00 00 5f 04 03 7c 2a 00 00 00 32 00 02 04 00 -28 02 00 00 00 32 00 41 6e 6c 67 53 79 6e 74 2e 32 63 63 63 32 32 32 00 20 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSynt.3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 02 07 0c 04 5c 03 59 04 03 0f 03 03 08 0e 00 05 63 04 06 1f 1f 00 0f 0f -00 07 63 04 03 1f 12 01 09 0e 00 06 5f 04 03 74 2a 00 00 00 32 0c 02 04 00 -28 02 00 00 00 32 00 41 6e 6c 67 53 79 6e 74 2e 33 63 63 63 32 32 32 00 10 -00 10 00 20 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSynt.3 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 02 07 0c 04 5c 01 59 04 03 0f 03 03 08 0e 00 02 63 04 06 1f 1f 00 0f 0f -00 00 63 04 03 1f 12 01 09 0e 00 00 5f 04 03 74 2a 00 00 00 32 0c 02 04 00 -28 02 00 00 00 32 00 41 6e 6c 67 53 79 6e 74 2e 33 63 63 63 32 32 32 00 10 -00 10 00 20 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSynt.4 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 09 07 09 0a 5c 04 51 08 05 12 04 03 09 0c 00 05 51 08 00 1f 12 07 09 0e -00 05 63 04 05 1b 09 0c 09 0a 00 06 54 04 00 7c 2a 00 00 00 42 0c 02 04 00 -28 02 00 00 00 32 00 41 6e 6c 67 53 79 6e 74 2e 34 63 63 63 32 32 32 00 10 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSynt.4 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -12 09 07 09 0a 5c 01 51 08 05 12 04 03 09 0c 00 01 51 08 00 1f 12 07 09 0e -00 00 63 04 05 1b 09 0c 09 0a 00 00 54 04 00 7c 2a 00 00 00 42 0c 02 04 00 -28 02 00 00 00 32 00 41 6e 6c 67 53 79 6e 74 2e 34 63 63 63 32 32 32 00 10 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSynt.5 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 0f 0f 09 0d 00 04 52 08 02 1e 04 06 0c 09 00 06 4d 0a 03 1f 09 07 09 0e -00 05 61 04 04 1e 09 07 0a 0e 00 06 60 04 03 34 23 00 02 00 32 0c 02 04 00 -63 63 00 00 00 32 00 41 6e 6c 67 53 79 6e 74 2e 35 63 63 63 32 32 32 00 00 -00 00 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSynt.5 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 0f 0f 09 0d 00 01 52 08 02 1e 04 06 0c 09 00 01 4d 0a 03 1f 09 07 09 0e -00 00 61 04 04 1e 09 07 0a 0e 00 00 60 04 03 34 23 00 02 00 32 0c 02 04 00 -63 63 00 00 00 32 00 41 6e 6c 67 53 79 6e 74 2e 35 63 63 63 32 32 32 00 00 -00 00 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSynt.6 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 02 07 0c 04 5c 05 53 04 03 1f 0f 03 08 0f 00 04 54 04 05 1f 1f 00 0f 0f -00 06 63 04 03 1f 09 01 09 09 00 05 5f 04 01 6c 23 00 00 00 32 0c 02 04 00 -28 02 00 00 00 32 00 41 6e 6c 67 53 79 6e 74 2e 36 63 63 63 32 32 32 00 00 -00 20 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSynt.6 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 02 07 0c 04 5c 02 53 04 03 1f 0f 03 08 0f 00 01 54 04 05 1f 1f 00 0f 0f -00 00 63 04 03 1f 09 01 09 09 00 00 5f 04 01 6c 23 00 00 00 32 0c 02 04 00 -28 02 00 00 00 32 00 41 6e 6c 67 53 79 6e 74 2e 36 63 63 63 32 32 32 00 00 -00 20 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSynt.7 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 06 03 08 05 5c 05 5d 04 00 1f 0a 06 08 07 00 05 52 04 06 18 07 04 08 05 -00 05 63 04 00 1f 15 06 08 0e 00 46 62 04 08 2c 20 00 00 47 36 0c 02 04 00 -28 02 00 00 00 32 00 41 6e 6c 67 53 79 6e 74 2e 37 63 63 63 32 32 32 00 00 -00 00 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSynt.7 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 06 03 08 05 5c 02 5d 04 00 1f 0a 06 08 07 00 01 52 04 06 18 07 04 08 05 -00 00 63 04 00 1f 15 06 08 0e 00 40 62 04 08 2c 20 00 00 47 36 0c 02 04 00 -28 02 00 00 00 32 00 41 6e 6c 67 53 79 6e 74 2e 37 63 63 63 32 32 32 00 00 -00 00 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSynt.8 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 0c 07 09 07 00 04 58 08 06 12 0c 07 09 0a 00 06 5b 04 03 1f 16 00 09 0d -00 06 56 04 06 1f 16 00 09 0d 00 06 62 08 03 2c 20 00 00 00 32 0c 02 04 00 -28 02 00 00 00 32 00 41 6e 6c 67 53 79 6e 74 2e 38 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSynt.8 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -12 0c 07 09 07 00 01 58 08 06 12 0c 07 09 0a 00 01 5b 04 03 1f 16 00 09 0d -00 00 56 04 06 1f 16 00 09 0d 00 00 62 08 03 2c 20 00 00 00 32 0c 02 04 00 -28 02 00 00 00 32 00 41 6e 6c 67 53 79 6e 74 2e 38 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSynt.9 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 0c 09 03 0c 00 03 5a 08 06 0f 0c 09 04 0c 00 04 59 04 02 1f 15 05 03 0d -00 05 56 04 0e 1f 15 05 05 0d 00 47 62 04 0e 2c 26 21 11 00 22 0c 02 04 00 -28 02 00 00 00 32 00 41 6e 6c 67 53 79 6e 74 2e 39 63 63 63 32 32 32 00 40 -00 20 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSynt.9 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 0c 09 03 0c 00 01 5a 08 06 0f 0c 09 04 0c 00 01 59 04 02 1f 15 05 03 0d -00 00 56 04 0e 1f 15 05 05 0d 00 40 62 04 0e 2c 26 21 11 00 22 0c 02 04 00 -28 02 00 00 00 32 00 41 6e 6c 67 53 79 6e 74 2e 39 63 63 63 32 32 32 00 40 -00 20 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSynt10 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 0d 12 03 06 00 03 52 04 00 0f 04 12 09 0c 00 06 4a 10 0a 0f 15 06 03 0e -00 05 63 04 08 1f 15 06 05 0d 00 45 62 04 0e 3c 26 21 20 00 52 0c 02 04 00 -28 02 00 00 00 32 00 41 6e 6c 67 53 79 6e 74 31 30 63 63 63 32 32 32 00 00 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSynt10 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 0d 12 03 06 00 01 52 04 00 0f 04 12 09 0c 00 01 4a 10 0a 0f 15 06 03 0e -00 00 63 04 08 1f 15 06 05 0d 00 40 62 04 0e 3c 26 21 20 00 52 0c 02 04 00 -28 02 00 00 00 32 00 41 6e 6c 67 53 79 6e 74 31 30 63 63 63 32 32 32 00 00 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSynt11 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -13 03 12 07 06 00 04 50 04 00 10 0d 12 07 06 00 05 56 04 02 11 06 06 08 0e -00 06 63 04 08 10 15 06 08 0e 00 06 62 04 0e 3c 26 1c 20 00 42 0c 02 04 00 -28 02 00 00 00 32 00 41 6e 6c 67 53 79 6e 74 31 31 63 63 63 32 32 32 00 00 -00 40 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSynt11 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -13 03 12 07 06 00 02 50 04 00 10 0d 12 07 06 00 01 56 04 02 11 06 06 08 0e -00 00 63 04 08 10 15 06 08 0e 00 00 62 04 0e 3c 26 1c 20 00 42 0c 02 04 00 -28 02 00 00 00 32 00 41 6e 6c 67 53 79 6e 74 31 31 63 63 63 32 32 32 00 00 -00 40 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSynt12 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 03 12 07 06 00 04 57 08 00 07 04 04 07 0d 00 04 56 0d 02 10 05 06 08 0e -00 07 63 08 08 19 04 03 07 0f 00 06 62 04 04 2c 26 21 20 00 22 0c 02 04 00 -28 02 00 00 00 32 00 41 6e 6c 67 53 79 6e 74 31 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSynt12 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -10 03 12 07 06 00 02 57 08 00 07 04 04 07 0d 00 03 56 0d 02 10 05 06 08 0e -00 00 63 08 08 19 04 03 07 0f 00 00 62 04 04 2c 26 21 20 00 22 0c 02 04 00 -28 02 00 00 00 32 00 41 6e 6c 67 53 79 6e 74 31 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSynt13 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 09 06 0a 0f 00 03 59 00 0b 1f 0c 06 0a 0b 00 04 63 00 02 1f 0c 05 0a 0b -00 04 63 00 04 1f 16 02 0a 0f 00 06 62 00 02 2d 25 00 00 00 32 18 02 04 00 -28 02 00 00 00 32 00 41 6e 6c 67 53 79 6e 74 31 33 63 63 63 32 32 32 00 00 -00 00 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSynt13 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 09 06 0a 0f 00 01 59 00 0b 1f 0c 06 0a 0b 00 00 63 00 02 1f 0c 05 0a 0b -00 00 63 00 04 1f 16 02 0a 0f 00 00 62 00 02 2d 25 00 00 00 32 18 02 04 00 -28 02 00 00 00 32 00 41 6e 6c 67 53 79 6e 74 31 33 63 63 63 32 32 32 00 00 -00 00 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSynt14 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 06 00 06 07 1b 03 58 04 09 1f 06 00 04 09 13 04 54 0d 0d 1f 07 00 07 07 -0b 05 63 08 09 1f 06 00 04 09 00 05 62 04 0d 2c 1c 00 05 00 22 0c 02 04 00 -28 02 00 00 00 32 00 41 6e 6c 67 53 79 6e 74 31 34 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSynt14 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 06 00 06 07 1b 01 58 04 09 1f 06 00 04 09 13 02 54 0d 0d 1f 07 00 07 07 -0b 00 63 08 09 1f 06 00 04 09 00 00 62 04 0d 2c 1c 00 05 00 22 0c 02 04 00 -28 02 00 00 00 32 00 41 6e 6c 67 53 79 6e 74 31 34 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSynt15 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 09 01 08 03 1b 03 63 00 09 1f 15 06 09 0f 00 05 57 04 01 1f 15 06 09 0f -00 04 63 04 01 1f 15 06 09 0f 00 06 62 00 01 2c 1c 00 05 00 22 0c 02 04 00 -28 02 00 00 00 32 00 41 6e 6c 67 53 79 6e 74 31 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AnlgSynt15 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 09 01 08 03 1b 01 63 00 09 1f 15 06 09 0f 00 01 57 04 01 1f 15 06 09 0f -00 00 63 04 01 1f 15 06 09 0f 00 00 62 00 01 2c 1c 00 05 00 22 0c 02 04 00 -28 02 00 00 00 32 00 41 6e 6c 67 53 79 6e 74 31 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ariesynth1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 08 01 05 09 00 03 55 00 03 1f 03 00 05 06 2d 03 59 0d 0b 1f 08 00 04 0c -43 05 63 13 0b 1c 06 04 04 07 00 05 63 08 0b 6d 21 00 38 00 22 0c 06 04 00 -63 32 00 32 00 32 00 41 72 69 65 73 79 6e 74 68 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ariesynth1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 08 01 05 09 00 01 55 00 03 1f 03 00 05 06 2d 02 59 0d 0b 1f 08 00 04 0c -43 00 63 13 0b 1c 06 04 04 07 00 00 63 08 0b 6d 21 00 38 00 22 0c 06 04 00 -63 32 00 32 00 32 00 41 72 69 65 73 79 6e 74 68 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ariesynth2 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 08 01 05 09 00 03 53 00 03 1f 03 00 05 06 2d 05 52 00 13 1f 08 00 04 0c -43 05 55 00 0b 1c 06 04 05 07 00 07 63 04 0b 7a 21 00 38 00 22 0c 06 04 00 -63 32 00 32 00 32 00 41 72 69 65 73 79 6e 74 68 32 63 63 63 32 32 32 00 00 -00 10 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ariesynth2 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 08 01 05 09 00 01 53 00 03 1f 03 00 05 06 2d 01 52 00 13 1f 08 00 04 0c -43 00 55 00 0b 1c 06 04 05 07 00 00 63 04 0b 7a 21 00 38 00 22 0c 06 04 00 -63 32 00 32 00 32 00 41 72 69 65 73 79 6e 74 68 32 63 63 63 32 32 32 00 00 -00 10 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: A.R.P. * -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0d 08 06 0d 00 00 4c 04 03 1f 07 00 04 0c 00 00 42 04 03 1f 04 00 02 0d -00 00 42 04 03 1a 0c 00 08 0e 00 00 63 04 03 3a 21 00 00 00 52 0c 02 0d 1f -28 63 00 00 00 32 00 20 20 41 2e 52 2e 50 2e 20 2a 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ARP 2500 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1d 16 00 05 0e 0a 04 62 00 01 1f 0d 10 05 00 0e 05 3f 10 12 1f 0d 10 05 00 -0c 04 3a 0d 15 10 1f 00 0b 0f 00 0d 63 04 04 6d 14 00 36 00 22 18 04 04 01 -63 19 33 00 00 32 00 41 52 50 20 32 35 30 30 20 20 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ARP 2500 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 16 00 05 0e 0a 01 62 00 01 1f 0d 10 05 00 0e 01 3f 10 12 1f 0d 10 05 00 -0c 01 3a 0d 15 10 1f 00 0b 0f 00 00 63 04 04 6d 14 00 36 00 22 18 04 04 01 -63 19 33 00 00 32 00 41 52 50 20 32 35 30 30 20 20 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ARP 2600.1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 08 02 03 03 00 05 60 04 04 10 05 06 08 03 00 25 63 0a 03 10 05 05 08 03 -00 1d 63 0a 04 10 05 05 08 03 00 3d 63 08 03 2d 23 00 00 00 42 0c 05 04 01 -63 32 00 00 00 32 00 41 52 50 20 32 36 30 30 2e 31 63 63 63 32 32 32 00 00 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ARP 2600.1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -16 08 02 03 03 00 02 60 04 04 10 05 06 08 03 00 20 63 0a 03 10 05 05 08 03 -00 18 63 0a 04 10 05 05 08 03 00 38 63 08 03 2d 23 00 00 00 42 0c 05 04 01 -63 32 00 00 00 32 00 41 52 50 20 32 36 30 30 2e 31 63 63 63 32 32 32 00 00 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ARP 2600.2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1d 16 00 05 0e 0a 03 63 04 01 1f 0d 10 05 00 0e 05 3c 10 12 1f 0d 10 05 00 -0c 05 35 13 15 10 1f 00 0b 0f 00 05 63 04 04 7f 14 00 36 00 22 18 04 04 00 -63 19 33 00 00 32 00 41 52 50 20 32 36 30 30 2e 32 63 63 63 32 32 32 00 50 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ARP 2600.2 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 16 00 05 0e 0a 00 63 04 01 1f 0d 10 05 00 0e 00 3c 10 12 1f 0d 10 05 00 -0c 00 35 13 15 10 1f 00 0b 0f 00 00 63 04 04 7f 14 00 36 00 22 18 04 04 00 -63 19 33 00 00 32 00 41 52 50 20 32 36 30 30 2e 32 63 63 63 32 32 32 00 50 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ARP Axxe.1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 08 00 05 0f 14 04 5c 00 11 18 08 00 05 0f 14 03 5c 04 11 18 08 00 05 0f -14 06 61 00 15 18 08 00 05 0f 14 05 63 04 15 6c 22 00 0b 00 62 0c 07 0d 01 -63 63 63 32 00 32 00 41 52 50 20 41 78 78 65 2e 31 63 63 63 32 32 32 00 10 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ARP Axxe.1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -18 08 00 05 0f 14 01 5c 00 11 18 08 00 05 0f 14 01 5c 04 11 18 08 00 05 0f -14 00 61 00 15 18 08 00 05 0f 14 00 63 04 15 6c 22 00 0b 00 62 0c 07 0d 01 -63 63 63 32 00 32 00 41 52 50 20 41 78 78 65 2e 31 63 63 63 32 32 32 00 10 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ARP Axxe.2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -19 05 02 07 09 00 05 59 08 03 15 12 03 04 0d 00 04 54 08 01 18 07 05 07 0d -00 05 63 04 06 0f 04 03 07 0d 00 06 63 04 06 64 1a 00 00 00 12 0c 06 0d 02 -28 32 00 00 00 32 00 41 52 50 20 41 78 78 65 2e 32 63 63 63 32 32 32 00 00 -00 10 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ARP Axxe.2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -19 05 02 07 09 00 02 59 08 03 15 12 03 04 0d 00 02 54 08 01 18 07 05 07 0d -00 00 63 04 06 0f 04 03 07 0d 00 00 63 04 06 64 1a 00 00 00 12 0c 06 0d 02 -28 32 00 00 00 32 00 41 52 50 20 41 78 78 65 2e 32 63 63 63 32 32 32 00 00 -00 10 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ARP Omni.1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 13 00 05 0e 00 44 4e 08 02 0d 07 0e 06 06 0e 45 63 0d 04 0c 1f 00 06 0f -52 46 63 19 04 0b 1f 06 08 0f 0a 46 63 08 03 35 23 08 10 06 56 0c 07 04 00 -63 63 00 00 00 32 00 41 52 50 20 4f 6d 6e 69 2e 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ARP Omni.1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 13 00 05 0e 00 42 4e 08 02 0d 07 0e 06 06 0e 42 63 0d 04 0c 1f 00 06 0f -52 40 63 19 04 0b 1f 06 08 0f 0a 40 63 08 03 35 23 08 10 06 56 0c 07 04 00 -63 63 00 00 00 32 00 41 52 50 20 4f 6d 6e 69 2e 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ARP Omni.2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0b 03 1e 05 04 56 05 50 0d 06 0b 03 1e 05 04 23 03 4b 08 0d 0a 1f 01 08 0f -15 05 57 08 08 0a 1f 00 05 0f 25 06 5b 08 01 54 22 05 0c 00 52 0c 0c 04 00 -63 32 00 00 00 32 00 41 52 50 20 4f 6d 6e 69 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ARP Omni.2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0b 03 1e 05 04 56 01 50 0d 06 0b 03 1e 05 04 23 01 4b 08 0d 0a 1f 01 08 0f -15 00 57 08 08 0a 1f 00 05 0f 25 00 5b 08 01 54 22 05 0c 00 52 0c 0c 04 00 -63 32 00 00 00 32 00 41 52 50 20 4f 6d 6e 69 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Axel F -** Controls: KV, MW (LFO pitch) -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -19 05 01 04 03 2c 00 48 04 0b 11 01 05 04 0c 3c 02 42 08 0b 19 04 05 05 0a -20 01 48 1c 0c 11 13 05 04 0f 00 02 63 04 13 3a 1f 00 04 00 42 18 02 04 00 -28 32 00 00 00 32 00 41 78 65 6c 20 46 20 20 20 20 63 63 63 32 32 32 00 00 -00 40 00 00 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Axel F...1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 0d 02 06 0e 00 04 58 04 00 15 04 14 06 0c 00 05 5f 04 0a 13 15 03 06 0e -00 05 63 04 08 15 15 06 06 0d 00 05 62 04 0e 34 26 21 20 47 12 0c 00 04 00 -63 32 00 32 00 32 00 41 78 65 6c 20 46 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Axel F...1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -15 0d 02 06 0e 00 01 58 04 00 15 04 14 06 0c 00 01 5f 04 0a 13 15 03 06 0e -00 00 63 04 08 15 15 06 06 0d 00 00 62 04 0e 34 26 21 20 47 12 0c 00 04 00 -63 32 00 32 00 32 00 41 78 65 6c 20 46 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Axel F...2 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 15 02 06 0e 00 03 5a 04 08 15 04 14 06 0c 00 04 5f 04 0a 15 15 03 06 0e -00 06 63 04 08 15 15 06 06 0d 00 46 62 04 0e 2c 26 21 20 2b 16 0c 00 04 00 -63 32 00 32 00 32 00 41 78 65 6c 20 46 2e 2e 2e 32 63 63 63 32 32 32 00 10 -00 20 00 30 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Axel F...2 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -18 15 02 06 0e 00 01 5a 04 08 15 04 14 06 0c 00 01 5f 04 0a 15 15 03 06 0e -00 00 63 04 08 15 15 06 06 0d 00 40 62 04 0e 2c 26 21 20 2b 16 0c 00 04 00 -63 32 00 32 00 32 00 41 78 65 6c 20 46 2e 2e 2e 32 63 63 63 32 32 32 00 10 -00 20 00 30 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BadSample* -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 15 00 01 00 00 00 43 3d 00 14 1f 00 01 0d 00 00 4a 0a 00 1f 0b 00 01 00 -00 00 46 13 06 14 1b 0b 07 0f 00 01 63 04 0b 00 63 00 17 63 7f 0c 02 04 00 -28 63 00 00 00 32 00 42 61 64 53 61 6d 70 6c 65 2a 63 63 63 32 32 32 09 40 -00 00 00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Beta.....1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -05 09 00 07 0d 20 45 54 08 0a 0d 08 01 05 0d 00 46 4e 00 0a 1c 00 00 04 0f -00 46 2f 19 04 10 05 00 05 0f 00 45 54 08 0c 3a 23 00 05 30 62 00 05 04 00 -63 32 00 00 00 32 00 42 65 74 61 2e 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Beta.....2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -09 09 00 07 0d 20 43 58 08 0a 0d 03 00 05 07 00 44 56 04 02 1c 00 00 04 0f -00 46 45 0d 04 10 04 00 05 07 00 45 56 08 04 2b 23 00 05 30 62 00 05 04 00 -63 32 00 00 00 32 00 42 65 74 61 2e 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BigWash -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 00 0e 05 00 18 02 54 13 10 1f 19 08 0a 0c 00 03 5c 13 0c 1f 05 00 02 00 -5e 04 52 24 11 1f 10 08 07 0e 00 04 63 0d 0b 02 1a 16 03 00 52 00 02 04 00 -63 28 00 1e 00 32 00 42 69 67 57 61 73 68 20 20 20 63 63 63 32 32 32 00 20 -20 30 10 30 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Chroma...1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0f 1f 07 09 00 03 44 2a 03 15 16 03 04 0d 00 06 55 0d 01 18 19 07 07 0d -00 03 63 04 06 0f 04 03 07 0d 00 05 63 04 06 64 1a 00 00 00 12 0c 04 04 00 -28 32 00 00 00 32 00 43 68 72 6f 6d 61 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Chroma...2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 13 00 09 0a 00 02 5c 08 04 1f 13 1f 01 07 00 03 55 10 03 13 15 06 09 0d -00 06 59 04 03 1f 09 0b 06 0c 00 04 63 04 0b 2c 21 17 02 0d 32 18 04 04 00 -28 32 00 00 00 32 00 43 68 72 6f 6d 61 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Chroma...3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 06 03 08 0f 00 04 54 04 13 1f 0a 00 09 07 00 04 41 2a 1b 15 06 03 09 0f -00 04 5c 04 13 1f 0a 00 09 0d 00 05 63 04 0b 34 23 00 00 00 12 18 04 04 00 -28 32 00 00 00 32 00 43 68 72 6f 6d 61 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Crazy 6502 -** Controls: KV, MW (LFO pitch), MW (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 09 04 07 0f 00 43 48 0a 08 10 09 04 07 0f 00 44 63 0d 0e 10 09 04 07 0f -00 45 63 04 08 0f 03 01 07 0f 00 45 63 04 08 05 2c 00 63 63 37 24 04 04 00 -63 01 63 00 00 32 00 43 72 61 7a 79 20 36 35 30 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Crazy 6502 -** Controls: MW (LFO pitch), MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -10 09 04 07 0f 00 40 48 0a 08 10 09 04 07 0f 00 40 63 0d 0e 10 09 04 07 0f -00 40 63 04 08 0f 03 01 07 0f 00 40 63 04 08 05 2c 00 63 63 37 24 04 04 00 -63 01 63 00 00 32 00 43 72 61 7a 79 20 36 35 30 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: DigiAnnie -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank C, voice 32 -1f 0c 05 05 0c 17 02 53 0a 08 1f 11 02 05 0d 1e 02 45 04 00 1f 13 0e 05 0d -32 01 3f 1f 06 1f 1f 08 06 0f 00 02 61 04 16 39 1d 00 00 00 52 0c 04 04 00 -63 32 00 00 00 32 00 44 69 67 69 41 6e 6e 69 65 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: <> DS 1 <> -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0d 1f 00 02 0f 00 05 58 04 1e 17 1f 01 02 0f 0a 04 49 0d 03 19 1f 00 03 0f -08 06 63 00 16 12 1f 00 01 0f 14 06 63 00 1b 34 00 00 00 00 02 0c 07 04 00 -63 63 00 32 00 32 00 3c 3e 20 44 53 20 31 20 3c 3e 63 63 63 32 32 32 00 00 -00 30 00 00 00 20 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: <> DS 1 <> -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -0d 1f 00 02 0f 00 02 58 04 1e 17 1f 01 02 0f 0a 01 49 0d 03 19 1f 00 03 0f -08 00 63 00 16 12 1f 00 01 0f 14 00 63 00 1b 34 00 00 00 00 02 0c 07 04 00 -63 63 00 32 00 32 00 3c 3e 20 44 53 20 31 20 3c 3e 63 63 63 32 32 32 00 00 -00 30 00 00 00 20 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: < DS 11 > -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0d 1f 00 02 0f 00 04 4f 04 1e 17 1f 01 02 0f 0a 04 3b 04 03 19 1f 00 03 0f -08 04 63 00 16 12 1f 00 01 0f 14 07 63 10 1b 34 20 00 0a 00 02 0c 07 04 00 -63 63 00 32 00 32 00 3c 20 44 53 20 31 31 20 3e 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: < DS 11 > -** Source: from a library of patches collected by Duane Bowker, author unknown -0d 1f 00 02 0f 00 00 4f 04 1e 17 1f 01 02 0f 0a 00 3b 04 03 19 1f 00 03 0f -08 00 63 00 16 12 1f 00 01 0f 14 00 63 10 1b 34 20 00 0a 00 02 0c 07 04 00 -63 63 00 32 00 32 00 3c 20 44 53 20 31 31 20 3e 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: EML Synth1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 00 01 04 07 00 05 56 04 0e 0f 07 01 05 0b 00 06 52 04 08 13 07 00 06 0e -00 04 60 00 03 13 05 00 06 0e 00 06 62 04 0b 7c 19 00 0c 00 42 18 07 04 00 -63 32 63 32 00 32 00 45 4d 4c 20 53 79 6e 74 68 31 63 63 63 32 32 32 00 00 -00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: EML Synth1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -15 00 01 04 07 00 02 56 04 0e 0f 07 01 05 0b 00 02 52 04 08 13 07 00 06 0e -00 00 60 00 03 13 05 00 06 0e 00 00 62 04 0b 7c 19 00 0c 00 42 18 07 04 00 -63 32 63 32 00 32 00 45 4d 4c 20 53 79 6e 74 68 31 63 63 63 32 32 32 00 00 -00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: EML Synth2 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 00 01 04 07 00 03 54 04 0e 0f 07 01 05 0b 00 02 5b 08 10 13 07 00 06 0e -00 05 60 00 03 13 05 00 06 0e 00 05 62 08 0b 7c 19 00 0c 00 42 18 07 04 00 -63 32 63 32 00 32 00 45 4d 4c 20 53 79 6e 74 68 32 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: EML Synth2 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -15 00 01 04 07 00 02 54 04 0e 0f 07 01 05 0b 00 01 5b 08 10 13 07 00 06 0e -00 00 60 00 03 13 05 00 06 0e 00 00 62 08 0b 7c 19 00 0c 00 42 18 07 04 00 -63 32 63 32 00 32 00 45 4d 4c 20 53 79 6e 74 68 32 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Explorer.1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 09 07 07 0d 00 02 5a 00 09 0f 00 03 06 0d 00 03 63 04 05 15 09 07 07 0d -00 07 63 04 0a 0f 00 03 06 0d 00 06 63 08 09 7e 23 30 00 00 22 18 04 04 00 -63 01 63 00 00 32 00 45 78 70 6c 6f 72 65 72 2e 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Explorer.1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -15 09 07 07 0d 00 02 5a 00 09 0f 00 03 06 0d 00 00 63 04 05 15 09 07 07 0d -00 00 63 04 0a 0f 00 03 06 0d 00 00 63 08 09 7e 23 30 00 00 22 18 04 04 00 -63 01 63 00 00 32 00 45 78 70 6c 6f 72 65 72 2e 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Explorer.2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 09 07 07 0d 00 05 63 19 09 0f 00 03 06 0d 00 04 52 08 00 15 09 07 07 0d -00 06 41 00 0e 13 00 03 06 0d 00 05 63 04 0b 77 17 00 0b 00 22 18 04 04 00 -63 01 63 00 00 32 00 45 78 70 6c 6f 72 65 72 2e 32 63 63 63 32 32 32 00 00 -00 10 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Explorer.2 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -15 09 07 07 0d 00 00 63 19 09 0f 00 03 06 0d 00 00 52 08 00 15 09 07 07 0d -00 00 41 00 0e 13 00 03 06 0d 00 00 63 04 0b 77 17 00 0b 00 22 18 04 04 00 -63 01 63 00 00 32 00 45 78 70 6c 6f 72 65 72 2e 32 63 63 63 32 32 32 00 00 -00 10 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Explorer.3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 09 07 07 0d 00 02 51 08 0c 0f 00 04 06 0d 00 04 63 08 0a 15 09 07 07 0d -00 04 63 04 0d 0f 00 04 06 0d 00 06 63 0d 08 7e 17 00 0b 00 22 18 04 04 00 -63 01 63 00 00 32 00 45 78 70 6c 6f 72 65 72 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Explorer.3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -15 09 07 07 0d 00 02 51 08 0c 0f 00 04 06 0d 00 00 63 08 0a 15 09 07 07 0d -00 00 63 04 0d 0f 00 04 06 0d 00 00 63 0d 08 7e 17 00 0b 00 22 18 04 04 00 -63 01 63 00 00 32 00 45 78 70 6c 6f 72 65 72 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: FMMelodica -** Controls: KV, MW (LFO pitch), MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 0c 00 0a 0d 20 44 50 0a 09 11 0c 00 0a 0d 20 44 50 0a 03 11 05 00 0a 0f -00 43 63 04 01 11 05 00 09 0f 00 43 63 04 0b 44 21 15 03 05 5e 11 04 04 00 -63 1e 55 00 00 32 00 46 4d 4d 65 6c 6f 64 69 63 61 63 63 63 32 32 32 00 40 -00 40 00 28 00 28 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Gamma....1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -09 06 00 02 0e 14 03 5c 04 06 08 1f 00 02 0f 00 44 47 08 13 06 1f 00 04 0f -4e 04 3c 0d 03 10 06 00 05 0e 00 06 5f 08 0b 72 21 1d 0e 1a 56 0c 08 04 00 -63 32 00 00 00 32 00 47 61 6d 6d 61 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Gamma....2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -09 06 00 02 0e 14 05 52 08 06 0c 1f 00 02 0f 00 45 3b 08 13 0a 1f 00 04 0f -4e 05 4c 10 03 10 06 00 05 0e 00 06 5f 04 0b 6a 21 1d 0e 1a 56 0c 08 04 01 -63 32 00 00 00 32 00 47 61 6d 6d 61 2e 2e 2e 2e 32 63 63 63 32 32 32 00 20 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - ---Bank 18 - -** Name: GleeSynth -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0d 03 09 06 0e 0a 03 52 08 14 0c 04 07 06 0c 00 04 42 19 08 15 04 02 05 0e -00 05 63 08 06 0b 15 0c 06 0f 00 45 5e 19 08 2c 26 21 08 47 26 00 02 04 00 -28 02 00 00 00 32 00 47 6c 65 65 53 79 6e 74 68 20 63 63 63 32 32 32 00 10 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: GleeSynth -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0d 03 09 06 0e 0a 01 52 08 14 0c 04 07 06 0c 00 01 42 19 08 15 04 02 05 0e -00 00 63 08 06 0b 15 0c 06 0f 00 40 5e 19 08 2c 26 21 08 47 26 00 02 04 00 -28 02 00 00 00 32 00 47 6c 65 65 53 79 6e 74 68 20 63 63 63 32 32 32 00 10 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: HardSync -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -11 00 00 05 0c 00 00 44 05 06 1b 05 00 0a 0e 00 01 4f 0a 0a 18 07 00 08 0e -3b 02 43 20 09 15 0a 00 0b 0f 00 01 63 04 0b 72 1d 08 00 00 52 05 04 04 01 -63 41 00 00 00 32 00 48 61 72 64 53 79 6e 63 20 20 63 63 63 32 32 32 00 51 -00 50 00 71 00 48 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Helix....1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -08 1f 00 03 0f 63 04 58 08 03 08 0e 00 05 01 00 04 63 04 02 07 04 0c 06 07 -3c 05 61 0d 0c 08 1f 01 05 0f 00 07 62 00 13 75 22 00 14 00 32 0c 04 04 00 -63 01 63 00 00 32 00 48 65 6c 69 78 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Helix....1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -08 1f 00 03 0f 63 02 58 08 03 08 0e 00 05 01 00 00 63 04 02 07 04 0c 06 07 -3c 00 61 0d 0c 08 1f 01 05 0f 00 00 62 00 13 75 22 00 14 00 32 0c 04 04 00 -63 01 63 00 00 32 00 48 65 6c 69 78 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Helix....2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -08 1f 00 03 0f 63 05 5f 08 03 08 07 00 05 08 00 06 53 00 02 07 04 0c 06 07 -3c 05 61 0d 0c 08 1f 01 05 0f 00 06 63 04 13 6c 22 00 14 00 32 0c 04 04 00 -63 01 63 00 00 32 00 48 65 6c 69 78 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Helix....2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -08 1f 00 03 0f 63 02 5f 08 03 08 07 00 05 08 00 01 53 00 02 07 04 0c 06 07 -3c 00 61 0d 0c 08 1f 01 05 0f 00 00 63 04 13 6c 22 00 14 00 32 0c 04 04 00 -63 01 63 00 00 32 00 48 65 6c 69 78 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: \ ISAO \ -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 17 1b 01 0e 00 42 39 04 0b 0f 00 03 05 0d 00 03 2e 08 0b 0f 00 03 05 0d -00 45 63 08 0b 10 00 03 05 0d 00 06 63 04 0b 2c 1b 00 3c 63 26 18 02 04 01 -63 32 00 32 00 32 00 20 5c 20 49 53 41 4f 20 5c 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: \ ISAO \ -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -18 17 1b 01 0e 00 40 39 04 0b 0f 00 03 05 0d 00 00 2e 08 0b 0f 00 03 05 0d -00 40 63 08 0b 10 00 03 05 0d 00 00 63 04 0b 2c 1b 00 3c 63 26 18 02 04 01 -63 32 00 32 00 32 00 20 5c 20 49 53 41 4f 20 5c 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: \ ISAO \ -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -18 17 1b 00 0e 00 40 39 04 0b 0f 00 03 05 0d 00 00 2e 08 0b 0f 00 03 05 0d -00 40 63 08 0b 10 00 03 05 0d 00 00 63 04 0b 2c 1b 00 3c 63 26 18 02 04 01 -63 32 00 32 00 32 00 20 5c 20 49 53 41 4f 20 5c 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: JP 4.....1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -17 05 01 05 08 00 04 51 0a 03 18 09 00 05 0b 2d 04 60 00 13 14 08 00 03 0c -43 05 63 04 1b 18 08 04 04 07 00 06 63 04 13 7c 21 00 38 00 22 0c 06 04 00 -63 32 00 32 00 32 00 4a 50 20 34 2e 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: JP 4.....1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -17 05 01 05 08 00 01 51 0a 03 18 09 00 05 0b 2d 01 60 00 13 14 08 00 03 0c -43 00 63 04 1b 18 08 04 04 07 00 00 63 04 13 7c 21 00 38 00 22 0c 06 04 00 -63 32 00 32 00 32 00 4a 50 20 34 2e 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: JP 4.....2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 08 03 05 0f 00 03 54 04 06 16 0a 0a 05 0d 00 05 54 0d 03 16 09 01 06 0f -00 07 63 04 00 16 15 01 06 0d 00 07 59 00 05 3c 25 49 0f 00 32 0c 0c 04 00 -63 00 00 00 00 32 00 4a 50 20 34 2e 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: JP 4.....2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -16 08 03 05 0f 00 01 54 04 06 16 0a 0a 05 0d 00 03 54 0d 03 16 09 01 06 0f -00 04 63 04 00 16 15 01 06 0d 00 00 59 00 05 3c 25 49 0f 00 32 0c 0c 04 00 -63 00 00 00 00 32 00 4a 50 20 34 2e 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Juno Juice -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -06 0a 05 03 0f 00 02 4e 03 02 1f 0e 00 03 0f 00 01 50 05 01 15 0e 00 07 0f -00 02 63 03 01 16 0e 00 07 0f 00 02 63 05 06 3c 20 00 00 00 52 05 02 04 00 -63 32 00 00 00 32 00 4a 75 6e 6f 20 4a 75 69 63 65 63 63 63 32 32 32 00 06 -00 31 00 56 00 11 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Juno Who? -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0a 00 03 0f 00 01 4a 03 02 1f 0e 00 03 0f 00 01 50 05 01 15 0e 00 07 0f -00 02 63 03 01 16 0e 00 07 0f 00 02 63 05 06 3c 20 00 00 00 52 05 02 04 00 -63 32 00 00 00 32 00 4a 75 6e 6f 20 57 68 6f 3f 20 63 63 63 32 32 32 00 26 -00 31 00 56 00 11 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Jupiter * -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 00 00 04 0f 35 00 3d 22 02 1f 00 00 04 0f 19 00 41 0d 05 1f 00 00 04 0f -3b 00 41 18 06 0c 0a 00 05 0e 00 40 63 0d 0c 01 1e 0c 0f 05 56 00 02 04 00 -28 63 00 00 00 32 00 4a 75 70 69 74 65 72 20 20 2a 63 63 63 32 32 32 00 0f -00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: \ Kitaro.1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 1f 04 07 0f 00 02 4f 00 06 17 0c 06 09 0f 00 01 5a 00 16 14 1f 04 09 0f -00 06 63 04 06 18 1f 00 0d 0f 00 06 56 04 03 7c 29 00 05 00 22 18 05 04 00 -63 63 63 00 00 32 00 5c 20 4b 69 74 61 72 6f 2e 31 63 63 63 32 32 32 00 00 -00 30 00 30 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: \ Kitaro.1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 1f 04 07 0f 00 02 4f 00 06 17 0c 06 09 0f 00 01 5a 00 16 14 1f 04 09 0f -00 00 63 04 06 18 1f 00 0d 0f 00 00 56 04 03 7c 29 00 05 00 22 18 05 04 00 -63 63 63 00 00 32 00 5c 20 4b 69 74 61 72 6f 2e 31 63 63 63 32 32 32 00 00 -00 30 00 30 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: \ Kitaro.2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0f 09 09 0f 00 3c 52 0a 02 08 04 03 09 0f 00 1d 55 04 02 1f 0f 09 09 0f -00 1d 63 04 04 1f 0f 09 09 0f 00 3e 63 04 04 64 1f 1c 14 00 32 18 02 04 00 -63 32 00 00 00 32 00 5c 20 4b 69 74 61 72 6f 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: \ Kitaro.2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0f 09 09 0f 00 3a 52 0a 02 08 04 03 09 0f 00 1a 55 04 02 1f 0f 09 09 0f -00 18 63 04 04 1f 0f 09 09 0f 00 38 63 04 04 64 1f 1c 14 00 32 18 02 04 00 -63 32 00 00 00 32 00 5c 20 4b 69 74 61 72 6f 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Korg 770.1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 1f 07 02 0f 47 04 35 04 05 0a 1f 02 02 0f 00 45 43 04 02 0a 1f 02 04 0f -4e 05 55 04 0c 0a 1f 02 05 0f 00 06 60 08 1b 63 21 1d 0e 1a 56 0c 08 04 0a -63 32 00 00 00 32 00 4b 6f 72 67 20 37 37 30 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Korg 770.1 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 1f 07 02 0f 47 00 35 04 05 0a 1f 02 02 0f 00 40 43 04 02 0a 1f 02 04 0f -4e 00 55 04 0c 0a 1f 02 05 0f 00 00 60 08 1b 63 21 1d 0e 1a 56 0c 08 04 0a -63 32 00 00 00 32 00 4b 6f 72 67 20 37 37 30 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Korg 770.2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 1f 07 02 0f 47 03 48 04 05 0f 1f 00 08 0f 00 46 62 04 02 0f 1f 00 08 0f -00 05 63 04 04 0f 1f 00 08 0f 00 04 60 08 03 7d 21 1d 0e 1a 56 0c 06 0d 02 -63 32 00 00 00 32 00 4b 6f 72 67 20 37 37 30 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Korg 770.2 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 1f 07 02 0f 47 00 48 04 05 0f 1f 00 08 0f 00 40 62 04 02 0f 1f 00 08 0f -00 00 63 04 04 0f 1f 00 08 0f 00 00 60 08 03 7d 21 1d 0e 1a 56 0c 06 0d 02 -63 32 00 00 00 32 00 4b 6f 72 67 20 37 37 30 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Korg 770.3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0d 0a 07 09 0e 4d 03 4f 04 03 12 1f 00 0a 0f 00 05 39 04 03 12 1f 00 0a 0f -4b 05 38 04 03 12 1f 00 0a 0f 01 07 5f 04 03 3b 1e 05 0a 00 62 0c 02 04 00 -63 32 00 00 00 32 00 4b 6f 72 67 20 37 37 30 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Korg 770.3 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0d 0a 07 09 0e 4d 00 4f 04 03 12 1f 00 0a 0f 00 00 39 04 03 12 1f 00 0a 0f -4b 00 38 04 03 12 1f 00 0a 0f 01 00 5f 04 03 3b 1e 05 0a 00 62 0c 02 04 00 -63 32 00 00 00 32 00 4b 6f 72 67 20 37 37 30 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - -* SUBCATEGORY Synthesizer2 - -** Name: Lambda...1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0b 06 04 04 0f 00 04 41 08 01 1f 0e 05 05 09 00 07 4a 13 04 09 06 00 05 0f -00 06 5f 08 06 1f 11 08 05 0f 00 06 61 04 00 44 23 2f 19 00 32 18 07 04 00 -63 32 63 32 00 32 00 4c 61 6d 62 64 61 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 10 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Lambda...1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0b 06 04 04 0f 00 01 41 08 01 1f 0e 05 05 09 00 02 4a 13 04 09 06 00 05 0f -00 00 5f 08 06 1f 11 08 05 0f 00 00 61 04 00 44 23 2f 19 00 32 18 07 04 00 -63 32 63 32 00 32 00 4c 61 6d 62 64 61 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 10 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Lambda...2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0b 0c 09 05 0d 00 03 45 10 03 1f 0b 0a 08 0c 00 04 54 04 03 0b 0c 09 05 0d -00 06 5f 04 03 1f 04 09 08 0f 00 06 5f 00 03 74 23 00 00 00 32 18 07 04 00 -63 32 63 32 00 32 00 4c 61 6d 62 64 61 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Lambda...2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -0b 0c 09 05 0d 00 01 45 10 03 1f 0b 0a 08 0c 00 01 54 04 03 0b 0c 09 05 0d -00 00 5f 04 03 1f 04 09 08 0f 00 00 5f 00 03 74 23 00 00 00 32 18 07 04 00 -63 32 63 32 00 32 00 4c 61 6d 62 64 61 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Lambda...3 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -07 10 03 09 0f 00 05 47 0d 00 1f 14 05 05 09 00 04 4d 13 16 07 10 03 09 0f -00 05 5c 0d 03 1f 14 08 05 0f 00 05 63 04 02 44 23 2f 19 00 32 18 07 04 00 -63 32 63 32 00 32 00 4c 61 6d 62 64 61 2e 2e 2e 33 63 63 63 32 32 32 00 40 -00 10 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Lambda...3 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -07 10 03 09 0f 00 02 47 0d 00 1f 14 05 05 09 00 01 4d 13 16 07 10 03 09 0f -00 00 5c 0d 03 1f 14 08 05 0f 00 00 63 04 02 44 23 2f 19 00 32 18 07 04 00 -63 32 63 32 00 32 00 4c 61 6d 62 64 61 2e 2e 2e 33 63 63 63 32 32 32 00 40 -00 10 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Lambda...4 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -07 10 03 0d 0f 00 03 4c 08 00 1f 14 05 04 09 00 03 4d 0d 16 07 10 03 0e 0f -00 06 5c 08 03 1f 14 08 04 0f 00 03 63 08 02 44 23 2f 19 00 32 18 07 04 00 -63 32 63 32 00 32 00 4c 61 6d 62 64 61 2e 2e 2e 34 63 63 63 32 32 32 00 00 -00 10 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Lambda...4 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -07 10 03 0d 0f 00 01 4c 08 00 1f 14 05 04 09 00 01 4d 0d 16 07 10 03 0e 0f -00 00 5c 08 03 1f 14 08 04 0f 00 00 63 08 02 44 23 2f 19 00 32 18 07 04 00 -63 32 63 32 00 32 00 4c 61 6d 62 64 61 2e 2e 2e 34 63 63 63 32 32 32 00 00 -00 10 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Lambda...5 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -05 03 03 05 08 00 03 55 08 00 18 06 09 05 09 00 04 51 04 06 05 10 03 05 0f -00 07 63 08 03 18 06 09 05 09 00 06 63 04 03 24 21 23 0f 00 12 18 05 04 00 -63 63 63 00 00 32 00 4c 61 6d 62 64 61 2e 2e 2e 35 63 63 63 32 32 32 00 20 -00 10 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Lambda...5 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -05 03 03 05 08 00 02 55 08 00 18 06 09 05 09 00 01 51 04 06 05 10 03 05 0f -00 00 63 08 03 18 06 09 05 09 00 00 63 04 03 24 21 23 0f 00 12 18 05 04 00 -63 63 63 00 00 32 00 4c 61 6d 62 64 61 2e 2e 2e 35 63 63 63 32 32 32 00 20 -00 10 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: LeadSynth1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 07 0f 00 03 54 08 03 07 0d 04 0a 0f 00 04 59 0a 03 1f 03 03 09 0c -00 06 62 0a 03 0f 0d 05 0f 0f 00 05 63 0a 03 34 23 15 05 63 26 0c 02 04 00 -63 63 00 00 00 32 00 4c 65 61 64 53 79 6e 74 68 31 63 63 63 32 32 32 00 00 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: LeadSynth1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 07 0f 00 01 54 08 03 07 0d 04 0a 0f 00 01 59 0a 03 1f 03 03 09 0c -00 00 62 0a 03 0f 0d 05 0f 0f 00 00 63 0a 03 34 23 15 05 63 26 0c 02 04 00 -63 63 00 00 00 32 00 4c 65 61 64 53 79 6e 74 68 31 63 63 63 32 32 32 00 00 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: LeadSynth2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 15 06 0a 0e 00 04 4b 28 0b 1b 0a 09 0f 0e 00 04 5c 04 0b 1f 03 0a 09 0c -00 06 62 08 13 18 09 06 0a 0e 00 05 63 04 03 2c 23 15 05 63 26 0c 02 04 00 -63 63 00 00 00 32 00 4c 65 61 64 53 79 6e 74 68 32 63 63 63 32 32 32 00 00 -00 50 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: LeadSynth2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -12 15 06 0a 0e 00 01 4b 28 0b 1b 0a 09 0f 0e 00 01 5c 04 0b 1f 03 0a 09 0c -00 00 62 08 13 18 09 06 0a 0e 00 00 63 04 03 2c 23 15 05 63 26 0c 02 04 00 -63 63 00 00 00 32 00 4c 65 61 64 53 79 6e 74 68 32 63 63 63 32 32 32 00 00 -00 50 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: LeadSynth3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 03 07 0f 0f 00 03 45 04 06 1f 1f 0a 0f 0f 00 04 5b 00 0c 1f 04 00 0f 0f -00 06 5f 04 03 1f 1f 00 0f 0f 00 05 63 04 05 6c 23 00 00 00 32 18 02 04 00 -63 63 00 00 00 32 00 4c 65 61 64 53 79 6e 74 68 33 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: LeadSynth3 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 03 07 0f 0f 00 01 45 04 06 1f 1f 0a 0f 0f 00 02 5b 00 0c 1f 04 00 0f 0f -00 00 5f 04 03 1f 1f 00 0f 0f 00 00 63 04 05 6c 23 00 00 00 32 18 02 04 00 -63 63 00 00 00 32 00 4c 65 61 64 53 79 6e 74 68 33 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: LeadSynth4 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 03 07 0f 0f 2e 03 5a 04 06 1c 1f 03 0f 0f 2c 04 5b 00 0c 1f 04 00 0f 0f -00 05 5f 04 03 16 1f 00 0f 0f 00 06 63 04 05 6c 23 00 00 00 32 18 02 04 00 -63 63 00 00 00 32 00 4c 65 61 64 53 79 6e 74 68 34 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: LeadSynth4 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 03 07 0f 0f 2e 01 5a 04 06 1c 1f 03 0f 0f 2c 01 5b 00 0c 1f 04 00 0f 0f -00 00 5f 04 03 16 1f 00 0f 0f 00 00 63 04 05 6c 23 00 00 00 32 18 02 04 00 -63 63 00 00 00 32 00 4c 65 61 64 53 79 6e 74 68 34 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: LeadSynth5 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 15 06 0a 0e 2a 03 4a 22 06 1b 09 09 0f 0d 3a 04 63 04 0c 18 09 04 0a 0e -00 06 63 04 03 18 09 06 0a 0e 01 06 5e 0d 12 6c 23 00 00 00 32 0c 02 04 00 -63 63 00 00 00 32 00 4c 65 61 64 53 79 6e 74 68 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: LeadSynth5 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -16 15 06 0a 0e 2a 01 4a 22 06 1b 09 09 0f 0d 3a 00 63 04 0c 18 09 04 0a 0e -00 00 63 04 03 18 09 06 0a 0e 01 00 5e 0d 12 6c 23 00 00 00 32 0c 02 04 00 -63 63 00 00 00 32 00 4c 65 61 64 53 79 6e 74 68 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: LeadSynth6 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -19 09 03 06 07 2a 05 62 04 03 18 10 06 07 0b 3a 05 63 04 0b 15 1f 1c 0f 00 -00 05 63 04 03 15 06 06 0a 0c 01 05 63 04 03 6c 23 00 00 00 42 0c 02 04 00 -63 63 00 00 00 32 00 4c 65 61 64 53 79 6e 74 68 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: LeadSynth6 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -19 09 03 06 07 2a 01 62 04 03 18 10 06 07 0b 3a 00 63 04 0b 15 1f 1c 0f 00 -00 00 63 04 03 15 06 06 0a 0c 01 00 63 04 03 6c 23 00 00 00 42 0c 02 04 00 -63 63 00 00 00 32 00 4c 65 61 64 53 79 6e 74 68 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: LeadSynth7 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 0f 07 06 09 42 03 57 0d 02 18 0b 09 07 0b 32 06 63 04 03 18 1f 00 0f 0f -00 05 63 04 05 1f 06 06 0a 0c 01 05 63 04 03 5c 23 00 00 00 42 0c 02 04 00 -63 63 00 00 00 32 00 4c 65 61 64 53 79 6e 74 68 37 63 63 63 32 32 32 00 00 -00 30 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: LeadSynth7 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -18 0f 07 06 09 42 01 57 0d 02 18 0b 09 07 0b 32 01 63 04 03 18 1f 00 0f 0f -00 01 63 04 05 1f 06 06 0a 0c 01 00 63 04 03 5c 23 00 00 00 42 0c 02 04 00 -63 63 00 00 00 32 00 4c 65 61 64 53 79 6e 74 68 37 63 63 63 32 32 32 00 00 -00 30 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: LeadSynth8 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1e 07 05 09 0f 42 03 56 08 06 1f 16 00 08 0e 00 05 63 04 03 1f 16 00 08 0e -00 04 63 04 03 1f 16 00 08 0e 00 06 63 04 03 6d 25 00 00 00 32 0c 02 04 00 -63 63 00 00 00 32 00 4c 65 61 64 53 79 6e 74 68 38 63 63 63 32 32 32 00 20 -00 20 00 00 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: LeadSynth8 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1e 07 05 09 0f 42 02 56 08 06 1f 16 00 08 0e 00 00 63 04 03 1f 16 00 08 0e -00 00 63 04 03 1f 16 00 08 0e 00 00 63 04 03 6d 25 00 00 00 32 0c 02 04 00 -63 63 00 00 00 32 00 4c 65 61 64 53 79 6e 74 68 38 63 63 63 32 32 32 00 20 -00 20 00 00 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Luna.....1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -05 07 00 05 0e 00 44 4c 04 00 05 07 00 05 0e 0e 45 52 04 06 0c 1f 00 06 0f -00 05 63 04 00 0c 1f 00 07 0f 0a 06 63 08 06 34 22 0e 13 08 56 18 07 04 00 -63 63 00 00 00 32 00 4c 75 6e 61 2e 2e 2e 2e 2e 31 63 63 63 32 32 32 00 10 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Luna.....2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -08 07 00 05 0e 00 04 51 00 00 0c 03 00 05 08 0e 04 40 13 06 0c 1f 00 06 0f -00 05 60 04 00 0c 1f 00 07 0f 0a 06 5e 00 06 2c 22 00 0f 00 42 18 07 04 00 -63 63 00 00 00 32 00 4c 75 6e 61 2e 2e 2e 2e 2e 32 63 63 63 32 32 32 00 10 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Luna.....3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -05 07 00 05 0e 00 44 4b 08 00 0c 07 00 05 0e 0e 45 52 0a 06 05 1f 00 06 0f -00 05 63 08 00 0c 1f 00 07 0f 0a 06 4b 0a 06 34 22 0e 13 08 56 18 07 04 00 -63 63 00 00 00 32 00 4c 75 6e 61 2e 2e 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Lyrisyn -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank C, voice 20 -10 06 00 05 0e 00 01 50 0a 04 1f 04 00 05 0f 00 01 51 04 02 1f 0b 00 0a 0f -00 01 35 08 03 10 1f 00 0a 0f 00 02 63 04 03 30 1e 00 00 00 52 18 04 04 00 -63 32 00 00 00 32 00 4c 79 72 69 73 79 6e 20 20 20 63 63 63 32 32 32 00 10 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MaxiKorg.1 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 07 0f 63 00 53 04 06 1f 1f 00 07 0f 00 00 63 00 02 1f 1f 00 07 0f -3c 00 61 08 04 1f 1f 00 07 0f 00 00 62 04 03 75 22 00 14 00 32 0c 06 0d 01 -63 01 63 00 00 32 00 4d 61 78 69 4b 6f 72 67 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MaxiKorg.2 -** Controls: KV, MW (LFO pitch), MW (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 08 0f 00 03 54 00 06 17 1f 00 07 0f 00 06 4b 04 02 1f 1f 00 08 0f -00 04 61 08 04 15 1f 00 08 0f 00 45 62 08 03 74 1e 00 0e 35 56 18 06 05 00 -63 01 63 00 00 32 00 4d 61 78 69 4b 6f 72 67 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MaxiKorg.2 -** Controls: MW (LFO pitch), MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 08 0f 00 00 54 00 06 17 1f 00 07 0f 00 00 4b 04 02 1f 1f 00 08 0f -00 00 61 08 04 15 1f 00 08 0f 00 40 62 08 03 74 1e 00 0e 35 56 18 06 05 00 -63 01 63 00 00 32 00 4d 61 78 69 4b 6f 72 67 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MicroMoog1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -14 03 01 07 0d 27 05 4b 0a 0d 14 05 01 05 0f 00 05 56 04 0c 15 04 00 0a 0d -11 06 50 08 09 17 05 00 0a 02 27 06 5a 08 05 61 24 00 04 00 42 0c 02 0d 11 -63 63 00 00 00 32 00 4d 69 63 72 6f 4d 6f 6f 67 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MicroMoog1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -14 03 01 07 0d 27 02 4b 0a 0d 14 05 01 05 0f 00 02 56 04 0c 15 04 00 0a 0d -11 00 50 08 09 17 05 00 0a 02 27 00 5a 08 05 61 24 00 04 00 42 0c 02 0d 11 -63 63 00 00 00 32 00 4d 69 63 72 6f 4d 6f 6f 67 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MicroMoog2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -14 01 01 05 0d 27 02 4d 00 03 14 02 01 05 0f 00 04 4e 00 03 15 01 00 05 0d -11 05 58 08 03 17 02 00 05 02 27 07 63 08 03 78 24 00 04 00 42 0c 02 0c 11 -63 63 00 00 00 32 00 4d 69 63 72 6f 4d 6f 6f 67 32 63 63 63 32 32 32 00 00 -00 10 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MicroMoog2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -14 01 01 05 0d 27 01 4d 00 03 14 02 01 05 0f 00 01 4e 00 03 15 01 00 05 0d -11 01 58 08 03 17 02 00 05 02 27 01 63 08 03 78 24 00 04 00 42 0c 02 0c 11 -63 63 00 00 00 32 00 4d 69 63 72 6f 4d 6f 6f 67 32 63 63 63 32 32 32 00 00 -00 10 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MiniMoog * -** Source: from a library of patches collected by Rod Lemcke, author unknown -0e 09 00 01 0d 00 00 4d 04 06 0f 0d 00 01 0b 00 00 45 04 00 0b 04 00 01 0d -00 00 44 04 03 0f 0c 00 07 0e 00 00 63 04 03 3a 21 00 00 00 52 11 02 04 00 -28 63 00 00 00 32 00 4d 69 6e 69 4d 6f 6f 67 20 2a 63 63 63 32 32 32 00 08 -00 08 00 08 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MiniMoog.1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 1b 06 0f 0f 00 01 5c 00 02 1f 0a 03 0f 0e 00 02 41 04 0c 1f 09 04 0f 0f -00 06 62 04 14 1c 10 04 0c 0e 00 05 63 04 0b 6c 23 00 00 00 32 0c 02 04 00 -63 63 00 00 00 32 00 4d 69 6e 69 4d 6f 6f 67 2e 31 63 63 63 32 32 32 00 00 -00 00 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MiniMoog.1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 1b 06 0f 0f 00 01 5c 00 02 1f 0a 03 0f 0e 00 01 41 04 0c 1f 09 04 0f 0f -00 00 62 04 14 1c 10 04 0c 0e 00 00 63 04 0b 6c 23 00 00 00 32 0c 02 04 00 -63 63 00 00 00 32 00 4d 69 6e 69 4d 6f 6f 67 2e 31 63 63 63 32 32 32 00 00 -00 00 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MiniMoog.2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 0a 03 0f 0e 00 06 58 08 14 1c 1b 06 0f 0f 00 04 5c 08 0e 1c 10 04 0c 0f -00 07 62 04 0b 1f 09 09 0f 0f 00 05 63 04 14 74 23 00 00 00 32 0c 02 04 00 -63 63 00 00 00 32 00 4d 69 6e 69 4d 6f 6f 67 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MiniMoog.2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 0a 03 0f 0e 00 01 58 08 14 1c 1b 06 0f 0f 00 01 5c 08 0e 1c 10 04 0c 0f -00 00 62 04 0b 1f 09 09 0f 0f 00 00 63 04 14 74 23 00 00 00 32 0c 02 04 00 -63 63 00 00 00 32 00 4d 69 6e 69 4d 6f 6f 67 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MiniMoog.3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 0a 03 0f 0e 00 03 5e 08 14 1b 0a 03 0f 07 00 05 60 00 06 1c 10 04 0c 0f -00 05 62 04 0b 1c 10 04 0c 0f 00 06 63 04 0c 6c 23 00 00 00 32 0c 02 04 04 -63 63 00 00 00 32 00 4d 69 6e 69 4d 6f 6f 67 2e 33 63 63 63 32 32 32 00 20 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MiniMoog.3 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 0a 03 0f 0e 00 03 5e 08 14 1b 0a 03 0f 07 00 01 60 00 06 1c 10 04 0c 0f -00 00 62 04 0b 1c 10 04 0c 0f 00 00 63 04 0c 6c 23 00 00 00 32 0c 02 04 04 -63 63 00 00 00 32 00 4d 69 6e 69 4d 6f 6f 67 2e 33 63 63 63 32 32 32 00 20 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Mirage * -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -13 08 00 05 0f 45 01 45 08 0b 1f 00 00 04 0f 30 00 4d 08 00 11 08 03 05 0f -26 07 5b 13 16 10 0a 08 06 0f 00 02 63 08 0b 03 1e 00 0a 00 32 00 02 04 00 -28 63 00 00 00 32 00 4d 69 72 61 67 65 20 20 20 2a 63 63 63 32 32 32 00 20 -00 70 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MoogBass * -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 09 00 06 0c 00 00 4e 05 06 1f 18 00 04 0c 0f 00 50 03 00 1f 04 00 02 0d -23 00 48 04 06 17 0c 00 08 0e 19 00 63 04 03 3a 21 00 00 00 52 0c 02 0c 00 -28 63 00 00 00 32 00 4d 6f 6f 67 42 61 73 73 20 2a 63 63 63 32 32 32 00 11 -00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MultiMoog1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1a 07 00 05 0e 00 04 56 00 00 1f 03 00 05 08 0e 04 42 13 06 1f 1f 00 06 0f -00 07 56 04 00 1f 1f 00 07 0f 0a 06 5e 00 06 33 22 00 0f 00 42 18 07 04 00 -63 63 00 00 00 32 00 4d 75 6c 74 69 4d 6f 6f 67 31 63 63 63 32 32 32 00 00 -00 20 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MultiMoog1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1a 07 00 05 0e 00 02 56 00 00 1f 03 00 05 08 0e 01 42 13 06 1f 1f 00 06 0f -00 01 56 04 00 1f 1f 00 07 0f 0a 00 5e 00 06 33 22 00 0f 00 42 18 07 04 00 -63 63 00 00 00 32 00 4d 75 6c 74 69 4d 6f 6f 67 31 63 63 63 32 32 32 00 00 -00 20 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MultiMoog2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 07 00 05 0e 00 45 53 08 00 1f 07 00 05 0e 0e 46 44 0a 06 1f 1f 00 06 0f -00 04 54 08 00 1f 1f 00 07 0f 0a 06 63 0a 06 32 22 0e 13 08 56 18 07 04 00 -63 63 00 00 00 32 00 4d 75 6c 74 69 4d 6f 6f 67 32 63 63 63 32 32 32 00 00 -00 30 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MultiMoog2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 07 00 05 0e 00 42 53 08 00 1f 07 00 05 0e 0e 42 44 0a 06 1f 1f 00 06 0f -00 01 54 08 00 1f 1f 00 07 0f 0a 00 63 0a 06 32 22 0e 13 08 56 18 07 04 00 -63 63 00 00 00 32 00 4d 75 6c 74 69 4d 6f 6f 67 32 63 63 63 32 32 32 00 00 -00 30 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: No!NotJump -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -16 0a 00 03 0f 29 00 44 03 02 0f 0e 00 03 0f 42 01 5f 05 01 1d 0e 00 07 0f -00 02 63 03 04 13 0e 00 07 0f 00 02 63 05 06 3c 20 00 00 00 52 05 02 04 00 -63 32 00 00 00 32 00 4e 6f 21 4e 6f 74 4a 75 6d 70 63 63 63 32 32 32 00 56 -00 31 00 46 00 11 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: <> OB 1 <> -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0d 1f 00 02 0f 00 04 56 00 1e 17 1f 01 02 0f 0a 04 45 04 03 19 1f 00 03 0f -08 06 58 08 16 12 1f 00 01 0f 14 05 5b 04 1b 2a 00 00 00 00 02 0c 07 0c 01 -63 63 00 32 00 32 00 3c 3e 20 4f 42 20 31 20 3c 3e 63 63 63 32 32 32 00 30 -00 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: <> OB 1 <> -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -0d 1f 00 02 0f 00 01 56 00 1e 17 1f 01 02 0f 0a 01 45 04 03 19 1f 00 03 0f -08 01 58 08 16 12 1f 00 01 0f 14 00 5b 04 1b 2a 00 00 00 00 02 0c 07 0c 01 -63 63 00 32 00 32 00 3c 3e 20 4f 42 20 31 20 3c 3e 63 63 63 32 32 32 00 30 -00 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OB-8 * -** Source: from a library of patches collected by Rod Lemcke, author unknown -13 08 00 06 0e 0c 40 49 03 06 12 08 00 03 0e 00 00 4d 04 03 11 1f 00 06 0f -0a 00 63 03 0e 0c 1f 00 07 0f 00 00 63 04 0b 3c 23 00 00 00 5a 05 02 04 00 -28 63 00 00 00 32 63 20 20 4f 42 2d 38 20 20 20 2a 63 63 63 32 32 32 00 06 -00 08 00 06 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Oberheim.1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 00 00 0f 0f 00 04 5c 00 16 1d 0c 04 0f 0e 00 04 5e 00 02 1f 0c 04 0f 0e -00 05 63 00 04 1f 0c 04 0f 0e 00 05 63 04 03 2c 00 00 13 00 42 18 02 04 00 -28 02 00 00 00 32 00 4f 62 65 72 68 65 69 6d 2e 31 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Oberheim.1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 00 00 0f 0f 00 01 5c 00 16 1d 0c 04 0f 0e 00 01 5e 00 02 1f 0c 04 0f 0e -00 00 63 00 04 1f 0c 04 0f 0e 00 00 63 04 03 2c 00 00 13 00 42 18 02 04 00 -28 02 00 00 00 32 00 4f 62 65 72 68 65 69 6d 2e 31 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Oberheim.2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0b 02 04 04 0e 05 03 58 00 06 12 09 04 04 0f 00 04 4c 00 00 0b 0c 04 04 0e -00 05 63 00 03 11 0b 03 06 0f 00 05 63 00 03 2c 23 00 13 00 42 18 02 04 00 -28 02 00 00 00 32 00 4f 62 65 72 68 65 69 6d 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Oberheim.2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0b 02 04 04 0e 05 02 58 00 06 12 09 04 04 0f 00 01 4c 00 00 0b 0c 04 04 0e -00 00 63 00 03 11 0b 03 06 0f 00 00 63 00 03 2c 23 00 13 00 42 18 02 04 00 -28 02 00 00 00 32 00 4f 62 65 72 68 65 69 6d 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Oberheim.3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0d 0c 04 05 0e 05 03 57 00 00 0c 0c 04 04 0e 05 04 52 00 06 0a 0c 04 05 0e -00 05 63 04 06 0a 1f 00 05 0f 00 05 63 00 06 3c 17 00 20 00 42 18 02 04 00 -28 02 00 00 00 32 00 4f 62 65 72 68 65 69 6d 2e 33 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Oberheim.3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0d 0c 04 05 0e 05 02 57 00 00 0c 0c 04 04 0e 05 01 52 00 06 0a 0c 04 05 0e -00 00 63 04 06 0a 1f 00 05 0f 00 00 63 00 06 3c 17 00 20 00 42 18 02 04 00 -28 02 00 00 00 32 00 4f 62 65 72 68 65 69 6d 2e 33 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - -* SUBCATEGORY Synthesizer3 - - -** Name: Odyssey..1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 1f 04 09 0f 00 04 5c 00 0d 19 03 01 09 00 00 06 53 00 04 1f 16 03 09 0d -00 04 63 00 0a 19 06 06 09 06 00 05 63 00 0b 6c 1e 00 0a 00 32 18 04 04 00 -63 01 63 00 00 32 00 4f 64 79 73 73 65 79 2e 2e 31 63 63 63 32 32 32 00 00 -00 20 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Odyssey..1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -16 1f 04 09 0f 00 01 5c 00 0d 19 03 01 09 00 00 02 53 00 04 1f 16 03 09 0d -00 00 63 00 0a 19 06 06 09 06 00 00 63 00 0b 6c 1e 00 0a 00 32 18 04 04 00 -63 01 63 00 00 32 00 4f 64 79 73 73 65 79 2e 2e 31 63 63 63 32 32 32 00 00 -00 20 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Odyssey..2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 02 01 05 0f 00 3b 5b 00 00 1b 13 01 0d 0a 00 1d 63 00 03 1f 05 06 05 0f -00 1d 63 00 00 1f 04 03 0c 0f 00 3e 63 00 0b 2c 00 00 00 00 32 18 02 04 00 -63 32 00 00 00 32 00 4f 64 79 73 73 65 79 2e 2e 32 63 63 63 32 32 32 00 10 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Odyssey..2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 02 01 05 0f 00 39 5b 00 00 1b 13 01 0d 0a 00 1a 63 00 03 1f 05 06 05 0f -00 18 63 00 00 1f 04 03 0c 0f 00 38 63 00 0b 2c 00 00 00 00 32 18 02 04 00 -63 32 00 00 00 32 00 4f 64 79 73 73 65 79 2e 2e 32 63 63 63 32 32 32 00 10 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Odyssey..3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 05 04 06 0e 1e 3d 56 0a 0d 1f 09 00 06 00 00 1d 5d 00 05 1b 02 04 06 0e -1e 1d 63 00 0b 1f 00 00 07 0f 00 3d 63 00 0c 2c 1d 00 00 00 42 18 02 04 00 -63 32 00 00 00 32 00 4f 64 79 73 73 65 79 2e 2e 33 63 63 63 32 32 32 00 20 -00 20 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Odyssey..3 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 05 04 06 0e 1e 3a 56 0a 0d 1f 09 00 06 00 00 19 5d 00 05 1b 02 04 06 0e -1e 18 63 00 0b 1f 00 00 07 0f 00 38 63 00 0c 2c 1d 00 00 00 42 18 02 04 00 -63 32 00 00 00 32 00 4f 64 79 73 73 65 79 2e 2e 33 63 63 63 32 32 32 00 20 -00 20 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OhB1Kanobe -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 1f 00 0a 0f 00 04 55 00 0b 10 1f 00 0a 0f 00 05 55 00 0b 12 0d 09 0a 0e -15 07 62 08 0a 12 0d 09 0a 0e 15 05 63 08 0b 5c 25 00 4b 00 12 0c 02 04 00 -28 02 00 00 00 32 00 4f 68 42 31 4b 61 6e 6f 62 65 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OhB1Kanobe -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -10 1f 00 0a 0f 00 01 55 00 0b 10 1f 00 0a 0f 00 01 55 00 0b 12 0d 09 0a 0e -15 00 62 08 0a 12 0d 09 0a 0e 15 00 63 08 0b 5c 25 00 4b 00 12 0c 02 04 00 -28 02 00 00 00 32 00 4f 68 42 31 4b 61 6e 6f 62 65 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Omega....1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -08 09 10 05 08 00 03 52 10 03 1f 05 00 05 0b 2d 04 4e 08 13 1f 08 00 03 0c -43 06 47 10 1b 1c 06 04 04 07 00 06 63 04 13 7a 21 00 38 00 22 0c 06 04 00 -63 32 00 32 00 32 00 4f 6d 65 67 61 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Omega....2 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 03 00 0a 09 37 04 5a 08 0c 1f 1f 0d 0a 0f 39 46 63 08 01 18 04 1c 0a 0a -63 05 63 0d 02 1f 1f 00 0a 0f 00 06 62 04 06 15 46 28 0a 1a 56 0c 07 04 00 -63 19 00 32 00 32 00 4f 6d 65 67 61 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PCM Duck * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0e 07 00 0f 0d 00 00 5c 00 08 0d 1f 00 06 0f 16 00 57 00 15 0b 06 03 0f 0e -0e 07 46 1c 10 1c 14 08 0d 0e 00 02 63 04 03 03 23 00 00 00 52 18 02 04 00 -28 32 00 00 00 32 00 50 43 4d 20 44 75 63 6b 20 2a 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PianoSynth -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -06 02 07 04 0c 1f 0a 46 04 0a 12 1f 00 03 0f 63 04 61 04 13 03 06 16 03 03 -63 05 5a 0a 13 14 05 12 03 03 00 05 5e 08 0d 7b 23 0f 0e 00 42 0c 02 04 00 -63 32 00 00 00 32 00 50 69 61 6e 6f 53 79 6e 74 68 63 63 63 32 32 32 00 20 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PianoSynth -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -06 02 07 04 0c 1f 0a 46 04 0a 12 1f 00 03 0f 63 01 61 04 13 03 06 16 03 03 -63 01 5a 0a 13 14 05 12 03 03 00 00 5e 08 0d 7b 23 0f 0e 00 42 0c 02 04 00 -63 32 00 00 00 32 00 50 69 61 6e 6f 53 79 6e 74 68 63 63 63 32 32 32 00 20 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PlkAnalog -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 14 02 01 06 00 06 51 0a 0e 10 1f 02 05 0f 00 04 63 03 08 0b 1f 00 08 0f -00 03 63 05 0e 1a 1f 00 05 0f 00 04 60 04 0b 3d 1f 0e 00 00 46 11 02 04 00 -28 32 00 12 00 32 00 50 6c 6b 41 6e 61 6c 6f 67 20 63 63 63 32 32 32 04 30 -00 56 00 31 07 48 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Poly 61 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -13 07 03 04 07 0a 04 5a 08 03 1f 03 0c 06 00 00 05 60 08 0b 12 10 0c 06 0e -00 05 61 08 01 12 12 0c 06 0e 00 45 5f 08 0b 35 1f 0b 11 1b 26 18 02 04 00 -28 02 00 00 00 32 00 50 6f 6c 79 20 36 31 20 20 20 63 63 63 32 32 32 00 00 -00 10 00 40 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Poly 61 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -13 07 03 04 07 0a 02 5a 08 03 1f 03 0c 06 00 00 00 60 08 0b 12 10 0c 06 0e -00 00 61 08 01 12 12 0c 06 0e 00 40 5f 08 0b 35 1f 0b 11 1b 26 18 02 04 00 -28 02 00 00 00 32 00 50 6f 6c 79 20 36 31 20 20 20 63 63 63 32 32 32 00 00 -00 10 00 40 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PolyFusion -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0a 07 00 05 0e 00 44 56 04 00 08 07 00 05 0e 0e 44 51 04 06 0e 1f 00 06 0f -00 04 63 04 00 0c 1f 00 07 0f 0a 06 63 08 06 34 22 0e 13 08 56 18 07 04 00 -63 63 00 00 00 32 00 50 6f 6c 79 46 75 73 69 6f 6e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PolyFusion -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0a 07 00 05 0e 00 41 56 04 00 08 07 00 05 0e 0e 41 51 04 06 0e 1f 00 06 0f -00 00 63 04 00 0c 1f 00 07 0f 0a 00 63 08 06 34 22 0e 13 08 56 18 07 04 00 -63 63 00 00 00 32 00 50 6f 6c 79 46 75 73 69 6f 6e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PolyMoog.1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 03 02 04 01 0a 05 59 08 0b 1f 0a 0c 06 00 00 44 50 19 13 10 03 03 06 0e -00 06 63 0d 01 12 03 01 06 0f 00 45 63 08 0b 2c 1f 0b 11 1b 26 0c 02 04 00 -28 02 00 00 00 32 00 50 6f 6c 79 4d 6f 6f 67 2e 31 63 63 63 32 32 32 00 20 -00 20 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PolyMoog.1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 03 02 04 01 0a 02 59 08 0b 1f 0a 0c 06 00 00 41 50 19 13 10 03 03 06 0e -00 01 63 0d 01 12 03 01 06 0f 00 40 63 08 0b 2c 1f 0b 11 1b 26 0c 02 04 00 -28 02 00 00 00 32 00 50 6f 6c 79 4d 6f 6f 67 2e 31 63 63 63 32 32 32 00 20 -00 20 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PolyMoog.2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0c 1f 00 03 0f 63 03 59 08 0e 0e 1f 01 05 0f 00 04 63 08 0c 0a 04 0c 06 07 -3c 06 63 0d 12 0e 1f 01 05 0f 00 05 63 04 0a 75 22 00 14 00 32 00 04 04 00 -63 01 63 00 00 32 00 50 6f 6c 79 4d 6f 6f 67 2e 32 63 63 63 32 32 32 00 20 -00 00 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PolyMoog.2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0c 1f 00 03 0f 63 01 59 08 0e 0e 1f 01 05 0f 00 00 63 08 0c 0a 04 0c 06 07 -3c 00 63 0d 12 0e 1f 01 05 0f 00 00 63 04 0a 75 22 00 14 00 32 00 04 04 00 -63 01 63 00 00 32 00 50 6f 6c 79 4d 6f 6f 67 2e 32 63 63 63 32 32 32 00 20 -00 00 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: P.P.G * -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0a 05 07 0f 22 03 4c 07 02 12 04 02 04 0d 08 00 59 00 05 1d 10 06 01 0d -0c 00 2f 3d 06 1f 0a 00 07 0f 09 02 63 04 03 02 29 00 1f 00 32 0c 02 04 00 -28 63 00 00 00 32 00 20 50 2e 50 2e 47 20 20 20 2a 63 63 63 32 32 32 00 07 -00 00 00 3f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Prophet * -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 0a 00 05 0b 00 00 4f 03 00 1f 0b 00 01 0a 00 00 4a 03 05 1b 16 00 05 0d -00 00 63 03 06 1c 16 00 06 0d 00 00 63 05 00 34 1f 00 06 00 32 05 02 04 00 -28 63 00 00 00 32 00 50 72 6f 70 68 65 74 20 20 2a 63 63 63 32 32 32 00 06 -00 06 00 06 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Prophet..1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -13 03 04 0a 06 00 04 4b 04 00 13 07 04 0a 0c 00 04 46 04 06 16 07 04 0a 0c -00 05 22 16 03 17 07 04 0a 0c 00 06 63 04 03 2b 22 21 00 00 32 18 04 05 00 -28 32 00 00 00 32 00 50 72 6f 70 68 65 74 2e 2e 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Prophet..1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -13 03 04 0a 06 00 02 4b 04 00 13 07 04 0a 0c 00 01 46 04 06 16 07 04 0a 0c -00 01 22 16 03 17 07 04 0a 0c 00 00 63 04 03 2b 22 21 00 00 32 18 04 05 00 -28 32 00 00 00 32 00 50 72 6f 70 68 65 74 2e 2e 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Prophet..2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 03 02 07 0f 00 04 4e 04 00 1b 0c 0f 07 0f 19 06 49 0d 03 1b 06 04 07 0d -00 05 63 04 0b 1b 03 03 07 0d 00 07 63 04 15 74 23 00 12 00 12 18 04 05 00 -28 32 00 00 00 32 00 50 72 6f 70 68 65 74 2e 2e 32 63 63 63 32 32 32 00 10 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Prophet..2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 03 02 07 0f 00 02 4e 04 00 1b 0c 0f 07 0f 19 02 49 0d 03 1b 06 04 07 0d -00 00 63 04 0b 1b 03 03 07 0d 00 00 63 04 15 74 23 00 12 00 12 18 04 05 00 -28 32 00 00 00 32 00 50 72 6f 70 68 65 74 2e 2e 32 63 63 63 32 32 32 00 10 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Prophet..3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 04 12 08 0c 19 05 4f 04 00 0e 04 12 08 0c 19 06 4c 04 03 10 03 06 08 0e -00 06 63 04 0b 10 03 04 08 0e 00 06 63 04 0d 3c 26 1d 23 00 22 18 04 05 00 -28 32 00 00 00 32 00 50 72 6f 70 68 65 74 2e 2e 33 63 63 63 32 32 32 00 00 -00 20 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Prophet..3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -10 04 12 08 0c 19 01 4f 04 00 0e 04 12 08 0c 19 01 4c 04 03 10 03 06 08 0e -00 00 63 04 0b 10 03 04 08 0e 00 00 63 04 0d 3c 26 1d 23 00 22 18 04 05 00 -28 32 00 00 00 32 00 50 72 6f 70 68 65 74 2e 2e 33 63 63 63 32 32 32 00 00 -00 20 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PS 3100..1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -08 1f 07 02 0f 47 04 54 0d 05 08 1f 02 02 0f 00 44 53 08 02 07 1f 02 04 0f -4e 06 4a 00 0c 07 1f 02 05 0f 00 05 5f 08 1b 63 21 1d 0e 1a 56 0c 08 04 0a -63 32 00 00 00 32 00 50 53 20 33 31 30 30 2e 2e 31 63 63 63 32 32 32 00 00 -00 20 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PS 3100..1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -08 1f 07 02 0f 47 01 54 0d 05 08 1f 02 02 0f 00 41 53 08 02 07 1f 02 04 0f -4e 01 4a 00 0c 07 1f 02 05 0f 00 00 5f 08 1b 63 21 1d 0e 1a 56 0c 08 04 0a -63 32 00 00 00 32 00 50 53 20 33 31 30 30 2e 2e 31 63 63 63 32 32 32 00 00 -00 20 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PS 3100..2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0d 1f 07 02 0f 47 04 53 0a 06 07 1f 02 02 0f 00 44 4e 04 04 0d 1f 02 04 0f -4e 06 48 0d 0a 07 1f 02 05 0f 00 05 62 04 19 61 21 1d 0e 1a 56 0c 08 04 0f -63 32 00 00 00 32 00 50 53 20 33 31 30 30 2e 2e 32 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PS 3100..2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0d 1f 07 02 0f 47 01 53 0a 06 07 1f 02 02 0f 00 41 4e 04 04 0d 1f 02 04 0f -4e 01 48 0d 0a 07 1f 02 05 0f 00 00 62 04 19 61 21 1d 0e 1a 56 0c 08 04 0f -63 32 00 00 00 32 00 50 53 20 33 31 30 30 2e 2e 32 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PS 3300..1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0d 07 01 02 0f 47 03 54 08 05 0c 08 01 02 0f 00 44 50 08 02 0b 07 01 04 0f -4e 06 4f 00 0c 0c 06 02 05 0f 00 06 5f 08 0b 63 21 1d 0e 1a 56 0c 08 04 0a -63 32 00 00 00 32 00 50 53 20 33 33 30 30 2e 2e 31 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PS 3300..1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0d 07 01 02 0f 47 01 54 08 05 0c 08 01 02 0f 00 41 50 08 02 0b 07 01 04 0f -4e 01 4f 00 0c 0c 06 02 05 0f 00 00 5f 08 0b 63 21 1d 0e 1a 56 0c 08 04 0a -63 32 00 00 00 32 00 50 53 20 33 33 30 30 2e 2e 31 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PS 3300..2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0d 05 01 02 0d 47 03 4d 08 06 0f 05 00 02 0f 00 43 4a 04 04 07 06 01 04 0f -4e 04 4e 08 02 07 04 01 05 0d 00 05 62 00 09 61 21 1d 0e 1a 56 0c 08 04 0f -63 32 00 00 00 32 00 50 53 20 33 33 30 30 2e 2e 32 63 63 63 32 32 32 00 00 -00 30 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PS 3300..2 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0d 05 01 02 0d 47 00 4d 08 06 0f 05 00 02 0f 00 40 4a 04 04 07 06 01 04 0f -4e 00 4e 08 02 07 04 01 05 0d 00 00 62 00 09 61 21 1d 0e 1a 56 0c 08 04 0f -63 32 00 00 00 32 00 50 53 20 33 33 30 30 2e 2e 32 63 63 63 32 32 32 00 00 -00 30 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Quadra...1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 07 03 05 0f 00 05 3c 13 06 15 09 04 04 0f 00 04 4a 08 00 13 1f 00 06 0f -00 05 5f 00 06 13 0c 07 06 0f 00 05 61 00 03 6c 17 00 0e 00 42 18 07 04 00 -63 32 63 32 00 32 00 51 75 61 64 72 61 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Quadra...2 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 09 04 04 0f 00 04 4c 0a 00 0f 07 02 05 0e 00 06 50 00 06 13 0c 07 06 0f -00 04 5f 00 03 13 1f 00 06 0f 00 05 61 08 06 74 17 00 0b 00 22 18 07 04 00 -63 32 63 32 00 32 00 51 75 61 64 72 61 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ResoSynth1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0d 1f 00 02 0f 00 03 51 08 1e 17 1f 01 02 0f 0a 04 43 04 03 19 1f 00 03 0f -08 06 55 08 16 12 1f 00 01 0f 14 05 5b 04 1b 2a 00 00 00 00 02 0c 07 04 00 -63 63 00 32 00 32 00 52 65 73 6f 53 79 6e 74 68 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ResoSynth2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0d 1f 00 02 0f 00 03 50 00 1e 17 1f 01 02 0f 0a 04 41 04 03 19 1f 00 03 0f -08 04 63 00 16 12 1f 00 01 0f 14 05 63 04 1b 3c 00 00 00 00 02 18 07 04 00 -63 63 00 32 00 32 00 52 65 73 6f 53 79 6e 74 68 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: RMI......1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 09 03 07 0d 00 04 4e 08 0b 18 07 03 08 0d 00 05 59 04 0b 19 07 03 08 0c -00 06 62 04 13 1b 08 04 08 0e 00 06 63 04 0b 24 20 00 00 00 02 18 04 04 00 -28 32 00 00 00 32 00 52 4d 49 2e 2e 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: RMI......2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 09 03 07 0d 00 03 51 08 0b 18 07 03 08 0d 00 04 52 08 13 19 07 03 08 0c -00 06 62 04 13 1b 08 04 08 0e 00 06 62 00 0b 24 20 00 00 00 02 18 04 04 00 -28 32 00 00 00 32 00 52 4d 49 2e 2e 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SH 7.....1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 08 00 04 07 00 0c 57 00 09 17 1f 01 04 0f 0a 0b 3e 10 01 19 1f 00 04 0f -08 05 61 00 15 12 1f 00 04 0f 14 05 63 04 1d 2c 02 00 0a 00 02 0c 07 0d 05 -63 63 63 32 00 32 00 53 48 20 37 2e 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SH 7.....1 -** Source: from a library of patches collected by Duane Bowker, author unknown -10 08 00 04 07 00 08 57 00 09 17 1f 01 04 0f 0a 08 3e 10 01 19 1f 00 04 0f -08 00 61 00 15 12 1f 00 04 0f 14 00 63 04 1d 2c 02 00 0a 00 02 0c 07 0d 05 -63 63 63 32 00 32 00 53 48 20 37 2e 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SH 7.....2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 08 00 05 07 00 05 57 00 11 17 1f 01 05 0f 0a 04 5c 00 11 19 1f 00 05 0f -08 04 61 04 15 12 1f 00 05 0f 14 07 63 04 15 2c 02 00 0a 00 02 0c 07 0d 01 -63 63 63 32 00 32 00 53 48 20 37 2e 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SH 7.....2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -10 08 00 05 07 00 02 57 00 11 17 1f 01 05 0f 0a 01 5c 00 11 19 1f 00 05 0f -08 00 61 04 15 12 1f 00 05 0f 14 00 63 04 15 2c 02 00 0a 00 02 0c 07 0d 01 -63 63 63 32 00 32 00 53 48 20 37 2e 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sigma....1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 09 10 05 08 00 04 4e 10 03 1f 05 00 05 0b 2d 06 5a 04 13 1f 08 00 03 0c -43 04 55 0d 1b 1c 06 04 04 07 00 07 63 04 14 7c 21 00 38 00 22 0c 06 04 00 -63 32 00 32 00 32 00 53 69 67 6d 61 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sigma....2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 08 03 05 0f 00 03 57 04 06 16 0a 0a 05 0d 00 07 4b 3f 03 16 09 01 06 0f -00 06 63 04 00 16 15 01 06 0d 00 06 59 13 05 34 25 49 0f 00 32 00 0c 04 00 -63 00 00 00 00 32 00 53 69 67 6d 61 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sigma....3 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 09 10 05 08 00 03 5a 08 03 1f 03 00 05 06 2d 06 41 13 13 1f 08 00 03 0c -43 04 55 08 1b 1c 06 04 04 07 00 05 63 08 13 6c 21 00 38 00 22 0c 06 04 00 -63 32 00 32 00 32 00 53 69 67 6d 61 2e 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Soft Synth -** Controls: KV, MW (LFO pitch) -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -1f 08 00 06 09 00 3a 27 12 06 18 08 00 06 0b 63 02 54 13 00 1b 10 00 06 0b -00 01 63 09 06 1f 0a 00 06 0a 23 01 63 0a 00 05 1f 06 09 00 42 05 02 04 00 -63 63 00 00 00 32 00 53 6f 66 74 20 53 79 6e 74 68 63 63 63 32 32 32 00 54 -00 30 00 32 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Softsynth* -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0f 00 03 0d 00 03 54 09 00 1f 0f 06 04 0c 18 00 5c 2d 0d 0f 1f 06 05 0f -00 00 63 09 00 0f 1f 06 05 0f 00 00 63 0a 05 3d 23 00 00 00 62 05 02 04 00 -28 32 00 00 00 32 00 53 6f 66 74 73 79 6e 74 68 2a 63 63 63 32 32 32 00 02 -00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SoloSynth -** Controls: KV -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -1f 1f 05 03 0e 28 03 50 08 0a 1f 1d 07 04 0c 11 02 50 00 0a 1f 1d 0c 04 0c -28 02 41 00 0b 1a 01 01 05 0d 00 01 62 00 0c 01 1e 00 00 00 52 24 02 04 00 -28 32 00 00 00 32 00 53 6f 6c 6f 53 79 6e 74 68 20 63 52 63 32 32 32 00 00 -00 10 00 72 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SpiralSynt -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 09 06 01 0e 00 03 60 00 13 16 0c 06 05 0e 03 05 51 04 0c 16 0f 06 07 0e -00 05 62 04 0c 16 09 06 07 0f 00 05 63 04 0a 64 23 00 00 00 02 18 04 04 00 -63 01 63 00 00 32 00 53 70 69 72 61 6c 53 79 6e 74 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SpiralSynt -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -12 09 06 01 0e 00 01 60 00 13 16 0c 06 05 0e 03 01 51 04 0c 16 0f 06 07 0e -00 00 62 04 0c 16 09 06 07 0f 00 00 63 04 0a 64 23 00 00 00 02 18 04 04 00 -63 01 63 00 00 32 00 53 70 69 72 61 6c 53 79 6e 74 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sweeper -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 06 00 0a 0b 00 3b 5b 00 0d 1f 16 00 0a 0d 00 1d 46 00 03 1f 16 00 0a 0d -00 1d 63 00 03 1f 16 00 0a 0d 00 3d 63 00 03 35 25 00 00 00 22 18 02 04 00 -63 32 00 00 00 32 00 53 77 65 65 70 65 72 20 20 20 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sweeper -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 06 00 0a 0b 00 3a 5b 00 0d 1f 16 00 0a 0d 00 19 46 00 03 1f 16 00 0a 0d -00 18 63 00 03 1f 16 00 0a 0d 00 38 63 00 03 35 25 00 00 00 22 18 02 04 00 -63 32 00 00 00 32 00 53 77 65 65 70 65 72 20 20 20 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SweepSynt* -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 11 0d 01 09 00 04 4e 0a 04 05 03 00 01 0d 00 02 50 04 02 11 11 00 07 09 -00 01 5b 08 06 0e 07 00 04 0d 00 02 63 04 08 34 1f 00 00 00 32 18 02 04 00 -28 63 00 00 00 32 00 53 77 65 65 70 53 79 6e 74 2a 63 63 63 32 32 32 00 03 -00 40 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SweetSynth -** Controls: KV -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -14 09 00 03 0f 29 00 12 08 02 0d 0d 00 03 0f 42 01 2d 13 01 1b 0d 00 07 0f -00 02 33 04 04 11 0d 00 07 0f 00 02 63 13 06 00 20 00 00 00 52 05 02 04 00 -63 32 00 00 00 32 00 53 77 65 65 74 53 79 6e 74 68 63 63 63 32 32 32 00 50 -00 30 00 58 00 10 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.AftrTch -** Controls: MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank A, voice 32 -1f 1f 00 03 0f 00 28 46 0a 00 1f 1f 00 03 0f 00 28 44 09 06 0b 1f 00 05 0f -1e 08 56 0a 00 0b 1f 00 05 0f 1e 08 56 0a 06 3c 23 00 2e 00 42 05 02 04 00 -63 32 00 00 00 32 00 53 79 2e 41 66 74 72 54 63 68 63 63 63 32 32 32 00 30 -00 62 00 10 00 30 00 00 00 00 00 00 32 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.AftrTch -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 03 0f 00 28 46 0a 00 1f 1f 00 03 0f 00 28 44 09 06 0b 1f 00 05 0f -1e 08 56 0a 00 0b 1f 00 05 0f 1e 08 56 0a 06 3c 23 00 2e 00 42 05 02 04 00 -63 32 00 00 00 32 00 53 79 2e 41 66 74 72 54 63 68 63 63 63 32 32 32 00 30 -00 62 00 10 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Decay 1 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank A, voice 29 -1f 08 00 04 09 14 02 49 12 06 18 08 00 04 0b 14 02 51 13 00 1b 10 00 04 0b -00 01 60 09 06 1f 0a 00 04 0a 00 01 60 0a 00 3d 1f 06 09 00 52 05 02 04 00 -63 32 00 00 00 32 00 53 79 2e 44 65 63 61 79 20 31 63 63 63 32 32 32 00 54 -00 30 00 32 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Decay 2 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank A, voice 30 -1f 0c 08 0f 0c 22 02 3e 35 11 1f 11 01 04 0e 1a 04 4e 05 16 1f 0b 07 0a 0c -00 43 57 04 0e 1f 07 04 08 0e 00 43 60 05 11 3b 1c 08 02 1b 56 11 02 04 00 -63 32 00 00 00 32 00 53 79 2e 44 65 63 61 79 20 32 63 63 63 32 32 32 00 7f -00 01 00 18 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Decay 2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0c 08 0f 0c 22 02 3e 35 11 1f 11 01 04 0e 1a 04 4e 05 16 1f 0b 07 0d 0c -00 43 57 04 0e 1f 07 04 08 0e 00 43 60 05 11 3b 1c 08 02 1b 56 11 02 04 00 -63 32 00 00 00 32 00 53 79 2e 44 65 63 61 79 20 32 63 63 63 32 32 32 00 7f -00 01 00 18 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Synballs -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank D, voice 31 -1f 1f 00 01 0e 00 41 62 36 03 19 16 00 01 0b 00 41 5f 05 0b 15 1c 06 01 0b -00 41 58 39 13 1f 1f 05 02 08 00 41 63 18 13 29 00 02 00 03 52 12 05 04 00 -63 32 00 00 00 32 00 53 79 6e 62 61 6c 6c 73 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - ---Bank 20 - -** Name: Synth....1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 16 07 05 0d 00 04 4b 2d 0b 17 0f 00 06 0d 00 05 57 04 03 16 13 07 06 0d -01 05 63 04 13 0d 09 06 06 0d 00 06 63 04 0b 74 26 21 09 00 42 18 02 04 00 -28 02 00 00 00 32 00 53 79 6e 74 68 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Synth....1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -16 16 07 05 0d 00 01 4b 2d 0b 17 0f 00 06 0d 00 01 57 04 03 16 13 07 06 0d -01 00 63 04 13 0d 09 06 06 0d 00 00 63 04 0b 74 26 21 09 00 42 18 02 04 00 -28 02 00 00 00 32 00 53 79 6e 74 68 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Synth....2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0a 09 03 0d 00 42 50 22 02 1f 0f 00 06 0d 00 44 4e 08 08 0c 0a 07 04 0d -01 45 63 04 12 1f 0a 06 05 0d 00 46 63 08 08 5c 26 23 06 1b 36 0c 02 04 00 -28 02 00 00 00 32 00 53 79 6e 74 68 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Synth....2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0a 09 03 0d 00 43 50 22 02 1f 0f 00 06 0d 00 41 4e 08 08 0c 0a 07 04 0d -01 40 63 04 12 1f 0a 06 05 0d 00 40 63 08 08 5c 26 23 06 1b 36 0c 02 04 00 -28 02 00 00 00 32 00 53 79 6e 74 68 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Synth....3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0d 0a 07 09 0e 00 43 59 08 06 0d 0a 07 09 0e 00 44 52 04 00 1f 1d 07 09 0e -00 46 63 04 03 1f 1d 07 09 0e 00 45 62 04 03 24 24 32 13 02 36 0c 02 04 00 -28 02 00 00 00 32 00 53 79 6e 74 68 2e 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Synth....3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0d 0a 07 09 0e 00 41 59 08 06 0d 0a 07 09 0e 00 41 52 04 00 1f 1d 07 09 0e -00 40 63 04 03 1f 1d 07 09 0e 00 40 62 04 03 24 24 32 13 02 36 0c 02 04 00 -28 02 00 00 00 32 00 53 79 6e 74 68 2e 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Synth....4 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 0f 01 0f 00 05 50 3f 03 1f 06 07 0f 0e 00 05 4d 04 00 18 10 0f 0e 0c -00 06 53 04 03 1f 06 07 0f 0e 00 06 5d 04 03 22 28 00 00 00 32 0c 02 04 00 -28 02 00 00 00 32 00 53 79 6e 74 68 2e 2e 2e 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Synth....4 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 0f 01 0f 00 02 50 3f 03 1f 06 07 0f 0e 00 02 4d 04 00 18 10 0f 0e 0c -00 01 53 04 03 1f 06 07 0f 0e 00 00 5d 04 03 22 28 00 00 00 32 0c 02 04 00 -28 02 00 00 00 32 00 53 79 6e 74 68 2e 2e 2e 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Synth....5 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 14 08 0f 00 00 43 63 10 13 1b 03 06 08 0e 00 44 4c 04 02 1f 15 07 0f 00 -00 45 5f 0d 06 0e 03 06 08 09 00 45 63 04 0e 34 26 21 20 2a 16 0c 02 04 00 -28 02 00 00 00 32 00 53 79 6e 74 68 2e 2e 2e 2e 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Synth....5 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 14 08 0f 00 00 40 63 10 13 1b 03 06 08 0e 00 41 4c 04 02 1f 15 07 0f 00 -00 40 5f 0d 06 0e 03 06 08 09 00 40 63 04 0e 34 26 21 20 2a 16 0c 02 04 00 -28 02 00 00 00 32 00 53 79 6e 74 68 2e 2e 2e 2e 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Synth....6 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 0c 07 0c 0a 00 04 55 04 03 1e 0c 07 07 0a 00 05 55 04 03 1f 16 00 0f 0d -00 05 63 04 03 1f 16 07 07 0d 00 06 62 04 0b 34 26 00 00 00 22 0c 02 04 00 -28 02 00 00 00 32 00 53 79 6e 74 68 2e 2e 2e 2e 36 63 63 63 32 32 32 00 00 -00 10 00 30 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Synth....6 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -10 0c 07 0c 0a 00 01 55 04 03 1e 0c 07 07 0a 00 01 55 04 03 1f 16 00 0f 0d -00 00 63 04 03 1f 16 07 07 0d 00 00 62 04 0b 34 26 00 00 00 22 0c 02 04 00 -28 02 00 00 00 32 00 53 79 6e 74 68 2e 2e 2e 2e 36 63 63 63 32 32 32 00 00 -00 10 00 30 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Synth....7 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0d 09 06 04 00 04 5e 00 05 1f 0c 09 06 0e 00 04 5b 00 02 1f 0c 09 06 0e -00 04 63 00 04 1f 0c 09 06 0e 00 05 63 04 02 2c 25 00 00 00 32 0c 02 04 00 -28 02 00 00 00 32 00 53 79 6e 74 68 2e 2e 2e 2e 37 63 63 63 32 32 32 00 00 -00 00 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Synth....7 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0d 09 06 04 00 01 5e 00 05 1f 0c 09 06 0e 00 01 5b 00 02 1f 0c 09 06 0e -00 00 63 00 04 1f 0c 09 06 0e 00 00 63 04 02 2c 25 00 00 00 32 0c 02 04 00 -28 02 00 00 00 32 00 53 79 6e 74 68 2e 2e 2e 2e 37 63 63 63 32 32 32 00 00 -00 00 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Synthish * -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 08 00 01 0c 00 01 52 08 06 03 0d 00 01 0f 00 01 49 05 18 10 08 00 04 0d -00 01 63 08 0e 0b 0a 00 04 0e 00 00 63 05 08 34 20 05 19 0f 32 08 02 04 00 -28 32 00 00 00 32 00 53 79 6e 74 68 69 73 68 20 2a 63 63 63 32 32 32 00 09 -00 0d 00 09 00 0d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthRise1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 03 0f 00 03 51 00 06 1f 1f 00 03 0f 00 05 5e 00 08 0f 1f 00 04 0f -00 05 5d 08 06 0f 1f 00 05 0f 00 05 5c 08 00 7c 23 00 00 00 02 18 05 04 00 -63 63 63 00 00 32 00 53 79 6e 74 68 52 69 73 65 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthRise1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 03 0f 00 01 51 00 06 1f 1f 00 03 0f 00 01 5e 00 08 0f 1f 00 04 0f -00 00 5d 08 06 0f 1f 00 05 0f 00 00 5c 08 00 7c 23 00 00 00 02 18 05 04 00 -63 63 63 00 00 32 00 53 79 6e 74 68 52 69 73 65 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthRise2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 1f 00 04 0d 00 05 5f 00 06 1f 1f 00 04 0f 00 05 61 00 08 0f 1f 00 05 0f -00 06 5f 08 06 0f 1f 00 05 0f 00 05 58 08 00 74 23 00 00 00 02 18 05 04 00 -63 63 63 00 00 32 00 53 79 6e 74 68 52 69 73 65 32 63 63 63 32 32 32 00 20 -00 40 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthRise2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 1f 00 04 0d 00 01 5f 00 06 1f 1f 00 04 0f 00 02 61 00 08 0f 1f 00 05 0f -00 00 5f 08 06 0f 1f 00 05 0f 00 00 58 08 00 74 23 00 00 00 02 18 05 04 00 -63 63 63 00 00 32 00 53 79 6e 74 68 52 69 73 65 32 63 63 63 32 32 32 00 20 -00 40 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthyPad1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -11 11 06 07 0f 1d 02 62 03 06 0b 08 07 07 0f 16 41 62 05 04 11 07 08 07 0f -1d 02 62 05 00 0e 08 04 05 0f 14 43 63 03 02 7f 22 00 0f 00 36 05 02 04 03 -63 32 00 00 00 32 00 53 79 6e 74 68 79 50 61 64 31 63 63 63 32 32 32 00 16 -00 51 00 11 00 56 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: System 15 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 09 04 09 0e 00 05 54 08 06 16 09 04 09 0e 00 04 5a 00 06 16 09 04 09 0e -00 06 5c 04 03 16 09 04 09 0e 00 05 63 00 03 74 22 00 06 00 32 0c 02 04 00 -28 02 00 00 00 32 00 53 79 73 74 65 6d 20 31 35 20 63 63 63 32 32 32 00 00 -00 00 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: System 15 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -16 09 04 09 0e 00 01 54 08 06 16 09 04 09 0e 00 01 5a 00 06 16 09 04 09 0e -00 00 5c 04 03 16 09 04 09 0e 00 00 63 00 03 74 22 00 06 00 32 0c 02 04 00 -28 02 00 00 00 32 00 53 79 73 74 65 6d 20 31 35 20 63 63 63 32 32 32 00 00 -00 00 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: System35.1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -07 01 00 04 0c 00 04 5f 00 09 0b 07 00 04 0f 00 04 50 00 04 0e 03 01 04 0f -00 05 63 04 0b 13 02 00 04 0f 00 05 63 04 06 54 17 00 0b 00 32 18 04 04 00 -63 01 63 00 00 32 00 53 79 73 74 65 6d 33 35 2e 31 63 63 63 32 32 32 00 10 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: System35.1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -07 01 00 04 0c 00 01 5f 00 09 0b 07 00 04 0f 00 01 50 00 04 0e 03 01 04 0f -00 00 63 04 0b 13 02 00 04 0f 00 00 63 04 06 54 17 00 0b 00 32 18 04 04 00 -63 01 63 00 00 32 00 53 79 73 74 65 6d 33 35 2e 31 63 63 63 32 32 32 00 10 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: System35.2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 04 03 08 0d 00 04 50 04 01 15 04 03 08 0d 00 04 4c 08 03 12 04 03 08 0d -00 04 62 08 03 0a 04 03 08 0d 00 05 5d 08 06 7c 17 00 0b 00 32 0c 04 04 00 -63 01 63 00 00 32 00 53 79 73 74 65 6d 33 35 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: System35.2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -15 04 03 08 0d 00 02 50 04 01 15 04 03 08 0d 00 01 4c 08 03 12 04 03 08 0d -00 00 62 08 03 0a 04 03 08 0d 00 00 5d 08 06 7c 17 00 0b 00 32 0c 04 04 00 -63 01 63 00 00 32 00 53 79 73 74 65 6d 33 35 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: System35.3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 01 00 06 0c 00 02 51 00 09 15 04 00 07 0f 00 04 4e 00 06 13 0c 02 06 0f -00 06 63 00 0b 13 03 01 06 0f 00 05 63 00 16 74 17 00 0b 00 32 18 04 04 00 -63 01 63 00 00 32 00 53 79 73 74 65 6d 33 35 2e 33 63 63 63 32 32 32 00 00 -00 40 00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: System35.3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 01 00 06 0c 00 01 51 00 09 15 04 00 07 0f 00 02 4e 00 06 13 0c 02 06 0f -00 00 63 00 0b 13 03 01 06 0f 00 00 63 00 16 74 17 00 0b 00 32 18 04 04 00 -63 01 63 00 00 32 00 53 79 73 74 65 6d 33 35 2e 33 63 63 63 32 32 32 00 00 -00 40 00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: System55.1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -09 09 00 05 0f 00 03 5b 00 00 15 03 00 06 05 00 05 60 00 0e 13 1f 00 06 0f -00 06 63 04 03 13 0c 00 06 0e 00 05 63 04 03 6c 17 00 0b 00 22 18 05 04 00 -63 63 63 00 00 32 00 53 79 73 74 65 6d 35 35 2e 31 63 63 63 32 32 32 00 00 -00 00 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: System55.1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -09 09 00 05 0f 00 01 5b 00 00 15 03 00 06 05 00 01 60 00 0e 13 1f 00 06 0f -00 00 63 04 03 13 0c 00 06 0e 00 00 63 04 03 6c 17 00 0b 00 22 18 05 04 00 -63 63 63 00 00 32 00 53 79 73 74 65 6d 35 35 2e 31 63 63 63 32 32 32 00 00 -00 00 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: System55.2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -09 09 00 05 0f 00 02 5c 00 06 15 03 00 06 05 00 05 58 08 0e 13 1f 00 06 0f -00 04 63 00 02 13 0c 00 06 0e 00 05 63 00 02 74 17 00 0b 00 22 18 05 04 00 -63 63 63 00 00 32 00 53 79 73 74 65 6d 35 35 2e 32 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: System55.2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -09 09 00 05 0f 00 02 5c 00 06 15 03 00 06 05 00 01 58 08 0e 13 1f 00 06 0f -00 00 63 00 02 13 0c 00 06 0e 00 00 63 00 02 74 17 00 0b 00 22 18 05 04 00 -63 63 63 00 00 32 00 53 79 73 74 65 6d 35 35 2e 32 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tamboura * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0a 07 07 01 00 00 00 49 0a 0b 1f 1f 02 03 0f 00 01 56 00 0b 07 08 04 03 00 -00 01 45 24 0b 1e 0d 05 04 0d 00 01 63 04 0b 3b 23 00 00 00 32 18 02 04 00 -28 63 00 00 00 32 00 54 61 6d 62 6f 75 72 61 20 2a 63 63 63 32 32 32 00 20 -00 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tamboura.1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1d 1f 00 03 0f 00 01 50 00 03 1f 1f 00 02 0f 00 03 5f 04 03 19 18 00 02 0f -00 05 45 05 03 1f 1f 00 03 0f 00 06 5a 04 03 7d 23 00 00 00 32 18 02 04 00 -63 63 00 00 00 32 00 54 61 6d 62 6f 75 72 61 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tamboura.1 -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 1f 00 03 0f 00 00 50 00 03 1f 1f 00 02 0f 00 00 5f 04 03 19 18 00 02 0f -00 00 45 05 03 1f 1f 00 03 0f 00 00 5a 04 03 7d 23 00 00 00 32 18 02 04 00 -63 63 00 00 00 32 00 54 61 6d 62 6f 75 72 61 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tamboura.2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1d 11 07 03 0f 00 02 54 00 03 1f 1f 00 04 0f 00 03 63 00 03 19 18 00 03 0f -00 05 45 04 03 1f 1f 00 04 0f 00 05 5b 04 03 45 23 00 00 00 32 18 02 04 00 -63 63 00 00 00 32 00 54 61 6d 62 6f 75 72 61 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tamboura.2 -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 11 07 03 0f 00 00 54 00 03 1f 1f 00 04 0f 00 00 63 00 03 19 18 00 03 0f -00 00 45 04 03 1f 1f 00 04 0f 00 00 5b 04 03 45 23 00 00 00 32 18 02 04 00 -63 63 00 00 00 32 00 54 61 6d 62 6f 75 72 61 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tamboura.3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1d 1f 00 03 0f 00 02 47 00 03 1f 1f 00 03 0f 00 02 43 00 03 19 18 00 03 0f -00 03 5b 04 03 1f 1f 00 03 0f 00 06 5b 04 03 6c 23 00 00 00 32 18 02 04 00 -63 63 00 00 00 32 00 54 61 6d 62 6f 75 72 61 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tamboura.3 -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 1f 00 03 0f 00 00 47 00 03 1f 1f 00 03 0f 00 00 43 00 03 19 18 00 03 0f -00 00 5b 04 03 1f 1f 00 03 0f 00 00 5b 04 03 6c 23 00 00 00 32 18 02 04 00 -63 63 00 00 00 32 00 54 61 6d 62 6f 75 72 61 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Time X * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -06 00 00 01 00 08 00 5a 00 06 1f 00 00 01 00 00 00 48 00 05 1f 00 00 01 00 -00 02 58 00 01 12 06 00 03 00 00 00 63 00 0b 02 23 00 00 00 32 24 02 04 00 -28 63 00 00 00 32 00 54 69 6d 65 20 58 20 20 20 2a 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: TrdrpSynth -** Controls: KV, MW (LFO pitch) -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -17 04 00 06 09 00 3a 1e 12 06 10 04 00 06 0b 63 02 54 1c 00 13 0c 00 06 0b -00 01 63 09 06 17 06 00 06 0a 23 01 63 13 00 05 1f 06 09 00 42 05 02 04 00 -63 63 00 00 00 32 00 54 72 64 72 70 53 79 6e 74 68 63 63 63 32 32 32 00 54 -00 30 00 32 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Voyage * -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -17 09 00 01 00 19 00 5b 00 08 17 05 00 03 00 00 00 5c 00 0e 15 07 00 04 00 -07 02 63 04 08 15 07 00 04 00 06 01 63 03 0b 14 20 00 1c 00 42 11 02 04 00 -28 63 00 00 00 32 00 56 6f 79 61 67 65 20 20 20 2a 63 63 63 32 32 32 00 44 -00 04 00 08 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Walt/Wendy -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0a 09 07 04 0e 00 04 47 16 03 1e 0f 00 05 0d 00 05 4d 08 09 0a 09 07 04 0e -00 04 62 04 0b 09 10 03 04 0f 00 05 63 08 0e 74 26 00 02 00 63 0c 02 04 00 -63 63 00 00 00 32 00 57 61 6c 74 2f 57 65 6e 64 79 63 63 63 32 32 32 00 00 -00 30 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Walt/Wendy -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0a 09 07 04 0e 00 01 47 16 03 1e 0f 00 05 0d 00 02 4d 08 09 0a 09 07 04 0e -00 00 62 04 0b 09 10 03 04 0f 00 00 63 08 0e 74 26 00 02 00 63 0c 02 04 00 -63 63 00 00 00 32 00 57 61 6c 74 2f 57 65 6e 64 79 63 63 63 32 32 32 00 00 -00 30 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Wapper...1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 1c 15 01 0e 00 04 52 0a 13 10 00 03 08 0d 00 06 58 04 0b 10 00 03 09 0d -00 06 5f 0a 08 10 00 03 08 0d 00 05 63 08 0b 34 25 29 26 63 12 0c 04 04 00 -63 01 63 00 00 32 00 57 61 70 70 65 72 2e 2e 2e 31 63 63 63 32 32 32 00 10 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Wapper...1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -12 1c 15 01 0e 00 01 52 0a 13 10 00 03 08 0d 00 02 58 04 0b 10 00 03 09 0d -00 00 5f 0a 08 10 00 03 08 0d 00 00 63 08 0b 34 25 29 26 63 12 0c 04 04 00 -63 01 63 00 00 32 00 57 61 70 70 65 72 2e 2e 2e 31 63 63 63 32 32 32 00 10 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Wapper...2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 1c 0a 01 0e 00 05 49 2a 0b 10 00 03 08 0d 00 05 3e 10 0b 10 00 03 09 0d -00 05 5f 04 08 10 00 03 08 0d 00 05 63 04 0b 2c 25 2a 26 63 12 18 04 04 00 -63 01 63 00 00 32 00 57 61 70 70 65 72 2e 2e 2e 32 63 63 63 32 32 32 00 30 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Wapper...2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -12 1c 0a 01 0e 00 01 49 2a 0b 10 00 03 08 0d 00 01 3e 10 0b 10 00 03 09 0d -00 00 5f 04 08 10 00 03 08 0d 00 00 63 04 0b 2c 25 2a 26 63 12 18 04 04 00 -63 01 63 00 00 32 00 57 61 70 70 65 72 2e 2e 2e 32 63 63 63 32 32 32 00 30 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: WarmSquare -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank C, voice 21 -1f 06 00 03 0f 00 01 4f 03 06 1f 0e 00 03 0f 00 01 50 05 00 12 0e 00 07 0f -00 02 63 03 00 16 0e 00 07 0f 00 02 63 05 06 34 20 00 00 00 52 05 07 0c 00 -63 32 00 00 00 32 00 57 61 72 6d 53 71 75 61 72 65 63 63 63 32 32 32 00 26 -00 51 00 06 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Wendy : -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0e 0a 06 08 0c 00 03 53 04 03 10 07 06 0a 00 00 05 51 04 03 12 07 06 09 0c -00 05 63 04 13 12 09 04 07 0e 00 06 63 04 03 24 23 00 05 00 42 0c 02 04 00 -28 02 00 00 00 32 00 20 57 65 6e 64 79 20 20 3a 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Wendy : -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0e 0a 06 08 0c 00 01 53 04 03 10 07 06 0a 00 00 01 51 04 03 12 07 06 09 0c -00 00 63 04 13 12 09 04 07 0e 00 00 63 04 03 24 23 00 05 00 42 0c 02 04 00 -28 02 00 00 00 32 00 20 57 65 6e 64 79 20 20 3a 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Wendy C -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0c 09 04 04 0f 00 04 31 1f 06 08 00 00 04 0f 00 04 44 08 0b 0e 09 04 04 0f -00 06 62 08 02 08 00 00 05 0f 00 06 62 08 0b 74 2b 00 0b 00 32 0c 02 04 00 -28 02 00 00 00 32 00 57 65 6e 64 79 20 43 20 20 20 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Wendy C -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0c 09 04 04 0f 00 01 31 1f 06 08 00 00 04 0f 00 01 44 08 0b 0e 09 04 04 0f -00 00 62 08 02 08 00 00 05 0f 00 00 62 08 0b 74 2b 00 0b 00 32 0c 02 04 00 -28 02 00 00 00 32 00 57 65 6e 64 79 20 43 20 20 20 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Whos Upset -** Controls: KV, MW (LFO pitch), MW (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 0f 0f 00 43 58 04 03 1f 1f 00 0f 0f 00 43 63 04 03 1f 1f 00 0f 0f -00 45 63 04 03 1f 1f 00 0f 0f 00 47 63 04 03 5d 2e 3a 45 63 77 18 04 04 00 -63 01 63 00 00 32 00 57 68 6f 73 20 55 70 73 65 74 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Whos Upset -** Controls: MW (LFO pitch), MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 0f 0f 00 40 58 04 03 1f 1f 00 0f 0f 00 40 63 04 03 1f 1f 00 0f 0f -00 40 63 04 03 1f 1f 00 0f 0f 00 40 63 04 03 5d 2e 3a 45 63 77 18 04 04 00 -63 01 63 00 00 32 00 57 68 6f 73 20 55 70 73 65 74 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: X-Pander * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 08 00 06 0d 00 03 52 03 03 0e 08 00 01 0f 00 00 43 04 03 15 0e 00 06 0f -00 00 63 03 0b 0b 1f 00 06 0f 00 00 63 04 0b 3c 21 00 00 00 52 05 02 04 00 -28 32 00 00 00 32 00 58 2d 50 61 6e 64 65 72 20 2a 63 63 63 32 32 32 00 06 -00 08 00 06 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Xuereb * -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -13 08 00 03 0f 00 00 46 3f 1d 1f 00 00 04 0f 00 00 48 08 00 11 07 12 02 00 -00 07 4a 3f 1e 0f 04 09 06 0f 00 02 63 08 0e 33 20 00 14 00 32 00 02 04 00 -28 63 00 00 00 32 00 58 75 65 72 65 62 20 20 20 2a 63 63 63 32 32 32 00 0f -00 00 00 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - ---Bank 21 - -* CATEGORY VOICES - -* SUBCATEGORY Breath - -** Name: BaadBreath -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank D, voice 1 -1f 00 00 04 0f 00 40 63 3c 00 0b 08 07 07 0f 05 00 63 04 06 0f 05 03 07 0f -08 00 3b 05 06 0e 08 04 05 0f 00 03 63 03 00 7e 1d 06 0f 00 4a 11 00 04 00 -63 32 00 00 00 32 00 42 61 61 64 42 72 65 61 74 68 63 63 63 32 32 32 06 30 -00 38 00 01 00 46 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BaadBreath -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 00 00 04 0f 00 41 63 3c 00 0c 09 04 07 0f 3e 03 63 06 06 10 07 03 06 0f -0c 03 4d 05 01 0f 08 04 05 0f 33 04 63 05 00 7e 1d 06 0f 29 4e 11 00 04 00 -63 32 00 00 00 32 00 42 61 61 64 42 72 65 61 74 68 63 63 63 32 32 32 0e 30 -00 30 00 42 01 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BaadBreath -** Controls: KV, MW (LFO pitch) -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -1f 00 00 04 0f 00 40 63 3c 00 0c 09 04 07 0f 3e 00 63 06 06 10 07 03 06 0f -0c 01 4d 05 01 0f 08 04 05 0f 33 01 63 05 00 7e 1d 06 0f 29 4e 11 00 04 00 -63 32 00 00 00 32 00 42 61 61 64 42 72 65 61 74 68 63 63 63 32 32 32 0e 30 -00 30 00 42 01 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BadBreath2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 00 00 04 0f 00 40 63 3c 00 0a 08 07 07 0f 15 00 63 04 06 0a 05 03 07 0f -13 00 32 05 06 0a 08 04 05 0f 19 03 63 03 00 7e 1d 06 0f 00 4a 11 00 04 02 -63 32 00 00 00 32 00 42 61 64 42 72 65 61 74 68 32 63 63 63 32 32 32 06 10 -00 38 00 71 00 46 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BreathOrgn -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank B, voice 32 -0d 0b 00 01 0c 00 02 2c 3d 03 0d 07 00 01 0c 00 02 1f 3c 03 0d 1f 00 05 0f -00 02 63 05 06 0d 1f 00 05 0f 00 02 63 04 00 3c 63 00 2f 00 53 11 04 04 00 -63 32 00 00 00 32 00 42 72 65 61 74 68 4f 72 67 6e 63 63 63 32 32 32 04 30 -05 50 00 11 00 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BreathyEns -** Controls: KV, MW (LFO pitch) -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -1f 00 00 03 0f 00 40 63 3c 00 0b 08 07 06 0f 05 00 63 08 06 0f 05 03 06 0f -08 00 2b 08 06 10 04 04 09 0f 00 03 63 08 00 7e 1d 06 0f 00 4a 0c 01 04 00 -63 32 00 00 00 32 00 42 72 65 61 74 68 79 45 6e 73 63 63 63 32 32 32 06 30 -00 10 00 71 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - -* SUBCATEGORY Choir - -** Name: ChoiChoir* -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 19 00 01 0f 08 00 46 04 06 1f 19 00 01 0f 4a 02 4d 04 06 0b 1f 00 06 0f -00 00 63 08 00 09 19 00 07 0f 17 01 4d 20 00 04 1e 1f 3f 00 42 0c 02 04 00 -28 32 00 00 00 32 00 43 68 6f 69 43 68 6f 69 72 2a 63 63 63 32 32 32 00 00 -00 20 00 00 0c 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Choir....1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0c 0b 0c 0c 0d 00 00 37 0a 03 0c 03 09 09 0f 00 07 32 08 04 0c 06 00 09 0f -00 07 45 08 01 08 08 09 07 0d 00 07 60 04 00 4a 20 21 35 00 22 18 07 04 00 -63 32 63 32 00 32 00 43 68 6f 69 72 2e 2e 2e 2e 31 63 63 63 32 32 32 20 00 -10 10 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Choir....1 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0c 0b 0c 0c 0d 00 00 37 0a 03 0c 03 09 09 0f 00 00 32 08 04 0c 06 00 09 0f -00 00 45 08 01 08 08 09 07 0d 00 00 60 04 00 4a 20 21 35 00 22 18 07 04 00 -63 32 63 32 00 32 00 43 68 6f 69 72 2e 2e 2e 2e 31 63 63 63 32 32 32 20 00 -10 10 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Choir....2 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0c 08 0c 0c 0d 00 03 35 0a 03 0c 1f 09 09 0f 00 06 35 08 03 0c 06 00 09 0f -00 05 63 08 03 0c 08 09 07 0d 00 05 60 04 00 4c 20 21 35 00 22 18 07 04 00 -63 32 63 32 00 32 00 43 68 6f 69 72 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Choir....2 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0c 08 0c 0c 0d 00 00 35 0a 03 0c 1f 09 09 0f 00 00 35 08 03 0c 06 00 09 0f -00 00 63 08 03 0c 08 09 07 0d 00 00 60 04 00 4c 20 21 35 00 22 18 07 04 00 -63 32 63 32 00 32 00 43 68 6f 69 72 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Choir....3 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 15 1f 07 0f 00 02 3a 0d 02 10 16 09 07 0f 00 06 44 08 04 0b 16 09 07 0f -00 06 5f 08 01 0f 0f 04 07 0f 00 05 5f 04 02 44 1f 23 21 00 22 0c 07 04 00 -63 32 63 32 00 32 00 43 68 6f 69 72 2e 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Choir....3 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -10 15 1f 07 0f 00 00 3a 0d 02 10 16 09 07 0f 00 01 44 08 04 0b 16 09 07 0f -00 00 5f 08 01 0f 0f 04 07 0f 00 00 5f 04 02 44 1f 23 21 00 22 0c 07 04 00 -63 32 63 32 00 32 00 43 68 6f 69 72 2e 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Choir....4 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -07 00 04 04 0a 61 00 39 19 03 09 1f 03 07 0f 63 04 3a 04 00 07 00 06 06 09 -58 05 34 13 03 09 1f 01 06 0f 29 45 58 04 06 21 20 2d 00 00 06 24 02 04 00 -63 32 00 00 00 32 00 43 68 6f 69 72 2e 2e 2e 2e 34 63 63 63 32 32 32 00 00 -00 00 00 30 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Choir....4 -** Source: from a library of patches collected by Duane Bowker, author unknown -07 00 04 04 0a 61 00 39 19 03 09 1f 03 07 0f 63 00 3a 04 00 07 00 06 06 09 -58 00 34 13 03 09 1f 01 06 0f 29 40 58 04 06 21 20 2d 00 00 06 24 02 04 00 -63 32 00 00 00 32 00 43 68 6f 69 72 2e 2e 2e 2e 34 63 63 63 32 32 32 00 00 -00 00 00 30 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Choir....5 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -13 12 04 04 0a 3a 03 36 19 06 0b 1f 03 0a 0f 56 05 44 04 00 15 0e 06 0a 09 -63 06 3b 16 00 0e 1f 01 09 0f 00 06 61 04 06 29 21 13 09 00 62 18 02 04 00 -63 32 00 00 00 32 00 43 68 6f 69 72 2e 2e 2e 2e 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Choir....5 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -13 12 04 04 0a 3a 00 36 19 06 0b 1f 03 0a 0f 56 00 44 04 00 15 0e 06 0a 09 -63 00 3b 16 00 0e 1f 01 09 0f 00 00 61 04 06 29 21 13 09 00 62 18 02 04 00 -63 32 00 00 00 32 00 43 68 6f 69 72 2e 2e 2e 2e 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Choir....6 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 15 04 04 0a 3a 03 33 10 06 0c 1f 03 0a 0f 56 04 39 04 00 0d 0e 06 0a 09 -63 06 48 08 00 0c 1f 01 09 0f 00 05 57 04 06 51 21 16 08 00 62 18 02 04 00 -63 32 00 00 00 32 00 43 68 6f 69 72 2e 2e 2e 2e 36 63 63 63 32 32 32 00 10 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Choir....6 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -12 15 04 04 0a 3a 00 33 10 06 0c 1f 03 0a 0f 56 00 39 04 00 0d 0e 06 0a 09 -63 00 48 08 00 0c 1f 01 09 0f 00 00 57 04 06 51 21 16 08 00 62 18 02 04 00 -63 32 00 00 00 32 00 43 68 6f 69 72 2e 2e 2e 2e 36 63 63 63 32 32 32 00 10 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Choral -** Controls: KV, MW (LFO pitch) -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -0b 0d 00 02 0f 0a 40 32 04 00 0a 0d 00 02 0f 0a 40 32 00 06 0c 0b 00 04 0f -1e 42 63 08 00 0a 0d 00 04 0f 14 42 63 04 06 3c 1e 0a 11 04 4a 18 02 04 00 -28 32 00 00 00 32 00 43 68 6f 72 61 6c 20 20 20 20 63 56 63 29 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Chorus -** Controls: MW (LFO pitch) -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -0d 0e 00 02 0f 28 00 32 00 03 0d 0e 00 02 0f 00 00 4e 00 0b 0d 0e 00 04 0f -00 00 63 04 0b 0d 0e 00 04 0f 58 00 63 08 0b 06 1d 00 17 00 22 18 05 04 00 -28 32 0d 00 00 32 00 43 68 6f 72 75 73 20 20 20 20 63 47 63 2f 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Chorus...1 -** Controls: KV, MW (LFO pitch), BC (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 16 02 02 0f 23 42 2f 04 04 06 07 04 04 07 32 46 40 04 03 0a 06 09 09 0f -45 45 39 04 02 0a 06 07 06 0f 0a 46 5d 04 00 2b 23 23 0b 02 46 18 02 04 00 -63 32 00 00 01 32 00 43 68 6f 72 75 73 2e 2e 2e 31 63 63 63 32 32 32 0b 09 -00 10 00 00 00 10 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Chorus...1 -** Controls: MW (LFO pitch), BC (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 16 02 02 0f 23 40 2f 04 04 06 07 04 04 07 32 40 40 04 03 0a 06 09 09 0f -45 40 39 04 02 0a 06 07 06 0f 0a 40 5d 04 00 2b 23 23 0b 02 46 18 02 04 00 -63 32 00 00 01 32 00 43 68 6f 72 75 73 2e 2e 2e 31 63 63 63 32 32 32 0b 09 -00 10 00 00 00 10 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Chorus...2 -** Controls: KV, MW (LFO pitch), BC (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0e 16 05 02 0f 23 43 3a 0d 05 07 07 07 04 07 32 45 43 04 03 09 06 08 09 0f -45 45 40 04 02 0f 06 07 09 0f 0a 45 5f 04 00 3b 23 23 0b 02 46 18 02 04 00 -63 32 00 00 01 32 00 43 68 6f 72 75 73 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Chorus...2 -** Controls: MW (LFO pitch), BC (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -0e 16 05 02 0f 23 40 3a 0d 05 07 07 07 04 07 32 40 43 04 03 09 06 08 09 0f -45 40 40 04 02 0f 06 07 09 0f 0a 40 5f 04 00 3b 23 23 0b 02 46 18 02 04 00 -63 32 00 00 01 32 00 43 68 6f 72 75 73 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Chorus...3 -** Controls: KV, MW (LFO pitch), BC (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0b 09 05 05 0f 23 44 49 08 05 06 07 07 04 07 32 46 4d 08 04 0d 06 08 09 0f -45 45 57 08 02 0d 07 07 09 0f 0a 45 5f 04 00 2e 23 23 0b 02 46 18 02 04 00 -63 32 00 00 01 32 00 43 68 6f 72 75 73 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Chorus...3 -** Controls: KV, MW (LFO pitch), BC (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -0b 09 05 05 0f 23 41 49 08 05 06 07 07 04 07 32 40 4d 08 04 0d 06 08 09 0f -45 40 57 08 02 0d 07 07 09 0f 0a 40 5f 04 00 2e 23 23 0b 02 46 18 02 04 00 -63 32 00 00 01 32 00 43 68 6f 72 75 73 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Chorus...4 -** Controls: KV, MW (LFO pitch), BC (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -07 05 0a 07 0e 2d 43 51 04 0b 0a 04 05 05 09 3c 45 5b 04 05 0d 06 08 09 0f -59 46 60 04 04 0a 05 08 07 0e 0a 46 61 04 0e 06 1b 0f 48 22 16 18 02 04 00 -63 32 00 00 01 32 00 43 68 6f 72 75 73 2e 2e 2e 34 63 63 63 32 32 32 00 10 -00 10 00 10 00 10 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Chorus...4 -** Controls: MW (LFO pitch), BC (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -07 05 0a 07 0e 2d 40 51 04 0b 0a 04 05 05 09 3c 40 5b 04 05 0d 06 08 09 0f -59 40 60 04 04 0a 05 08 07 0e 0a 40 61 04 0e 06 1b 0f 48 22 16 18 02 04 00 -63 32 00 00 01 32 00 43 68 6f 72 75 73 2e 2e 2e 34 63 63 63 32 32 32 00 10 -00 10 00 10 00 10 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Chorus...5 -** Controls: KV, MW (LFO pitch), BC (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -09 07 08 08 0d 2d 44 41 08 04 0c 08 04 06 0b 3c 46 63 04 04 0a 07 05 08 0f -59 46 63 00 01 09 04 08 07 0f 0a 47 61 04 05 0e 1b 0f 4f 26 16 18 02 04 00 -63 32 00 00 01 32 00 43 68 6f 72 75 73 2e 2e 2e 35 63 63 63 32 32 32 00 00 -00 30 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Chorus...5 -** Controls: MW (LFO pitch), BC (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -09 07 08 08 0d 2d 40 41 08 04 0c 08 04 06 0b 3c 40 63 04 04 0a 07 05 08 0f -59 40 63 00 01 09 04 08 07 0f 0a 40 61 04 05 0e 1b 0f 4f 26 16 18 02 04 00 -63 32 00 00 01 32 00 43 68 6f 72 75 73 2e 2e 2e 35 63 63 63 32 32 32 00 00 -00 30 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Chorus...6 -** Controls: KV, MW (LFO pitch), BC (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0c 0a 06 08 0d 3e 45 4b 04 03 0c 06 05 07 0d 32 45 63 08 03 0a 0a 03 07 0f -43 45 63 0a 0b 0c 07 06 08 0f 0a 46 63 04 03 0e 1b 0f 4f 3d 16 18 02 04 00 -63 32 00 00 01 32 00 43 68 6f 72 75 73 2e 2e 2e 36 63 63 63 32 32 32 00 20 -00 00 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Chorus...6 -** Controls: MW (LFO pitch), BC (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -0c 0a 06 08 0d 3e 40 4b 04 03 0c 06 05 07 0d 32 40 63 08 03 0a 0a 03 07 0f -43 40 63 0a 0b 0c 07 06 08 0f 0a 40 63 04 03 0e 1b 0f 4f 3d 16 18 02 04 00 -63 32 00 00 01 32 00 43 68 6f 72 75 73 2e 2e 2e 36 63 63 63 32 32 32 00 20 -00 00 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Chorus...7 -** Controls: MW (LFO pitch), BC (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -06 07 05 07 0d 17 40 42 04 03 09 03 04 07 0d 32 40 55 0a 03 08 05 04 07 0f -2a 40 5b 08 06 08 08 05 07 0f 1e 40 5b 04 05 1e 1b 0f 4f 3d 36 18 02 04 00 -63 32 00 00 01 32 00 43 68 6f 72 75 73 2e 2e 2e 37 63 63 63 32 32 32 00 00 -00 00 00 30 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Chorus...8 -** Controls: KV, MW (LFO pitch), BC (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -06 05 06 06 0c 17 40 39 0a 03 09 05 03 07 0e 32 45 5b 04 03 09 04 06 06 0d -2a 47 5f 04 03 09 06 02 09 0d 1e 46 5d 0a 03 0e 1b 0f 4f 3d 16 18 02 04 00 -63 32 00 00 01 32 00 43 68 6f 72 75 73 2e 2e 2e 38 63 63 63 32 32 32 00 10 -00 30 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Chorus...8 -** Controls: MW (LFO pitch), BC (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -06 05 06 06 0c 17 40 39 0a 03 09 05 03 07 0e 32 40 5b 04 03 09 04 06 06 0d -2a 40 5f 04 03 09 06 02 09 0d 1e 40 5d 0a 03 0e 1b 0f 4f 3d 16 18 02 04 00 -63 32 00 00 01 32 00 43 68 6f 72 75 73 2e 2e 2e 38 63 63 63 32 32 32 00 10 -00 30 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - -* SUBCATEGORY FVoice - -** Name: F Voice..1 -** Controls: KV, MW (LFO pitch), MW (LFO amplitude), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 13 04 05 0a 00 46 52 04 01 15 18 18 07 0c 00 06 4b 04 02 0c 08 04 09 0e -00 46 5b 04 06 0c 08 04 09 0e 00 06 5e 04 00 74 27 1b 30 08 26 18 07 04 00 -63 32 63 32 00 32 00 46 20 56 6f 69 63 65 2e 2e 31 63 63 63 32 32 32 00 30 -00 30 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: F Voice..1 -** Controls: MW (LFO pitch), MW (LFO amplitude), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 13 04 05 0a 00 40 52 04 01 15 18 18 07 0c 00 00 4b 04 02 0c 08 04 09 0e -00 40 5b 04 06 0c 08 04 09 0e 00 00 5e 04 00 74 27 1b 30 08 26 18 07 04 00 -63 32 63 32 00 32 00 46 20 56 6f 69 63 65 2e 2e 31 63 63 63 32 32 32 00 30 -00 30 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: F Voice..2 -** Controls: KV, MW (LFO pitch), MW (LFO amplitude), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0d 16 0f 03 0e 00 45 32 3d 01 06 07 0f 03 09 00 04 44 04 03 0c 06 0a 07 0e -00 45 1a 04 06 0e 08 04 09 0e 00 06 57 04 00 23 27 22 5b 02 16 18 07 04 00 -63 32 63 32 00 32 00 46 20 56 6f 69 63 65 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: F Voice..2 -** Controls: MW (LFO pitch), MW (LFO amplitude), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0d 16 0f 03 0e 00 40 32 3d 01 06 07 0f 03 09 00 00 44 04 03 0c 06 0a 07 0e -00 40 1a 04 06 0e 08 04 09 0e 00 00 57 04 00 23 27 22 5b 02 16 18 07 04 00 -63 32 63 32 00 32 00 46 20 56 6f 69 63 65 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: F Voice..3 -** Controls: KV, MW (LFO pitch), MW (LFO amplitude), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 1f 0e 06 0f 28 05 63 04 00 0c 19 06 07 0f 3c 06 63 08 05 0d 0c 0a 07 0f -0f 06 63 08 06 0d 19 06 07 0f 00 46 61 04 01 27 23 00 15 28 16 18 07 04 00 -63 32 63 32 00 32 00 46 20 56 6f 69 63 65 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: F Voice..3 -** Controls: MW (LFO pitch), MW (LFO amplitude), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 1f 0e 06 0f 28 00 63 04 00 0c 19 06 07 0f 3c 00 63 08 05 0d 0c 0a 07 0f -0f 00 63 08 06 0d 19 06 07 0f 00 40 61 04 01 27 23 00 15 28 16 18 07 04 00 -63 32 63 32 00 32 00 46 20 56 6f 69 63 65 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: F Voice..4 -** Controls: KV, MW (LFO pitch), MW (LFO amplitude), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 15 03 05 0f 01 44 47 00 03 0f 06 06 07 0e 00 40 43 04 04 12 15 04 05 0f -00 46 37 08 03 12 06 04 09 0f 00 45 58 04 04 3c 23 3a 0a 02 46 24 07 04 00 -63 32 63 32 00 32 00 46 20 56 6f 69 63 65 2e 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: F Voice..4 -** Controls: MW (LFO pitch), MW (LFO amplitude), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -12 15 03 05 0f 01 40 47 00 03 0f 06 06 07 0e 00 40 43 04 04 12 15 04 05 0f -00 40 37 08 03 12 06 04 09 0f 00 40 58 04 04 3c 23 3a 0a 02 46 24 07 04 00 -63 32 63 32 00 32 00 46 20 56 6f 69 63 65 2e 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Fem.Voice* -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 17 00 07 0f 00 00 2d 0d 06 0e 17 00 06 0f 00 00 2f 04 00 0b 0d 00 07 0a -00 02 63 08 00 13 0f 00 07 0f 00 02 63 04 06 24 1e 03 25 00 52 18 02 04 00 -28 63 00 00 00 32 00 46 65 6d 2e 56 6f 69 63 65 2a 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - -* SUBCATEGORY MVoice - -** Name: M Voice..1 -** Controls: KV, MW (LFO pitch), MW (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 18 03 04 0e 00 45 49 04 0a 0d 05 02 07 0f 00 46 3d 10 0a 0c 06 04 07 0f -00 46 63 08 0a 0d 18 02 07 0f 00 46 5f 08 04 04 1e 21 33 26 16 0c 04 04 00 -63 01 63 00 00 32 00 4d 20 56 6f 69 63 65 2e 2e 31 63 63 63 32 32 32 00 00 -00 40 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: M Voice..1 -** Controls: MW (LFO pitch), MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 18 03 04 0e 00 40 49 04 0a 0d 05 02 07 0f 00 40 3d 10 0a 0c 06 04 07 0f -00 40 63 08 0a 0d 18 02 07 0f 00 40 5f 08 04 04 1e 21 33 26 16 0c 04 04 00 -63 01 63 00 00 32 00 4d 20 56 6f 69 63 65 2e 2e 31 63 63 63 32 32 32 00 00 -00 40 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: M Voice..2 -** Controls: KV, MW (LFO pitch), MW (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 18 03 04 0f 00 05 47 04 0b 1f 18 03 04 0f 00 06 4a 04 01 0f 18 03 07 0f -00 46 60 08 0b 0f 18 03 07 0f 00 46 63 08 04 24 1d 0c 29 26 26 0c 04 04 00 -63 01 63 00 00 32 00 4d 20 56 6f 69 63 65 2e 2e 32 63 63 63 32 32 32 00 10 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: M Voice..2 -** Controls: MW (LFO pitch), MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 18 03 04 0f 00 00 47 04 0b 1f 18 03 04 0f 00 00 4a 04 01 0f 18 03 07 0f -00 40 60 08 0b 0f 18 03 07 0f 00 40 63 08 04 24 1d 0c 29 26 26 0c 04 04 00 -63 01 63 00 00 32 00 4d 20 56 6f 69 63 65 2e 2e 32 63 63 63 32 32 32 00 10 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: M Voice..3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 18 02 04 0a 00 45 5a 04 0c 12 07 0f 04 03 0a 45 2a 14 0b 09 03 0f 07 09 -00 45 58 04 0c 08 00 0f 08 0c 0a 46 5f 0a 0d 24 1e 21 21 0c 16 0c 04 04 00 -63 32 00 00 00 32 00 4d 20 56 6f 69 63 65 2e 2e 33 63 63 63 32 32 32 10 10 -2b 07 00 10 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: M Voice..3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 18 02 04 0a 00 40 5a 04 0c 12 07 0f 04 03 0a 41 2a 14 0b 09 03 0f 07 09 -00 40 58 04 0c 08 00 0f 08 0c 0a 41 5f 0a 0d 24 1e 21 21 0c 16 0c 04 04 00 -63 32 00 00 00 32 00 4d 20 56 6f 69 63 65 2e 2e 33 63 63 63 32 32 32 10 10 -2b 07 00 10 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: M Voice..4 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0c 05 07 02 03 00 06 46 04 0c 0d 0c 06 05 0f 0a 06 34 19 0c 0c 06 0f 07 0d -00 06 5c 04 0e 0a 00 0f 08 0c 0a 05 5a 04 09 54 21 14 38 00 22 0c 04 04 00 -63 32 00 00 00 32 00 4d 20 56 6f 69 63 65 2e 2e 34 63 63 63 32 32 32 00 00 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: M Voice..4 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0c 05 07 02 03 00 00 46 04 0c 0d 0c 06 05 0f 0a 00 34 19 0c 0c 06 0f 07 0d -00 00 5c 04 0e 0a 00 0f 08 0c 0a 00 5a 04 09 54 21 14 38 00 22 0c 04 04 00 -63 32 00 00 00 32 00 4d 20 56 6f 69 63 65 2e 2e 34 63 63 63 32 32 32 00 00 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Mal.Voice* -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 19 00 04 0f 13 00 4d 04 06 12 06 00 02 0f 00 00 47 04 05 0b 19 00 07 0f -00 00 63 08 00 0a 19 00 07 0f 00 00 4e 28 03 04 20 00 30 26 42 0c 02 04 00 -28 63 00 00 00 32 00 4d 61 6c 2e 56 6f 69 63 65 2a 63 63 63 32 32 32 00 00 -00 00 00 00 0c 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Male Voice -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 00 00 04 0f 2c 00 32 3f 03 0b 02 03 01 0f 0d 00 3c 10 00 0f 02 04 01 0f -23 00 3b 00 06 0e 00 01 06 0f 08 03 5f 0d 03 4b 0a 07 05 01 62 0c 05 04 00 -63 03 00 00 00 32 00 4d 61 6c 65 20 56 6f 69 63 65 63 63 63 32 32 32 00 1f -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MaleVoices -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 00 00 04 0f 2c 00 32 1c 03 0b 02 03 01 0f 0d 00 3c 05 00 0f 02 04 01 0f -23 00 3b 00 06 0e 00 01 06 0f 08 03 5f 04 03 4b 1a 00 05 01 62 11 00 04 00 -63 32 00 00 00 32 00 4d 61 6c 65 56 6f 69 63 65 73 63 63 63 32 32 32 00 11 -00 31 00 04 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - -* SUBCATEGORY Other - -** Name: Quartet..1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -05 07 00 05 0e 00 45 52 00 00 0c 07 00 05 0e 0e 45 56 08 06 0c 1f 00 06 0f -00 05 63 04 00 0c 1f 00 07 0f 0a 06 63 08 06 2c 22 0e 13 08 56 18 07 04 00 -63 63 00 00 00 32 00 51 75 61 72 74 65 74 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Quartet..1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -05 07 00 05 0e 00 41 52 00 00 0c 07 00 05 0e 0e 41 56 08 06 0c 1f 00 06 0f -00 00 63 04 00 0c 1f 00 07 0f 0a 00 63 08 06 2c 22 0e 13 08 56 18 07 04 00 -63 63 00 00 00 32 00 51 75 61 72 74 65 74 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Quartet..2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0e 07 00 05 0e 00 44 51 00 00 0e 07 00 05 0e 0e 45 55 04 06 0e 1f 00 06 0f -00 06 63 08 00 0c 1f 00 07 0f 0a 06 63 08 06 34 22 0e 13 08 56 18 07 04 00 -63 63 00 00 00 32 00 51 75 61 72 74 65 74 2e 2e 32 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Quartet..2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0e 07 00 05 0e 00 41 51 00 00 0e 07 00 05 0e 0e 41 55 04 06 0e 1f 00 06 0f -00 00 63 08 00 0c 1f 00 07 0f 0a 00 63 08 06 34 22 0e 13 08 56 18 07 04 00 -63 63 00 00 00 32 00 51 75 61 72 74 65 74 2e 2e 32 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Ensem.1 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank A, voice 7 -14 06 00 04 07 14 02 49 12 06 0e 08 02 04 09 14 02 59 13 00 0e 09 02 04 0b -00 01 63 09 06 0e 09 02 04 0a 00 01 5e 0a 00 3d 21 08 0c 00 52 05 02 04 00 -63 32 00 00 00 32 00 53 79 2e 45 6e 73 65 6d 2e 31 63 63 63 32 32 32 00 54 -00 30 00 32 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Ensem.2 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank A, voice 8 -1f 17 09 03 0c 14 02 48 3b 03 0a 04 02 05 07 14 01 63 13 06 1f 07 02 05 0b -00 01 63 13 06 0a 03 01 05 0b 00 01 63 0a 00 3e 21 0c 16 00 52 05 02 04 00 -63 32 00 00 00 32 00 53 79 2e 45 6e 73 65 6d 2e 32 63 63 63 32 32 32 00 60 -00 10 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Ensem.2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 17 09 03 0c 14 02 48 3b 03 0d 04 02 05 07 14 01 63 13 06 1f 07 02 05 0b -00 01 63 13 06 0d 03 01 05 0b 00 01 63 0a 00 3e 21 0c 16 00 52 05 02 04 00 -63 32 00 00 00 32 00 53 79 2e 45 6e 73 65 6d 2e 32 63 63 63 32 32 32 00 60 -00 10 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Ensem.3 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank A, voice 9 -1f 1f 05 02 0f 27 02 50 0a 06 1f 1f 05 02 0f 00 02 43 0a 00 1a 1f 07 04 0f -00 06 56 10 06 1a 1f 07 04 0f 00 01 5e 04 00 14 63 00 0c 00 63 18 02 04 00 -28 32 00 00 00 32 00 53 79 2e 45 6e 73 65 6d 2e 33 63 63 63 32 32 32 00 00 -00 30 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Ensem.3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 05 02 0f 27 02 50 0a 06 1f 1f 05 02 0f 00 02 43 0d 00 1a 1f 07 04 0f -00 06 56 10 06 1a 1f 07 04 0f 00 01 5e 04 00 14 63 00 0c 00 63 18 02 04 00 -28 32 00 00 00 32 00 53 79 2e 45 6e 73 65 6d 2e 33 63 63 63 32 32 32 00 00 -00 30 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Ensem.4 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank A, voice 10 -08 04 00 04 0f 14 01 3e 13 06 07 07 00 04 0f 14 01 51 0a 02 10 1f 00 04 0f -14 01 63 09 04 1b 09 00 04 0b 14 01 5f 13 00 3c 1f 01 14 00 52 05 02 04 00 -63 32 00 00 00 32 00 53 79 2e 45 6e 73 65 6d 2e 34 63 63 63 32 32 32 00 00 -00 30 00 32 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Ensem.5 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank A, voice 11 -0e 02 00 01 0a 13 00 44 04 03 0b 06 00 05 0e 00 03 63 00 06 0e 06 00 05 0e -00 03 5b 08 00 0e 06 00 05 0e 00 03 63 04 00 35 1c 0b 1b 00 32 18 02 04 00 -28 63 00 00 00 32 00 53 79 2e 45 6e 73 65 6d 2e 35 63 63 63 32 32 32 00 50 -00 10 00 20 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Ensem.5 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0e 02 00 01 0d 13 00 44 04 03 0b 06 00 05 0e 00 03 63 00 06 0e 06 00 05 0e -00 03 5b 08 00 0e 06 00 05 0e 00 03 63 04 00 35 1c 0b 1b 00 32 18 02 04 00 -28 63 00 00 00 32 00 53 79 2e 45 6e 73 65 6d 2e 35 63 63 63 32 32 32 00 50 -00 10 00 20 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Voice 1 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank A, voice 27 -0c 0e 00 04 0f 0a 40 41 04 06 0a 0e 00 04 0f 0a 40 41 04 00 0a 0c 00 06 0f -0a 42 63 04 06 0a 0e 00 06 0f 0a 42 63 08 00 2c 1e 0a 50 04 4a 18 02 04 00 -28 32 00 00 00 32 00 53 79 2e 56 6f 69 63 65 20 31 63 56 63 2e 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Voice 1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0c 0e 00 04 0f 0a 40 41 04 06 0d 0e 00 04 0f 0a 40 41 04 00 0d 0c 00 06 0f -0a 42 63 04 06 0d 0e 00 06 0f 0a 42 63 08 00 2c 1e 0a 50 04 4a 18 02 04 00 -28 32 00 00 00 32 00 53 79 2e 56 6f 69 63 65 20 31 63 56 63 2e 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Voice 2 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank A, voice 28 -12 02 01 04 0f 00 00 37 04 0c 0f 02 01 02 0b 00 00 31 04 0b 0e 02 01 05 0a -0f 02 63 04 0b 0e 02 01 05 0a 0f 02 63 08 08 34 1e 12 2c 00 42 18 02 04 00 -28 32 00 00 00 32 00 53 79 2e 56 6f 69 63 65 20 32 63 3e 63 2f 32 32 00 00 -00 20 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Voice 2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -12 02 01 04 0f 00 00 37 04 0c 0f 02 01 02 0b 00 00 31 04 0b 0e 02 01 05 0d -0f 02 63 04 0b 0e 02 01 05 0d 0f 02 63 08 08 34 1e 12 2c 00 42 18 02 04 00 -28 32 00 00 00 32 00 53 79 2e 56 6f 69 63 65 20 32 63 3e 63 2f 32 32 00 00 -00 20 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Syntvoice* -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 0f 0f 00 00 00 22 03 0b 17 00 06 0f 00 01 52 04 01 0c 0d 00 07 0b -00 02 42 08 06 11 0f 00 07 0f 00 01 63 04 03 3b 1e 0b 21 00 42 18 02 04 00 -28 63 00 00 00 32 00 53 79 6e 74 76 6f 69 63 65 2a 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: VocalNuts -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank D, voice 2 -1f 00 00 04 0f 00 40 47 2f 00 0e 08 07 07 0f 05 00 4c 00 06 13 1c 0d 0c 06 -08 00 63 05 06 14 11 0d 0b 00 00 03 63 04 00 7a 10 00 51 00 68 17 00 04 00 -63 32 00 00 00 32 00 56 6f 63 61 6c 4e 75 74 73 20 63 63 63 32 32 32 06 30 -00 30 00 01 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: > Voices < -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 0e 00 07 0f 63 03 45 04 04 0a 1f 00 03 0f 00 01 42 04 04 09 1f 00 07 0f -00 06 44 1f 02 08 0e 00 06 0f 00 46 63 04 05 3c 23 2a 23 00 36 18 02 04 00 -28 41 00 00 00 32 00 3e 20 56 6f 69 63 65 73 20 3c 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: > Voices < -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 0e 00 07 0f 63 00 45 04 04 0a 1f 00 03 0f 00 00 42 04 04 09 1f 00 07 0f -00 00 44 1f 02 08 0e 00 06 0f 00 40 63 04 05 3c 23 2a 23 00 36 18 02 04 00 -28 41 00 00 00 32 00 3e 20 56 6f 69 63 65 73 20 3c 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Voices -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank B, voice 27 -1f 00 00 04 0f 00 00 39 20 03 0b 02 03 01 0f 05 00 40 05 00 0f 02 04 01 0f -08 00 35 03 06 0e 00 01 06 0f 00 03 63 04 03 7b 1a 00 05 01 62 11 00 04 00 -63 32 00 00 00 32 00 56 6f 69 63 65 73 20 20 20 20 63 63 63 32 32 32 00 01 -00 01 00 06 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Whisper -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0e 00 01 0e 00 40 5c 39 00 0b 08 00 04 0d 26 02 63 05 04 10 0a 00 06 0c -00 03 41 3e 06 0b 08 00 04 0d 00 02 61 03 08 3e 4f 00 44 63 30 11 04 04 00 -63 15 00 00 00 32 00 57 68 69 73 70 65 72 20 20 20 63 63 63 32 32 32 00 2f -00 31 00 60 00 36 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Wind Voice -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank D, voice 24 -06 1d 01 02 0f 00 01 06 17 00 00 00 0c 02 0f 2e 01 53 19 0e 17 01 00 02 0a -00 02 4b 08 08 0b 01 06 05 0f 01 02 5c 08 0e 01 63 00 52 00 53 18 07 04 00 -63 63 00 00 00 32 00 57 69 6e 64 20 56 6f 69 63 65 63 63 63 32 32 32 00 34 -00 70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - ---Bank 22 - -* CATEGORY PERCUSSION - - -* SUBCATEGORY Bell - - -** Name: Agogo * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 07 0f 00 01 49 08 06 1f 1f 00 07 0f 00 00 41 0c 00 1a 0f 00 07 00 -00 02 63 04 06 1a 0f 00 07 00 00 03 63 04 00 44 12 00 00 00 32 24 02 04 00 -28 63 00 00 00 32 00 41 67 6f 67 6f 20 20 20 20 2a 63 63 63 32 32 32 00 4f -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Agogo Bell -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank D, voice 11 -1f 12 19 03 0c 06 02 57 16 0c 1f 13 19 04 0c 11 02 59 3c 09 1f 11 10 06 0e -00 01 63 08 0a 1f 11 0f 06 0a 00 02 63 08 0a 7c 13 00 06 00 62 18 04 04 00 -63 32 00 00 00 32 00 41 67 6f 67 6f 20 42 65 6c 6c 63 63 63 32 32 32 00 20 -0a 1d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Agogo Bell -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 12 19 03 0c 06 02 57 16 0c 1f 13 19 04 0c 11 02 59 3c 09 1f 11 10 06 0e -00 01 63 08 0d 1f 11 0f 06 0d 00 02 63 08 0a 7c 13 00 06 00 62 18 04 04 00 -63 32 00 00 00 32 00 41 67 6f 67 6f 20 42 65 6c 6c 63 63 63 32 32 32 00 20 -0d 1d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Analobell* -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -17 0a 00 04 00 38 00 54 10 0d 1f 03 08 03 00 4c 00 51 09 08 17 06 08 03 00 -14 05 63 10 0b 1d 0a 08 03 00 0e 02 63 0a 0e 04 23 00 00 00 32 02 02 04 00 -28 63 00 00 00 32 00 41 6e 61 6c 6f 62 65 6c 6c 2a 63 63 63 32 32 32 00 04 -00 18 00 04 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bangkok -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -19 1a 00 05 07 00 01 58 09 08 1e 10 00 03 04 00 03 57 08 15 1c 08 05 05 0b -00 00 62 04 0e 1a 0c 05 04 04 00 00 60 0a 00 0c 1e 00 00 00 42 1a 03 04 00 -63 32 26 2a 00 32 00 42 61 6e 67 6b 6f 6b 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bass Bells -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 05 00 02 07 00 01 50 00 1b 1f 10 0c 03 0f 00 01 4e 10 0b 1f 0b 00 05 0e -00 05 62 04 03 1b 0f 0c 03 0f 00 05 4f 04 0c 2c 18 00 00 00 22 0c 04 04 00 -28 32 00 00 00 32 00 42 61 73 73 20 42 65 6c 6c 73 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bass Bells -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 05 00 02 07 00 00 50 00 1b 1f 10 0c 03 0f 00 00 4e 10 0b 1f 0b 00 05 0e -00 00 62 04 03 1b 0f 0c 03 0f 00 00 4f 04 0c 2c 18 00 00 00 22 0c 04 04 00 -28 32 00 00 00 32 00 42 61 73 73 20 42 65 6c 6c 73 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bell -** Controls: KV -** Source: Yamaha DX11 factory preset, bank B, voice 31 -1f 16 07 03 0a 00 01 4c 16 06 1f 10 0a 04 08 00 01 44 0a 00 19 09 00 04 00 -00 03 60 04 06 18 09 00 06 00 00 02 5f 00 00 3c 1e 00 00 00 52 18 02 04 00 -28 32 00 00 00 32 00 42 65 6c 6c 20 20 20 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bell -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 16 07 03 0a 00 01 4c 16 06 1f 10 0a 04 08 00 01 44 0d 00 19 09 00 04 00 -00 03 60 04 06 18 09 00 06 00 00 02 5f 00 00 3c 1e 00 00 00 52 18 02 04 00 -28 32 00 00 00 32 00 42 65 6c 6c 20 20 20 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bell Ensem -** Controls: KV -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -1f 05 00 04 04 50 04 51 20 0e 1e 0a 01 04 02 50 04 53 1f 08 1e 1d 0a 04 0f -00 02 5c 05 0e 1f 1f 0a 04 0f 00 03 5c 04 08 04 1a 00 00 00 52 1d 02 04 00 -63 32 00 32 00 32 00 42 65 6c 6c 20 45 6e 73 65 6d 63 63 63 32 32 32 00 30 -00 46 00 01 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bell Pad -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank C, voice 30 -12 0b 0f 04 07 00 40 43 1c 00 1f 08 07 07 0f 05 00 63 05 00 0e 07 02 07 0f -08 03 5c 00 06 15 08 04 05 0f 00 03 63 03 06 7e 1f 00 06 00 4a 1d 02 04 00 -63 32 00 00 00 32 00 42 65 6c 6c 20 50 61 64 20 20 63 63 63 32 32 32 06 30 -00 51 00 04 00 56 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bell.....1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1d 04 01 02 0d 00 01 52 0d 03 1b 0f 00 03 0e 58 04 57 0d 08 1d 0f 03 03 0e -57 05 63 08 03 1e 02 03 03 0e 00 03 63 08 0e 34 0c 00 06 00 42 00 02 04 00 -63 11 06 00 00 32 00 42 65 6c 6c 2e 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 20 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bell.....1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 04 01 02 0d 00 01 52 0d 03 1b 0f 00 03 0e 58 02 57 0d 08 1d 0f 03 03 0e -57 01 63 08 03 1e 02 03 03 0e 00 00 63 08 0e 34 0c 00 06 00 42 00 02 04 00 -63 11 06 00 00 32 00 42 65 6c 6c 2e 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 20 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bell.....2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 04 00 05 00 62 04 38 2a 16 1f 07 00 04 01 00 02 4a 2a 00 1f 07 00 05 00 -00 06 63 04 0b 1f 08 00 05 00 00 05 60 0d 08 3c 14 00 00 00 62 0c 02 04 00 -63 32 00 32 00 32 00 42 65 6c 6c 2e 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 10 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bell.....2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 04 00 05 00 62 01 38 2a 16 1f 07 00 04 01 00 01 4a 2a 00 1f 07 00 05 00 -00 00 63 04 0b 1f 08 00 05 00 00 00 60 0d 08 3c 14 00 00 00 62 0c 02 04 00 -63 32 00 32 00 32 00 42 65 6c 6c 2e 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 10 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bell.....3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1a 04 01 01 0b 16 02 4e 05 03 15 0e 00 01 0d 00 03 54 10 16 1c 06 04 02 07 -00 04 63 08 16 18 18 03 01 0e 00 04 62 04 10 24 09 00 04 00 42 24 04 04 00 -28 32 00 00 00 32 00 42 65 6c 6c 2e 2e 2e 2e 2e 33 63 63 63 32 32 32 00 30 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bell.....3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1a 04 01 01 0b 16 01 4e 05 03 15 0e 00 01 0d 00 01 54 10 16 1c 06 04 02 07 -00 00 63 08 16 18 18 03 01 0e 00 01 62 04 10 24 09 00 04 00 42 24 04 04 00 -28 32 00 00 00 32 00 42 65 6c 6c 2e 2e 2e 2e 2e 33 63 63 63 32 32 32 00 30 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bell.....4 -** Controls: KV, MW (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -19 0a 17 05 01 00 02 4e 2d 06 19 0a 1f 03 02 00 03 41 2d 04 19 07 12 04 07 -13 05 63 0a 06 19 07 0f 03 07 13 47 63 0a 03 7c 14 0a 00 39 06 0c 02 04 00 -63 15 27 00 00 32 00 42 65 6c 6c 2e 2e 2e 2e 2e 34 63 63 63 32 32 32 00 00 -00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bell.....4 -** Controls: KV, MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -19 0a 17 05 01 00 01 4e 2d 06 19 0a 1f 03 02 00 01 41 2d 04 19 07 12 04 07 -13 01 63 0a 06 19 07 0f 03 07 13 40 63 0a 03 7c 14 0a 00 39 06 0c 02 04 00 -63 15 27 00 00 32 00 42 65 6c 6c 2e 2e 2e 2e 2e 34 63 63 63 32 32 32 00 00 -00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bell.....5 -** Controls: KV, MW (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -19 0a 02 03 01 00 04 51 2d 06 19 0a 1f 05 02 00 03 48 08 04 19 07 12 04 07 -13 06 62 0d 06 19 07 07 04 07 13 45 63 04 03 76 14 0a 00 39 06 0c 02 04 00 -63 15 27 00 00 32 00 42 65 6c 6c 2e 2e 2e 2e 2e 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bell.....5 -** Controls: KV, MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -19 0a 02 03 01 00 01 51 2d 06 19 0a 1f 05 02 00 01 48 08 04 19 07 12 04 07 -13 01 62 0d 06 19 07 07 04 07 13 40 63 04 03 76 14 0a 00 39 06 0c 02 04 00 -63 15 27 00 00 32 00 42 65 6c 6c 2e 2e 2e 2e 2e 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bell.....6 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1a 0e 04 00 00 05 4e 2d 13 1f 0a 00 05 00 00 04 49 08 0b 1f 1f 00 04 0f -00 05 49 0d 0b 1f 06 00 04 00 00 06 63 04 03 41 23 00 00 00 62 18 04 04 00 -28 32 00 00 00 32 00 42 65 6c 6c 2e 2e 2e 2e 2e 36 63 63 63 32 32 32 00 00 -00 00 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bell.....6 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1a 0e 04 00 00 01 4e 2d 13 1f 0a 00 05 00 00 01 49 08 0b 1f 1f 00 04 0f -00 01 49 0d 0b 1f 06 00 04 00 00 00 63 04 03 41 23 00 00 00 62 18 04 04 00 -28 32 00 00 00 32 00 42 65 6c 6c 2e 2e 2e 2e 2e 36 63 63 63 32 32 32 00 00 -00 00 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bell.....7 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1a 0e 04 00 00 04 4e 28 03 1f 0a 00 05 00 00 04 49 16 03 1f 1f 00 04 0f -00 04 49 16 03 1f 06 00 06 00 00 06 63 04 03 42 23 00 00 00 62 18 04 04 00 -28 32 00 00 00 32 00 42 65 6c 6c 2e 2e 2e 2e 2e 37 63 63 63 32 32 32 00 00 -00 00 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bell.....7 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1a 0e 04 00 00 01 4e 28 03 1f 0a 00 05 00 00 02 49 16 03 1f 1f 00 04 0f -00 01 49 16 03 1f 06 00 06 00 00 00 63 04 03 42 23 00 00 00 62 18 04 04 00 -28 32 00 00 00 32 00 42 65 6c 6c 2e 2e 2e 2e 2e 37 63 63 63 32 32 32 00 00 -00 00 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bell.....8 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0d 1f 04 00 00 05 4b 19 03 1f 00 00 02 0f 00 04 4d 16 1b 1f 0d 1f 04 00 -00 06 63 04 03 1f 0a 07 04 00 00 05 63 04 03 7c 5c 00 01 63 32 18 04 04 00 -28 32 00 00 00 32 00 42 65 6c 6c 2e 2e 2e 2e 2e 38 63 63 63 32 32 32 00 00 -00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bell.....8 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0d 1f 04 00 00 01 4b 19 03 1f 00 00 02 0f 00 01 4d 16 1b 1f 0d 1f 04 00 -00 01 63 04 03 1f 0a 07 04 00 00 01 63 04 03 7c 5c 00 01 63 32 18 04 04 00 -28 32 00 00 00 32 00 42 65 6c 6c 2e 2e 2e 2e 2e 38 63 63 63 32 32 32 00 00 -00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bell.....9 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 15 09 03 0a 00 03 63 34 13 12 1f 0a 05 0f 00 43 63 0d 03 12 1f 0a 05 0f -00 45 63 19 03 12 08 0a 05 0f 00 46 63 04 03 45 1a 00 00 39 66 18 04 04 00 -28 32 00 00 00 32 00 42 65 6c 6c 2e 2e 2e 2e 2e 39 63 63 63 32 32 32 00 00 -00 00 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bell.....9 -** Source: from a library of patches collected by Duane Bowker, author unknown -18 15 09 03 0a 00 00 63 34 13 12 1f 0a 05 0f 00 40 63 0d 03 12 1f 0a 05 0f -00 40 63 19 03 12 08 0a 05 0f 00 40 63 04 03 45 1a 00 00 39 66 18 04 04 00 -28 32 00 00 00 32 00 42 65 6c 6c 2e 2e 2e 2e 2e 39 63 63 63 32 32 32 00 00 -00 00 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bell....10 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0d 06 04 0a 00 04 3f 24 13 1f 0c 06 03 0f 00 04 3f 16 03 1f 06 07 03 0c -00 45 48 0d 03 18 04 09 04 0c 00 06 63 08 03 43 1a 00 00 1c 66 18 04 04 00 -28 32 00 00 00 32 00 42 65 6c 6c 2e 2e 2e 2e 31 30 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bell....10 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0d 06 04 0a 00 01 3f 24 13 1f 0c 06 03 0f 00 01 3f 16 03 1f 06 07 03 0c -00 41 48 0d 03 18 04 09 04 0c 00 01 63 08 03 43 1a 00 00 1c 66 18 04 04 00 -28 32 00 00 00 32 00 42 65 6c 6c 2e 2e 2e 2e 31 30 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bell....11 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 05 0e 04 0f 00 02 48 1c 03 1f 0b 00 05 0a 00 04 5c 24 1b 1f 08 00 04 0a -00 05 5d 08 03 1f 10 00 04 0b 00 05 63 08 03 7e 23 00 00 00 62 18 04 04 00 -28 32 00 00 00 32 00 42 65 6c 6c 2e 2e 2e 2e 31 31 63 63 63 32 32 32 00 00 -00 10 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bell....11 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 05 0e 04 0f 00 02 48 1c 03 1f 0b 00 05 0a 00 00 5c 24 1b 1f 08 00 04 0a -00 00 5d 08 03 1f 10 00 04 0b 00 00 63 08 03 7e 23 00 00 00 62 18 04 04 00 -28 32 00 00 00 32 00 42 65 6c 6c 2e 2e 2e 2e 31 31 63 63 63 32 32 32 00 00 -00 10 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BelleBell* -** Controls: KV, MW (LFO pitch), BC (voice pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1a 08 06 02 0d 16 02 5c 07 0e 18 08 06 02 0d 15 02 5b 08 08 1f 0a 08 03 0e -0d 01 61 00 00 1c 0a 08 04 0e 0b 01 63 00 06 04 19 00 24 00 32 1d 01 04 00 -28 63 00 00 00 30 00 42 65 6c 6c 65 42 65 6c 6c 2a 63 63 63 32 32 32 00 09 -00 0b 00 04 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bells -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0c 0d 04 05 00 00 57 11 03 1f 0c 0d 04 05 00 40 5f 04 03 1f 0c 0d 04 05 -00 38 61 36 03 1f 0c 0d 04 05 00 00 63 14 03 47 1d 00 03 13 5e 30 04 04 00 -63 32 00 00 00 32 00 42 65 6c 6c 73 20 20 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BellyStuff -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1e 0b 0f 04 07 00 40 43 1c 00 13 0c 07 07 0b 05 00 58 05 00 1f 07 02 07 0f -08 03 5c 00 06 13 0c 04 05 0a 00 03 57 03 06 7e 1f 00 06 00 4a 1d 02 04 00 -63 32 00 00 00 32 00 42 65 6c 6c 79 53 74 75 66 66 63 63 63 32 32 32 06 70 -00 61 00 04 00 66 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Big Bell.1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1d 04 01 02 0d 00 03 51 0c 03 1b 0f 00 03 0e 58 03 55 1a 08 1d 0f 03 03 0e -57 07 63 00 03 1e 02 03 03 0e 00 06 63 04 0e 74 0c 00 06 00 63 00 02 04 00 -63 11 06 00 00 32 00 42 69 67 20 42 65 6c 6c 2e 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Big Bell.1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 04 01 02 0d 00 01 51 0c 03 1b 0f 00 03 0e 58 03 55 1a 08 1d 0f 03 03 0e -57 04 63 00 03 1e 02 03 03 0e 00 00 63 04 0e 74 0c 00 06 00 63 00 02 04 00 -63 11 06 00 00 32 00 42 69 67 20 42 65 6c 6c 2e 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Big Bell.2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1d 04 01 02 0d 00 04 52 15 03 1b 0f 00 03 0e 58 04 57 12 08 1d 0f 03 03 0e -57 05 63 0d 03 1e 02 03 03 0e 00 05 63 04 0e 74 0c 00 06 00 63 00 02 04 00 -63 11 06 00 00 32 00 42 69 67 20 42 65 6c 6c 2e 32 63 63 63 32 32 32 00 20 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Big Bell.2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 04 01 02 0d 00 01 52 15 03 1b 0f 00 03 0e 58 02 57 12 08 1d 0f 03 03 0e -57 02 63 0d 03 1e 02 03 03 0e 00 00 63 04 0e 74 0c 00 06 00 63 00 02 04 00 -63 11 06 00 00 32 00 42 69 67 20 42 65 6c 6c 2e 32 63 63 63 32 32 32 00 20 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Big Bell.3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1d 04 01 02 0d 00 01 51 18 03 1b 0f 00 03 0e 58 03 5a 00 08 1d 0f 03 03 0e -57 06 63 08 03 1e 02 03 03 0e 00 05 63 00 0e 74 0c 00 06 00 63 00 02 04 00 -63 11 06 00 00 32 00 42 69 67 20 42 65 6c 6c 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Big Bell.3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 04 01 02 0d 00 01 51 18 03 1b 0f 00 03 0e 58 03 5a 00 08 1d 0f 03 03 0e -57 04 63 08 03 1e 02 03 03 0e 00 00 63 00 0e 74 0c 00 06 00 63 00 02 04 00 -63 11 06 00 00 32 00 42 69 67 20 42 65 6c 6c 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BowedBell -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank D, voice 6 -0b 04 05 04 0f 00 42 55 22 06 0a 07 04 04 0f 00 02 47 0a 00 0b 1f 02 04 0f -00 02 63 0d 06 0b 1f 02 05 0f 00 02 62 04 00 1c 1e 06 11 09 5a 0c 04 04 00 -63 28 00 00 00 32 00 42 6f 77 65 64 42 65 6c 6c 20 63 63 63 32 32 32 00 10 -00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BrightBell -** Controls: KV -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -1f 0e 05 02 0d 27 02 63 16 06 1f 0e 05 02 0e 1a 02 58 16 00 1a 1f 07 04 0f -00 06 60 08 0e 1a 1f 07 04 0f 00 01 5e 08 08 14 1a 00 00 00 52 18 02 04 00 -28 32 00 00 00 32 00 42 72 69 67 68 74 42 65 6c 6c 63 63 63 32 32 32 00 30 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Brthbells -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank D, voice 16 -1c 08 00 03 0e 00 01 55 12 03 1c 07 00 01 0e 2e 01 58 27 0b 0e 04 00 02 0a -00 02 63 04 0a 0d 09 00 02 0c 01 02 63 10 0b 04 54 00 47 00 53 18 07 04 00 -63 32 00 00 00 32 00 42 72 74 68 62 65 6c 6c 73 20 63 63 63 32 32 32 00 04 -00 40 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Carnival! -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: Yamaha DX11 factory preset, bank D, voice 19 -1f 1f 01 0f 0f 22 00 2f 04 08 18 10 1c 0e 01 24 40 40 05 06 1f 04 10 0f 0b -2c 00 2b 00 00 17 1f 09 08 0f 00 00 54 04 0e 3a 63 3f 31 2c 5e 0c 07 04 00 -63 63 00 32 00 32 00 43 61 72 6e 69 76 61 6c 21 20 63 63 63 32 32 32 00 00 -00 10 00 07 00 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ChurchBell -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 09 1f 03 04 00 01 5b 3d 03 1c 09 1f 04 04 00 04 53 05 00 1c 09 1f 04 04 -00 07 5a 04 03 1c 09 1f 03 04 00 07 63 04 03 2c 19 2a 0e 00 10 18 04 04 00 -28 32 00 00 00 32 00 43 68 75 72 63 68 42 65 6c 6c 63 63 63 32 32 32 08 00 -00 00 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ChurchBell -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 09 1f 03 04 00 01 5b 3d 03 1c 09 1f 04 04 00 01 53 05 00 1c 09 1f 04 04 -00 00 5a 04 03 1c 09 1f 03 04 00 00 63 04 03 2c 19 2a 0e 00 10 18 04 04 00 -28 32 00 00 00 32 00 43 68 75 72 63 68 42 65 6c 6c 63 63 63 32 32 32 08 00 -00 00 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ClickChime -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -19 16 00 03 07 00 01 43 00 03 18 18 03 03 03 22 00 60 00 0c 16 07 06 03 06 -00 01 3c 08 03 1a 05 07 03 00 00 01 63 04 0b 39 23 00 08 00 42 18 04 04 00 -63 32 00 00 00 32 00 43 6c 69 63 6b 43 68 69 6d 65 63 63 63 32 32 32 00 31 -00 03 00 11 00 01 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Cloches * -** Source: from a library of patches collected by Rod Lemcke, author unknown -1e 04 1f 04 00 00 00 4b 0f 0a 1f 05 1b 04 00 00 00 49 10 0c 1e 09 16 03 00 -00 00 63 03 08 1f 09 0a 03 00 00 00 63 04 0e 04 23 00 00 00 62 11 02 04 00 -28 32 00 00 00 32 00 43 6c 6f 63 68 65 73 20 20 2a 63 63 63 32 32 32 00 06 -00 04 00 06 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Cow Bell -** Source: Yamaha DX11 factory preset, bank D, voice 10 -1f 0a 1f 03 0c 00 00 43 20 03 1f 16 00 04 0b 00 00 4f 24 03 1f 12 10 08 07 -00 00 5f 34 03 1f 12 12 08 0f 00 00 63 38 03 3c 23 00 00 00 62 18 04 04 00 -28 32 00 00 00 32 00 43 6f 77 20 42 65 6c 6c 20 20 63 63 63 32 32 32 0b 07 -0c 04 0b 0e 09 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Cow-Belle* -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 17 1f 09 00 00 00 51 38 03 1f 14 1f 0a 00 00 00 47 10 03 1a 0e 1f 09 00 -00 03 63 04 13 1a 10 1f 08 00 00 02 63 04 0b 04 23 00 00 00 62 18 01 04 00 -28 32 00 00 00 32 00 43 6f 77 2d 42 65 6c 6c 65 2a 63 63 63 32 32 32 0b 23 -00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Gong.....1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 07 06 05 02 1f 04 41 04 0b 1f 1f 04 04 0f 00 05 4a 1c 0b 16 07 06 05 02 -1f 06 51 0c 0b 1f 1f 04 04 0f 00 06 63 04 0b 6a 23 00 00 00 52 0c 04 04 00 -63 32 00 00 00 32 00 47 6f 6e 67 2e 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Gong.....1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -16 07 06 05 02 1f 01 41 04 0b 1f 1f 04 04 0f 00 01 4a 1c 0b 16 07 06 05 02 -1f 01 51 0c 0b 1f 1f 04 04 0f 00 00 63 04 0b 6a 23 00 00 00 52 0c 04 04 00 -63 32 00 00 00 32 00 47 6f 6e 67 2e 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Gong.....2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -02 0c 06 03 0c 1f 05 3b 2b 0b 0c 09 0e 03 03 00 03 4d 1c 0b 18 09 07 03 03 -1f 07 50 0c 0b 18 09 05 06 0e 00 45 63 04 0b 72 19 00 00 40 56 0c 04 04 00 -63 32 00 00 00 32 00 47 6f 6e 67 2e 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Gong.....2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -02 0c 06 03 0c 1f 01 3b 2b 0b 0c 09 0e 03 03 00 01 4d 1c 0b 18 09 07 03 03 -1f 01 50 0c 0b 18 09 05 06 0e 00 40 63 04 0b 72 19 00 00 40 56 0c 04 04 00 -63 32 00 00 00 32 00 47 6f 6e 67 2e 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Gong.....3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -19 1f 02 02 0f 1f 04 35 03 0b 07 1f 02 02 0f 00 04 46 02 0b 13 1f 02 02 0f -1f 06 4a 03 0b 1f 1f 03 03 0e 00 45 63 00 0b 72 0b 00 0d 40 66 0c 04 04 00 -63 32 00 00 00 32 00 47 6f 6e 67 2e 2e 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Gong.....3 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -19 1f 02 02 0f 1f 00 35 03 0b 07 1f 02 02 0f 00 00 46 02 0b 13 1f 02 02 0f -1f 00 4a 03 0b 1f 1f 03 03 0e 00 40 63 00 0b 72 0b 00 0d 40 56 0c 04 04 00 -63 32 00 00 00 32 00 47 6f 6e 67 2e 2e 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Gong Ageng -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0b 04 01 01 0b 16 04 43 05 03 07 04 00 01 0d 00 04 47 05 16 10 06 04 02 07 -00 03 63 04 16 18 18 03 01 0e 00 03 5e 04 10 04 52 00 07 00 62 18 04 04 00 -28 32 00 00 00 32 00 47 6f 6e 67 20 41 67 65 6e 67 63 63 63 32 32 32 00 0a -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Gongs * -** Controls: KV, MW (LFO pitch), BC (voice pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 04 0f 00 03 53 05 0b 1f 1f 00 03 0f 00 00 55 01 0b 1f 0d 00 02 0a -00 01 45 0a 0b 16 09 0f 03 0e 00 02 5a 00 0b 6b 63 20 50 00 73 18 03 04 00 -28 63 00 00 00 29 00 47 6f 6e 67 73 20 20 20 20 2a 63 63 63 32 32 32 00 70 -00 41 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: HiTine81Z -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank A, voice 10 -1f 0d 09 0f 0c 27 02 3d 35 10 1f 12 02 04 0e 19 04 56 05 16 1f 0c 08 0d 0c -00 43 60 04 0e 1f 08 04 07 0e 00 43 63 05 10 3c 14 08 02 1b 56 11 02 04 00 -63 32 00 00 00 32 00 48 69 54 69 6e 65 38 31 5a 20 63 63 63 32 32 32 00 7f -00 01 00 18 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: HumorBells -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0c 06 0a 04 0d 00 03 44 16 03 1f 06 06 04 0d 00 04 56 19 0b 13 06 06 05 0d -00 06 62 04 0b 1f 06 06 04 0d 00 05 57 04 0a 7d 24 23 00 00 02 0c 02 04 00 -63 63 00 00 00 32 00 48 75 6d 6f 72 42 65 6c 6c 73 63 63 63 32 32 32 00 10 -00 20 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: HumorBells -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -0c 06 0a 04 0d 00 01 44 16 03 1f 06 06 04 0d 00 00 56 19 0b 13 06 06 05 0d -00 00 62 04 0b 1f 06 06 04 0d 00 00 57 04 0a 7d 24 23 00 00 02 0c 02 04 00 -63 63 00 00 00 32 00 48 75 6d 6f 72 42 65 6c 6c 73 63 63 63 32 32 32 00 10 -00 20 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: KeyBell -** Controls: KV, MW (LFO pitch), MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0e 0d 04 09 00 43 3f 2d 06 1f 0e 0d 04 09 00 43 3f 2d 00 1f 09 08 04 0d -00 04 5f 05 0e 1f 09 08 04 0d 00 04 63 04 08 04 1f 0b 04 1a 5d 1d 02 04 00 -63 0a 50 00 00 32 00 4b 65 79 42 65 6c 6c 20 20 20 63 63 63 32 32 32 00 70 -00 60 00 01 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Large Ben -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1d 04 01 02 0d 00 04 54 0c 03 1b 0f 00 03 0e 58 06 63 1f 08 1d 0f 03 03 0e -57 06 63 0c 03 1e 02 03 03 0e 00 05 63 05 0e 74 0c 00 06 00 63 00 02 04 00 -63 11 06 00 00 32 00 4c 61 72 67 65 20 42 65 6e 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Large Ben -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 04 01 02 0d 00 01 54 0c 03 1b 0f 00 03 0e 58 03 63 1f 08 1d 0f 03 03 0e -57 04 63 0c 03 1e 02 03 03 0e 00 00 63 05 0e 74 0c 00 06 00 63 00 02 04 00 -63 11 06 00 00 32 00 4c 61 72 67 65 20 42 65 6e 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: LastTwango -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1d 0a 07 08 03 00 03 58 16 03 13 1c 09 04 09 00 03 63 00 1b 16 0c 02 08 04 -00 04 63 00 1b 13 09 06 09 0e 00 05 63 0d 1b 12 23 00 00 00 02 18 04 04 00 -63 01 63 00 00 32 00 4c 61 73 74 54 77 61 6e 67 6f 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: LastTwango -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 0a 07 08 03 00 00 58 16 03 13 1c 09 04 09 00 00 63 00 1b 16 0c 02 08 04 -00 00 63 00 1b 13 09 06 09 0e 00 00 63 0d 1b 12 23 00 00 00 02 18 04 04 00 -63 01 63 00 00 32 00 4c 61 73 74 54 77 61 6e 67 6f 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - ---Bank 23 - -** Name: LoTine81Z -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank A, voice 9 -1f 09 09 0f 0c 27 02 35 37 10 1f 04 03 04 0d 19 04 56 05 16 1f 0f 08 0d 0c -00 43 60 04 0e 1f 0c 03 07 0e 00 43 63 05 10 3c 14 08 02 1b 56 05 02 04 00 -63 32 00 00 00 32 00 4c 6f 54 69 6e 65 38 31 5a 20 63 63 63 32 32 32 00 7f -00 01 00 18 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MellowSqar -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank C, voice 23 -1f 06 00 03 0f 00 02 4f 09 00 1f 0e 00 03 0f 00 02 55 0a 06 15 12 00 07 0f -00 01 63 05 06 14 0e 00 07 0f 00 01 63 04 00 34 20 00 00 00 52 05 07 0c 00 -63 32 00 00 00 32 00 4d 65 6c 6c 6f 77 53 71 61 72 63 63 63 32 32 32 00 02 -00 00 00 01 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Moooo Bell -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 10 12 06 05 00 03 4a 05 13 1f 10 12 06 05 00 05 47 0d 03 1f 10 12 06 05 -00 05 63 08 03 1f 10 12 08 05 00 06 63 0a 03 2c 23 00 00 00 62 18 05 04 00 -63 32 00 00 00 32 00 4d 6f 6f 6f 6f 20 42 65 6c 6c 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Moooo Bell -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 10 12 06 05 00 00 4a 05 13 1f 10 12 06 05 00 00 47 0d 03 1f 10 12 06 05 -00 00 63 08 03 1f 10 12 08 05 00 00 63 0a 03 2c 23 00 00 00 62 18 05 04 00 -63 32 00 00 00 32 00 4d 6f 6f 6f 6f 20 42 65 6c 6c 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Mr.Rogers -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 0f 00 06 01 06 04 50 18 0b 1f 0d 00 06 01 03 04 4f 1b 09 1f 0a 00 05 01 -00 02 63 04 0e 1f 0c 06 04 0b 00 03 63 04 00 04 19 00 00 00 52 23 02 04 00 -63 32 00 32 00 32 00 4d 72 2e 52 6f 67 65 72 73 20 63 63 63 32 32 32 00 00 -00 13 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OhMy!Bells -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 03 0f 00 40 49 10 08 1f 1f 00 03 0f 00 40 49 10 0e 11 1f 05 03 0f -63 00 63 13 10 11 1f 05 03 0f 63 00 63 13 16 04 0c 00 00 0f 00 0c 02 04 00 -63 32 00 00 00 32 00 4f 68 4d 79 21 42 65 6c 6c 73 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntCowBel -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 10 12 06 05 00 02 4f 17 13 1f 10 12 06 05 00 02 46 08 03 1f 10 12 06 05 -00 05 49 04 03 1f 10 12 08 05 00 04 63 04 03 28 23 00 00 00 62 18 05 04 00 -63 32 00 00 00 32 00 4f 72 6e 74 43 6f 77 42 65 6c 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntCowBel -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 10 12 06 05 00 00 4f 17 13 1f 10 12 06 05 00 00 46 08 03 1f 10 12 06 05 -00 00 49 04 03 1f 10 12 08 05 00 00 63 04 03 28 23 00 00 00 62 18 05 04 00 -63 32 00 00 00 32 00 4f 72 6e 74 43 6f 77 42 65 6c 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PluckBell -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 07 04 0d 00 43 63 35 08 1f 16 0f 07 0e 00 04 63 00 0e 1f 1f 0f 07 0e -00 05 63 10 0e 1f 16 0a 06 0e 00 03 63 00 08 04 43 00 04 29 6f 18 04 04 00 -63 00 00 00 00 32 00 50 6c 75 63 6b 42 65 6c 6c 20 63 63 63 32 32 32 26 60 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SpaceBell1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 00 03 03 0f 0a 03 63 0d 03 1f 11 0c 04 0f 00 05 55 08 0b 1f 00 00 04 0f -00 05 51 08 13 09 0d 09 06 0f 00 06 63 08 0b 46 1f 00 0e 00 02 00 02 04 00 -28 02 00 00 00 32 00 53 70 61 63 65 42 65 6c 6c 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SpaceBell1 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 00 03 03 0f 0a 00 63 0d 03 1f 11 0c 04 0f 00 00 55 08 0b 1f 00 00 04 0f -00 00 51 08 13 09 0d 09 06 0f 00 00 63 08 0b 46 1f 00 0e 00 02 00 02 04 00 -28 02 00 00 00 32 00 53 70 61 63 65 42 65 6c 6c 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SpaceBell2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0f 07 01 09 0a 43 55 04 03 19 1f 0a 06 0f 00 44 63 3d 0b 1f 1f 0a 06 0f -00 45 63 38 13 18 0f 0a 06 0f 00 45 63 2a 0b 65 16 00 09 04 36 00 02 04 00 -28 02 00 00 00 32 00 53 70 61 63 65 42 65 6c 6c 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SpaceBell2 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0f 07 01 09 0a 40 55 04 03 19 1f 0a 06 0f 00 40 63 3d 0b 1f 1f 0a 06 0f -00 40 63 38 13 18 0f 0a 06 0f 00 40 63 2a 0b 65 16 00 09 04 36 00 02 04 00 -28 02 00 00 00 32 00 53 70 61 63 65 42 65 6c 6c 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SpaceBell2 -** Controls: MW (LFO pitch) -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -1f 0f 07 00 09 0a 40 55 04 03 19 1f 0a 06 0f 00 40 63 3d 0b 1f 1f 0a 06 0f -00 40 63 38 13 18 0f 0a 06 0f 00 40 63 2a 0b 65 16 00 09 04 36 00 02 04 00 -28 02 00 00 00 32 00 53 70 61 63 65 42 65 6c 6c 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SundayBell -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1a 04 01 01 0b 16 04 4f 22 01 15 0e 00 01 0d 00 06 53 05 13 1c 06 04 02 07 -00 06 63 16 11 18 18 03 01 0e 00 05 5e 04 12 24 07 00 04 00 62 0c 04 04 00 -28 32 00 00 00 32 00 53 75 6e 64 61 79 42 65 6c 6c 63 63 63 32 32 32 00 00 -00 00 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SundayBell -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1a 04 01 01 0b 16 01 4f 22 01 15 0e 00 01 0d 00 01 53 05 13 1c 06 04 02 07 -00 01 63 16 11 18 18 03 01 0e 00 00 5e 04 12 24 07 00 04 00 62 0c 04 04 00 -28 32 00 00 00 32 00 53 75 6e 64 61 79 42 65 6c 6c 63 63 63 32 32 32 00 00 -00 00 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Perc. 1 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank A, voice 12 -1f 11 06 01 08 46 01 4d 3f 03 1f 15 05 01 0c 1e 01 4c 3c 03 1f 0b 06 05 08 -00 01 63 0a 06 1f 0f 06 05 0a 00 01 63 04 00 3c 22 00 0a 00 52 11 02 04 00 -63 32 00 00 00 32 00 53 79 2e 50 65 72 63 2e 20 31 63 63 63 32 32 32 00 30 -00 20 00 00 00 28 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Perc. 2 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank A, voice 13 -1f 08 00 01 00 00 00 32 13 05 1f 07 00 01 00 00 00 39 28 01 1a 08 00 04 00 -00 02 5c 00 05 1b 09 00 05 00 00 02 5f 08 01 3c 20 00 12 00 42 18 02 04 00 -63 32 00 00 00 32 00 53 79 2e 50 65 72 63 2e 20 32 63 63 63 32 32 32 00 10 -00 10 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Perc. 3 -** Source: Yamaha DX11 factory preset, bank A, voice 14 -1f 14 00 04 00 1e 00 4d 08 00 1f 1a 08 01 04 00 00 3c 04 06 1a 16 0c 09 0c -00 00 5b 04 10 16 15 07 07 0e 00 40 5e 04 16 3c 1f 00 00 00 52 18 02 04 00 -63 32 00 32 00 32 00 53 79 2e 50 65 72 63 2e 20 33 63 63 63 30 32 32 00 00 -00 60 00 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sy.Perc. 4 -** Controls: KV -** Source: Yamaha DX11 factory preset, bank A, voice 15 -1f 05 00 05 04 1e 04 51 20 0e 1e 0a 01 05 02 1e 04 53 1f 08 1e 1d 0a 05 0f -00 02 5c 05 0e 1f 1f 0a 05 0f 00 03 5c 04 08 04 1a 00 00 00 52 1d 02 04 00 -63 32 00 32 00 32 00 53 79 2e 50 65 72 63 2e 20 34 63 63 63 32 32 32 00 30 -00 46 00 01 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthBell -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 06 06 04 0e 00 05 54 0d 06 1f 06 06 04 0e 00 05 63 08 04 1f 06 06 04 0e -00 05 5b 08 02 1f 06 06 04 0e 00 05 63 00 03 05 23 00 00 00 03 00 04 04 00 -63 01 63 00 00 32 00 53 79 6e 74 68 42 65 6c 6c 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthBell -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 06 06 04 0e 00 02 54 0d 06 1f 06 06 04 0e 00 00 63 08 04 1f 06 06 04 0e -00 00 5b 08 02 1f 06 06 04 0e 00 00 63 00 03 05 23 00 00 00 03 00 04 04 00 -63 01 63 00 00 32 00 53 79 6e 74 68 42 65 6c 6c 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tube Bell -** Controls: KV -** Source: Yamaha DX11 factory preset, bank B, voice 23 -1f 0e 05 02 0a 27 02 50 16 06 1f 0e 05 02 0e 1a 02 43 16 00 1a 1f 07 04 0f -00 06 60 08 0e 1a 1f 07 04 0f 00 01 5e 08 08 14 1a 00 00 00 52 18 02 04 00 -28 32 00 00 00 32 00 54 75 62 65 20 42 65 6c 6c 20 63 63 63 32 32 32 00 30 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tube Bell -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0e 05 02 0d 27 02 50 16 06 1f 0e 05 02 0e 1a 02 43 16 00 1a 1f 07 04 0f -00 06 60 08 0e 1a 1f 07 04 0f 00 01 5e 08 08 14 1a 00 00 00 52 18 02 04 00 -28 32 00 00 00 32 00 54 75 62 65 20 42 65 6c 6c 20 63 63 63 32 32 32 00 30 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tube Bells -** Controls: MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank D, voice 26 -1a 04 01 01 0b 16 00 47 05 03 15 0e 00 01 0d 00 00 4c 05 16 1c 06 04 02 07 -00 00 63 04 16 18 18 03 01 0e 00 00 5e 04 10 24 07 00 04 00 62 24 04 04 00 -63 32 00 00 00 32 00 54 75 62 65 20 42 65 6c 6c 73 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY Block - - -** Name: "Air"imba -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank D, voice 20 -1f 03 1a 0f 0f 00 00 3e 3d 05 1f 00 1f 03 00 00 01 40 05 00 1f 13 0b 03 0b -00 01 51 28 06 1f 11 0a 06 0f 00 00 5c 2c 06 3a 63 00 63 00 63 0e 07 04 00 -63 32 00 00 00 32 00 22 41 69 72 22 69 6d 62 61 20 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: "Air"imba -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 03 1a 0f 0f 00 00 3e 3d 05 1f 00 1f 03 00 00 01 40 05 00 1f 13 0b 03 0b -00 01 51 28 06 1f 11 0d 06 0f 00 00 5c 2c 06 3a 63 00 63 00 63 0e 07 04 00 -63 32 00 00 00 32 00 22 41 69 72 22 69 6d 62 61 20 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Balafon * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 17 18 0c 03 22 07 4e 18 03 1d 12 1a 08 04 23 04 4f 0e 00 1c 08 09 04 09 -24 02 63 03 11 1f 0b 18 06 00 14 02 63 04 10 04 23 00 00 00 32 11 02 04 00 -28 00 00 00 00 32 00 42 61 6c 61 66 6f 6e 20 20 2a 63 63 63 32 32 32 0c 08 -00 09 00 06 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BamboBlock -** Controls: MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank D, voice 22 -17 19 15 08 0c 02 00 57 07 0c 1f 17 15 0a 0b 02 00 55 0c 02 1a 12 16 0a 0b -01 00 5c 04 0a 1f 10 10 09 0a 00 00 5a 04 04 34 52 00 07 00 62 18 04 04 00 -28 32 00 00 00 32 00 42 61 6d 62 6f 42 6c 6f 63 6b 63 63 63 32 32 32 00 01 -00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BamboBlock -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -17 19 15 08 0c 02 00 57 07 0c 1f 17 15 0a 0b 02 00 55 0c 02 1a 12 16 0a 0b -01 00 5c 04 0a 1f 10 10 09 0d 00 00 5a 04 04 34 52 00 07 00 62 18 04 04 00 -28 32 00 00 00 32 00 42 61 6d 62 6f 42 6c 6f 63 6b 63 63 63 32 32 32 00 01 -00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BamboChiff -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 12 0f 0f 0c 52 03 51 16 0a 12 1f 12 0f 0f 27 02 5e 22 0b 12 0f 0c 0f 0c -11 07 5b 08 13 13 1f 09 0f 0f 00 06 63 04 03 44 23 00 02 00 12 18 01 04 00 -63 00 63 00 00 32 00 42 61 6d 62 6f 43 68 69 66 66 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BamboChiff -** Source: from a library of patches collected by Duane Bowker, author unknown -15 12 0f 0f 0c 52 00 51 16 0a 12 1f 12 0f 0f 27 00 5e 22 0b 12 0f 0c 0f 0c -11 00 5b 08 13 13 1f 09 0f 0f 00 00 63 04 03 44 23 00 02 00 12 18 01 04 00 -63 00 63 00 00 32 00 42 61 6d 62 6f 43 68 69 66 66 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BamboMar.1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 12 07 0f 00 02 02 4c 19 1c 12 12 06 05 09 00 02 4d 22 1a 1f 0a 06 06 0c -00 04 63 13 1c 12 0a 07 06 00 00 05 63 0a 1b 5c 2c 63 04 00 22 00 02 04 00 -63 32 00 32 00 32 00 42 61 6d 62 6f 4d 61 72 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BamboMar.1 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 12 07 0f 00 02 00 4c 19 1c 12 12 06 05 09 00 00 4d 22 1a 1f 0a 06 06 0c -00 00 63 13 1c 12 0a 07 06 00 00 00 63 0a 1b 5c 2c 63 04 00 22 00 02 04 00 -63 32 00 32 00 32 00 42 61 6d 62 6f 4d 61 72 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BamboMar.2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 0d 0a 0a 0c 02 04 4d 10 1c 12 12 06 05 09 00 05 46 16 12 1b 0a 0a 06 0c -00 05 63 04 1c 12 0a 07 06 00 00 05 63 04 1b 5c 15 00 00 00 02 00 02 04 00 -63 32 00 32 00 32 00 42 61 6d 62 6f 4d 61 72 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BamboMar.2 -** Source: from a library of patches collected by Duane Bowker, author unknown -16 0d 0a 0a 0c 02 00 4d 10 1c 12 12 06 05 09 00 00 46 16 12 1b 0a 0a 06 0c -00 00 63 04 1c 12 0a 07 06 00 00 00 63 04 1b 5c 15 00 00 00 02 00 02 04 00 -63 32 00 32 00 32 00 42 61 6d 62 6f 4d 61 72 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BamboMar.3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 0d 0a 0a 0c 02 01 48 19 1c 12 12 06 05 09 00 04 46 16 1a 1b 0a 0a 06 0c -00 05 63 04 1c 12 0a 07 06 00 00 05 63 04 1b 7c 15 00 00 00 02 00 02 04 00 -63 32 00 32 00 32 00 42 61 6d 62 6f 4d 61 72 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BamboMar.3 -** Source: from a library of patches collected by Duane Bowker, author unknown -16 0d 0a 0a 0c 02 00 48 19 1c 12 12 06 05 09 00 00 46 16 1a 1b 0a 0a 06 0c -00 00 63 04 1c 12 0a 07 06 00 00 00 63 04 1b 7c 15 00 00 00 02 00 02 04 00 -63 32 00 32 00 32 00 42 61 6d 62 6f 4d 61 72 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bamboo * -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1a 06 1f 03 00 46 02 3c 00 10 1c 12 0f 05 04 00 00 5b 01 13 17 1b 0f 05 04 -00 03 50 04 13 1a 0a 1f 05 00 00 02 63 00 0d 2a 17 0c 31 00 32 0c 02 04 00 -28 63 00 00 00 32 00 42 61 6d 62 6f 6f 20 20 20 2a 63 63 63 32 32 32 00 10 -00 14 00 71 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Castanet -** Source: Yamaha DX11 factory preset, bank D, voice 13 -19 16 1f 03 00 00 00 52 20 06 18 16 1f 03 00 00 00 52 27 00 1f 15 00 0c 00 -00 00 63 00 00 1f 15 15 0c 00 00 00 63 00 06 1c 23 00 00 00 62 18 04 04 00 -28 32 00 00 00 32 00 43 61 73 74 61 6e 65 74 20 20 63 63 63 32 32 32 0c 18 -0c 00 08 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Claves * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 0f 0f 00 00 00 04 03 1f 1d 0d 07 08 00 01 3d 00 03 1f 16 0f 0b 07 -00 01 46 0d 03 1f 1c 11 08 0f 00 01 63 04 03 03 23 00 00 00 32 24 02 04 00 -28 63 00 00 00 32 00 43 6c 61 76 65 73 20 20 20 2a 63 63 63 32 32 32 00 00 -0e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MarimbLead -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 18 10 01 0c 63 44 62 22 0b 1f 18 10 01 0c 63 45 59 04 0b 1f 06 06 07 0c -0e 46 5e 04 0b 1f 06 06 07 0c 0e 45 5e 04 0b 7c 32 23 00 52 40 18 04 04 00 -63 01 63 00 00 32 00 4d 61 72 69 6d 62 4c 65 61 64 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MarimbLead -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 18 10 01 0c 63 42 62 22 0b 1f 18 10 01 0c 63 41 59 04 0b 1f 06 06 07 0c -0e 40 5e 04 0b 1f 06 06 07 0c 0e 40 5e 04 0b 7c 32 23 00 52 40 18 04 04 00 -63 01 63 00 00 32 00 4d 61 72 69 6d 62 4c 65 61 64 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Marimba * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 03 12 09 0f 00 03 47 10 06 1f 00 15 05 0f 00 00 3f 08 00 1f 0f 00 05 00 -00 01 60 04 08 1f 0d 00 06 00 00 05 63 04 0e 3c 23 00 00 00 62 18 04 04 00 -00 32 00 00 00 32 00 4d 61 72 69 6d 62 61 20 20 2a 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Marimba -** Controls: KV -** Source: Yamaha DX11 factory preset, bank B, voice 19 -1f 16 0e 07 05 15 06 52 0f 0b 1a 18 0c 07 05 0c 02 52 0a 0b 17 1f 0a 07 0f -00 02 62 08 0b 16 1f 0a 05 0f 00 01 62 00 0b 04 23 00 00 00 52 18 02 04 00 -28 32 00 00 00 32 00 4d 61 72 69 6d 62 61 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Marimba -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 16 0e 07 05 15 06 52 0f 0b 1a 18 0c 07 05 0c 02 52 0a 0b 17 1f 0d 07 0f -00 02 62 08 0b 16 1f 0a 05 0f 00 01 62 00 0b 04 23 00 00 00 52 18 02 04 00 -28 32 00 00 00 32 00 4d 61 72 69 6d 62 61 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Marimba -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 12 0e 07 0f 48 04 49 17 1b 1f 0f 10 06 08 63 05 4f 1a 13 1f 1f 12 07 0f -3b 05 4b 34 1b 1f 1f 0a 06 0f 00 04 63 0d 13 02 1e 09 00 00 52 00 04 04 00 -63 28 00 00 00 32 00 4d 61 72 69 6d 62 61 20 20 20 63 63 63 32 32 32 00 0b -00 03 08 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Marimba..1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1b 00 06 00 00 05 63 28 03 1f 12 00 06 00 00 05 45 13 03 1f 0d 00 06 00 -00 05 44 16 03 1f 0c 00 06 00 00 06 63 04 03 02 23 00 00 00 62 0c 07 04 00 -63 63 00 00 00 32 00 4d 61 72 69 6d 62 61 2e 2e 31 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Marimba..1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1b 00 06 00 00 03 63 28 03 1f 12 00 06 00 00 03 45 13 03 1f 0d 00 06 00 -00 02 44 16 03 1f 0c 00 06 00 00 00 63 04 03 02 23 00 00 00 62 0c 07 04 00 -63 63 00 00 00 32 00 4d 61 72 69 6d 62 61 2e 2e 31 63 63 63 32 32 32 00 00 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Marimba..2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 19 00 07 00 00 05 5b 1f 08 1f 11 00 07 00 00 04 50 13 0e 1f 0a 00 07 00 -11 06 63 04 0e 1f 0a 00 07 00 11 05 63 04 00 2c 15 00 00 00 52 0c 02 05 00 -63 32 00 32 00 32 00 4d 61 72 69 6d 62 61 2e 2e 32 63 63 63 32 32 32 00 30 -00 00 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Marimba..2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 19 00 07 00 00 03 5b 1f 08 1f 11 00 07 00 00 02 50 13 0e 1f 0a 00 07 00 -11 00 63 04 0e 1f 0a 00 07 00 11 00 63 04 00 2c 15 00 00 00 52 0c 02 05 00 -63 32 00 32 00 32 00 4d 61 72 69 6d 62 61 2e 2e 32 63 63 63 32 32 32 00 30 -00 00 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Marimba..3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 19 00 07 00 00 04 4c 19 08 1f 11 00 07 00 00 03 49 16 0e 1f 0a 00 07 00 -11 06 63 04 0e 1f 0a 00 07 00 11 06 62 04 00 2c 15 00 00 00 52 00 02 05 00 -63 32 00 32 00 32 00 4d 61 72 69 6d 62 61 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Marimba..3 -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 19 00 07 00 00 00 4c 19 08 1f 11 00 07 00 00 00 49 16 0e 1f 0a 00 07 00 -11 00 63 04 0e 1f 0a 00 07 00 11 00 62 04 00 2c 15 00 00 00 52 00 02 05 00 -63 32 00 32 00 32 00 4d 61 72 69 6d 62 61 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Marimba..4 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 0d 05 03 00 00 04 58 0a 18 1f 11 00 07 00 00 04 50 10 0e 1f 0a 00 07 00 -11 05 63 04 0e 1f 0a 00 07 00 11 06 62 04 00 2c 15 00 00 00 52 0c 02 05 00 -63 32 00 32 00 32 00 4d 61 72 69 6d 62 61 2e 2e 34 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Marimba..4 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -16 0d 05 03 00 00 02 58 0a 18 1f 11 00 07 00 00 01 50 10 0e 1f 0a 00 07 00 -11 00 63 04 0e 1f 0a 00 07 00 11 00 62 04 00 2c 15 00 00 00 52 0c 02 05 00 -63 32 00 32 00 32 00 4d 61 72 69 6d 62 61 2e 2e 34 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Marimba..5 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1b 00 06 00 00 05 5d 28 03 1f 12 00 06 00 00 05 4d 00 03 1f 0d 00 06 00 -00 07 46 10 03 1f 0c 00 06 00 00 07 61 00 03 02 23 00 00 00 62 0c 07 04 00 -63 63 00 00 00 32 00 4d 61 72 69 6d 62 61 2e 2e 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Marimba..5 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1b 00 06 00 00 02 5d 28 03 1f 12 00 06 00 00 02 4d 00 03 1f 0d 00 06 00 -00 04 46 10 03 1f 0c 00 06 00 00 01 61 00 03 02 23 00 00 00 62 0c 07 04 00 -63 63 00 00 00 32 00 4d 61 72 69 6d 62 61 2e 2e 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Marimba..6 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 02 06 04 00 05 62 19 03 1f 12 00 06 00 00 05 4b 04 03 1f 0d 00 06 00 -00 06 44 16 03 1f 0c 00 06 00 00 06 63 04 03 02 23 00 00 00 62 0c 07 04 00 -63 63 00 00 00 32 00 4d 61 72 69 6d 62 61 2e 2e 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Marimba..6 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 02 06 04 00 02 62 19 03 1f 12 00 06 00 00 01 4b 04 03 1f 0d 00 06 00 -00 01 44 16 03 1f 0c 00 06 00 00 00 63 04 03 02 23 00 00 00 62 0c 07 04 00 -63 63 00 00 00 32 00 4d 61 72 69 6d 62 61 2e 2e 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Marimba..7 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 02 06 03 00 05 63 19 03 1f 12 00 06 00 00 03 4f 0a 03 1f 0d 00 06 00 -00 06 42 04 03 1f 0c 00 06 00 00 05 63 08 03 03 23 00 00 00 62 0c 07 04 00 -63 63 00 00 00 32 00 4d 61 72 69 6d 62 61 2e 2e 37 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Marimba..7 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 02 06 03 00 02 63 19 03 1f 12 00 06 00 00 01 4f 0a 03 1f 0d 00 06 00 -00 01 42 04 03 1f 0c 00 06 00 00 00 63 08 03 03 23 00 00 00 62 0c 07 04 00 -63 63 00 00 00 32 00 4d 61 72 69 6d 62 61 2e 2e 37 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ornt Block -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 18 0c 0f 0c 00 41 51 0a 1b 1f 10 09 07 0d 2e 42 40 04 13 1f 10 09 04 0d -00 44 63 04 1b 1f 10 12 05 0d 01 46 62 04 13 7e 1e 28 24 0f 27 18 07 04 00 -63 32 00 00 00 32 00 4f 72 6e 74 20 42 6c 6f 63 6b 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ornt Block -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -18 18 0c 0f 0c 00 40 51 0a 1b 1f 10 09 07 0d 2e 40 40 04 13 1f 10 09 04 0d -00 40 63 04 1b 1f 10 12 05 0d 01 40 62 04 13 7e 1e 28 24 0f 27 18 07 04 00 -63 32 00 00 00 32 00 4f 72 6e 74 20 42 6c 6f 63 6b 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynGameran -** Source: Yamaha DX11 factory preset, bank D, voice 17 -0a 14 00 01 0b 00 40 2d 11 03 14 03 00 0f 0e 2e 00 41 27 0c 1f 1b 11 05 0a -00 40 3f 0a 0a 1f 0f 00 0b 00 01 00 5a 10 0b 38 3a 00 63 50 5f 0b 05 04 00 -63 00 00 00 00 32 00 53 79 6e 47 61 6d 65 72 61 6e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynGameran -** Source: from a library of patches collected by Duane Bowker, author unknown -0d 14 00 01 0b 00 40 2d 11 03 14 03 00 0f 0e 2e 00 41 27 0c 1f 1b 11 05 0a -00 40 3f 0d 0a 1f 0f 00 0b 00 01 00 5a 10 0b 38 3a 00 63 50 5f 0b 05 04 00 -63 00 00 00 00 32 00 53 79 6e 47 61 6d 65 72 61 6e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthMarib -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 18 10 01 0c 63 43 5d 38 0b 0a 01 07 07 0f 00 45 52 00 03 1f 09 0f 07 0c -0e 45 63 04 0b 0f 02 07 07 0e 00 46 63 04 03 7c 32 23 00 52 40 18 04 04 00 -63 01 63 00 00 32 00 53 79 6e 74 68 4d 61 72 69 62 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthMarib -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 18 10 01 0c 63 41 5d 38 0b 0a 01 07 07 0f 00 41 52 00 03 1f 09 0f 07 0c -0e 40 63 04 0b 0f 02 07 07 0e 00 41 63 04 03 7c 32 23 00 52 40 18 04 04 00 -63 01 63 00 00 32 00 53 79 6e 74 68 4d 61 72 69 62 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tablas * -** Controls: KV, MW (LFO pitch), BC (voice pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -19 1c 17 09 0a 00 03 63 0d 0b 19 1f 1b 09 06 00 00 63 00 0b 1f 05 00 09 0f -00 00 63 3c 0b 13 10 11 06 0a 00 03 63 00 0b 02 18 00 26 00 32 18 0c 04 00 -28 63 00 00 00 13 00 54 61 62 6c 61 73 20 20 20 2a 63 63 63 32 32 32 00 06 -00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Wood Block -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank D, voice 12 -1f 18 01 08 00 00 02 55 07 0b 1f 18 12 0a 0c 00 02 55 0a 0b 1f 15 13 0a 0a -00 01 63 04 0b 1f 12 13 09 00 00 01 63 04 0b 2c 52 00 07 00 62 24 04 04 00 -28 32 00 00 00 32 00 57 6f 6f 64 20 42 6c 6f 63 6b 63 63 63 32 32 32 00 11 -00 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Wood Block -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 18 01 08 00 00 02 55 07 0b 1f 18 12 0a 0c 00 02 55 0a 0b 1f 15 13 0a 0d -00 01 63 04 0b 1f 12 13 09 00 00 01 63 04 0b 2c 52 00 07 00 62 24 04 04 00 -28 32 00 00 00 32 00 57 6f 6f 64 20 42 6c 6f 63 6b 63 63 63 32 32 32 00 11 -00 0d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: WoodBlock* -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 17 00 08 00 00 00 4b 0b 0b 1f 1f 16 07 0f 20 03 49 0f 0b 1a 0f 00 07 00 -00 02 63 03 0b 1f 1f 0c 06 0f 00 01 63 05 13 44 0e 00 63 00 42 11 02 04 00 -28 63 00 00 00 32 00 57 6f 6f 64 42 6c 6f 63 6b 2a 63 63 63 32 32 32 00 0a -00 49 00 06 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: WoodBlock1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 12 0f 0c 0a 00 00 4d 0c 13 1f 10 12 09 0d 00 00 45 04 0b 1f 16 10 08 0c -00 05 63 04 13 1f 10 12 09 0d 00 05 63 04 0b 44 30 00 00 00 62 18 07 04 00 -63 32 00 00 00 32 00 57 6f 6f 64 42 6c 6f 63 6b 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: WoodBlock1 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 12 0f 0c 0a 00 00 4d 0c 13 1f 10 12 09 0d 00 00 45 04 0b 1f 16 10 08 0c -00 00 63 04 13 1f 10 12 09 0d 00 00 63 04 0b 44 30 00 00 00 62 18 07 04 00 -63 32 00 00 00 32 00 57 6f 6f 64 42 6c 6f 63 6b 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: WoodBlock2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 12 0f 0c 0a 00 01 4d 0c 13 1f 10 12 09 0d 00 02 37 04 0b 1f 16 10 08 0c -00 04 42 04 13 1f 10 12 09 0d 00 05 63 04 0b 42 30 00 00 00 62 18 07 04 00 -63 32 00 00 00 32 00 57 6f 6f 64 42 6c 6f 63 6b 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: WoodBlock2 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 12 0f 0c 0a 00 00 4d 0c 13 1f 10 12 09 0d 00 00 37 04 0b 1f 16 10 08 0c -00 00 42 04 13 1f 10 12 09 0d 00 00 63 04 0b 42 30 00 00 00 62 18 07 04 00 -63 32 00 00 00 32 00 57 6f 6f 64 42 6c 6f 63 6b 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: WoodBlock3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 12 0f 0c 0a 00 00 44 0c 13 1f 10 12 09 0d 00 01 4b 05 0b 1f 16 10 08 0c -00 05 48 07 13 1f 10 12 09 0d 00 05 63 04 0b 42 30 00 00 00 62 18 07 04 00 -63 32 00 00 00 32 00 57 6f 6f 64 42 6c 6f 63 6b 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: WoodBlock3 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 12 0f 0c 0a 00 00 44 0c 13 1f 10 12 09 0d 00 00 4b 05 0b 1f 16 10 08 0c -00 00 48 07 13 1f 10 12 09 0d 00 00 63 04 0b 42 30 00 00 00 62 18 07 04 00 -63 32 00 00 00 32 00 57 6f 6f 64 42 6c 6f 63 6b 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - ---Bank 24 - -* SUBCATEGORY Chime - - -** Name: BriteCelst -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank A, voice 31 -1f 0c 00 06 01 0a 04 50 20 0e 1f 0c 00 06 01 0a 04 50 1f 08 1f 0b 09 05 0e -00 02 63 05 0e 1f 0b 09 05 0e 00 03 63 04 08 04 1a 00 00 00 52 1d 02 04 00 -63 32 00 32 00 32 00 42 72 69 74 65 43 65 6c 73 74 63 63 63 32 32 32 00 20 -00 26 00 01 00 08 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Celeste -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank A, voice 30 -19 1c 00 06 01 00 04 52 07 08 1f 10 00 06 01 00 04 46 16 0e 1f 0a 00 06 01 -00 02 63 04 0e 1f 0d 00 04 01 00 03 63 04 00 04 19 00 00 00 52 24 02 04 00 -63 32 00 32 00 32 00 43 65 6c 65 73 74 65 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Celeste..1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -19 1c 00 06 01 00 03 51 2e 10 1f 10 00 06 01 00 05 3c 19 0e 1f 0a 00 06 01 -00 05 63 04 0e 1f 0d 00 04 01 00 05 63 04 00 04 19 00 00 00 52 24 00 04 00 -63 32 00 32 00 32 00 43 65 6c 65 73 74 65 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Celeste..1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -19 1c 00 06 01 00 01 51 2e 10 1f 10 00 06 01 00 01 3c 19 0e 1f 0a 00 06 01 -00 01 63 04 0e 1f 0d 00 04 01 00 01 63 04 00 04 19 00 00 00 52 24 00 04 00 -63 32 00 32 00 32 00 43 65 6c 65 73 74 65 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Celeste..2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 15 12 06 00 00 01 3b 1f 10 1f 10 00 06 01 00 05 3b 08 0e 1f 0a 00 06 01 -00 04 63 0d 0e 1f 0d 00 04 01 00 06 63 04 00 04 19 00 00 00 52 24 00 04 00 -63 32 00 32 00 32 00 43 65 6c 65 73 74 65 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Celeste..2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 15 12 06 00 00 01 3b 1f 10 1f 10 00 06 01 00 02 3b 08 0e 1f 0a 00 06 01 -00 01 63 0d 0e 1f 0d 00 04 01 00 01 63 04 00 04 19 00 00 00 52 24 00 04 00 -63 32 00 32 00 32 00 43 65 6c 65 73 74 65 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Chimes * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 07 02 0d 12 02 5c 10 09 1f 1f 09 02 0d 11 01 56 11 09 19 1f 07 03 0d -00 42 53 08 0c 17 1f 07 03 0d 00 40 63 08 0d 6c 29 00 00 00 0b 24 02 04 00 -28 00 36 00 00 32 00 43 68 69 6d 65 73 20 20 20 2a 63 63 63 32 32 32 00 00 -00 30 00 08 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Chiming -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0e 02 01 00 00 43 3d 2d 03 1f 05 07 02 0d 00 43 4d 16 06 1f 18 00 02 00 -00 07 4c 3d 03 1f 08 0a 05 0d 00 04 63 04 0b 02 19 02 01 16 5a 11 02 04 00 -63 28 00 00 00 32 00 43 68 69 6d 69 6e 67 20 20 20 63 63 63 32 32 32 00 60 -10 07 00 40 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Glocken -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank B, voice 22 -1f 1d 00 06 00 00 07 63 0a 03 1f 0a 00 06 00 0a 07 63 1f 03 1f 0c 00 05 00 -0f 07 63 08 03 1f 0e 01 06 00 00 07 5b 2d 03 3d 21 00 0a 00 32 18 02 04 00 -28 32 00 00 00 32 00 47 6c 6f 63 6b 65 6e 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Glocken -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1d 00 06 00 00 07 63 0a 03 1f 0d 00 06 00 0a 07 63 1f 03 1f 0c 00 05 00 -0f 07 63 08 03 1f 0e 01 06 00 00 07 5b 2d 03 3d 21 00 0d 00 32 18 02 04 00 -28 32 00 00 00 32 00 47 6c 6f 63 6b 65 6e 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Glocken..1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 13 04 05 0a 23 02 4d 2a 06 1f 0e 05 02 09 00 04 3d 04 00 18 11 08 05 0f -0a 05 63 04 0e 1f 11 08 05 0f 05 43 63 0d 00 26 23 00 00 00 3e 18 05 04 00 -63 63 28 00 00 32 00 47 6c 6f 63 6b 65 6e 2e 2e 31 63 63 63 32 32 32 00 00 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Glocken..1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 13 04 05 0a 23 02 4d 2a 06 1f 0e 05 02 09 00 01 3d 04 00 18 11 08 05 0f -0a 01 63 04 0e 1f 11 08 05 0f 05 41 63 0d 00 26 23 00 00 00 3e 18 05 04 00 -63 63 28 00 00 32 00 47 6c 6f 63 6b 65 6e 2e 2e 31 63 63 63 32 32 32 00 00 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Glocken..2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 13 04 05 0a 23 02 4c 2d 0e 1f 0e 05 02 09 00 06 39 19 00 1e 12 0a 05 0c -0a 05 63 04 0e 1f 11 08 05 0f 05 46 63 04 00 24 23 00 00 00 3e 24 05 04 00 -63 63 28 00 00 32 00 47 6c 6f 63 6b 65 6e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Glocken..2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 13 04 05 0a 23 02 4c 2d 0e 1f 0e 05 02 09 00 01 39 19 00 1e 12 0a 05 0c -0a 01 63 04 0e 1f 11 08 05 0f 05 41 63 04 00 24 23 00 00 00 3e 24 05 04 00 -63 63 28 00 00 32 00 47 6c 6f 63 6b 65 6e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: GoodVibes* -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0f 0f 07 0d 00 47 3a 2a 16 19 1a 0c 07 0d 00 44 41 0a 10 14 1a 07 07 0d -00 41 63 04 08 14 1a 07 07 0d 00 41 63 04 0e 04 1a 00 08 00 0e 18 02 04 00 -28 17 3b 00 00 32 00 47 6f 6f 64 56 69 62 65 73 2a 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: GreatVibes -** Controls: KV, MW (LFO amplitude) -** Source: Yamaha TX81Z factory preset, bank C, voice 28 -1f 14 07 07 0d 00 43 63 04 06 1f 10 15 06 00 00 43 63 2a 0e 1f 14 0b 07 0d -00 43 63 0d 06 1f 14 07 07 0d 00 43 63 04 00 07 16 00 00 2a 66 0c 02 04 00 -63 08 32 00 00 32 00 47 72 65 61 74 56 69 62 65 73 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Mod Chime -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0f 08 0f 00 00 45 5b 3f 03 0f 08 0d 06 09 00 44 63 0d 01 1f 1f 0b 06 0f -00 46 63 3e 03 0e 08 0d 06 09 00 45 63 08 05 5e 19 13 07 5c 36 00 0c 04 00 -63 00 00 00 00 32 00 4d 6f 64 20 43 68 69 6d 65 20 63 63 63 32 32 32 00 20 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Mod Chime -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0f 08 0f 00 00 42 5b 3f 03 0f 08 0d 06 09 00 42 63 0d 01 1f 1f 0b 06 0f -00 42 63 3e 03 0e 08 0d 06 09 00 40 63 08 05 5e 19 13 07 5c 36 00 0c 04 00 -63 00 00 00 00 32 00 4d 6f 64 20 43 68 69 6d 65 20 63 63 63 32 32 32 00 20 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthChime -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -00 1f 10 04 0d 0a 44 63 0d 0d 0d 0a 1f 03 01 0a 45 4c 08 09 1f 09 08 04 02 -0a 45 60 1f 0c 10 05 09 06 03 0a 45 63 08 0c 4c 23 00 03 0a 4a 0c 04 04 00 -63 32 00 00 00 32 00 53 79 6e 74 68 43 68 69 6d 65 63 63 63 32 32 32 00 20 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthChime -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -00 1f 10 04 0d 0a 41 63 0d 0d 0d 0a 1f 03 01 0a 42 4c 08 09 1f 09 08 04 02 -0a 40 60 1f 0c 10 05 09 06 03 0a 40 63 08 0c 4c 23 00 03 0a 4a 0c 04 04 00 -63 32 00 00 00 32 00 53 79 6e 74 68 43 68 69 6d 65 63 63 63 32 32 32 00 20 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Triangle.1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 0c 04 0e 00 05 39 22 13 1f 1f 0c 04 0e 00 03 40 08 03 1f 1f 0c 04 0f -00 05 63 2f 03 1f 1f 0c 04 0f 00 05 63 08 03 45 23 00 00 00 62 18 04 04 00 -28 32 00 00 00 32 00 54 72 69 61 6e 67 6c 65 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Triangle.1 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 0c 04 0e 00 00 39 22 13 1f 1f 0c 04 0e 00 00 40 08 03 1f 1f 0c 04 0f -00 00 63 2f 03 1f 1f 0c 04 0f 00 00 63 08 03 45 23 00 00 00 62 18 04 04 00 -28 32 00 00 00 32 00 54 72 69 61 6e 67 6c 65 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Triangle.2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 0c 04 0e 00 03 30 22 13 1f 0d 1f 04 00 00 04 61 13 03 1f 1f 0c 04 0f -00 06 63 2a 03 1f 1f 0c 04 0f 00 06 63 08 03 46 23 00 00 00 62 18 04 04 00 -28 32 00 00 00 32 00 54 72 69 61 6e 67 6c 65 2e 32 63 63 63 32 32 32 0a 00 -08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Triangle.2 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 0c 04 0e 00 00 30 22 13 1f 0d 1f 04 00 00 00 61 13 03 1f 1f 0c 04 0f -00 00 63 2a 03 1f 1f 0c 04 0f 00 00 63 08 03 46 23 00 00 00 62 18 04 04 00 -28 32 00 00 00 32 00 54 72 69 61 6e 67 6c 65 2e 32 63 63 63 32 32 32 0a 00 -08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Vib Lead.1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 03 07 09 0e 00 04 51 08 1b 16 0a 07 09 0f 00 04 63 04 1b 17 0a 07 09 0f -00 07 63 08 1b 18 16 07 09 0f 00 05 63 04 1b 2d 27 00 00 00 42 18 04 04 00 -28 32 00 00 00 32 00 56 69 62 20 4c 65 61 64 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Vib Lead.1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -15 03 07 09 0e 00 02 51 08 1b 16 0a 07 09 0f 00 01 63 04 1b 17 0a 07 09 0f -00 00 63 08 1b 18 16 07 09 0f 00 00 63 04 1b 2d 27 00 00 00 42 18 04 04 00 -28 32 00 00 00 32 00 56 69 62 20 4c 65 61 64 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Vib Lead.2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 03 07 09 0e 00 04 51 08 0b 1f 0f 0a 0c 0b 00 05 3e 2a 13 17 0a 07 09 0f -00 05 63 04 1b 1f 07 07 0a 0e 00 06 63 04 0b 2c 27 00 00 00 42 18 04 04 00 -28 32 00 00 00 32 00 56 69 62 20 4c 65 61 64 2e 32 63 63 63 32 32 32 00 20 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Vib Lead.2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -15 03 07 09 0e 00 01 51 08 0b 1f 0f 0a 0c 0b 00 01 3e 2a 13 17 0a 07 09 0f -00 00 63 04 1b 1f 07 07 0a 0e 00 00 63 04 0b 2c 27 00 00 00 42 18 04 04 00 -28 32 00 00 00 32 00 56 69 62 20 4c 65 61 64 2e 32 63 63 63 32 32 32 00 20 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Vibe. -** Controls: KV, MW (LFO amplitude) -** Source: Yamaha DX11 factory preset, bank B, voice 21 -1f 0f 0e 0a 0a 00 02 36 24 00 1f 0e 08 06 09 00 02 36 10 06 1f 11 05 04 0f -00 02 61 04 16 1f 11 05 04 0f 00 42 61 04 10 04 1f 00 00 1f 3e 18 02 04 00 -63 32 1e 00 00 32 00 56 69 62 65 2e 20 20 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Vibe.....1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 0d 0a 0a 0d 00 03 3b 19 12 1b 16 00 0c 07 00 05 57 16 13 1f 0a 0a 0d 0c -00 02 60 04 0b 1f 09 07 06 0c 00 05 5e 04 0b 7c 15 00 00 00 22 0c 02 04 00 -63 08 32 00 00 32 00 56 69 62 65 2e 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Vibe.....1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -16 0d 0a 0a 0d 00 01 3b 19 12 1b 16 00 0c 07 00 01 57 16 13 1f 0a 0a 0d 0c -00 00 60 04 0b 1f 09 07 06 0c 00 00 5e 04 0b 7c 15 00 00 00 22 0c 02 04 00 -63 08 32 00 00 32 00 56 69 62 65 2e 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Vibe.....2 -** Controls: KV, MW (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 14 07 07 0d 00 44 63 08 06 1f 10 15 06 00 00 45 63 24 0e 1f 14 0b 07 0d -00 44 63 0d 06 1f 14 07 07 0d 00 47 63 04 00 07 16 00 00 2a 66 0c 02 04 00 -63 08 32 00 00 32 00 56 69 62 65 2e 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Vibe.....2 -** Controls: MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 14 07 07 0d 00 40 63 08 06 1f 10 15 06 00 00 40 63 24 0e 1f 14 0b 07 0d -00 40 63 0d 06 1f 14 07 07 0d 00 40 63 04 00 07 16 00 00 2a 66 0c 02 04 00 -63 08 32 00 00 32 00 56 69 62 65 2e 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Vibe.....3 -** Controls: KV, MW (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 14 07 07 0d 00 42 63 0d 16 1f 10 15 06 00 00 44 63 16 0e 1f 14 0b 07 0d -00 45 63 04 06 1f 14 07 07 0d 00 47 63 04 00 07 16 00 00 2a 66 0c 02 04 00 -63 08 32 00 00 32 00 56 69 62 65 2e 2e 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Vibe.....3 -** Controls: MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 14 07 07 0d 00 40 63 0d 16 1f 10 15 06 00 00 40 63 16 0e 1f 14 0b 07 0d -00 40 63 04 06 1f 14 07 07 0d 00 40 63 04 00 07 16 00 00 2a 66 0c 02 04 00 -63 08 32 00 00 32 00 56 69 62 65 2e 2e 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Vibe.....4 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 06 1f 09 04 00 43 3a 24 16 1b 09 03 06 0d 00 45 63 0d 0e 1b 09 03 06 0d -00 44 63 04 0e 1f 15 06 08 0c 00 47 63 04 00 6d 21 00 00 63 02 0c 02 04 00 -63 08 32 00 00 32 00 56 69 62 65 2e 2e 2e 2e 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Vibe.....4 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -12 06 1f 09 04 00 41 3a 24 16 1b 09 03 06 0d 00 42 63 0d 0e 1b 09 03 06 0d -00 41 63 04 0e 1f 15 06 08 0c 00 40 63 04 00 6d 21 00 00 63 02 0c 02 04 00 -63 08 32 00 00 32 00 56 69 62 65 2e 2e 2e 2e 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Vibe.....5 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 06 1f 09 04 00 43 39 10 1e 1b 09 03 06 0d 00 44 5b 16 1e 1b 09 03 06 0d -00 44 63 04 1e 1f 15 06 08 0c 00 46 63 04 08 6d 21 00 00 63 02 0c 02 04 00 -63 08 32 00 00 32 00 56 69 62 65 2e 2e 2e 2e 2e 35 63 63 63 32 32 32 00 00 -00 00 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Vibe.....5 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -12 06 1f 09 04 00 41 39 10 1e 1b 09 03 06 0d 00 40 5b 16 1e 1b 09 03 06 0d -00 40 63 04 1e 1f 15 06 08 0c 00 40 63 04 08 6d 21 00 00 63 02 0c 02 04 00 -63 08 32 00 00 32 00 56 69 62 65 2e 2e 2e 2e 2e 35 63 63 63 32 32 32 00 00 -00 00 00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Vibe.....6 -** Controls: KV, MW (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 14 07 07 0d 00 44 63 0d 06 1f 10 15 06 00 00 45 63 24 0e 1f 14 0b 07 0d -00 45 63 0d 06 1f 14 07 07 0d 00 47 63 08 00 07 16 00 00 2a 66 0c 02 04 00 -63 08 32 00 00 32 00 56 69 62 65 2e 2e 2e 2e 2e 36 63 63 63 32 32 32 00 20 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Vibe.....6 -** Controls: KV, MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 14 07 07 0d 00 41 63 0d 06 1f 10 15 06 00 00 41 63 24 0e 1f 14 0b 07 0d -00 41 63 0d 06 1f 14 07 07 0d 00 41 63 08 00 07 16 00 00 2a 66 0c 02 04 00 -63 08 32 00 00 32 00 56 69 62 65 2e 2e 2e 2e 2e 36 63 63 63 32 32 32 00 20 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Vibesyn * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 0a 1f 05 00 15 05 54 0a 0b 1f 14 12 01 00 00 07 59 13 0c 1c 1b 0b 06 0e -0b 00 63 04 16 1b 1a 0a 05 0e 0b 03 63 04 10 3c 23 00 00 00 42 0c 02 04 00 -28 63 00 00 00 32 00 56 69 62 65 73 79 6e 20 20 2a 63 63 63 32 32 32 00 10 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: WindChime1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 12 09 03 0b 00 43 52 2d 03 06 0f 09 02 0b 00 44 63 22 03 1f 12 09 02 0b -00 44 63 22 03 1f 12 09 04 0b 00 47 62 22 03 06 2d 00 05 06 37 18 04 04 00 -28 32 00 00 00 32 00 57 69 6e 64 43 68 69 6d 65 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: WindChime1 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 12 09 03 0b 00 40 52 2d 03 06 0f 09 02 0b 00 40 63 22 03 1f 12 09 02 0b -00 40 63 22 03 1f 12 09 04 0b 00 40 62 22 03 06 2d 00 05 06 37 18 04 04 00 -28 32 00 00 00 32 00 57 69 6e 64 43 68 69 6d 65 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: WindChime2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 0c 00 03 0e 00 02 50 19 03 1c 12 00 02 0e 2e 03 50 27 0b 0e 10 00 02 0a -00 05 59 09 0a 11 0d 00 03 0c 01 06 62 22 0b 0e 4e 00 38 00 53 0c 07 04 00 -63 32 00 00 00 32 00 57 69 6e 64 43 68 69 6d 65 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: WindChime2 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 0c 00 03 0e 00 00 50 19 03 1c 12 00 02 0e 2e 00 50 27 0b 0e 10 00 02 0a -00 00 59 09 0a 11 0d 00 03 0c 01 00 62 22 0b 0e 4e 00 38 00 53 0c 07 04 00 -63 32 00 00 00 32 00 57 69 6e 64 43 68 69 6d 65 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Xylophone* -** Controls: KV, MW (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0e 0e 06 0e 11 01 4b 10 16 1f 12 0d 05 0e 00 41 5a 04 13 19 10 0e 05 0d -20 42 4b 08 16 1f 11 0c 05 0e 00 41 63 04 10 75 29 2c 00 36 09 18 02 04 00 -28 00 31 00 00 32 00 58 79 6c 6f 70 68 6f 6e 65 2a 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Xylophone -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank C, voice 27 -1f 16 00 09 05 00 01 5a 08 03 1f 17 10 05 05 00 01 56 10 13 1f 1f 12 07 0f -00 01 63 04 03 1f 1f 0f 07 0f 00 02 63 04 03 2a 23 00 00 00 62 18 04 04 00 -63 32 00 00 00 32 00 58 79 6c 6f 70 68 6f 6e 65 20 63 63 63 32 32 32 00 00 -00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Xylophone -** Controls: KV -** Source: Yamaha DX11 factory preset, bank B, voice 20 -1f 1f 16 09 0f 26 02 41 1f 13 1f 1f 16 09 0f 00 03 50 19 0b 1f 1f 0f 07 0f -00 01 62 04 0b 1f 1f 0f 07 0f 00 02 62 0a 13 04 23 00 00 00 62 24 02 04 00 -28 32 00 00 00 32 00 58 79 6c 6f 70 68 6f 6e 65 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Xylophone -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 16 09 0f 26 02 41 1f 13 1f 1f 16 09 0f 00 03 50 19 0b 1f 1f 0f 07 0f -00 01 62 04 0b 1f 1f 0f 07 0f 00 02 62 0d 13 04 23 00 00 00 62 24 02 04 00 -28 32 00 00 00 32 00 58 79 6c 6f 70 68 6f 6e 65 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Xylophone1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0d 07 07 0e 00 04 53 13 1e 1b 10 06 06 0e 00 05 56 04 16 1f 0d 07 07 0e -00 07 63 0c 1b 1b 10 06 06 0e 00 05 63 00 0b 75 23 00 00 00 32 24 02 04 00 -63 11 06 00 00 32 00 58 79 6c 6f 70 68 6f 6e 65 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Xylophone1 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0d 07 07 0e 00 01 53 13 1e 1b 10 06 06 0e 00 02 56 04 16 1f 0d 07 07 0e -00 04 63 0c 1b 1b 10 06 06 0e 00 00 63 00 0b 75 23 00 00 00 32 24 02 04 00 -63 11 06 00 00 32 00 58 79 6c 6f 70 68 6f 6e 65 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Xylophone2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 12 07 07 0d 14 03 4f 0d 12 1f 12 07 04 0d 19 05 5d 08 1e 1f 0c 06 07 0d -00 07 63 04 09 1f 0a 06 07 0d 00 05 63 04 0b 74 23 00 00 00 32 24 02 04 00 -63 11 06 00 00 32 00 58 79 6c 6f 70 68 6f 6e 65 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Xylophone2 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 12 07 07 0d 14 01 4f 0d 12 1f 12 07 04 0d 19 03 5d 08 1e 1f 0c 06 07 0d -00 04 63 04 09 1f 0a 06 07 0d 00 00 63 04 0b 74 23 00 00 00 32 24 02 04 00 -63 11 06 00 00 32 00 58 79 6c 6f 70 68 6f 6e 65 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Xylophone3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 0d 05 05 0c 14 03 4f 0d 12 1d 16 00 0c 07 19 03 5b 2a 1e 1f 0c 06 07 0d -00 07 63 04 11 1f 09 07 06 0c 00 06 63 04 0b 74 23 00 00 00 32 24 02 04 00 -63 11 06 00 00 32 00 58 79 6c 6f 70 68 6f 6e 65 33 63 63 63 32 32 32 00 10 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Xylophone3 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -16 0d 05 05 0c 14 01 4f 0d 12 1d 16 00 0c 07 19 01 5b 2a 1e 1f 0c 06 07 0d -00 04 63 04 11 1f 09 07 06 0c 00 00 63 04 0b 74 23 00 00 00 32 24 02 04 00 -63 11 06 00 00 32 00 58 79 6c 6f 70 68 6f 6e 65 33 63 63 63 32 32 32 00 10 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Xylophone4 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0d 07 04 0e 00 04 40 08 1e 1b 10 06 05 0e 00 06 54 08 0e 1f 0d 07 05 0e -00 07 63 0c 1b 1b 10 06 05 0e 00 06 63 00 0b 75 23 00 00 00 32 24 02 04 00 -63 11 06 00 00 32 00 58 79 6c 6f 70 68 6f 6e 65 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Xylophone4 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0d 07 04 0e 00 01 40 08 1e 1b 10 06 05 0e 00 03 54 08 0e 1f 0d 07 05 0e -00 04 63 0c 1b 1b 10 06 05 0e 00 00 63 00 0b 75 23 00 00 00 32 24 02 04 00 -63 11 06 00 00 32 00 58 79 6c 6f 70 68 6f 6e 65 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Xylophone5 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 13 04 05 0a 00 04 41 28 01 1f 0e 05 05 09 00 04 43 13 0c 1f 1f 00 08 0f -00 05 3e 00 05 1f 11 08 05 0f 00 05 63 04 0a 4d 23 00 19 00 32 24 02 04 00 -63 32 00 00 00 32 00 58 79 6c 6f 70 68 6f 6e 65 35 63 63 63 32 32 32 00 00 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Xylophone5 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 13 04 05 0a 00 01 41 28 01 1f 0e 05 05 09 00 01 43 13 0c 1f 1f 00 08 0f -00 01 3e 00 05 1f 11 08 05 0f 00 00 63 04 0a 4d 23 00 19 00 32 24 02 04 00 -63 32 00 00 00 32 00 58 79 6c 6f 70 68 6f 6e 65 35 63 63 63 32 32 32 00 00 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Xylophone6 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0e 09 07 0a 00 03 52 30 19 1f 0e 05 06 09 00 04 42 08 0c 1f 1f 00 09 0f -00 04 3b 0d 0d 1f 11 08 06 0f 00 04 63 04 0a 4d 23 00 19 00 32 24 02 04 00 -63 32 00 00 00 32 00 58 79 6c 6f 70 68 6f 6e 65 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Xylophone6 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0e 09 07 0a 00 01 52 30 19 1f 0e 05 06 09 00 01 42 08 0c 1f 1f 00 09 0f -00 00 3b 0d 0d 1f 11 08 06 0f 00 00 63 04 0a 4d 23 00 19 00 32 24 02 04 00 -63 32 00 00 00 32 00 58 79 6c 6f 70 68 6f 6e 65 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Xylophone7 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0e 09 07 0a 00 05 55 13 19 12 12 05 06 09 00 06 5b 04 1c 1f 1f 00 09 0f -00 04 5f 04 1d 1f 11 08 06 0f 00 07 63 00 0a 4c 23 00 00 00 32 24 02 04 00 -63 32 00 00 00 32 00 58 79 6c 6f 70 68 6f 6e 65 37 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Xylophone7 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0e 09 07 0a 00 01 55 13 19 12 12 05 06 09 00 01 5b 04 1c 1f 1f 00 09 0f -00 01 5f 04 1d 1f 11 08 06 0f 00 00 63 00 0a 4c 23 00 00 00 32 24 02 04 00 -63 32 00 00 00 32 00 58 79 6c 6f 70 68 6f 6e 65 37 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Xylophone8 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -16 0d 05 05 0d 00 04 4f 13 12 1f 15 00 0c 07 00 05 63 2a 0e 1f 0a 05 06 0c -00 07 63 04 0b 1c 0f 06 06 0c 00 06 63 04 13 74 23 00 00 00 32 24 02 04 00 -63 11 06 00 00 32 00 58 79 6c 6f 70 68 6f 6e 65 38 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Xylophone8 -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -16 0d 05 05 0d 00 01 4f 13 12 1f 15 00 0c 07 00 03 63 2a 0e 1f 0a 05 06 0c -00 04 63 04 0b 1c 0f 06 06 0c 00 00 63 04 13 74 23 00 00 00 32 24 02 04 00 -63 11 06 00 00 32 00 58 79 6c 6f 70 68 6f 6e 65 38 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY Cymbal - - -** Name: Chin.Cymb* -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 00 00 01 00 0b 00 44 04 00 1e 00 01 01 00 1f 41 4e 0a 00 1f 00 00 01 00 -00 01 56 14 06 1d 0b 1f 04 00 0a 04 63 00 06 7b 1f 0d 0e 1e 0e 18 0c 04 00 -63 32 00 32 00 32 00 43 68 69 6e 2e 43 79 6d 62 2a 63 63 63 32 32 32 01 73 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Cymbal...1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 01 0e 00 40 59 35 03 19 16 00 01 0b 00 40 4e 03 0b 15 1c 06 01 0b -00 40 57 3b 13 1f 1f 05 02 08 00 45 63 1b 13 31 00 02 00 03 52 12 05 04 00 -63 32 00 00 00 32 00 43 79 6d 62 61 6c 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Cymbal...1 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 01 0e 00 40 59 36 03 19 16 00 01 0b 00 40 4e 03 0b 15 1c 06 01 0b -00 40 57 3b 13 1f 1f 05 02 08 00 40 63 1b 13 31 00 02 00 03 52 12 05 04 00 -63 32 00 00 00 32 00 43 79 6d 62 61 6c 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Cymbal...1 -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -1f 1f 00 00 0e 00 40 59 36 03 19 16 00 01 0b 00 40 4e 03 0b 15 1c 06 00 0b -00 40 57 3b 13 1f 1f 05 02 08 00 40 63 1b 13 31 00 02 00 03 52 12 05 04 00 -63 32 00 00 00 32 00 43 79 6d 62 61 6c 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Cymbal...2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 01 0e 00 40 59 24 03 19 16 00 01 0b 00 40 55 1e 0b 15 1c 06 01 0b -00 40 56 19 13 1f 1f 05 02 08 00 44 63 1b 13 31 00 02 00 03 52 12 05 04 00 -63 32 00 00 00 32 00 43 79 6d 62 61 6c 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Cymbal...2 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 01 0e 00 40 59 24 03 19 16 00 01 0b 00 40 55 1e 0b 15 1c 06 01 0b -00 40 56 16 13 1f 1f 05 02 08 00 40 63 1b 13 31 00 02 00 03 52 12 05 04 00 -63 32 00 00 00 32 00 43 79 6d 62 61 6c 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Cymbal...2 -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -1f 1f 00 00 0e 00 40 59 24 03 19 16 00 01 0b 00 40 55 1e 0b 15 1c 06 00 0b -00 40 56 16 13 1f 1f 05 02 08 00 40 63 1b 13 31 00 02 00 03 52 12 05 04 00 -63 32 00 00 00 32 00 43 79 6d 62 61 6c 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Cymbal...3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 01 0e 00 40 5b 37 03 19 16 00 01 0b 00 41 55 17 0b 15 1c 06 01 0b -00 40 5b 20 13 1f 1f 05 02 08 00 44 63 15 13 33 00 02 00 03 52 12 05 04 00 -63 32 00 00 00 32 00 43 79 6d 62 61 6c 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Cymbal...3 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 01 0e 00 40 5b 37 03 19 16 00 01 0b 00 40 55 17 0b 15 1c 06 01 0b -00 40 5b 20 13 1f 1f 05 02 08 00 40 63 15 13 33 00 02 00 03 52 12 05 04 00 -63 32 00 00 00 32 00 43 79 6d 62 61 6c 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Cymbal...3 -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -1f 1f 00 00 0e 00 40 5b 37 03 19 16 00 01 0b 00 40 55 17 0b 15 1c 06 00 0b -00 40 5b 20 13 1f 1f 05 02 08 00 40 63 15 13 33 00 02 00 03 52 12 05 04 00 -63 32 00 00 00 32 00 43 79 6d 62 61 6c 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - ---Bank 25 - -* SUBCATEGORY Drum1 - - -** Name: Bass/Snare -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 05 0f 00 00 63 32 03 1f 12 00 05 07 00 00 4d 00 03 1f 1f 10 07 0f -63 05 63 28 13 1f 1f 0b 08 0f 00 05 63 00 03 34 23 00 00 00 62 00 04 04 00 -63 32 00 00 00 32 00 42 61 73 73 2f 53 6e 61 72 65 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bass/Snare -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 05 0f 00 00 63 32 03 1f 12 00 05 07 00 00 4d 00 03 1f 1f 10 07 0f -63 00 63 28 13 1f 1f 0b 08 0f 00 00 63 00 03 34 23 00 00 00 62 00 04 04 00 -63 32 00 00 00 32 00 42 61 73 73 2f 53 6e 61 72 65 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bass Drum -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank D, voice 25 -1f 1f 13 03 00 00 00 5f 2d 06 1f 12 13 02 00 00 01 52 00 02 1f 14 13 03 00 -00 02 56 1c 05 1e 14 13 0f 00 00 00 63 00 03 3b 63 00 00 00 03 0d 07 04 00 -63 32 00 00 00 32 00 42 61 73 73 20 44 72 75 6d 20 63 63 63 32 32 32 08 00 -00 00 08 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bass Drum1 -** Controls: MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank D, voice 1 -1f 0f 1f 07 00 00 00 4e 08 03 1f 18 00 06 08 00 00 5f 04 03 1f 15 08 07 0a -00 00 49 01 03 1f 0b 12 0c 0e 00 00 5b 08 03 03 50 00 4a 00 72 00 04 04 00 -28 32 00 00 00 32 00 42 61 73 73 20 44 72 75 6d 31 63 63 63 32 32 32 00 00 -00 00 00 00 08 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bass Drum2 -** Source: Yamaha DX11 factory preset, bank D, voice 2 -1f 19 07 07 0b 00 00 46 20 01 1f 18 00 0b 0a 00 00 47 04 01 1f 15 00 0c 0a -00 00 45 00 05 1f 0a 15 0a 0f 00 00 63 15 05 31 23 00 00 00 62 00 04 04 00 -28 32 00 00 00 32 00 42 61 73 73 20 44 72 75 6d 32 63 63 63 32 32 32 09 03 -08 05 08 05 08 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bass Drum2 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 19 07 07 0b 00 00 46 20 01 1f 18 00 0b 0d 00 00 47 04 01 1f 15 00 0c 0d -00 00 45 00 05 1f 0d 15 0a 0f 00 00 63 15 05 31 23 00 00 00 62 00 04 04 00 -28 32 00 00 00 32 00 42 61 73 73 20 44 72 75 6d 32 63 63 63 32 32 32 09 03 -08 05 08 05 08 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BassDrum.1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1b 19 0f 0e 00 00 55 03 03 18 10 19 0c 0d 00 01 63 03 13 1b 12 10 08 0e -00 06 63 00 13 1f 0f 12 09 0f 00 05 63 02 13 35 00 00 00 00 02 0c 06 04 00 -63 32 00 32 00 32 00 42 61 73 73 44 72 75 6d 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BassDrum.1 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1b 19 0f 0e 00 00 55 03 03 18 10 19 0c 0d 00 00 63 03 13 1b 12 10 08 0e -00 00 63 00 13 1f 0f 12 09 0f 00 00 63 02 13 35 00 00 00 00 02 0c 06 04 00 -63 32 00 32 00 32 00 42 61 73 73 44 72 75 6d 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BassDrum.2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1b 19 0f 0e 00 00 4e 03 03 18 1b 19 0c 0d 00 02 46 03 13 1b 12 10 08 0e -00 05 63 00 13 1f 0f 12 09 0f 00 03 63 00 13 34 00 00 00 00 02 0c 06 04 00 -63 32 00 32 00 32 00 42 61 73 73 44 72 75 6d 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BassDrum.2 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1b 19 0f 0e 00 00 4e 03 03 18 1b 19 0c 0d 00 00 46 03 13 1b 12 10 08 0e -00 00 63 00 13 1f 0f 12 09 0f 00 00 63 00 13 34 00 00 00 00 02 0c 06 04 00 -63 32 00 32 00 32 00 42 61 73 73 44 72 75 6d 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BassDrum.3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1b 19 0f 0e 00 00 48 04 03 18 1b 19 0c 0d 00 01 4e 00 13 1b 12 10 08 0e -00 02 55 02 13 1f 0f 12 09 0f 00 03 63 00 13 32 00 00 00 00 02 0c 06 04 00 -63 32 00 32 00 32 00 42 61 73 73 44 72 75 6d 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BassDrum.3 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1b 19 0f 0e 00 00 48 04 03 18 1b 19 0c 0d 00 00 4e 00 13 1b 12 10 08 0e -00 00 55 02 13 1f 0f 12 09 0f 00 00 63 00 13 32 00 00 00 00 02 0c 06 04 00 -63 32 00 32 00 32 00 42 61 73 73 44 72 75 6d 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BoConga -** Controls: KV -** Source: Yamaha DX11 factory preset, bank D, voice 15 -19 15 1f 0e 00 05 03 52 00 00 18 11 09 06 04 1e 02 42 04 16 18 0f 00 07 00 -02 00 63 04 10 1c 0c 14 06 0b 00 00 63 01 13 04 23 00 00 00 62 1d 04 04 00 -28 32 00 00 00 32 00 42 6f 43 6f 6e 67 61 20 20 20 63 11 2a 32 32 32 00 02 -00 57 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Congas * -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -19 1d 17 09 09 00 03 63 00 0b 19 1f 1b 09 06 00 00 63 00 0b 1f 05 00 09 0b -00 00 63 28 0b 13 10 11 06 0a 00 03 63 00 0b 02 18 00 26 00 32 18 02 04 00 -28 63 00 00 00 32 00 43 6f 6e 67 61 73 20 20 20 2a 63 63 63 32 32 32 00 06 -00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: DrmSpring1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 19 12 0f 0b 2e 03 4c 04 1a 1f 1b 1f 0f 0b 00 04 63 08 10 1f 1b 1f 0f 0b -00 05 63 08 0a 1f 18 07 07 0f 00 06 63 04 0b 32 22 0a 09 00 02 0c 02 04 00 -63 32 00 32 00 32 00 44 72 6d 53 70 72 69 6e 67 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: DrmSpring1 -** Source: from a library of patches collected by Duane Bowker, author unknown -18 19 12 0f 0b 2e 00 4c 04 1a 1f 1b 1f 0f 0b 00 00 63 08 10 1f 1b 1f 0f 0b -00 00 63 08 0a 1f 18 07 07 0f 00 00 63 04 0b 32 22 0a 09 00 02 0c 02 04 00 -63 32 00 32 00 32 00 44 72 6d 53 70 72 69 6e 67 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: DrmSpring2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 19 12 0f 0b 2e 03 63 02 1a 1f 1b 1f 0f 0b 00 05 60 07 10 1f 1b 1f 0f 0b -00 06 60 09 0a 1f 18 07 07 0f 00 07 63 02 0b 3a 22 0a 19 00 02 0c 02 04 00 -63 32 00 32 00 32 00 44 72 6d 53 70 72 69 6e 67 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: DrmSpring2 -** Source: from a library of patches collected by Duane Bowker, author unknown -18 19 12 0f 0b 2e 00 63 02 1a 1f 1b 1f 0f 0b 00 00 60 07 10 1f 1b 1f 0f 0b -00 00 60 09 0a 1f 18 07 07 0f 00 00 63 02 0b 3a 22 0a 19 00 02 0c 02 04 00 -63 32 00 32 00 32 00 44 72 6d 53 70 72 69 6e 67 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: DrumString -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -06 08 01 04 0d 63 02 51 1e 05 1f 0a 03 06 0d 00 03 52 08 0b 15 0a 04 07 0d -00 06 62 09 04 1f 04 08 07 00 00 05 63 08 06 2c 21 23 0f 00 12 00 04 04 00 -28 32 00 00 00 32 00 44 72 75 6d 53 74 72 69 6e 67 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: DrumString -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -06 08 01 04 0d 63 00 51 1e 05 1f 0a 03 06 0d 00 00 52 08 0b 15 0a 04 07 0d -00 00 62 09 04 1f 04 08 07 00 00 00 63 08 06 2c 21 23 0f 00 12 00 04 04 00 -28 32 00 00 00 32 00 44 72 75 6d 53 74 72 69 6e 67 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Efem Toms -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank D, voice 32 -1f 12 13 03 05 00 00 5f 3d 06 1f 10 0b 02 05 00 01 52 05 02 1f 0f 0e 03 06 -00 01 56 28 05 1e 09 0d 06 09 00 00 63 06 03 3c 63 00 63 00 63 20 07 04 00 -63 32 00 00 00 32 00 45 66 65 6d 20 54 6f 6d 73 20 63 63 63 32 32 32 08 00 -00 00 08 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: El.Snare * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0e 08 02 00 00 01 57 0d 0b 1f 03 00 01 00 00 00 5f 00 0b 1b 04 0a 01 07 -00 01 54 18 0b 1f 0e 04 07 00 00 00 63 00 0b 03 23 00 00 00 32 00 02 04 00 -28 63 00 00 00 32 00 45 6c 2e 53 6e 61 72 65 20 2a 63 63 63 32 32 32 00 00 -08 00 08 04 08 12 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: El.Snare2* -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0e 02 05 00 00 00 57 0c 0b 1f 03 00 03 07 00 00 44 04 0b 1f 02 01 01 00 -00 00 51 20 0b 1f 10 00 08 00 00 01 63 0a 0b 13 23 00 00 00 32 00 02 04 00 -28 63 00 00 00 32 00 45 6c 2e 53 6e 61 72 65 32 2a 63 63 63 32 32 32 00 01 -08 10 08 54 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: FM Hi-Hats -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank D, voice 24 -1f 0c 00 05 0f 00 00 63 3b 03 1f 09 00 04 0f 00 38 4b 16 03 1f 0c 00 06 0f -00 00 56 16 03 1f 0d 1f 0f 04 00 02 63 08 03 3b 00 00 00 00 62 18 0c 04 00 -63 32 00 00 00 32 00 46 4d 20 48 69 2d 48 61 74 73 63 63 63 32 32 32 00 70 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hand Drum -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank D, voice 30 -1f 16 00 03 07 00 01 50 00 03 1f 18 03 03 03 22 00 63 00 14 1d 07 06 03 06 -00 01 3c 08 03 1f 05 07 03 00 00 01 63 04 1b 39 23 00 08 00 42 18 04 04 00 -63 32 00 00 00 32 00 48 61 6e 64 20 44 72 75 6d 20 63 63 63 32 32 32 00 01 -00 03 00 01 00 01 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hand Drum1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1a 15 00 07 09 00 00 53 01 13 1f 18 03 04 0d 00 01 3b 03 13 1d 1a 06 04 04 -00 06 41 09 03 1f 00 07 03 0f 00 03 63 03 1b 29 23 00 00 00 62 18 05 04 00 -63 00 00 00 00 32 00 48 61 6e 64 20 44 72 75 6d 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hand Drum1 -** Source: from a library of patches collected by Duane Bowker, author unknown -1a 15 00 07 09 00 00 53 01 13 1f 18 03 04 0d 00 00 3b 03 13 1d 1a 06 04 04 -00 00 41 09 03 1f 00 07 03 0f 00 00 63 03 1b 29 23 00 00 00 62 18 05 04 00 -63 00 00 00 00 32 00 48 61 6e 64 20 44 72 75 6d 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hand Drum2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1a 15 00 07 09 00 00 57 01 13 1f 18 03 04 0d 00 00 3b 04 13 1d 1a 06 04 04 -00 00 41 01 03 1f 00 07 08 0f 00 05 63 01 1b 29 23 00 00 00 62 18 05 04 00 -63 00 00 00 00 32 00 48 61 6e 64 20 44 72 75 6d 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hand Drum2 -** Source: from a library of patches collected by Duane Bowker, author unknown -1a 15 00 07 09 00 00 57 01 13 1f 18 03 04 0d 00 00 3b 04 13 1d 1a 06 04 04 -00 00 41 01 03 1f 00 07 08 0f 00 00 63 01 1b 29 23 00 00 00 62 18 05 04 00 -63 00 00 00 00 32 00 48 61 6e 64 20 44 72 75 6d 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: "Hi!" Hat! -** Controls: MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank D, voice 9 -1f 06 06 0f 0f 00 00 63 20 1b 1f 09 1f 0f 0f 00 00 63 24 1b 1f 0a 00 0f 00 -00 00 63 20 1b 1f 0a 00 0f 00 00 00 59 30 1b 3c 63 00 55 46 62 18 04 04 00 -28 32 00 00 00 32 00 22 48 69 21 22 20 48 61 74 21 63 63 63 32 32 32 0e 0f -0e 08 0e 0c 0b 0b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hi-Hat * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0c 00 05 0f 00 00 63 3b 03 1f 09 00 04 0f 00 38 4e 16 03 1f 0c 00 06 0f -00 00 5e 16 03 1f 13 1f 0f 00 00 02 63 08 03 3b 00 00 00 00 62 18 0c 04 00 -63 32 00 00 00 32 00 48 69 2d 48 61 74 20 20 20 2a 63 63 63 32 32 32 00 70 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Java Jive -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank C, voice 26 -15 13 0d 03 0d 1e 02 50 18 0e 15 14 09 04 0c 1e 02 56 11 08 1b 1f 0f 07 0f -00 01 63 04 06 1a 1f 0e 06 0f 00 02 63 04 00 7c 0b 00 08 00 62 18 04 04 00 -63 32 00 00 00 32 00 4a 61 76 61 20 4a 69 76 65 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: KickDrum * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 16 00 05 03 00 00 5f 02 03 1f 11 01 08 00 00 00 53 04 13 1f 19 13 05 04 -00 02 5f 00 1b 1f 1d 10 08 0f 00 00 63 10 0b 38 23 00 00 00 62 0c 04 0c 00 -63 32 00 00 00 32 00 4b 69 63 6b 44 72 75 6d 20 2a 63 63 63 32 32 32 0d 30 -08 00 08 20 08 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Log Drum.1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -13 18 0f 06 04 00 41 1d 08 1b 1f 18 0c 05 00 00 41 51 00 03 18 06 0f 06 04 -00 45 63 00 13 1b 0f 0d 06 00 00 44 63 00 0b 2c 24 00 00 50 02 18 04 04 00 -28 32 00 00 00 32 00 4c 6f 67 20 44 72 75 6d 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Log Drum.1 -** Source: from a library of patches collected by Duane Bowker, author unknown -13 18 0f 06 04 00 40 1d 08 1b 1f 18 0c 05 00 00 40 51 00 03 18 06 0f 06 04 -00 40 63 00 13 1b 0f 0d 06 00 00 40 63 00 0b 2c 24 00 00 50 02 18 04 04 00 -28 32 00 00 00 32 00 4c 6f 67 20 44 72 75 6d 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Log Drum.2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -13 18 0f 06 04 00 40 5d 05 1b 1f 18 0c 05 00 00 41 49 03 0b 18 06 0f 06 04 -00 44 63 01 13 1b 0f 0d 06 00 00 44 63 01 0b 2c 24 00 00 50 02 18 04 04 00 -28 32 00 00 00 32 00 4c 6f 67 20 44 72 75 6d 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Log Drum.2 -** Source: from a library of patches collected by Duane Bowker, author unknown -13 18 0f 06 04 00 40 5d 05 1b 1f 18 0c 05 00 00 40 49 03 0b 18 06 0f 06 04 -00 40 63 01 13 1b 0f 0d 06 00 00 40 63 01 0b 2c 24 00 00 50 02 18 04 04 00 -28 32 00 00 00 32 00 4c 6f 67 20 44 72 75 6d 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MiamiToms* -** Controls: KV, MW (LFO pitch), BC (voice pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0d 00 03 00 21 01 48 07 0b 1f 0a 00 02 00 04 00 46 02 0b 1f 02 00 04 00 -00 01 40 00 0b 1f 0d 0f 06 0d 00 02 63 00 0b 68 04 00 45 00 62 18 02 04 00 -28 63 00 00 00 2a 00 4d 69 61 6d 69 54 6f 6d 73 2a 63 63 63 32 32 32 00 30 -00 52 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntDrm..1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 19 18 0d 0d 00 02 62 03 0b 18 0f 0c 09 00 00 02 5a 08 13 1d 15 15 0f 0f -00 03 63 07 03 19 0f 18 07 04 00 05 62 04 0b 7c 23 00 00 00 02 18 02 04 00 -63 63 00 00 00 32 00 4f 72 6e 74 44 72 6d 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntDrm..1 -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 19 18 0d 0d 00 00 62 03 0b 18 0f 0c 09 00 00 00 5a 08 13 1d 15 15 0f 0f -00 00 63 07 03 19 0f 18 07 04 00 00 62 04 0b 7c 23 00 00 00 02 18 02 04 00 -63 63 00 00 00 32 00 4f 72 6e 74 44 72 6d 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntDrm..2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 01 07 04 00 00 02 49 02 0b 1f 16 00 03 00 00 42 56 00 0c 1f 09 06 04 0b -00 03 63 00 13 1f 0c 1f 06 00 00 05 62 00 13 2c 28 00 10 2e 26 18 02 04 00 -63 63 00 00 00 32 00 4f 72 6e 74 44 72 6d 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntDrm..2 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 01 07 04 00 00 00 49 02 0b 1f 16 00 03 00 00 40 56 00 0c 1f 09 06 04 0b -00 00 63 00 13 1f 0c 1f 06 00 00 00 62 00 13 2c 28 00 10 2e 26 18 02 04 00 -63 63 00 00 00 32 00 4f 72 6e 74 44 72 6d 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntDrm..3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 01 07 04 00 00 04 48 02 0b 1f 16 00 03 00 00 04 55 00 0c 1f 09 06 04 0b -00 04 3e 03 13 1f 0c 1f 06 00 00 05 62 00 13 2c 0b 00 10 00 22 18 02 04 00 -63 63 00 00 00 32 00 4f 72 6e 74 44 72 6d 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntDrm..3 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 01 07 04 00 00 00 48 02 0b 1f 16 00 03 00 00 00 55 00 0c 1f 09 06 04 0b -00 00 3e 03 13 1f 0c 1f 06 00 00 00 62 00 13 2c 0b 00 10 00 22 18 02 04 00 -63 63 00 00 00 32 00 4f 72 6e 74 44 72 6d 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntDrm..4 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0a 09 06 00 00 02 4b 01 0b 1f 16 00 03 00 00 03 38 20 0c 1f 0b 09 06 0b -00 05 59 01 13 1f 0c 1f 06 00 00 06 62 08 13 2c 0b 00 10 00 22 0c 02 04 00 -63 63 00 00 00 32 00 4f 72 6e 74 44 72 6d 2e 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntDrm..4 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0a 09 06 00 00 00 4b 01 0b 1f 16 00 03 00 00 00 38 20 0c 1f 0b 09 06 0b -00 00 59 01 13 1f 0c 1f 06 00 00 00 62 08 13 2c 0b 00 10 00 22 0c 02 04 00 -63 63 00 00 00 32 00 4f 72 6e 74 44 72 6d 2e 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntDrm..5 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0d 12 07 0e 00 03 43 31 1b 1f 10 0c 06 0e 00 03 48 08 0c 1f 09 16 0a 0d -00 04 61 04 0b 1b 0c 0c 06 0d 00 04 62 04 0b 2c 0b 00 10 00 22 18 02 04 00 -63 63 00 00 00 32 00 4f 72 6e 74 44 72 6d 2e 2e 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntDrm..5 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0d 12 07 0e 00 00 43 31 1b 1f 10 0c 06 0e 00 00 48 08 0c 1f 09 16 0a 0d -00 00 61 04 0b 1b 0c 0c 06 0d 00 00 62 04 0b 2c 0b 00 10 00 22 18 02 04 00 -63 63 00 00 00 32 00 4f 72 6e 74 44 72 6d 2e 2e 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntDrm..6 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 0a 05 05 0c 00 03 4d 04 1b 00 0f 00 01 09 00 02 61 09 03 1c 09 09 07 0d -00 04 63 00 13 1c 09 09 07 0c 00 07 62 00 0b 4c 23 00 00 00 22 18 02 04 00 -63 63 00 00 00 32 00 4f 72 6e 74 44 72 6d 2e 2e 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntDrm..6 -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 0a 05 05 0c 00 00 4d 04 1b 00 0f 00 01 09 00 00 61 09 03 1c 09 09 07 0d -00 00 63 00 13 1c 09 09 07 0c 00 00 62 00 0b 4c 23 00 00 00 22 18 02 04 00 -63 63 00 00 00 32 00 4f 72 6e 74 44 72 6d 2e 2e 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntDrm..6 -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -0f 0a 05 05 0c 00 00 4d 04 1b 00 0f 00 00 09 00 00 61 09 03 1c 09 09 07 0d -00 00 63 00 13 1c 09 09 07 0c 00 00 62 00 0b 4c 23 00 00 00 22 18 02 04 00 -63 63 00 00 00 32 00 4f 72 6e 74 44 72 6d 2e 2e 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntDrm..7 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0a 09 06 00 00 05 48 02 13 1f 16 00 03 00 00 03 53 01 12 1f 0b 09 06 0b -00 03 57 03 13 1f 0c 1f 06 00 00 05 62 00 13 2c 0b 00 10 00 22 0c 02 04 00 -63 63 00 00 00 32 00 4f 72 6e 74 44 72 6d 2e 2e 37 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntDrm..7 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0a 09 06 00 00 00 48 02 13 1f 16 00 03 00 00 00 53 01 12 1f 0b 09 06 0b -00 00 57 03 13 1f 0c 1f 06 00 00 00 62 00 13 2c 0b 00 10 00 22 0c 02 04 00 -63 63 00 00 00 32 00 4f 72 6e 74 44 72 6d 2e 2e 37 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntDrm..8 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0a 09 06 00 00 02 48 02 13 1f 16 00 03 00 00 03 53 01 12 1f 0b 09 06 0b -00 06 57 05 13 1f 0c 1f 06 00 00 04 62 00 13 32 0b 00 10 00 22 0c 02 04 00 -63 63 00 00 00 32 00 4f 72 6e 74 44 72 6d 2e 2e 38 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntDrm..8 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0a 09 06 00 00 00 48 02 13 1f 16 00 03 00 00 00 53 01 12 1f 0b 09 06 0b -00 00 57 05 13 1f 0c 1f 06 00 00 00 62 00 13 32 0b 00 10 00 22 0c 02 04 00 -63 63 00 00 00 32 00 4f 72 6e 74 44 72 6d 2e 2e 38 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntDrm..9 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0b 09 06 00 00 03 30 08 1b 1f 16 00 03 00 00 02 44 01 12 1f 1a 09 06 0b -00 05 5f 05 13 1f 0c 1f 06 00 00 04 62 00 13 32 0b 00 10 00 22 0c 02 04 00 -63 63 00 00 00 32 00 4f 72 6e 74 44 72 6d 2e 2e 39 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntDrm..9 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0b 09 06 00 00 00 30 08 1b 1f 16 00 03 00 00 00 44 01 12 1f 1a 09 06 0b -00 00 5f 05 13 1f 0c 1f 06 00 00 00 62 00 13 32 0b 00 10 00 22 0c 02 04 00 -63 63 00 00 00 32 00 4f 72 6e 74 44 72 6d 2e 2e 39 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntDrm.10 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0b 09 06 00 00 03 30 03 1b 18 0f 18 07 05 00 04 44 09 12 1f 1a 09 06 0b -00 03 37 07 13 18 0f 0c 08 00 00 06 62 01 13 33 0b 00 10 00 22 0c 02 04 00 -63 63 00 00 00 32 00 4f 72 6e 74 44 72 6d 2e 31 30 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntDrm.10 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0b 09 06 00 00 00 30 03 1b 18 0f 18 07 05 00 00 44 09 12 1f 1a 09 06 0b -00 00 37 07 13 18 0f 0c 08 00 00 00 62 01 13 33 0b 00 10 00 22 0c 02 04 00 -63 63 00 00 00 32 00 4f 72 6e 74 44 72 6d 2e 31 30 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntEchoDr -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 18 0f 06 0f 63 02 5b 08 1b 0f 0a 03 07 0d 00 04 48 00 03 19 06 0f 06 04 -00 06 63 00 13 1c 05 03 07 0d 00 05 5d 00 0b 2c 26 1c 0e 00 70 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 45 63 68 6f 44 72 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntEchoDr -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -12 18 0f 06 0f 63 00 5b 08 1b 0f 0a 03 07 0d 00 00 48 00 03 19 06 0f 06 04 -00 00 63 00 13 1c 05 03 07 0d 00 00 5d 00 0b 2c 26 1c 0e 00 70 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 45 63 68 6f 44 72 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Percussive -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 05 04 0f 00 00 5a 0b 03 1f 12 0c 05 08 46 00 5f 03 03 1f 12 09 06 0a -00 05 4e 00 03 1f 1f 0c 06 0f 00 05 5a 07 0b 3c 23 00 00 00 62 18 04 04 00 -63 32 00 00 00 32 00 50 65 72 63 75 73 73 69 76 65 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Percussive -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 05 04 0f 00 00 5a 0b 03 1f 12 0c 05 08 46 00 5f 01 03 1f 12 09 06 0a -00 00 4e 00 03 1f 1f 0c 06 0f 00 00 5a 07 0b 3c 23 00 00 00 62 18 04 04 00 -63 32 00 00 00 32 00 50 65 72 63 75 73 73 69 76 65 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Simmons1 * -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0d 00 02 00 00 00 63 01 03 1f 00 00 02 00 00 00 42 00 03 1f 09 00 04 00 -00 00 53 0c 03 1f 10 00 07 00 00 00 63 00 0b 41 02 00 5f 00 72 18 02 04 00 -28 63 00 00 00 32 00 53 69 6d 6d 6f 6e 73 31 20 2a 63 63 63 32 32 32 00 01 -00 23 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Simmons2 * -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0d 00 02 00 00 00 63 01 03 1f 00 00 05 00 00 00 3c 00 03 1f 09 00 01 00 -00 00 4b 0c 03 1f 0f 00 06 00 00 00 63 00 0b 41 02 00 5f 00 72 18 02 04 00 -28 63 00 00 00 32 00 53 69 6d 6d 6f 6e 73 32 20 2a 63 63 63 32 32 32 00 01 -00 23 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Skankin' -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 19 08 0a 03 00 03 63 0b 10 1f 13 05 0b 05 00 03 58 00 0b 1f 19 06 0b 05 -00 03 63 0a 0e 1f 0f 11 09 07 00 04 63 04 03 3a 14 00 00 00 42 18 02 04 00 -63 32 00 32 00 32 00 53 6b 61 6e 6b 69 6e 27 20 20 63 63 63 32 32 32 00 30 -20 30 00 20 00 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Snare * -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 00 00 01 00 00 00 63 32 03 1f 0e 00 01 00 00 00 59 08 13 1f 00 00 01 00 -00 00 54 08 1b 1f 1a 10 08 0f 00 00 63 14 0b 3a 23 00 00 00 62 0c 04 04 00 -63 32 00 00 00 32 00 53 6e 61 72 65 20 20 20 20 2a 63 63 63 32 32 32 0e 30 -08 0a 00 20 08 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Snare 1 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank D, voice 3 -1f 18 00 01 0f 00 00 5a 38 06 1f 15 09 03 0b 00 00 63 00 00 1f 0a 12 08 0e -00 02 63 00 00 1f 0f 10 08 0a 00 02 63 3c 06 7c 63 00 63 00 73 18 04 04 00 -28 32 00 00 00 32 00 53 6e 61 72 65 20 20 20 20 31 63 63 63 32 32 32 0f 0e -01 07 08 00 09 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Snare 1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 18 00 01 0f 00 00 5a 38 06 1f 15 09 03 0b 00 00 63 00 00 1f 0d 12 08 0e -00 02 63 00 00 1f 0f 10 08 0d 00 02 63 3c 06 7c 63 00 63 00 73 18 04 04 00 -28 32 00 00 00 32 00 53 6e 61 72 65 20 20 20 20 31 63 63 63 32 32 32 0f 0e -01 07 08 00 09 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Snare 2 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank D, voice 4 -1f 1a 00 05 0f 00 40 61 3c 1e 1f 15 09 04 0b 00 44 4e 2c 18 1b 13 13 09 0e -00 42 63 30 00 1f 13 13 07 0e 00 42 63 2c 06 7c 63 00 30 0f 6a 0c 04 04 00 -28 32 00 00 00 32 00 53 6e 61 72 65 20 20 20 20 32 63 63 63 32 32 32 0c 09 -08 01 08 0c 08 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Snare 1 -** Source: Yamaha TX81Z factory preset, bank D, voice 28 -1f 1f 00 05 0f 00 00 62 32 03 1f 14 08 05 08 00 00 5f 00 0b 1f 1f 10 08 0f -0c 00 63 0b 1b 1f 1f 0f 08 0f 00 00 63 05 0b 3b 23 00 00 00 62 0c 04 04 00 -63 32 00 00 00 32 00 53 6e 61 72 65 20 31 20 20 20 63 63 63 32 32 32 08 00 -00 02 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Snare 2 -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank D, voice 29 -1f 00 00 05 0f 00 00 63 32 03 1f 14 08 05 08 00 01 63 02 0b 1f 04 10 08 0f -00 00 63 0b 0b 1f 1f 0f 08 0f 00 00 63 05 0b 3c 23 00 00 00 62 0c 04 04 00 -63 32 00 00 00 32 00 53 6e 61 72 65 20 32 20 20 20 63 63 63 32 32 32 07 60 -00 00 00 70 08 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Snare....1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 01 0f 00 00 60 0b 00 1f 1a 0a 05 0a 00 00 58 06 03 13 1f 11 08 0f -00 05 5e 04 03 1f 1f 10 07 0f 00 04 57 00 03 3c 23 00 00 00 62 0c 04 04 00 -63 32 00 00 00 32 00 53 6e 61 72 65 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Snare....1 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 01 0f 00 00 60 0b 00 1f 1a 0a 05 0a 00 00 58 06 03 13 1f 11 08 0f -00 00 5e 04 03 1f 1f 10 07 0f 00 00 57 00 03 3c 23 00 00 00 62 0c 04 04 00 -63 32 00 00 00 32 00 53 6e 61 72 65 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Snare....1 -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -1f 1f 00 00 0f 00 00 60 0b 00 1f 1a 0a 05 0a 00 00 58 06 03 13 1f 11 08 0f -00 00 5e 04 03 1f 1f 10 07 0f 00 00 57 00 03 3c 23 00 00 00 62 0c 04 04 00 -63 32 00 00 00 32 00 53 6e 61 72 65 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Snare....2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 01 0f 00 00 63 3f 03 1f 1a 0a 05 0a 00 00 4f 06 03 13 16 11 08 0d -00 05 63 06 03 1f 1f 10 08 0f 00 05 63 02 03 28 23 00 00 00 52 0c 04 04 00 -63 32 00 00 00 32 00 53 6e 61 72 65 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Snare....2 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 01 0f 00 00 63 3f 03 1f 1a 0a 05 0a 00 00 4f 06 03 13 16 11 08 0d -00 00 63 06 03 1f 1f 10 08 0f 00 00 63 02 03 28 23 00 00 00 52 0c 04 04 00 -63 32 00 00 00 32 00 53 6e 61 72 65 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Snare....2 -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -1f 1f 00 00 0f 00 00 63 3f 03 1f 1a 0a 05 0a 00 00 4f 06 03 13 16 11 08 0d -00 00 63 06 03 1f 1f 10 08 0f 00 00 63 02 03 28 23 00 00 00 52 0c 04 04 00 -63 32 00 00 00 32 00 53 6e 61 72 65 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Snare....3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 05 0f 00 00 63 32 03 1f 15 0f 05 09 14 00 21 06 03 1f 1f 12 08 0f -00 04 53 00 0b 1f 1f 10 08 0f 00 04 63 01 03 3b 23 00 00 00 62 18 07 04 00 -63 32 00 00 00 32 00 53 6e 61 72 65 2e 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Snare....3 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 05 0f 00 00 63 32 03 1f 15 0f 05 09 14 00 21 06 03 1f 1f 12 08 0f -00 00 53 00 0b 1f 1f 10 08 0f 00 00 63 01 03 3b 23 00 00 00 62 18 07 04 00 -63 32 00 00 00 32 00 53 6e 61 72 65 2e 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Snare....4 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 05 0f 00 01 63 32 03 1f 13 10 05 05 14 01 47 3f 13 1f 1f 12 08 0f -00 06 63 00 0b 1f 1f 0f 08 0f 00 05 43 3f 03 3c 23 00 00 00 62 18 07 04 00 -63 32 00 00 00 32 00 53 6e 61 72 65 2e 2e 2e 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Snare....4 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 05 0f 00 00 63 32 03 1f 13 10 05 05 14 00 47 3f 13 1f 1f 12 08 0f -00 00 63 00 0b 1f 1f 0f 08 0f 00 00 43 3f 03 3c 23 00 00 00 62 18 07 04 00 -63 32 00 00 00 32 00 53 6e 61 72 65 2e 2e 2e 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SnareDrm.* -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 1a 00 01 0f 00 00 63 1c 03 1f 14 00 01 00 00 00 51 1c 03 1f 1f 0e 07 0f -00 02 63 00 0b 1f 12 0f 06 00 00 02 63 24 03 3c 23 00 00 00 62 24 02 04 00 -28 32 00 00 00 32 00 53 6e 61 72 65 44 72 6d 2e 2a 63 63 63 32 32 32 08 0e -08 0d 08 02 09 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Snare&Tom -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 00 00 05 0f 00 00 63 32 03 1f 10 08 05 08 00 01 63 02 0b 1f 04 10 08 0f -00 00 63 0b 0b 1f 1f 0f 00 0f 2e 00 63 05 0b 3c 23 24 00 00 62 0c 04 04 00 -63 32 00 00 00 32 00 53 6e 61 72 65 26 54 6f 6d 20 63 63 63 32 32 32 07 30 -00 00 00 70 08 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Steel Drum -** Controls: KV -** Source: Yamaha DX11 factory preset, bank B, voice 32 -14 10 10 06 0a 1a 03 27 30 03 13 08 00 04 0a 1a 01 42 04 01 15 0c 0e 06 0c -00 02 4c 0b 03 18 0c 0f 05 0f 00 01 5f 04 0a 01 20 00 00 00 52 18 02 04 00 -28 32 00 00 00 32 00 53 74 65 65 6c 20 44 72 75 6d 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Steel Drum -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -14 10 10 06 0a 1a 03 27 30 03 13 08 00 04 0d 1a 01 42 04 01 15 0c 0e 06 0c -00 02 4c 0b 03 18 0c 0f 05 0f 00 01 5f 04 0d 01 20 00 00 00 52 18 02 04 00 -28 32 00 00 00 32 00 53 74 65 65 6c 20 44 72 75 6d 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SteelDrum -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 09 04 03 0a 1a 07 44 05 08 0d 08 0c 05 0b 32 06 40 13 0b 0e 05 03 04 0a -00 04 28 1a 0e 15 08 0c 06 0c 00 05 63 08 0c 02 10 00 09 00 52 0c 02 04 00 -63 32 00 00 00 32 00 53 74 65 65 6c 44 72 75 6d 20 63 63 63 32 32 32 10 37 -00 10 00 26 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SteelDrum1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 06 09 03 0e 00 03 54 0a 11 1b 0a 0d 06 0e 2d 03 63 04 15 1b 0a 0d 06 0e -43 06 5f 04 15 1f 0c 0d 06 0e 00 05 63 04 0e 66 23 00 00 00 32 0c 06 04 00 -63 32 00 32 00 32 00 53 74 65 65 6c 44 72 75 6d 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SteelDrum1 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 06 09 03 0e 00 00 54 0a 11 1b 0a 0d 06 0e 2d 00 63 04 15 1b 0a 0d 06 0e -43 00 5f 04 15 1f 0c 0d 06 0e 00 00 63 04 0e 66 23 00 00 00 32 0c 06 04 00 -63 32 00 32 00 32 00 53 74 65 65 6c 44 72 75 6d 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SteelDrum2 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 06 09 03 0e 00 42 54 07 11 1b 0a 0d 06 0e 2d 43 63 08 15 1b 0a 0d 06 0e -43 46 5f 04 15 1f 0c 0d 06 0e 00 44 63 04 0e 2c 19 00 0a 15 26 0c 06 04 00 -63 32 00 32 00 32 00 53 74 65 65 6c 44 72 75 6d 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SteelDrum2 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 06 09 03 0e 00 40 54 07 11 1b 0a 0d 06 0e 2d 40 63 08 15 1b 0a 0d 06 0e -43 40 5f 04 15 1f 0c 0d 06 0e 00 40 63 04 0e 2c 19 00 0a 15 26 0c 06 04 00 -63 32 00 32 00 32 00 53 74 65 65 6c 44 72 75 6d 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SteelDrum3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -14 10 00 03 00 00 01 49 0b 0b 14 0a 00 04 00 00 03 3c 06 03 14 0a 00 04 00 -00 05 3f 04 03 14 0a 00 06 00 00 05 63 04 03 3a 23 00 00 00 62 18 05 04 00 -63 63 00 00 00 32 00 53 74 65 65 6c 44 72 75 6d 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SteelDrum3 -** Source: from a library of patches collected by Duane Bowker, author unknown -14 10 00 03 00 00 00 49 0b 0b 14 0a 00 04 00 00 00 3c 06 03 14 0a 00 04 00 -00 00 3f 04 03 14 0a 00 06 00 00 00 63 04 03 3a 23 00 00 00 62 18 05 04 00 -63 63 00 00 00 32 00 53 74 65 65 6c 44 72 75 6d 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SteelDrum4 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -14 10 00 03 00 00 02 42 0b 03 14 0a 00 04 00 00 03 42 06 03 14 0a 00 04 00 -00 06 2f 06 03 14 0a 00 06 00 00 06 63 04 03 3a 23 00 00 00 62 18 05 04 00 -63 63 00 00 00 32 00 53 74 65 65 6c 44 72 75 6d 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SteelDrum4 -** Source: from a library of patches collected by Duane Bowker, author unknown -14 10 00 03 00 00 00 42 0b 03 14 0a 00 04 00 00 00 42 06 03 14 0a 00 04 00 -00 00 2f 06 03 14 0a 00 06 00 00 00 63 04 03 3a 23 00 00 00 62 18 05 04 00 -63 63 00 00 00 32 00 53 74 65 65 6c 44 72 75 6d 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SyBon -** Controls: KV -** Source: Yamaha DX11 factory preset, bank D, voice 14 -19 15 1f 02 00 4b 04 5f 00 1e 18 11 09 06 04 1e 04 5d 00 11 17 0b 04 04 0a -32 00 59 04 18 1b 12 0a 05 0a 00 00 5d 00 16 03 23 00 00 00 62 0c 04 04 00 -28 32 00 00 00 32 00 53 79 42 6f 6e 20 20 20 20 20 63 19 19 32 15 15 00 02 -00 07 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SyBon -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -19 15 1f 02 00 4b 04 5f 00 1e 18 11 09 06 04 1e 04 5d 00 11 17 0b 04 04 0d -32 00 59 04 18 1b 12 0d 05 0d 00 00 5d 00 16 03 23 00 00 00 62 0c 04 04 00 -28 32 00 00 00 32 00 53 79 42 6f 6e 20 20 20 20 20 63 19 19 32 15 15 00 02 -00 07 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - -* SUBCATEGORY Drum2 - - -** Name: SynthDrm.1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 18 1f 0a 0f 00 02 3c 0f 03 18 18 16 0b 04 2d 03 55 04 05 15 15 0c 0a 00 -43 05 63 13 03 15 13 0c 0b 00 00 04 63 08 03 7c 3f 00 63 00 60 0c 06 04 00 -63 32 00 32 00 32 00 53 79 6e 74 68 44 72 6d 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm.1 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -18 18 1f 0a 0f 00 00 3c 0f 03 18 18 16 0b 04 2d 00 55 04 05 15 15 0c 0a 00 -43 00 63 13 03 15 13 0c 0b 00 00 00 63 08 03 7c 3f 00 63 00 60 0c 06 04 00 -63 32 00 32 00 32 00 53 79 6e 74 68 44 72 6d 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm.2 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 18 1f 0a 0f 00 01 5d 3f 03 18 18 16 0b 04 2d 01 55 04 15 15 15 0c 0a 00 -43 04 63 09 0b 15 13 0c 0b 00 00 05 63 00 0b 7c 3f 00 63 00 60 0c 06 04 00 -63 32 00 32 00 32 00 53 79 6e 74 68 44 72 6d 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm.2 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -18 18 1f 0a 0f 00 00 5d 3f 03 18 18 16 0b 04 2d 00 55 04 15 15 15 0c 0a 00 -43 00 63 09 0b 15 13 0c 0b 00 00 00 63 00 0b 7c 3f 00 63 00 60 0c 06 04 00 -63 32 00 32 00 32 00 53 79 6e 74 68 44 72 6d 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm.3 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 18 1f 0a 0f 00 02 63 04 03 1f 18 16 0b 04 2d 00 55 04 15 15 15 0c 0a 00 -43 03 63 04 0b 1c 13 0c 0b 00 00 05 63 00 0b 7c 3f 00 63 00 60 18 06 04 00 -63 32 00 32 00 32 00 53 79 6e 74 68 44 72 6d 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm.3 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -18 18 1f 0a 0f 00 00 63 04 03 1f 18 16 0b 04 2d 00 55 04 15 15 15 0c 0a 00 -43 00 63 04 0b 1c 13 0c 0b 00 00 00 63 00 0b 7c 3f 00 63 00 60 18 06 04 00 -63 32 00 32 00 32 00 53 79 6e 74 68 44 72 6d 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm.4 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 18 1f 0a 0f 00 01 63 30 03 19 0c 07 04 0f 2d 01 63 01 03 15 15 0c 0a 00 -43 05 63 04 0b 1f 12 09 07 00 00 06 63 00 03 24 1e 63 00 00 73 18 06 04 00 -63 32 00 32 00 32 00 53 79 6e 74 68 44 72 6d 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm.4 -** Source: from a library of patches collected by Duane Bowker, author unknown -18 18 1f 0a 0f 00 00 63 30 03 19 0c 07 04 0f 2d 00 63 01 03 15 15 0c 0a 00 -43 00 63 04 0b 1f 12 09 07 00 00 00 63 00 03 24 1e 63 00 00 73 18 06 04 00 -63 32 00 32 00 32 00 53 79 6e 74 68 44 72 6d 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm.5 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 18 1f 0a 0f 00 03 63 2c 1b 1f 1f 07 05 0f 2d 03 5c 00 0b 1f 1f 00 0f 0f -43 04 63 00 0b 1f 11 09 05 00 00 06 63 00 03 24 1e 63 00 00 73 18 06 04 00 -63 32 00 32 00 32 00 53 79 6e 74 68 44 72 6d 2e 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm.5 -** Source: from a library of patches collected by Duane Bowker, author unknown -18 18 1f 0a 0f 00 00 63 2c 1b 1f 1f 07 05 0f 2d 00 5c 00 0b 1f 1f 00 0f 0f -43 00 63 00 0b 1f 11 09 05 00 00 00 63 00 03 24 1e 63 00 00 73 18 06 04 00 -63 32 00 32 00 32 00 53 79 6e 74 68 44 72 6d 2e 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm.6 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 18 1f 0a 0f 00 02 5d 01 03 18 18 16 0b 04 2d 03 55 01 15 15 15 0c 0a 00 -43 05 63 00 0b 15 13 0c 0b 00 00 45 63 00 0b 5a 17 00 00 2a 66 0c 06 04 00 -63 32 00 32 00 32 00 53 79 6e 74 68 44 72 6d 2e 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm.6 -** Source: from a library of patches collected by Duane Bowker, author unknown -18 18 1f 0a 0f 00 00 5d 01 03 18 18 16 0b 04 2d 00 55 01 15 15 15 0c 0a 00 -43 00 63 00 0b 15 13 0c 0b 00 00 40 63 00 0b 5a 17 00 00 2a 66 0c 06 04 00 -63 32 00 32 00 32 00 53 79 6e 74 68 44 72 6d 2e 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm.7 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 18 1f 0a 0f 00 02 5d 3f 03 18 18 16 0b 04 2d 03 55 01 15 15 15 0c 0a 00 -43 05 63 04 0b 1c 13 0c 0b 00 00 45 63 04 0b 5b 17 00 00 2a 66 0c 06 04 00 -63 32 00 32 00 32 00 53 79 6e 74 68 44 72 6d 2e 37 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm.7 -** Source: from a library of patches collected by Duane Bowker, author unknown -18 18 1f 0a 0f 00 00 5d 3f 03 18 18 16 0b 04 2d 00 55 01 15 15 15 0c 0a 00 -43 00 63 04 0b 1c 13 0c 0b 00 00 40 63 04 0b 5b 17 00 00 2a 66 0c 06 04 00 -63 32 00 32 00 32 00 53 79 6e 74 68 44 72 6d 2e 37 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm.8 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 06 07 02 00 00 02 19 3f 03 19 19 09 07 00 2d 02 63 04 15 1f 1f 06 06 0c -43 03 63 07 0b 10 10 12 09 0c 00 45 63 00 0b 5a 17 00 00 2a 66 0c 06 04 00 -63 32 00 32 00 32 00 53 79 6e 74 68 44 72 6d 2e 38 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm.8 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 06 07 02 00 00 00 19 3f 03 19 19 09 07 00 2d 00 63 04 15 1f 1f 06 06 0c -43 00 63 07 0b 10 10 12 09 0c 00 40 63 00 0b 5a 17 00 00 2a 66 0c 06 04 00 -63 32 00 32 00 32 00 53 79 6e 74 68 44 72 6d 2e 38 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm.9 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 1f 02 0a 00 01 39 3d 03 1f 13 1f 06 00 2d 02 63 04 13 1f 0c 00 06 00 -43 03 63 00 0b 1f 10 1f 09 06 00 45 63 00 0b 5c 17 00 00 2a 66 0c 06 04 00 -63 32 00 32 00 32 00 53 79 6e 74 68 44 72 6d 2e 39 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm.9 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 1f 02 0a 00 00 39 3d 03 1f 13 1f 06 00 2d 00 63 04 13 1f 0c 00 06 00 -43 00 63 00 0b 1f 10 1f 09 06 00 40 63 00 0b 5c 17 00 00 2a 66 0c 06 04 00 -63 32 00 32 00 32 00 53 79 6e 74 68 44 72 6d 2e 39 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm10 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 1f 02 0a 00 01 39 3a 03 1f 13 1f 06 00 2d 02 63 01 13 1f 0c 00 06 00 -43 05 63 01 0b 1f 10 1f 09 06 00 06 63 05 0b 64 08 00 63 00 60 0c 06 04 00 -63 32 00 32 00 32 00 53 79 6e 74 68 44 72 6d 31 30 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm10 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 1f 02 0a 00 00 39 3a 03 1f 13 1f 06 00 2d 00 63 01 13 1f 0c 00 06 00 -43 00 63 01 0b 1f 10 1f 09 06 00 00 63 05 0b 64 08 00 63 00 60 0c 06 04 00 -63 32 00 32 00 32 00 53 79 6e 74 68 44 72 6d 31 30 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm11 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1a 15 00 07 09 00 02 4a 00 13 1f 1f 10 04 0a 00 03 54 01 13 1d 1a 06 07 04 -00 05 63 05 03 1f 10 1f 05 00 00 05 63 00 0b 2c 23 00 00 00 62 18 05 04 00 -63 00 00 00 00 32 00 53 79 6e 74 68 44 72 6d 31 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm11 -** Source: from a library of patches collected by Duane Bowker, author unknown -1a 15 00 07 09 00 00 4a 00 13 1f 1f 10 04 0a 00 00 54 01 13 1d 1a 06 07 04 -00 00 63 05 03 1f 10 1f 05 00 00 00 63 00 0b 2c 23 00 00 00 62 18 05 04 00 -63 00 00 00 00 32 00 53 79 6e 74 68 44 72 6d 31 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm12 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 1f 19 06 0f 00 02 2d 34 1b 1f 14 1f 06 00 2d 02 63 04 13 1f 0b 00 06 00 -43 44 63 00 0b 1f 10 1f 09 06 00 46 63 07 0b 5c 24 1c 02 4d 76 0c 06 04 00 -63 32 00 32 00 32 00 53 79 6e 74 68 44 72 6d 31 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm12 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -12 1f 19 06 0f 00 00 2d 34 1b 1f 14 1f 06 00 2d 00 63 04 13 1f 0b 00 06 00 -43 40 63 00 0b 1f 10 1f 09 06 00 40 63 07 0b 5c 24 1c 02 4d 76 0c 06 04 00 -63 32 00 32 00 32 00 53 79 6e 74 68 44 72 6d 31 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm13 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 18 1f 0a 0f 00 04 61 3f 03 18 18 16 0b 04 2d 04 5f 06 05 15 15 0c 0a 00 -43 04 63 07 03 15 13 0c 0b 00 00 06 63 01 03 7c 3f 00 63 00 60 0c 06 04 00 -63 32 00 32 00 32 00 53 79 6e 74 68 44 72 6d 31 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm13 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -18 18 1f 0a 0f 00 00 61 3f 03 18 18 16 0b 04 2d 00 5f 06 05 15 15 0c 0a 00 -43 00 63 07 03 15 13 0c 0b 00 00 00 63 01 03 7c 3f 00 63 00 60 0c 06 04 00 -63 32 00 32 00 32 00 53 79 6e 74 68 44 72 6d 31 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm14 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 18 1f 0a 0f 00 03 61 3f 03 18 18 16 0b 04 2d 03 56 01 05 15 15 0c 0a 00 -43 03 42 07 03 15 13 0c 0b 00 00 04 63 01 03 78 3f 00 63 00 60 0c 06 04 00 -63 32 00 32 00 32 00 53 79 6e 74 68 44 72 6d 31 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm14 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -18 18 1f 0a 0f 00 00 61 3f 03 18 18 16 0b 04 2d 00 56 01 05 15 15 0c 0a 00 -43 00 42 07 03 15 13 0c 0b 00 00 00 63 01 03 78 3f 00 63 00 60 0c 06 04 00 -63 32 00 32 00 32 00 53 79 6e 74 68 44 72 6d 31 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm15 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 18 1f 0a 0f 00 03 63 08 03 13 18 0e 0b 0a 2d 03 35 00 05 1f 18 0d 0a 09 -43 04 5e 04 03 15 11 0c 0b 00 00 05 63 00 03 7b 23 00 00 00 32 0c 06 04 00 -63 32 00 32 00 32 00 53 79 6e 74 68 44 72 6d 31 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm15 -** Source: from a library of patches collected by Duane Bowker, author unknown -18 18 1f 0a 0f 00 00 63 08 03 13 18 0e 0b 0a 2d 00 35 00 05 1f 18 0d 0a 09 -43 00 5e 04 03 15 11 0c 0b 00 00 00 63 00 03 7b 23 00 00 00 32 0c 06 04 00 -63 32 00 32 00 32 00 53 79 6e 74 68 44 72 6d 31 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm16 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 1e 08 01 00 63 02 63 0a 0b 14 07 16 0f 00 00 02 51 00 1b 1f 0c 1f 06 00 -00 05 61 01 03 1c 0f 07 07 07 3e 04 63 03 0b 7c 00 00 00 00 73 0c 02 04 00 -63 62 00 00 00 32 00 53 79 6e 74 68 44 72 6d 31 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SynthDrm16 -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 1e 08 01 00 63 00 63 0a 0b 14 07 16 0f 00 00 00 51 00 1b 1f 0c 1f 06 00 -00 00 61 01 03 1c 0f 07 07 07 3e 00 63 03 0b 7c 00 00 00 00 73 0c 02 04 00 -63 62 00 00 00 32 00 53 79 6e 74 68 44 72 6d 31 36 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tibet Drum -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 0f 09 01 0c 32 02 59 0a 15 1c 0f 1f 02 0a 1e 03 34 10 0a 1c 09 0d 02 0a -32 05 5d 04 0a 1c 09 0d 02 0a 1e 06 61 04 0e 24 20 2c 14 00 42 0c 0c 04 00 -63 32 32 00 00 32 00 54 69 62 65 74 20 44 72 75 6d 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tibet Drum -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 0f 09 01 0c 32 00 59 0a 15 1c 0f 1f 02 0a 1e 00 34 10 0a 1c 09 0d 02 0a -32 00 5d 04 0a 1c 09 0d 02 0a 1e 00 61 04 0e 24 20 2c 14 00 42 0c 0c 04 00 -63 32 32 00 00 32 00 54 69 62 65 74 20 44 72 75 6d 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Timbale..1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 07 03 05 0f 00 00 37 02 06 15 09 04 04 0f 00 00 47 01 00 13 1f 00 06 0f -00 04 5f 03 06 1f 0c 07 06 00 00 04 63 00 13 3c 0b 00 10 00 22 18 07 04 00 -63 32 63 32 00 32 00 54 69 6d 62 61 6c 65 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Timbale..1 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 07 03 05 0f 00 00 37 02 06 15 09 04 04 0f 00 00 47 01 00 13 1f 00 06 0f -00 00 5f 03 06 1f 0c 07 06 00 00 00 63 00 13 3c 0b 00 10 00 22 18 07 04 00 -63 32 63 32 00 32 00 54 69 6d 62 61 6c 65 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Timbale..2 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 01 07 04 00 00 00 3d 02 06 1f 18 09 03 0a 00 00 53 01 08 1f 09 06 04 0b -00 05 57 03 06 1f 0c 07 06 00 00 05 63 00 13 2c 0b 00 10 00 22 18 07 04 00 -63 32 63 32 00 32 00 54 69 6d 62 61 6c 65 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Timbale..2 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 01 07 04 00 00 00 3d 02 06 1f 18 09 03 0a 00 00 53 01 08 1f 09 06 04 0b -00 00 57 03 06 1f 0c 07 06 00 00 00 63 00 13 2c 0b 00 10 00 22 18 07 04 00 -63 32 63 32 00 32 00 54 69 6d 62 61 6c 65 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Timbales * -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 00 00 02 00 13 00 50 04 0b 1f 0d 00 07 00 0c 00 55 01 03 1f 11 00 09 00 -32 00 3c 2b 03 1f 0e 00 06 00 00 06 63 08 03 41 02 00 5f 00 72 00 02 04 00 -28 63 00 00 00 32 00 54 69 6d 62 61 6c 65 73 20 2a 63 63 63 32 32 32 00 1a -00 22 03 04 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Timpani * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0f 08 03 00 00 07 4f 00 00 1f 11 06 03 0b 36 02 4b 00 08 1f 12 0c 04 0f -00 05 4f 01 0e 1d 0b 00 04 00 00 00 63 00 0b 02 07 00 00 00 62 18 0c 04 00 -28 50 00 00 00 32 00 54 69 6d 70 61 6e 69 20 20 2a 63 63 63 32 32 32 00 32 -00 02 10 22 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Timpani -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank D, voice 23 -1d 12 00 03 00 00 00 41 3c 03 1f 0f 07 04 0f 00 00 3c 00 03 1f 0f 11 03 0c -3b 01 52 02 03 1f 11 0c 04 0f 00 02 63 00 03 3a 15 00 03 00 6a 0c 07 04 00 -63 32 00 00 00 32 00 54 69 6d 70 61 6e 69 20 20 20 63 63 63 32 32 32 08 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Timpani..1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1d 12 00 03 00 00 00 37 00 03 1f 13 0c 04 0b 00 00 48 00 03 1f 07 04 02 0c -3b 05 3f 02 03 1f 0c 0c 04 0f 00 06 63 00 03 2a 15 00 03 00 6a 0c 07 04 00 -63 32 00 00 00 32 00 54 69 6d 70 61 6e 69 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Timpani..1 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 12 00 03 00 00 00 37 00 03 1f 13 0c 04 0b 00 00 48 00 03 1f 07 04 02 0c -3b 00 3f 02 03 1f 0c 0c 04 0f 00 00 63 00 03 2a 15 00 03 00 6a 0c 07 04 00 -63 32 00 00 00 32 00 54 69 6d 70 61 6e 69 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Timpani..2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1d 12 00 02 00 00 00 3d 02 0b 1f 1f 08 04 0f 00 00 37 00 03 1f 0f 07 03 0c -3b 05 4f 00 03 1f 1f 0c 04 0f 00 05 63 02 0b 3a 15 00 03 00 6a 00 07 04 00 -63 32 00 00 00 32 00 54 69 6d 70 61 6e 69 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Timpani..2 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 12 00 02 00 00 00 3d 02 0b 1f 1f 08 04 0f 00 00 37 00 03 1f 0f 07 03 0c -3b 00 4f 00 03 1f 1f 0c 04 0f 00 00 63 02 0b 3a 15 00 03 00 6a 00 07 04 00 -63 32 00 00 00 32 00 54 69 6d 70 61 6e 69 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tom 1 -** Source: Yamaha DX11 factory preset, bank D, voice 5 -1f 05 0a 08 0e 00 00 5d 08 03 1f 0c 10 07 04 00 00 34 18 03 1f 0e 0a 06 00 -00 00 51 20 03 1f 10 0a 07 0f 00 00 5e 04 03 01 23 00 00 00 62 00 04 04 00 -28 32 00 00 00 32 00 54 6f 6d 20 20 20 20 20 20 31 63 17 23 32 2e 2e 08 05 -08 04 09 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tom 1 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 05 0d 08 0e 00 00 5d 08 03 1f 0c 10 07 04 00 00 34 18 03 1f 0e 0a 06 00 -00 00 51 20 03 1f 10 0d 07 0f 00 00 5e 04 03 01 23 00 00 00 62 00 04 04 00 -28 32 00 00 00 32 00 54 6f 6d 20 20 20 20 20 20 31 63 17 23 32 2e 2e 08 05 -08 04 09 0d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tom 2 -** Controls: KV -** Source: Yamaha DX11 factory preset, bank D, voice 6 -1f 1f 00 01 0f 00 00 63 00 03 1f 1f 00 01 0f 13 01 37 04 0b 1f 18 11 03 06 -00 01 5e 04 0b 1f 1f 0b 06 0f 00 01 63 00 0b 3b 23 00 00 00 62 18 04 04 00 -28 32 00 00 00 32 00 54 6f 6d 20 20 20 20 20 20 32 63 25 26 32 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tom 3 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank D, voice 7 -1f 1f 00 01 0f 00 00 46 1b 03 1f 1f 00 01 0f 13 01 37 04 0b 1f 18 05 03 06 -00 01 5e 03 0b 1f 14 0b 06 0e 00 01 63 00 0b 3b 63 00 63 00 63 18 04 04 00 -28 32 00 00 00 32 00 54 6f 6d 20 20 20 20 20 20 33 63 25 26 32 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tom 4 -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank D, voice 8 -1f 1f 00 01 0f 00 00 46 06 03 1f 1f 00 01 0f 13 01 37 00 0b 1f 18 05 03 06 -00 01 5e 00 0b 1f 0b 1f 0a 0a 00 01 63 00 0b 23 63 00 63 00 63 18 04 04 00 -28 32 00 00 00 32 00 54 6f 6d 20 20 20 20 20 20 34 63 25 26 32 2c 2c 00 00 -00 02 00 52 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tom 4 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 01 0f 00 00 46 06 03 1f 1f 00 01 0f 13 01 37 00 0b 1f 18 05 03 06 -00 01 5e 00 0b 1f 0b 1f 0a 0d 00 01 63 00 0b 23 63 00 63 00 63 18 04 04 00 -28 32 00 00 00 32 00 54 6f 6d 20 20 20 20 20 20 34 63 25 26 32 2c 2c 00 00 -00 02 00 52 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tom Tom..1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 1f 17 0f 0f 00 00 00 04 03 15 1f 1b 0f 0f 00 00 5d 02 06 18 1f 10 0f 0f -00 06 00 04 06 13 16 0d 0a 0f 00 04 63 00 08 03 23 00 00 00 62 18 0c 04 00 -63 32 00 00 00 32 00 54 6f 6d 20 54 6f 6d 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tom Tom..1 -** Source: from a library of patches collected by Duane Bowker, author unknown -18 1f 17 0f 0f 00 00 00 04 03 15 1f 1b 0f 0f 00 00 5d 02 06 18 1f 10 0f 0f -00 00 00 04 06 13 16 0d 0a 0f 00 00 63 00 08 03 23 00 00 00 62 18 0c 04 00 -63 32 00 00 00 32 00 54 6f 6d 20 54 6f 6d 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tom Tom..2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 1f 1a 0f 0f 00 00 63 07 03 15 1f 1b 0f 0f 00 00 5d 02 06 18 1f 10 0f 0f -00 05 47 02 06 13 16 0d 0a 0f 00 05 63 00 08 03 23 00 00 00 62 18 0c 04 00 -63 32 00 00 00 32 00 54 6f 6d 20 54 6f 6d 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tom Tom..2 -** Source: from a library of patches collected by Duane Bowker, author unknown -18 1f 1a 0f 0f 00 00 63 07 03 15 1f 1b 0f 0f 00 00 5d 02 06 18 1f 10 0f 0f -00 00 47 02 06 13 16 0d 0a 0f 00 00 63 00 08 03 23 00 00 00 62 18 0c 04 00 -63 32 00 00 00 32 00 54 6f 6d 20 54 6f 6d 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tom Tom..3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -18 1f 1a 0f 0f 00 00 63 01 03 15 1f 1b 0f 0f 00 00 63 01 16 18 1f 10 0f 0f -00 05 63 02 06 13 16 0d 0a 0f 00 05 63 01 10 04 23 00 00 00 62 18 0c 04 00 -63 32 00 00 00 32 00 54 6f 6d 20 54 6f 6d 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tom Tom..3 -** Source: from a library of patches collected by Duane Bowker, author unknown -18 1f 1a 0f 0f 00 00 63 01 03 15 1f 1b 0f 0f 00 00 63 01 16 18 1f 10 0f 0f -00 00 63 02 06 13 16 0d 0a 0f 00 00 63 01 10 04 23 00 00 00 62 18 0c 04 00 -63 32 00 00 00 32 00 54 6f 6d 20 54 6f 6d 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tom Tom..4 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 13 0c 0a 0a 00 00 4d 0a 00 1f 13 0a 05 0d 32 00 4e 0c 03 1f 0d 0c 0a 0d -1f 05 59 10 03 1f 1c 0f 07 0f 00 05 63 0a 03 2c 23 00 00 00 62 0c 04 04 00 -63 32 00 00 00 32 00 54 6f 6d 20 54 6f 6d 2e 2e 34 63 63 63 32 32 32 00 00 -00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tom Tom..4 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 13 0c 0a 0a 00 00 4d 02 00 1f 13 0a 05 0d 32 00 4e 0c 03 1f 0d 0c 0a 0d -1f 00 59 0e 03 1f 1c 0f 07 0f 00 00 63 09 03 2c 23 00 00 00 62 0c 04 04 00 -63 32 00 00 00 32 00 54 6f 6d 20 54 6f 6d 2e 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tom-Pany -** Controls: MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank D, voice 16 -1f 10 00 01 00 35 00 50 00 00 1f 16 04 03 09 36 00 63 00 00 13 0b 03 02 09 -3b 00 3c 03 06 1d 0c 00 06 00 00 00 5a 00 06 1a 07 00 51 00 52 0c 04 04 00 -28 32 00 00 00 32 00 54 6f 6d 2d 50 61 6e 79 20 20 63 40 43 32 18 16 00 50 -00 03 00 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Wood Drum -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 1f 07 0f 00 00 63 3f 03 18 1f 1f 07 0f 46 01 63 00 03 1f 1f 1f 06 0f -00 06 63 00 03 1b 1f 0f 06 0f 00 04 63 00 03 04 23 00 00 00 62 18 04 04 00 -63 32 00 00 00 32 00 57 6f 6f 64 20 44 72 75 6d 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Wood Drum -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 1f 07 0f 00 00 63 3f 03 18 1f 1f 07 0f 46 00 63 00 03 1f 1f 1f 06 0f -00 00 63 00 03 1b 1f 0f 06 0f 00 00 63 00 03 04 23 00 00 00 62 18 04 04 00 -63 32 00 00 00 32 00 57 6f 6f 64 20 44 72 75 6d 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: XyloSpring -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 16 15 0f 05 2e 04 63 04 06 10 0c 0c 03 09 00 03 3f 01 01 1f 16 0f 06 03 -00 06 63 08 03 1f 09 09 06 0c 00 06 62 00 02 7c 23 00 00 00 32 0c 02 04 00 -63 32 00 32 00 32 00 58 79 6c 6f 53 70 72 69 6e 67 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: XyloSpring -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 16 15 0f 05 2e 00 63 04 06 10 0c 0c 03 09 00 00 3f 01 01 1f 16 0f 06 03 -00 00 63 08 03 1f 09 09 06 0c 00 00 62 00 02 7c 23 00 00 00 32 0c 02 04 00 -63 32 00 32 00 32 00 58 79 6c 6f 53 70 72 69 6e 67 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY Other - - -** Name: Cabassa * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 15 00 0f 00 00 00 63 1c 03 1f 0d 00 07 00 00 41 63 24 03 1f 0d 00 07 00 -00 42 63 38 03 1f 0d 00 06 00 00 42 63 24 03 7d 51 00 00 63 7f 30 02 04 00 -28 63 00 00 00 32 00 43 61 62 61 73 73 61 20 20 2a 63 63 63 32 32 32 0d 00 -0d 50 0c 00 0d 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Maracas * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 15 00 09 00 00 00 62 1c 03 1f 0d 00 07 00 00 41 63 3c 03 1f 0d 00 06 00 -00 42 63 24 03 1f 0d 00 07 00 00 42 63 3c 03 7d 59 00 00 63 7f 30 02 04 00 -28 63 00 00 00 32 00 4d 61 72 61 63 61 73 20 20 2a 63 63 63 32 32 32 0e 00 -0d 43 0e 00 0d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Metalimba -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank D, voice 4 -1f 17 00 05 05 1c 02 55 28 0b 1f 10 00 04 08 0a 02 4d 15 0e 1f 0b 00 05 08 -0c 02 4d 16 08 1f 0e 00 06 00 00 01 63 04 0b 02 23 00 00 00 62 0c 07 04 00 -63 63 00 00 00 32 00 4d 65 74 61 6c 69 6d 62 61 20 63 63 63 32 32 32 00 60 -00 01 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tambourin* -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 13 00 0f 00 00 01 63 04 03 1f 00 00 01 0f 00 01 59 24 03 1f 12 00 01 0f -00 00 45 04 03 18 10 1f 07 00 00 03 63 18 03 32 23 00 00 00 32 00 02 04 00 -28 63 00 00 00 32 00 54 61 6d 62 6f 75 72 69 6e 2a 63 63 63 32 32 32 0b 05 -0e 09 08 00 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - ---Bank 27 - -* CATEGORY NOISES - -* SUBCATEGORY Noises1 - -** Name: Airplane.1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 04 02 08 0f 00 45 4d 04 03 13 12 11 03 0c 03 45 63 00 03 0f 04 03 08 0f -00 46 63 04 03 0c 12 03 03 0f 02 46 5f 00 03 0c 63 00 00 63 27 18 02 04 00 -63 63 00 00 00 32 00 41 69 72 70 6c 61 6e 65 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Airplane.1 -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 04 02 08 0f 00 40 4d 04 03 13 12 11 03 0c 03 40 63 00 03 0f 04 03 08 0f -00 40 63 04 03 0c 12 03 03 0f 02 40 5f 00 03 0c 63 00 00 63 27 18 02 04 00 -63 63 00 00 00 32 00 41 69 72 70 6c 61 6e 65 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Airplane.2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 04 02 08 0f 00 44 56 09 03 13 12 11 03 0c 03 44 63 09 03 0f 04 03 08 0f -00 44 63 04 03 0c 12 03 03 0f 02 47 5f 00 03 0c 63 00 00 63 27 18 02 04 00 -63 63 00 00 00 32 00 41 69 72 70 6c 61 6e 65 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Airplane.2 -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 04 02 08 0f 00 40 56 09 03 13 12 11 03 0c 03 40 63 09 03 0f 04 03 08 0f -00 40 63 04 03 0c 12 03 03 0f 02 40 5f 00 03 0c 63 00 00 63 27 18 02 04 00 -63 63 00 00 00 32 00 41 69 72 70 6c 61 6e 65 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Alarm Call -** Controls: MW (LFO amplitude) -** Source: Yamaha TX81Z factory preset, bank D, voice 18 -1f 1f 00 03 0f 00 00 2e 3f 00 1f 1f 00 04 0f 00 00 47 11 06 1f 1f 00 06 0f -00 40 3a 0b 00 1f 1f 00 06 0f 00 40 5c 3f 06 22 37 00 00 28 6d 18 04 04 00 -63 01 63 00 00 32 00 41 6c 61 72 6d 20 43 61 6c 6c 63 63 63 32 32 32 00 40 -0e 50 00 00 0a 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Alien 3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1e 05 02 04 0e 00 00 4d 08 01 19 07 04 05 0f 08 00 4c 06 00 0f 0a 00 07 0e -06 02 63 05 05 14 15 03 05 0e 00 01 62 06 00 24 26 03 05 00 46 05 03 04 00 -63 2b 00 00 00 32 00 41 6c 69 65 6e 20 33 20 20 20 63 63 63 32 32 32 01 31 -00 21 00 23 00 45 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Alien Chat -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0a 0c 01 06 0e 00 43 28 04 05 16 10 1f 05 0d 00 44 2c 04 02 16 0f 1f 06 0d -00 45 46 0a 06 15 04 1f 06 0e 00 45 63 08 03 42 32 00 00 63 05 18 02 04 00 -28 02 00 00 00 32 00 41 6c 69 65 6e 20 43 68 61 74 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Alien Chat -** Source: from a library of patches collected by Duane Bowker, author unknown -0a 0c 01 06 0e 00 40 28 04 05 16 10 1f 05 0d 00 40 2c 04 02 16 0f 1f 06 0d -00 40 46 0a 06 15 04 1f 06 0e 00 40 63 08 03 42 32 00 00 63 05 18 02 04 00 -28 02 00 00 00 32 00 41 6c 69 65 6e 20 43 68 61 74 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Artofnoiz* -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1d 0a 08 02 07 00 05 5e 0d 0b 1f 03 00 01 00 00 00 63 00 0b 1b 04 0a 01 07 -00 03 57 18 0b 1f 13 04 06 0f 00 00 63 00 13 03 23 00 00 00 32 00 02 04 00 -28 63 00 00 00 32 00 41 72 74 6f 66 6e 6f 69 7a 2a 63 63 63 32 32 32 00 00 -08 00 08 04 08 12 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AutoDecent -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -07 1b 0d 0d 0f 00 03 63 11 00 0c 1b 0d 0d 0f 00 04 63 13 03 0a 1b 0d 0d 0f -00 04 63 12 06 1f 1b 0d 0d 0f 00 06 63 19 03 47 25 00 00 00 32 00 02 04 00 -28 02 00 00 00 32 00 41 75 74 6f 44 65 63 65 6e 74 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AutoDecent -** Source: from a library of patches collected by Duane Bowker, author unknown -07 1b 0d 0d 0f 00 00 63 11 00 0c 1b 0d 0d 0f 00 00 63 13 03 0a 1b 0d 0d 0f -00 00 63 12 06 1f 1b 0d 0d 0f 00 00 63 19 03 47 25 00 00 00 32 00 02 04 00 -28 02 00 00 00 32 00 41 75 74 6f 44 65 63 65 6e 74 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AutoStorm1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 07 01 03 05 00 03 30 0a 00 14 0b 04 01 09 00 04 4d 15 00 14 06 01 03 05 -00 04 53 00 00 0f 09 00 01 0c 00 05 63 00 00 2b 63 00 40 00 73 00 05 04 00 -63 63 63 00 00 32 00 41 75 74 6f 53 74 6f 72 6d 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AutoStorm1 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -12 07 01 03 05 00 00 30 0a 00 14 0b 04 01 09 00 00 4d 15 00 14 06 01 03 05 -00 00 53 00 00 0f 09 00 01 0c 00 00 63 00 00 2b 63 00 40 00 73 00 05 04 00 -63 63 63 00 00 32 00 41 75 74 6f 53 74 6f 72 6d 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AutoStorm2 -** Controls: KV, MW (LFO pitch), MW (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 07 09 03 05 00 43 33 0d 00 12 0b 09 01 09 00 43 4d 15 00 18 06 09 03 05 -00 44 53 00 00 13 09 09 01 0c 00 45 63 00 00 5b 50 00 63 11 77 00 05 04 00 -63 63 63 00 00 32 00 41 75 74 6f 53 74 6f 72 6d 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: AutoStorm2 -** Controls: MW (LFO pitch), MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 07 09 03 05 00 40 33 0d 00 12 0b 09 01 09 00 40 4d 15 00 18 06 09 03 05 -00 40 53 00 00 13 09 09 01 0c 00 40 63 00 00 5b 50 00 63 11 77 00 05 04 00 -63 63 63 00 00 32 00 41 75 74 6f 53 74 6f 72 6d 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Big Belch -** Controls: KV, MW (LFO pitch), MW (LFO amplitude), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 0c 0b 0b 00 44 42 0d 03 1f 1b 07 09 0c 00 43 54 0d 1b 1f 1c 0c 0b 0c -00 44 63 0d 03 1f 1b 07 09 0f 00 45 63 00 1b 74 59 00 63 23 75 0c 07 04 00 -63 32 01 32 00 32 00 42 69 67 20 42 65 6c 63 68 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Big Belch -** Controls: MW (LFO pitch), MW (LFO amplitude), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 0c 0b 0b 00 40 42 0d 03 1f 1b 07 09 0c 00 40 54 0d 1b 1f 1c 0c 0b 0c -00 40 63 0d 03 1f 1b 07 09 0f 00 40 63 00 1b 74 59 00 63 23 75 0c 07 04 00 -63 32 01 32 00 32 00 42 69 67 20 42 65 6c 63 68 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Birds * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 00 00 0f 0f 00 00 00 0c 03 1c 00 00 01 0f 00 00 55 20 03 1b 12 00 01 0f -00 00 63 00 03 10 15 00 09 0e 00 03 63 00 03 02 23 00 00 00 32 00 02 04 00 -28 63 00 00 00 32 00 42 69 72 64 73 20 20 20 20 2a 63 63 63 32 32 32 0f 09 -0e 09 08 01 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Birds -** Controls: MW (LFO pitch), MW (LFO amplitude), BC (voice pitch) -** Source: Yamaha TX81Z factory preset, bank D, voice 12 -1f 1f 00 07 0f 28 00 51 01 03 1f 1f 00 0f 0f 28 00 4b 01 03 13 1f 00 0e 0f -0a 40 63 3f 03 1f 1f 00 0f 0f 0a 40 63 3f 03 04 22 00 50 5e 6e 0c 0c 04 00 -63 63 63 00 00 33 00 42 69 72 64 73 20 20 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BlendOrgan -** Description: Strange, loud, obnoxious sound -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1e 00 00 0a 0f 09 00 45 0e 03 19 00 00 08 0f 23 00 61 07 08 13 00 00 08 0f -00 00 5f 0b 01 12 00 00 05 0f 00 00 63 02 0d 3c 1f 00 23 00 42 0c 06 04 00 -63 3d 00 1d 00 32 00 42 6c 65 6e 64 4f 72 67 61 6e 63 63 63 32 32 32 00 00 -00 20 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Blow Up -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 04 04 06 02 00 3b 62 00 03 0f 06 04 06 0d 00 1d 63 00 1b 13 15 15 06 09 -00 1a 63 04 1b 0f 04 04 09 0c 00 3f 63 0d 03 3a 00 00 00 00 02 00 02 04 00 -63 32 00 00 00 32 00 42 6c 6f 77 20 55 70 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Blow Up -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 04 04 06 02 00 38 62 00 03 0f 06 04 06 0d 00 18 63 00 1b 13 15 15 06 09 -00 18 63 04 1b 0f 04 04 09 0c 00 38 63 0d 03 3a 00 00 00 00 02 00 02 04 00 -63 32 00 00 00 32 00 42 6c 6f 77 20 55 70 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Boingggggg -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0a 1b 03 00 00 42 4b 1d 15 1f 07 0c 04 00 00 44 32 16 15 1f 07 1c 03 00 -00 44 3a 38 13 1f 07 0c 0d 00 00 45 63 08 10 2b 11 00 49 5a 74 00 02 04 00 -63 63 00 00 00 32 00 42 6f 69 6e 67 67 67 67 67 67 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Boingggggg -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0a 1b 03 00 00 40 4b 1d 15 1f 07 0c 04 00 00 40 32 16 15 1f 07 1c 03 00 -00 40 3a 38 13 1f 07 0c 0d 00 00 40 63 08 10 2b 11 00 49 5a 74 00 02 04 00 -63 63 00 00 00 32 00 42 6f 69 6e 67 67 67 67 67 67 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BrokWindow -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 13 06 06 06 00 03 3f 10 03 1f 0d 00 05 0b 00 03 50 31 03 1f 1f 00 08 0f -00 05 39 3f 03 1f 1f 0f 07 0f 00 06 63 10 03 2a 34 00 37 49 73 1a 05 04 00 -63 32 00 00 00 32 00 42 72 6f 6b 57 69 6e 64 6f 77 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BrokWindow -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 13 06 06 06 00 00 3f 10 03 1f 0d 00 05 0b 00 00 50 31 03 1f 1f 00 08 0f -00 00 39 3f 03 1f 1f 0f 07 0f 00 00 63 10 03 2a 34 00 37 49 73 1a 05 04 00 -63 32 00 00 00 32 00 42 72 6f 6b 57 69 6e 64 6f 77 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bubbly -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -17 06 00 04 0e 0a 04 3a 01 00 1f 1f 1f 0f 0f 00 04 00 04 00 1f 1f 1f 0f 0f -00 43 41 01 0b 18 0d 0d 06 00 00 45 63 0a 13 7b 32 00 63 43 39 18 02 04 00 -28 02 00 00 00 32 00 42 75 62 62 6c 79 20 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Bubbly -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -17 06 00 04 0e 0a 00 3a 01 00 1f 1f 1f 0f 0f 00 00 00 04 00 1f 1f 1f 0f 0f -00 40 41 01 0b 18 0d 0d 06 00 00 40 63 0a 13 7b 32 00 63 43 39 18 02 04 00 -28 02 00 00 00 32 00 42 75 62 62 6c 79 20 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Busy * -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 0f 0f 00 00 00 04 03 1f 1f 00 0f 0f 00 40 5f 34 03 1f 1f 00 0f 0f -00 40 3a 20 03 1f 1f 00 0f 0f 00 40 63 2c 03 46 13 46 00 63 4d 18 04 04 00 -28 32 00 00 00 32 00 42 75 73 79 20 20 20 20 20 2a 63 63 63 32 32 32 00 00 -09 0a 09 07 09 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Busy.....1 -** Controls: KV, MW (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 05 0f 00 43 32 04 08 1f 1f 00 05 0f 00 43 34 00 0e 1f 1f 00 05 0f -00 46 40 08 08 1f 1f 00 05 0f 00 45 63 00 0e 02 0f 00 00 5a 0d 18 04 04 00 -63 01 63 00 00 32 00 42 75 73 79 2e 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Busy.....1 -** Controls: MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 05 0f 00 40 32 04 08 1f 1f 00 05 0f 00 40 34 00 0e 1f 1f 00 05 0f -00 40 40 08 08 1f 1f 00 05 0f 00 40 63 00 0e 02 0f 00 00 5a 0d 18 04 04 00 -63 01 63 00 00 32 00 42 75 73 79 2e 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Busy.....2 -** Controls: MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 05 0f 00 40 63 04 08 1f 1f 00 05 0f 00 40 63 00 0e 1f 1f 00 05 0f -00 40 63 08 08 1f 1f 00 05 0f 00 40 63 00 0e 07 0f 00 00 63 0d 18 04 04 00 -63 01 63 00 00 32 00 42 75 73 79 2e 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Choo Choo -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1a 10 11 08 0f 00 03 48 04 15 1c 1f 1f 06 0f 00 04 63 18 1d 1c 10 03 06 0f -00 05 63 08 1b 10 0c 03 09 0f 00 46 63 03 10 7a 63 00 10 54 06 18 02 04 00 -63 63 00 00 00 32 00 43 68 6f 6f 20 43 68 6f 6f 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Choo Choo -** Source: from a library of patches collected by Duane Bowker, author unknown -1a 10 11 08 0f 00 00 48 04 15 1c 1f 1f 06 0f 00 00 63 18 1d 1c 10 03 06 0f -00 00 63 08 1b 10 0c 03 09 0f 00 40 63 03 10 7a 63 00 10 54 06 18 02 04 00 -63 63 00 00 00 32 00 43 68 6f 6f 20 43 68 6f 6f 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Chopper..1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 01 0f 0a 43 63 3f 03 1f 1f 00 01 0f 00 43 63 29 03 1f 1f 00 03 0f -00 45 63 35 03 0b 0b 00 07 0f 00 45 63 00 03 38 2a 00 42 5a 64 18 02 04 00 -28 02 00 00 00 32 00 43 68 6f 70 70 65 72 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Chopper..1 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 01 0f 0a 40 63 3f 03 1f 1f 00 01 0f 00 40 63 29 03 1f 1f 00 03 0f -00 40 63 35 03 0b 0b 00 07 0f 00 40 63 00 03 38 2a 00 42 5a 64 18 02 04 00 -28 02 00 00 00 32 00 43 68 6f 70 70 65 72 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Chopper..1 -** Controls: MW (LFO pitch) -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -1f 1f 00 00 0f 0a 40 63 3f 03 1f 1f 00 00 0f 00 40 63 29 03 1f 1f 00 03 0f -00 40 63 35 03 0b 0b 00 07 0f 00 40 63 00 03 38 2a 00 42 5a 64 18 02 04 00 -28 02 00 00 00 32 00 43 68 6f 70 70 65 72 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Chopper..2 -** Controls: KV, MW (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 02 0f 00 44 50 0a 04 1f 1f 00 03 0f 00 46 56 05 02 1f 1f 00 03 0f -00 44 4e 08 04 1f 1f 00 03 0f 00 46 5f 02 04 6b 33 00 00 63 7c 0c 07 04 00 -63 32 01 32 00 32 00 43 68 6f 70 70 65 72 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Chopper..2 -** Controls: MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 02 0f 00 40 50 0a 04 1f 1f 00 03 0f 00 40 56 05 02 1f 1f 00 03 0f -00 40 4e 08 04 1f 1f 00 03 0f 00 40 5f 02 04 6b 33 00 00 63 7c 0c 07 04 00 -63 32 01 32 00 32 00 43 68 6f 70 70 65 72 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Cricket * -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 01 0f 00 00 5a 2c 03 1f 1f 00 01 0f 00 00 5a 28 03 1c 1f 00 04 0f -00 40 52 30 03 1d 1f 00 04 0f 00 40 52 34 03 24 20 00 00 63 0d 18 04 04 00 -28 32 00 00 00 32 00 43 72 69 63 6b 65 74 20 20 2a 63 63 63 32 32 32 08 0a -08 02 0d 0f 0d 0d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Diving Fly -** Controls: KV, MW (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0d 1f 00 08 0f 00 44 36 06 03 0d 1f 00 03 0f 00 44 63 04 03 0d 1f 00 04 0f -00 46 63 05 03 0d 1f 00 03 0f 00 47 63 04 03 4d 63 00 00 31 7e 24 05 04 00 -63 63 63 00 00 32 00 44 69 76 69 6e 67 20 46 6c 79 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Diving Fly -** Controls: MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -0d 1f 00 08 0f 00 40 36 06 03 0d 1f 00 03 0f 00 40 63 04 03 0d 1f 00 04 0f -00 40 63 05 03 0d 1f 00 03 0f 00 40 63 04 03 4d 63 00 00 31 7e 24 05 04 00 -63 63 63 00 00 32 00 44 69 76 69 6e 67 20 46 6c 79 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Dynamite -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 08 09 02 05 00 3c 4f 04 03 1f 03 0d 04 00 00 1c 38 04 03 1b 0a 0d 03 0f -00 1d 49 3f 03 1f 03 0d 04 00 00 3e 5a 04 03 3a 55 00 2d 00 72 00 02 04 00 -63 32 00 00 00 32 00 44 79 6e 61 6d 69 74 65 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Dynamite -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 08 09 02 05 00 38 4f 04 03 1f 03 0d 04 00 00 18 38 04 03 1b 0a 0d 03 0f -00 18 49 3f 03 1f 03 0d 04 00 00 38 5a 04 03 3a 55 00 2d 00 72 00 02 04 00 -63 32 00 00 00 32 00 44 79 6e 61 6d 69 74 65 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: EarthQuake -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 02 09 05 00 00 3c 56 00 00 0f 06 12 03 0c 00 1c 3a 04 1b 13 15 15 03 09 -00 1c 3e 00 1b 0f 04 0a 07 0e 00 3f 5d 04 03 3a 00 00 00 00 02 00 02 04 00 -63 32 00 00 00 32 00 45 61 72 74 68 51 75 61 6b 65 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: EarthQuake -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 02 09 05 00 00 38 56 00 00 0f 06 12 03 0c 00 18 3a 04 1b 13 15 15 03 09 -00 18 3e 00 1b 0f 04 0a 07 0e 00 38 5d 04 03 3a 00 00 00 00 02 00 02 04 00 -63 32 00 00 00 32 00 45 61 72 74 68 51 75 61 6b 65 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Earthquake -** Controls: KV, MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank D, voice 28 -17 0c 05 01 0e 03 43 4c 0a 0b 15 06 06 01 0e 00 40 56 07 0b 10 0b 05 01 0a -00 40 4c 0a 03 17 07 06 04 0f 00 41 5d 00 0b 38 63 00 0c 00 67 00 04 04 00 -28 32 00 00 00 32 00 45 61 72 74 68 71 75 61 6b 65 63 63 12 32 32 00 00 0a -00 01 00 03 00 00 00 00 00 00 00 26 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Earthquake -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -17 0c 05 01 0e 03 43 4c 0d 0b 15 06 06 01 0e 00 40 56 07 0b 10 0b 05 01 0d -00 40 4c 0a 03 17 07 06 04 0f 00 41 5d 00 0b 38 63 00 0c 00 67 00 04 04 00 -28 32 00 00 00 32 00 45 61 72 74 68 71 75 61 6b 65 63 63 12 32 32 00 00 0d -00 01 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Eng Siren -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 05 0f 23 04 2b 08 03 1f 1f 00 02 0f 00 04 4d 08 03 1f 1f 00 05 0f -0a 05 5d 04 0b 15 1f 00 05 0f 05 06 63 04 03 04 0d 00 63 00 61 18 05 04 00 -63 63 28 00 00 32 00 45 6e 67 20 53 69 72 65 6e 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Eng Siren -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 05 0f 23 00 2b 08 03 1f 1f 00 02 0f 00 00 4d 08 03 1f 1f 00 05 0f -0a 00 5d 04 0b 15 1f 00 05 0f 05 00 63 04 03 04 0d 00 63 00 61 18 05 04 00 -63 63 28 00 00 32 00 45 6e 67 20 53 69 72 65 6e 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Excuse Me -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1b 03 07 04 0e 4d 04 5b 04 03 12 1f 09 0a 0f 00 04 43 08 03 12 1f 0b 0a 0f -4b 05 55 08 03 12 1f 08 0a 0f 01 05 5f 04 03 23 00 00 00 00 02 00 02 04 00 -63 32 00 00 00 32 00 45 78 63 75 73 65 20 4d 65 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Excuse Me -** Source: from a library of patches collected by Duane Bowker, author unknown -1b 03 07 04 0e 4d 00 5b 04 03 12 1f 09 0a 0f 00 00 43 08 03 12 1f 0b 0a 0f -4b 00 55 08 03 12 1f 08 0a 0f 01 00 5f 04 03 23 00 00 00 00 02 00 02 04 00 -63 32 00 00 00 32 00 45 78 63 75 73 65 20 4d 65 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Exo/Bird * -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 0f 0f 00 00 00 04 03 13 08 08 04 0f 00 00 51 0a 03 0d 03 01 04 0f -00 00 5b 04 03 11 0d 1f 07 00 00 00 63 00 03 00 23 00 00 00 62 0e 04 04 00 -28 32 00 00 00 32 00 45 78 6f 2f 42 69 72 64 20 2a 63 63 63 32 32 32 00 00 -00 00 08 02 08 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Explosion -** Controls: KV, MW (LFO pitch), MW (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 09 04 07 0f 00 43 5f 10 08 10 09 04 07 0f 00 44 63 0d 0e 10 09 04 07 0f -00 43 4e 06 08 10 09 04 07 0f 00 46 2c 04 08 05 47 00 63 63 37 18 04 04 00 -63 01 63 00 00 32 00 45 78 70 6c 6f 73 69 6f 6e 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Explosion -** Controls: MW (LFO pitch), MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -10 09 04 07 0f 00 40 5f 10 08 10 09 04 07 0f 00 40 63 0d 0e 10 09 04 07 0f -00 40 4e 06 08 10 09 04 07 0f 00 40 2c 04 08 05 47 00 63 63 37 18 04 04 00 -63 01 63 00 00 32 00 45 78 70 6c 6f 73 69 6f 6e 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: FaucetDrip -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 08 1f 05 0d 0a 05 39 00 03 1f 0a 1f 0a 0f 00 06 63 04 03 1f 09 1f 0a 0f -00 02 63 08 03 1f 0e 1f 0a 0d 00 05 63 04 03 7d 39 00 63 00 70 18 02 04 00 -28 02 00 00 00 32 00 46 61 75 63 65 74 44 72 69 70 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: FaucetDrip -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 08 1f 05 0d 0a 00 39 00 03 1f 0a 1f 0a 0f 00 00 63 04 03 1f 09 1f 0a 0f -00 00 63 08 03 1f 0e 1f 0a 0d 00 00 63 04 03 7d 39 00 63 00 70 18 02 04 00 -28 02 00 00 00 32 00 46 61 75 63 65 74 44 72 69 70 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Feedback * -** Description: A raspy sound -** Controls: MW (LFO pitch), BC (voice pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0a 00 07 0f 30 00 40 13 01 1f 14 05 08 0b 00 00 61 04 00 1f 1f 00 07 0f -05 00 49 04 04 1c 1f 01 08 0e 00 00 63 13 06 39 1d 14 06 00 62 24 0c 04 00 -28 32 00 00 00 36 00 46 65 65 64 62 61 63 6b 20 2a 63 63 63 32 32 32 00 00 -00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Flight Sim -** Source: Yamaha TX81Z factory preset, bank D, voice 15 -1f 1f 00 04 0f 00 00 49 04 03 1f 1f 00 01 0f 32 00 59 04 03 1f 1f 00 05 0f -3b 40 43 10 03 0e 1f 00 06 0f 00 00 5c 0d 03 3a 39 00 00 63 6a 00 0c 0c 63 -63 32 00 00 00 32 00 46 6c 69 67 68 74 20 53 69 6d 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 2d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Gizmo * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 0d 05 06 0f 1e 01 3f 10 06 1a 1a 05 05 0a 36 01 63 07 0e 0f 1a 04 05 0f -13 01 63 00 10 1f 13 07 07 0f 00 01 63 04 0e 3b 14 00 00 00 42 18 02 04 00 -63 32 00 32 00 32 00 47 69 7a 6d 6f 20 20 20 20 2a 63 63 63 32 32 32 00 00 -00 27 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: GrandPrix* -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 01 0f 00 00 43 04 00 1f 1f 00 01 0f 00 00 4b 04 00 1f 1f 00 01 0f -00 00 4e 04 06 1f 1f 00 07 0f 00 00 63 04 03 00 63 00 63 00 73 00 0c 0c 00 -28 63 00 00 00 32 00 47 72 61 6e 64 50 72 69 78 2a 63 63 63 32 32 32 00 0c -00 20 00 04 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: GuiRoach:: -** Controls: KV -** Source: Yamaha DX11 factory preset, bank D, voice 25 -0f 00 0b 0a 0a 00 40 5b 2d 03 1f 00 00 03 0f 00 40 61 00 03 1f 00 00 03 0f -00 40 4c 2d 03 0e 0b 0a 0f 0e 00 43 5c 00 03 3a 61 00 00 34 0a 18 04 04 00 -28 32 00 00 00 32 00 47 75 69 52 6f 61 63 68 3a 3a 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: GuiRoach:: -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 00 0b 0a 0d 00 40 5b 2d 03 1f 00 00 03 0f 00 40 61 00 03 1f 00 00 03 0f -00 40 4c 2d 03 0e 0b 0d 0f 0e 00 43 5c 00 03 3a 61 00 00 34 0d 18 04 04 00 -28 32 00 00 00 32 00 47 75 69 52 6f 61 63 68 3a 3a 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Gurgle -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank D, voice 10 -1f 11 00 01 0f 47 00 44 06 06 19 0b 01 01 0f 00 40 55 00 05 01 10 00 06 0f -18 00 63 08 00 02 03 00 06 0f 00 00 63 0c 01 3c 27 36 1b 44 7f 0c 07 04 00 -63 63 00 32 00 32 00 47 75 72 67 6c 65 20 20 20 20 63 63 63 32 32 32 1b 00 -00 00 08 70 08 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hard Rain -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 04 00 06 0f 2e 03 63 1c 02 1f 06 16 06 0f 00 04 30 31 0b 1f 15 00 06 0f -00 05 63 04 0a 12 04 00 09 0f 00 04 5a 04 06 3a 21 00 63 00 02 00 02 04 00 -63 32 00 32 00 32 00 48 61 72 64 20 52 61 69 6e 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hard Rain -** Source: from a library of patches collected by Duane Bowker, author unknown -12 04 00 06 0f 2e 00 63 1c 02 1f 06 16 06 0f 00 00 30 31 0b 1f 15 00 06 0f -00 00 63 04 0a 12 04 00 09 0f 00 00 5a 04 06 3a 21 00 63 00 02 00 02 04 00 -63 32 00 32 00 32 00 48 61 72 64 20 52 61 69 6e 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Harley Hog -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 0f 0f 00 43 5b 09 13 1f 1f 00 02 0f 00 44 13 08 0e 1f 1f 06 09 0f -00 45 5a 00 0b 1f 1f 00 04 0f 00 45 51 05 03 7a 63 00 63 63 34 00 00 04 00 -63 32 00 32 00 32 00 48 61 72 6c 65 79 20 48 6f 67 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Harley Hog -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 0f 0f 00 40 5b 09 13 1f 1f 00 02 0f 00 40 13 08 0e 1f 1f 06 09 0f -00 40 5a 00 0b 1f 1f 00 04 0f 00 40 51 05 03 7a 63 00 63 63 34 00 00 04 00 -63 32 00 32 00 32 00 48 61 72 6c 65 79 20 48 6f 67 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Heart Beat -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 18 0f 0f 00 03 63 04 03 15 12 12 08 0c 00 04 34 04 03 07 13 12 08 0f -00 04 63 00 1b 15 13 12 08 0c 00 05 63 00 03 44 00 00 00 00 02 0c 02 04 00 -28 02 00 00 00 32 00 48 65 61 72 74 20 42 65 61 74 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Heart Beat -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 18 0f 0f 00 00 63 04 03 15 12 12 08 0c 00 00 34 04 03 07 13 12 08 0f -00 00 63 00 1b 15 13 12 08 0c 00 00 63 00 03 44 00 00 00 00 02 0c 02 04 00 -28 02 00 00 00 32 00 48 65 61 72 74 20 42 65 61 74 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Helicopter -** Controls: MW (LFO amplitude) -** Source: Yamaha TX81Z factory preset, bank D, voice 14 -0d 1f 00 01 0f 28 40 5c 00 03 1f 1f 00 01 0f 28 40 62 00 03 0e 1f 00 04 0f -0a 40 63 29 03 0e 1f 00 04 0f 0a 00 63 16 03 3c 33 00 00 5b 6e 18 0c 04 00 -63 63 63 00 00 32 00 48 65 6c 69 63 6f 70 74 65 72 63 63 63 32 32 32 00 00 -00 20 08 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hi Alarm -** Controls: KV, MW (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 04 0f 00 04 31 10 00 1f 1f 00 04 0f 00 04 43 13 06 1f 1f 00 04 0f -00 44 37 0a 00 1f 1f 00 06 0f 00 45 63 1f 06 22 38 00 00 32 6d 18 04 04 00 -63 01 63 00 00 32 00 48 69 20 41 6c 61 72 6d 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hi Alarm -** Controls: MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 04 0f 00 00 31 10 00 1f 1f 00 04 0f 00 00 43 13 06 1f 1f 00 04 0f -00 40 37 0a 00 1f 1f 00 06 0f 00 40 63 1f 06 22 38 00 00 32 6d 18 04 04 00 -63 01 63 00 00 32 00 48 69 20 41 6c 61 72 6d 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Hole in 1 -** Source: Yamaha TX81Z factory preset, bank D, voice 11 -1f 14 00 01 0b 00 40 54 11 03 15 07 00 0f 0e 2e 00 33 27 0b 14 0c 11 05 0a -00 40 58 0d 0a 1f 12 10 0b 00 01 00 62 10 0b 3c 3a 00 63 50 5f 18 05 04 00 -63 00 00 00 00 32 00 48 6f 6c 65 20 69 6e 20 31 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: House Fly -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -09 05 06 04 0c 00 04 4b 1a 03 07 0c 06 04 0c 00 04 3e 1a 06 1f 1f 00 0f 0f -00 05 3f 00 03 1f 1f 00 0f 0f 00 07 63 00 03 7c 2f 00 00 00 31 00 05 04 00 -63 63 63 00 00 32 00 48 6f 75 73 65 20 46 6c 79 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: House Fly -** Source: from a library of patches collected by Duane Bowker, author unknown -09 05 06 04 0c 00 00 4b 1a 03 07 0c 06 04 0c 00 00 3e 1a 06 1f 1f 00 0f 0f -00 00 3f 00 03 1f 1f 00 0f 0f 00 00 63 00 03 7c 2f 00 00 00 31 00 05 04 00 -63 63 63 00 00 32 00 48 6f 75 73 65 20 46 6c 79 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: HowlAtMoon -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 0a 06 0c 0f 0a 02 33 0f 03 12 10 06 0a 0d 00 04 3d 1c 0b 0f 09 03 09 0e -00 04 52 0d 0b 0e 0c 09 0a 0f 00 05 5d 0c 0c 3c 19 2a 00 00 22 00 02 04 00 -28 02 00 00 00 32 00 48 6f 77 6c 41 74 4d 6f 6f 6e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: HowlAtMoon -** Source: from a library of patches collected by Duane Bowker, author unknown -12 0a 06 0c 0f 0a 00 33 0f 03 12 10 06 0a 0d 00 00 3d 1c 0b 0f 09 03 09 0e -00 00 52 0d 0b 0e 0c 09 0a 0f 00 00 5d 0c 0c 3c 19 2a 00 00 22 00 02 04 00 -28 02 00 00 00 32 00 48 6f 77 6c 41 74 4d 6f 6f 6e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Lil'Birdie -** Controls: KV, MW (LFO pitch), BC (LFO pitch), BC (EG amplitude), BC (voice pitch), FC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -08 0d 17 07 0f 5d 19 09 2e 0b 02 09 0a 08 05 25 1f 63 0c 1c 0c 1d 0c 0d 07 -0c 0a 4b 34 0c 1f 04 0e 02 0b 2c 00 1e 0c 08 04 63 43 20 4a 42 18 0b 00 26 -51 29 1f 51 2f 25 1b 4c 69 6c 27 42 69 72 64 69 65 00 00 00 00 00 00 2a 29 -02 5c 34 18 39 48 04 15 1c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Lo Alarm -** Controls: KV, MW (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 03 0f 00 03 31 03 00 1f 1f 00 04 0f 00 04 43 18 06 1f 1f 00 06 0f -00 45 37 07 00 1f 1f 00 06 0f 00 44 63 07 06 52 38 00 00 27 65 00 04 04 00 -63 01 63 00 00 32 00 4c 6f 20 41 6c 61 72 6d 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Lo Alarm -** Controls: MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 03 0f 00 00 31 03 00 1f 1f 00 04 0f 00 00 43 18 06 1f 1f 00 06 0f -00 40 37 07 00 1f 1f 00 06 0f 00 40 63 07 06 52 38 00 00 27 65 00 04 04 00 -63 01 63 00 00 32 00 4c 6f 20 41 6c 61 72 6d 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MT:Apr'88 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 04 00 02 0f 0f 00 44 04 03 1f 09 03 02 0f 15 01 3a 08 00 1f 00 00 0b 0f -0c 02 44 07 06 1a 0a 00 05 0f 05 01 5c 08 13 3c 18 06 10 00 5a 0c 04 04 00 -63 32 00 00 00 32 00 4d 54 3a 41 70 72 27 38 38 20 63 63 63 32 32 32 20 00 -30 30 10 04 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MachineGun -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1a 15 12 09 0f 00 40 63 00 00 19 09 08 09 0f 00 40 54 08 03 1f 15 1f 0a 0f -00 45 63 06 03 19 15 03 09 0f 00 45 63 00 0b 7c 40 00 63 63 74 18 02 04 00 -28 02 00 00 00 32 00 4d 61 63 68 69 6e 65 47 75 6e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MachineGun -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1a 15 12 09 0f 00 40 63 00 00 19 09 08 09 0f 00 40 54 08 03 1f 15 1f 0a 0f -00 40 63 06 03 19 15 03 09 0f 00 40 63 00 0b 7c 40 00 63 63 74 18 02 04 00 -28 02 00 00 00 32 00 4d 61 63 68 69 6e 65 47 75 6e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MalibuNite -** Controls: MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank D, voice 13 -1f 1f 00 01 0f 00 00 63 3f 03 1f 1f 00 01 0f 00 00 63 29 03 1f 1f 00 03 0f -00 00 63 35 03 0b 16 00 07 0f 00 40 5b 00 03 38 05 00 42 5a 6e 00 04 04 00 -63 32 00 00 00 32 00 4d 61 6c 69 62 75 4e 69 74 65 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Med Musak -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -07 11 00 01 09 00 45 4f 00 00 01 08 00 01 09 05 01 62 0a 03 01 07 00 01 08 -08 41 62 23 06 01 08 00 01 0a 00 43 63 00 00 3f 21 00 35 1c 6f 14 0c 04 1e -63 32 00 00 00 32 00 4d 65 64 20 4d 75 73 61 6b 20 63 63 63 32 32 32 30 37 -20 1f 20 21 00 22 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Mouse-Tom -** Source: Yamaha DX11 factory preset, bank D, voice 18 -1f 1f 0c 07 0f 00 00 5c 32 03 1f 14 1f 09 01 00 00 63 00 0b 1f 1f 1f 0f 0f -0c 00 3e 0b 1b 1f 1f 0e 0f 0f 00 00 5c 05 0b 3b 23 00 00 00 62 24 04 04 00 -63 32 00 00 00 32 00 4d 6f 75 73 65 2d 54 6f 6d 20 63 63 63 32 32 32 08 00 -00 03 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Mr.Mr.Noiz -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 13 03 00 00 00 5f 3d 06 14 12 13 02 00 00 01 52 05 02 17 14 13 03 00 -00 01 56 28 05 16 0b 13 0f 09 00 00 63 06 03 3b 63 00 63 00 73 10 07 04 00 -63 32 00 00 00 32 00 4d 72 2e 4d 72 2e 4e 6f 69 7a 63 63 63 32 32 32 08 00 -00 00 08 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Noise Shot -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank D, voice 27 -1f 1f 13 03 00 00 00 5f 3d 06 1f 12 13 02 00 00 01 52 05 02 1f 14 13 03 00 -00 01 56 28 05 1e 0b 13 0f 09 00 00 63 06 03 3b 63 00 63 00 73 23 07 04 00 -63 32 00 00 00 32 00 4e 6f 69 73 65 20 53 68 6f 74 63 63 63 32 32 32 08 00 -00 00 08 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ofthewall* -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0c 08 00 07 00 00 00 63 00 03 08 1f 00 09 0f 00 00 43 00 05 0b 1f 00 05 0f -00 01 63 0a 06 0c 1f 00 06 0f 00 02 63 04 00 64 4f 2e 63 63 62 18 02 04 00 -28 63 00 00 00 32 00 4f 66 74 68 65 77 61 6c 6c 2a 63 63 63 32 32 32 08 20 -08 30 00 50 00 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OldClock -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 02 04 0f 00 43 3c 21 0e 1f 19 08 03 0f 63 07 63 17 08 1f 1f 0a 04 0a -5a 07 63 0a 0a 1f 1f 07 03 0f 00 04 63 0a 08 3b 0e 00 00 00 56 0f 04 04 00 -63 37 00 00 00 32 00 4f 6c 64 43 6c 6f 63 6b 20 20 63 63 63 32 32 32 04 00 -08 08 08 1b 07 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OutOfTune -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0f 03 09 06 0e 0a 03 3c 00 03 1f 03 03 06 0d 00 04 60 04 02 1f 04 02 06 0d -00 04 62 0a 03 1f 02 02 06 0d 00 06 63 04 03 3d 10 00 59 00 52 18 02 04 00 -28 02 00 00 00 32 00 4f 75 74 4f 66 54 75 6e 65 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OutOfTune -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0f 03 09 06 0e 0a 00 3c 00 03 1f 03 03 06 0d 00 00 60 04 02 1f 04 02 06 0d -00 00 62 0a 03 1f 02 02 06 0d 00 00 63 04 03 3d 10 00 59 00 52 18 02 04 00 -28 02 00 00 00 32 00 4f 75 74 4f 66 54 75 6e 65 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Passing By -** Source: Yamaha DX11 factory preset, bank D, voice 27 -1f 1f 00 01 0f 00 00 55 04 03 1f 1f 00 01 0f 00 00 52 0a 03 02 1f 1f 06 0f -00 00 5a 04 0b 02 1f 1f 06 0f 00 00 5a 04 0b 7c 0a 00 00 00 71 0c 04 04 00 -28 32 00 00 00 32 00 50 61 73 73 69 6e 67 20 42 79 4a 02 1b 32 00 00 00 10 -00 10 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Passing By -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 01 0f 00 00 55 04 03 1f 1f 00 01 0f 00 00 52 0a 03 02 1f 1f 06 0f -00 00 5a 04 0b 02 1f 1f 06 0f 00 00 5a 04 0b 7c 0d 00 00 00 71 0c 04 04 00 -28 32 00 00 00 32 00 50 61 73 73 69 6e 67 20 42 79 4a 02 1b 32 00 00 00 10 -00 10 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Pull Over -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 0f 0f 00 44 2b 08 03 1f 1f 00 09 0f 00 44 4a 08 03 10 1f 00 0f 0f -00 05 5d 04 03 15 1f 00 09 0f 00 05 63 04 03 04 15 00 63 63 76 24 02 04 00 -28 02 00 00 00 32 00 50 75 6c 6c 20 4f 76 65 72 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Pull Over -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 0f 0f 00 40 2b 08 03 1f 1f 00 09 0f 00 40 4a 08 03 10 1f 00 0f 0f -00 00 5d 04 03 15 1f 00 09 0f 00 00 63 04 03 04 15 00 63 63 76 24 02 04 00 -28 02 00 00 00 32 00 50 75 6c 6c 20 4f 76 65 72 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: R2-D2 * -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 0f 0f 00 00 00 04 03 0d 1f 00 09 0f 00 00 00 04 03 1d 1f 00 09 0f -00 00 63 3f 03 1d 1f 00 09 0f 00 00 63 31 03 44 2e 00 63 00 73 24 0c 04 00 -28 63 00 00 00 32 00 52 32 2d 44 32 20 20 20 20 2a 63 63 63 32 32 32 00 00 -00 00 00 50 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Racing Car -** Controls: MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank D, voice 19 -1f 1f 00 02 0f 00 00 47 00 03 1f 1f 00 01 0f 00 00 35 04 03 1f 1f 00 03 0f -00 00 5b 01 03 15 1f 00 03 0f 00 00 63 04 03 3a 05 00 3c 00 62 18 0c 04 00 -63 32 00 00 00 32 00 52 61 63 69 6e 67 20 43 61 72 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: RADIATION? -** Controls: MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank D, voice 31 -03 03 00 01 0f 00 40 51 28 03 15 09 00 03 0f 00 00 61 0c 03 0b 05 00 02 0f -00 40 33 34 03 12 18 00 06 0e 00 40 5a 30 03 7b 32 00 06 56 25 00 04 04 00 -28 32 00 00 00 32 00 52 41 44 49 41 54 49 4f 4e 3f 63 63 63 32 32 32 09 09 -08 02 0b 0e 08 0c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rain Storm -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 00 00 03 0f 22 04 63 0c 08 1f 00 00 05 0f 24 44 2c 08 00 1f 00 00 03 0f -00 05 63 04 06 1f 00 00 04 0f 00 04 5a 01 0e 3a 55 00 2d 00 7e 00 04 04 00 -63 32 00 32 00 32 00 52 61 69 6e 20 53 74 6f 72 6d 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Rain Storm -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 00 00 03 0f 22 00 63 0c 08 1f 00 00 05 0f 24 40 2c 08 00 1f 00 00 03 0f -00 00 63 04 06 1f 00 00 04 0f 00 00 5a 01 0e 3a 55 00 2d 00 7e 00 04 04 00 -63 32 00 32 00 32 00 52 61 69 6e 20 53 74 6f 72 6d 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Refs.Wisl* -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1d 15 00 08 0d 00 00 4b 34 03 12 0c 00 06 0f 00 00 5d 04 03 1f 1f 00 05 0f -00 00 00 04 0b 0f 0c 00 08 0f 00 01 63 20 03 12 51 00 00 00 72 18 07 04 00 -28 63 00 00 00 32 00 52 65 66 73 2e 57 69 73 6c 2a 63 63 63 32 32 32 0d 35 -08 0d 00 00 0c 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Repeater.1 -** Source: from a library of patches collected by Duane Bowker, author unknown -13 18 06 0a 0f 00 78 5f 00 04 16 04 06 07 09 00 58 42 04 06 16 04 06 07 09 -00 58 63 04 00 16 04 06 07 09 00 78 63 04 03 6c 29 00 00 63 34 18 02 04 00 -63 32 00 00 00 32 00 52 65 70 65 61 74 65 72 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Repeater.2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -13 18 06 0a 0f 00 7b 47 10 04 16 04 06 07 09 00 5b 37 10 06 16 04 06 07 09 -00 5d 61 04 00 16 04 06 07 09 00 7c 59 10 03 3a 29 3d 54 63 74 18 02 04 00 -63 32 00 00 00 32 00 52 65 70 65 61 74 65 72 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Repeater.2 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -13 18 06 0a 0f 00 78 47 10 04 16 04 06 07 09 00 58 37 10 06 16 04 06 07 09 -00 58 61 04 00 16 04 06 07 09 00 78 59 10 03 3a 29 3d 54 63 74 18 02 04 00 -63 32 00 00 00 32 00 52 65 70 65 61 74 65 72 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Repeater.3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -13 0f 0a 0f 0f 00 79 58 16 04 16 09 06 0f 0f 00 5b 49 10 06 16 09 06 0f 0f -00 5d 61 04 00 16 09 06 0f 0f 00 7d 59 04 03 7a 33 00 00 63 34 18 02 04 00 -63 32 00 00 00 32 00 52 65 70 65 61 74 65 72 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Repeater.3 -** Source: from a library of patches collected by Duane Bowker, author unknown -13 0f 0a 0f 0f 00 78 58 16 04 16 09 06 0f 0f 00 58 49 10 06 16 09 06 0f 0f -00 58 61 04 00 16 09 06 0f 0f 00 78 59 04 03 7a 33 00 00 63 34 18 02 04 00 -63 32 00 00 00 32 00 52 65 70 65 61 74 65 72 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Repeater.4 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 06 13 07 07 00 7b 47 08 03 1f 06 1f 04 00 00 5b 4c 04 04 15 06 0c 06 07 -00 5d 63 04 00 1f 06 1f 04 00 00 7d 63 04 06 6c 40 00 00 63 34 18 02 04 00 -63 32 00 00 00 32 00 52 65 70 65 61 74 65 72 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Repeater.4 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 06 13 07 07 00 78 47 08 03 1f 06 1f 04 00 00 58 4c 04 04 15 06 0c 06 07 -00 58 63 04 00 1f 06 1f 04 00 00 78 63 04 06 6c 40 00 00 63 34 18 02 04 00 -63 32 00 00 00 32 00 52 65 70 65 61 74 65 72 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Repeater.5 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1b 04 07 0f 00 7b 52 08 03 03 1b 04 07 0f 00 5c 56 04 03 13 1b 04 07 0f -00 5d 51 08 03 1b 0f 04 07 0e 00 7e 63 04 03 45 25 00 00 63 35 18 02 04 00 -63 32 00 00 00 32 00 52 65 70 65 61 74 65 72 2e 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Repeater.5 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1b 04 07 0f 00 78 52 08 03 03 1b 04 07 0f 00 58 56 04 03 13 1b 04 07 0f -00 58 51 08 03 1b 0f 04 07 0e 00 78 63 04 03 45 25 00 00 63 35 18 02 04 00 -63 32 00 00 00 32 00 52 65 70 65 61 74 65 72 2e 35 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -* SUBCATEGORY Noises2 - -** Name: Ringing..1 -** Controls: MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -15 1f 00 03 0f 00 00 34 1a 03 1f 1f 00 02 0f 00 00 3e 19 03 1f 1f 00 02 0f -00 00 39 1a 03 16 1f 00 06 0f 00 40 63 19 03 52 58 00 00 32 65 00 05 04 00 -63 63 63 00 00 32 00 52 69 6e 67 69 6e 67 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ringing..2 -** Controls: MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -15 1f 00 03 0f 00 00 1c 00 03 1f 1f 00 02 0f 00 00 3e 1f 03 1f 1f 00 02 0f -00 00 39 04 03 16 1f 00 06 0f 00 40 63 1f 03 52 3b 00 00 3c 65 00 05 04 00 -63 63 63 00 00 32 00 52 69 6e 67 69 6e 67 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: RiseDecent -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0a 06 06 04 0e 00 44 43 0d 03 0c 06 06 04 0e 00 44 63 08 03 1f 06 06 04 0e -00 46 5b 04 03 1f 06 06 04 0e 00 45 63 00 03 7d 1e 00 48 3c 67 18 02 04 00 -28 02 00 00 00 32 00 52 69 73 65 44 65 63 65 6e 74 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: RiseDecent -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0a 06 06 04 0e 00 40 43 0d 03 0c 06 06 04 0e 00 40 63 08 03 1f 06 06 04 0e -00 40 5b 04 03 1f 06 06 04 0e 00 40 63 00 03 7d 1e 00 48 3c 67 18 02 04 00 -28 02 00 00 00 32 00 52 69 73 65 44 65 63 65 6e 74 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: RubberBand -** Description: An interesting use of portamento -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: GLIB (Michael Kesti and others) -1f 17 03 06 0f 52 07 5c 08 03 1f 1f 05 09 0b 00 06 63 10 03 1f 09 00 09 00 -00 03 62 08 03 1f 0b 04 09 0b 00 07 63 04 03 02 1e 09 04 00 62 0c 07 02 03 -63 32 00 32 00 32 00 52 75 62 62 65 72 42 61 6e 64 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: RubberBand -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: DX100 GLIB patch (Michael Kesti and others) -0c 04 02 01 09 08 01 43 04 0b 11 07 02 07 09 00 01 50 04 03 12 07 02 07 09 -00 01 35 04 0b 0f 08 02 07 09 36 02 63 04 0b 30 1f 1c 13 00 52 18 07 04 00 -63 32 00 32 00 32 00 52 75 62 62 65 72 42 61 6e 64 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: RubberBand -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: DX100 GLIB patch (Michael Kesti and others) -1f 02 03 06 00 52 03 50 04 03 1f 0b 00 09 0c 00 00 4e 04 03 1f 06 00 09 01 -00 00 5f 04 03 0b 09 04 09 0a 00 03 63 08 03 3c 1e 09 04 00 62 0c 07 04 00 -63 32 00 32 00 32 00 52 75 62 62 65 72 42 61 6e 64 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: RubberBand -** Source: DX100 GLIB patch (Michael Kesti and others) -1f 1f 00 00 0f 00 00 31 04 03 1f 1f 00 00 0f 21 00 3c 04 06 1f 1f 00 00 0f -1b 00 42 04 00 0b 1f 00 06 0f 00 00 60 04 03 3a 20 00 00 00 62 18 0c 04 00 -63 32 00 32 00 32 00 52 75 62 62 65 72 42 61 6e 64 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: RubberBand -** Source: DX100 GLIB patch (Michael Kesti and others) -1f 1f 00 00 0f 00 00 32 08 03 1f 1f 00 00 0f 21 00 4e 04 06 1f 1f 00 00 0f -1b 00 40 04 00 0b 1f 00 06 0f 00 00 5a 04 03 3a 20 00 00 00 62 18 0c 04 00 -63 32 00 32 00 32 00 52 75 62 62 65 72 42 61 6e 64 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: RubberBand -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: DX100 GLIB patch (Michael Kesti and others) -1f 02 03 06 00 0a 43 52 08 1b 1f 0a 00 09 0c 00 04 63 08 03 1f 08 02 09 0a -00 05 60 04 03 1f 1c 04 09 0c 00 07 63 04 03 3c 1e 09 03 00 62 18 07 04 00 -63 32 00 32 00 32 00 52 75 62 62 65 72 42 61 6e 64 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: RubberBand -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: DX100 GLIB patch (Michael Kesti and others) -1f 17 03 06 0f 52 07 5c 08 03 1f 1f 05 09 0b 00 06 63 10 03 1f 09 00 09 00 -00 03 62 08 03 1f 0b 04 09 0b 00 07 63 04 03 02 1e 09 04 00 62 0c 07 0a 03 -63 32 00 32 00 32 00 52 75 62 62 65 72 42 61 6e 64 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: RubberBand -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: DX100 GLIB patch (Michael Kesti and others) -1f 02 03 06 00 52 03 50 04 03 1f 0b 00 09 0c 00 00 4e 04 04 1f 06 00 09 01 -00 00 5f 04 03 1f 1c 04 09 0a 00 03 63 08 03 3c 1e 09 04 00 62 0c 02 04 00 -63 32 00 32 00 32 00 52 75 62 62 65 72 42 61 6e 64 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: RubberBand -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: DX100 GLIB patch (Michael Kesti and others) -1f 02 03 06 00 52 03 50 04 03 1f 0b 00 09 0c 00 00 4e 04 04 1f 06 00 09 01 -00 00 5f 04 03 1f 1c 04 09 0a 00 03 63 08 03 3c 1e 09 04 00 62 0c 02 0a 07 -63 32 00 32 00 32 00 52 75 62 62 65 72 42 61 6e 64 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: RubberBand -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: DX100 GLIB patch (Michael Kesti and others) -1f 02 03 06 00 0e 03 55 04 1b 1f 0b 00 09 0c 00 00 4e 04 04 1f 06 00 09 01 -00 00 5f 04 03 1f 1c 04 09 0a 00 03 63 08 03 3c 1e 09 04 00 62 0c 02 05 00 -63 32 00 32 00 32 00 52 75 62 62 65 72 42 61 6e 64 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SCM Writer -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 01 0f 0a 44 63 3f 03 1f 0d 06 04 0f 00 44 55 20 1b 1f 1f 00 03 0f -00 44 63 35 03 1f 0f 09 07 00 00 44 63 3f 1b 3b 05 00 00 58 66 18 02 04 00 -28 02 00 00 00 32 00 53 43 4d 20 57 72 69 74 65 72 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SCM Writer -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 01 0f 0a 40 63 3f 03 1f 0d 06 04 0f 00 40 55 20 1b 1f 1f 00 03 0f -00 40 63 35 03 1f 0f 09 07 00 00 40 63 3f 1b 3b 05 00 00 58 66 18 02 04 00 -28 02 00 00 00 32 00 53 43 4d 20 57 72 69 74 65 72 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SCM Writer -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -1f 1f 00 00 0f 0a 40 63 3f 03 1f 0d 06 04 0f 00 40 55 20 1b 1f 1f 00 03 0f -00 40 63 35 03 1f 0f 09 07 00 00 40 63 3f 1b 3b 05 00 00 58 66 18 02 04 00 -28 02 00 00 00 32 00 53 43 4d 20 57 72 69 74 65 72 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Saron Gam -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1d 09 05 06 0a 00 05 50 19 0e 1f 0c 06 06 0c 00 05 5d 06 16 1f 0d 08 03 0f -00 05 5e 11 1e 1f 11 07 06 0f 00 02 63 04 10 37 52 00 07 00 62 18 04 04 00 -28 32 00 00 00 32 00 53 61 72 6f 6e 20 47 61 6d 20 63 63 63 32 32 32 00 0f -00 0c 00 12 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Shore Wave -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -10 0f 00 0d 0d 00 00 63 20 03 17 0e 00 0d 0f 00 00 63 20 03 17 0f 00 0a 0f -00 00 63 3c 03 03 09 00 0f 00 00 00 52 3f 03 02 23 00 00 00 62 30 04 04 00 -28 32 00 00 00 32 00 53 68 6f 72 65 20 57 61 76 65 63 63 63 32 32 32 0c 06 -00 12 0b 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Shore Wv2 -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -10 0f 00 07 0d 00 00 63 20 03 17 0e 00 07 0f 00 00 63 20 03 17 0f 00 04 0f -00 00 63 3c 03 03 05 00 09 00 00 00 52 3f 03 02 23 00 00 00 62 30 04 04 00 -28 32 00 00 00 32 00 53 68 6f 72 65 20 57 76 32 20 63 63 63 32 32 32 0c 06 -00 12 0b 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sick Siren -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0e 1f 00 0f 0f 00 43 2b 08 03 0e 1f 00 09 0f 00 45 4a 08 03 10 1f 00 0f 0f -00 45 5d 04 03 15 1f 00 09 0f 00 45 63 04 03 04 0d 00 00 63 64 24 02 04 00 -28 02 00 00 00 32 00 53 69 63 6b 20 53 69 72 65 6e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sick Siren -** Source: from a library of patches collected by Duane Bowker, author unknown -0e 1f 00 0f 0f 00 40 2b 08 03 0e 1f 00 09 0f 00 40 4a 08 03 10 1f 00 0f 0f -00 40 5d 04 03 15 1f 00 09 0f 00 40 63 04 03 04 0d 00 00 63 64 24 02 04 00 -28 02 00 00 00 32 00 53 69 63 6b 20 53 69 72 65 6e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Space BUG? -** Controls: MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank D, voice 26 -1f 1f 00 01 0f 06 00 63 01 1b 1f 1f 00 0f 0f 02 40 63 01 1b 0f 15 00 04 0f -00 40 56 00 1b 19 1f 00 0a 0f 63 40 53 00 1b 7c 1f 00 2a 3c 3c 00 04 04 00 -28 32 00 00 00 32 00 53 70 61 63 65 20 42 55 47 3f 63 63 63 32 32 32 0f 06 -00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Space BUG? -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 01 0f 06 00 63 01 1b 1f 1f 00 0f 0f 02 40 63 01 1b 0f 15 00 04 0f -00 40 56 00 1b 19 1f 00 0d 0f 63 40 53 00 1b 7c 1f 00 2a 3c 3c 00 04 04 00 -28 32 00 00 00 32 00 53 70 61 63 65 20 42 55 47 3f 63 63 63 32 32 32 0f 06 -00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Space Gong -** Controls: MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank D, voice 30 -16 0a 0c 06 0f 03 00 53 04 08 0e 09 03 02 0f 03 00 59 07 0e 0a 06 05 04 0f -00 40 5a 00 00 14 08 05 04 08 00 40 5a 00 06 3c 0a 08 2d 3c 36 1b 04 04 00 -28 32 00 00 00 32 00 53 70 61 63 65 20 47 6f 6e 67 5e 63 12 29 32 15 00 16 -00 20 00 15 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Space Gong -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -16 0d 0c 06 0f 03 00 53 04 08 0e 09 03 02 0f 03 00 59 07 0e 0a 06 05 04 0f -00 40 5a 00 00 14 08 05 04 08 00 40 5a 00 06 3c 0a 08 2d 3c 36 1b 04 04 00 -28 32 00 00 00 32 00 53 70 61 63 65 20 47 6f 6e 67 5e 63 12 29 32 15 00 16 -00 20 00 15 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Space Gun -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 08 1f 05 0d 0a 02 39 00 03 1f 0a 1f 0a 0f 00 05 63 04 03 1f 09 1f 0a 0f -00 04 63 08 03 1f 04 1f 0a 0d 00 04 63 04 03 7d 39 00 63 00 70 18 02 04 00 -28 02 00 00 00 32 00 53 70 61 63 65 20 47 75 6e 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Space Gun -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 08 1f 05 0d 0a 00 39 00 03 1f 0a 1f 0a 0f 00 00 63 04 03 1f 09 1f 0a 0f -00 00 63 08 03 1f 04 1f 0a 0d 00 00 63 04 03 7d 39 00 63 00 70 18 02 04 00 -28 02 00 00 00 32 00 53 70 61 63 65 20 47 75 6e 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Space Talk -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank D, voice 21 -05 1f 01 01 0f 60 44 63 0b 03 06 1f 03 01 0f 02 42 63 06 03 0b 1f 04 01 0f -03 42 63 09 03 08 1f 02 09 0f 01 42 63 04 04 05 32 00 63 00 6d 18 05 04 3c -63 32 00 00 00 32 00 53 70 61 63 65 20 54 61 6c 6b 63 63 63 32 32 32 00 70 -00 40 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Space Vibe -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank D, voice 22 -19 0f 0f 07 0f 05 00 62 0d 00 19 00 0f 07 0f 05 01 63 04 00 19 00 0f 07 0f -05 02 63 0d 06 1f 00 06 02 0f 05 01 63 04 06 47 23 00 4b 00 71 1e 0c 04 00 -63 32 00 00 00 32 00 53 70 61 63 65 20 56 69 62 65 63 63 63 32 32 32 00 10 -00 00 00 50 00 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Space....1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -04 0c 00 03 0f 00 03 57 2d 06 04 09 00 03 0f 00 03 59 04 01 06 09 00 04 0f -00 03 63 04 05 06 09 00 04 0f 00 04 63 00 01 6c 23 21 00 00 02 18 02 04 00 -28 02 00 00 00 32 00 53 70 61 63 65 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Space....1 -** Source: from a library of patches collected by Duane Bowker, author unknown -04 0c 00 03 0f 00 00 57 2d 06 04 09 00 03 0f 00 00 59 04 01 06 09 00 04 0f -00 00 63 04 05 06 09 00 04 0f 00 00 63 00 01 6c 23 21 00 00 02 18 02 04 00 -28 02 00 00 00 32 00 53 70 61 63 65 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Space....2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 07 0f 00 41 57 04 03 03 1f 00 04 0f 00 43 59 1c 05 09 1f 00 06 0f -00 43 63 04 03 0c 1f 00 04 0f 00 45 63 13 00 2c 05 00 2f 63 14 18 02 04 00 -28 02 00 00 00 32 00 53 70 61 63 65 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Space....2 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 07 0f 00 40 57 04 03 03 1f 00 04 0f 00 40 59 1c 05 09 1f 00 06 0f -00 40 63 04 03 0c 1f 00 04 0f 00 40 63 13 00 2c 05 00 2f 63 14 18 02 04 00 -28 02 00 00 00 32 00 53 70 61 63 65 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Space....3 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -19 12 06 06 00 00 42 63 04 13 04 09 1f 04 04 00 43 4a 0b 04 15 15 09 0a 0f -00 43 5d 04 03 1c 09 04 04 04 00 44 5f 04 00 0c 2b 41 0b 5a 76 18 02 04 00 -63 63 00 00 00 32 00 53 70 61 63 65 2e 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Space....3 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -19 12 06 06 00 00 40 63 04 13 04 09 1f 04 04 00 40 4a 0b 04 15 15 09 0a 0f -00 40 5d 04 03 1c 09 04 04 04 00 40 5f 04 00 0c 2b 41 0b 5a 76 18 02 04 00 -63 63 00 00 00 32 00 53 70 61 63 65 2e 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Space....4 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 09 15 04 00 00 02 46 13 0c 06 04 07 04 00 00 04 46 04 0b 14 1d 15 06 00 -00 04 63 08 0c 19 03 0c 04 00 00 04 5f 04 0b 4c 63 00 63 00 72 18 02 04 00 -63 63 00 00 00 32 00 53 70 61 63 65 2e 2e 2e 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Space....4 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 09 15 04 00 00 00 46 13 0c 06 04 07 04 00 00 00 46 04 0b 14 1d 15 06 00 -00 00 63 08 0c 19 03 0c 04 00 00 00 5f 04 0b 4c 63 00 63 00 72 18 02 04 00 -63 63 00 00 00 32 00 53 70 61 63 65 2e 2e 2e 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SpaceBirds -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 06 00 0a 0e 0a 43 39 0d 00 1f 1f 00 09 0f 00 45 63 29 03 1f 0b 00 0a 0f -00 44 36 08 06 0b 0b 00 0b 0f 00 45 63 00 03 07 25 00 42 5a 6e 00 02 04 00 -28 02 00 00 00 32 00 53 70 61 63 65 42 69 72 64 73 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SpaceBirds -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -10 06 00 0a 0e 0a 40 39 0d 00 1f 1f 00 09 0f 00 40 63 29 03 1f 0b 00 0a 0f -00 40 36 08 06 0b 0b 00 0b 0f 00 40 63 00 03 07 25 00 42 5a 6e 00 02 04 00 -28 02 00 00 00 32 00 53 70 61 63 65 42 69 72 64 73 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Spc Midiot -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank D, voice 9 -04 07 00 09 0d 22 00 4b 3d 08 14 14 00 05 0b 24 41 52 08 00 15 03 00 06 06 -00 01 60 14 06 05 15 00 08 0f 00 04 63 00 06 7b 1f 0d 0e 1e 0e 18 0c 04 00 -63 32 00 32 00 32 00 53 70 63 20 4d 69 64 69 6f 74 63 63 63 32 32 32 08 70 -00 00 00 10 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SteelPan * -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -14 0c 07 04 0f 27 05 52 0a 08 14 07 08 03 0f 2b 03 52 09 0e 16 07 09 06 0f -00 02 63 04 0e 11 07 09 05 0f 00 02 63 04 16 04 19 00 0a 63 52 18 02 04 00 -28 32 00 00 00 32 00 53 74 65 65 6c 50 61 6e 20 2a 63 63 63 32 32 32 00 01 -00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Storm Wind -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank D, voice 17 -12 08 01 03 05 00 01 43 0a 00 14 0b 04 01 09 00 01 60 11 00 14 07 01 03 05 -00 01 63 00 00 0f 06 00 01 0c 00 02 63 00 00 33 63 00 63 00 73 00 05 04 00 -63 63 63 00 00 32 00 53 74 6f 72 6d 20 57 69 6e 64 63 63 63 32 32 32 00 50 -00 10 00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: TAP TAP<<< -** Source: Yamaha DX11 factory preset, bank D, voice 29 -12 09 00 01 0f 06 00 3a 00 1b 12 09 00 01 0f 02 00 61 00 1b 17 08 00 01 0f -00 00 33 00 1b 15 15 00 0a 0f 00 40 53 3e 1b 3a 1c 00 00 63 6e 00 04 04 00 -28 63 00 00 00 32 00 54 41 50 20 54 41 50 3c 3c 3c 63 63 63 32 32 32 00 00 -00 00 00 00 00 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: TAP TAP<<< -** Source: from a library of patches collected by Duane Bowker, author unknown -12 09 00 01 0f 06 00 3a 00 1b 12 09 00 01 0f 02 00 61 00 1b 17 08 00 01 0f -00 00 33 00 1b 15 15 00 0d 0f 00 40 53 3e 1b 3a 1c 00 00 63 6e 00 04 04 00 -28 63 00 00 00 32 00 54 41 50 20 54 41 50 3c 3c 3c 63 63 63 32 32 32 00 00 -00 00 00 00 00 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Telephone* -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 0f 0f 00 40 4b 30 03 1f 1f 00 06 0f 00 40 48 28 03 1f 1f 00 06 0f -00 00 63 30 03 1f 1f 00 06 0f 00 00 63 24 03 7c 3a 00 00 63 09 18 04 04 00 -28 32 00 00 00 32 00 54 65 6c 65 70 68 6f 6e 65 2a 63 63 63 32 32 32 0c 0a -0c 05 0b 16 0e 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Terror! -** Controls: MW (LFO pitch) -** Source: Yamaha DX11 factory preset, bank D, voice 23 -0c 1f 00 03 0f 20 00 2e 31 03 1f 1f 00 03 0f 00 00 3b 08 06 0a 1f 00 03 0f -2a 00 34 08 00 12 1f 00 04 0f 00 00 54 00 03 03 63 00 23 00 63 18 04 04 00 -28 32 00 00 00 32 00 54 65 72 72 6f 72 21 20 20 20 63 24 11 2d 32 25 04 6f -00 20 00 40 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Terror! -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0c 1f 00 03 0f 20 00 2e 31 03 1f 1f 00 03 0f 00 00 3b 08 06 0d 1f 00 03 0f -2a 00 34 08 00 12 1f 00 04 0f 00 00 54 00 03 03 63 00 23 00 63 18 04 04 00 -28 32 00 00 00 32 00 54 65 72 72 6f 72 21 20 20 20 63 24 11 2d 32 25 04 6f -00 20 00 40 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Traffic..1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 02 0f 00 02 42 02 03 1f 1f 00 01 0f 00 04 32 0a 03 1f 1f 00 03 0f -00 05 46 01 03 15 1f 00 03 0f 00 05 63 04 03 3a 47 00 3c 00 62 18 0c 04 0e -63 32 00 00 00 32 00 54 72 61 66 66 69 63 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Traffic..1 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 02 0f 00 00 42 02 03 1f 1f 00 01 0f 00 00 32 0a 03 1f 1f 00 03 0f -00 00 46 01 03 15 1f 00 03 0f 00 00 63 04 03 3a 47 00 3c 00 62 18 0c 04 0e -63 32 00 00 00 32 00 54 72 61 66 66 69 63 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Traffic..2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 02 0f 00 04 48 06 03 1f 1f 00 01 0f 00 05 32 07 03 1f 1f 00 03 0f -00 05 46 00 03 15 1f 00 03 0f 00 05 63 04 03 3a 15 00 5f 00 73 18 0c 04 0e -63 32 00 00 00 32 00 54 72 61 66 66 69 63 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Traffic..2 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 02 0f 00 00 48 06 03 1f 1f 00 01 0f 00 00 32 07 03 1f 1f 00 03 0f -00 00 46 00 03 15 1f 00 03 0f 00 00 63 04 03 3a 15 00 5f 00 73 18 0c 04 0e -63 32 00 00 00 32 00 54 72 61 66 66 69 63 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tug Boat -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -15 16 00 01 0f 0a 03 00 06 03 0f 0d 00 01 0f 00 04 3b 08 03 1f 07 00 03 0c -00 06 3c 06 03 13 16 00 07 0f 00 06 63 04 03 7a 0c 00 00 00 40 18 02 04 00 -28 02 00 00 00 32 00 54 75 67 20 42 6f 61 74 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tug Boat -** Source: from a library of patches collected by Duane Bowker, author unknown -15 16 00 01 0f 0a 00 00 06 03 0f 0d 00 01 0f 00 00 3b 08 03 1f 07 00 03 0c -00 00 3c 06 03 13 16 00 07 0f 00 00 63 04 03 7a 0c 00 00 00 40 18 02 04 00 -28 02 00 00 00 32 00 54 75 67 20 42 6f 61 74 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Tug Boat -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -15 16 00 00 0f 0a 00 00 06 03 0f 0d 00 00 0f 00 00 3b 08 03 1f 07 00 03 0c -00 00 3c 06 03 13 16 00 07 0f 00 00 63 04 03 7a 0c 00 00 00 40 18 02 04 00 -28 02 00 00 00 32 00 54 75 67 20 42 6f 61 74 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Typwriter* -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 05 00 07 00 00 00 3e 00 03 1f 1f 00 03 0f 00 00 4d 24 03 1f 1f 00 07 0f -00 00 59 18 03 1f 11 00 09 00 00 41 63 38 03 3b 4a 00 00 00 0d 18 02 04 00 -28 63 00 00 00 32 00 54 79 70 77 72 69 74 65 72 2a 63 63 63 32 32 32 08 70 -0c 02 08 04 09 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: UFO Decent -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 06 00 05 0e 0a 43 39 0d 00 1f 1f 00 01 0f 00 43 63 29 03 1f 0b 00 0a 0f -00 45 36 08 06 0b 0b 00 07 0f 00 45 63 00 03 38 05 00 42 5a 6e 18 02 04 00 -28 02 00 00 00 32 00 55 46 4f 20 44 65 63 65 6e 74 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: UFO Decent -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -10 06 00 05 0e 0a 40 39 0d 00 1f 1f 00 01 0f 00 40 63 29 03 1f 0b 00 0a 0f -00 40 36 08 06 0b 0b 00 07 0f 00 40 63 00 03 38 05 00 42 5a 6e 18 02 04 00 -28 02 00 00 00 32 00 55 46 4f 20 44 65 63 65 6e 74 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: UFO Decent -** Controls: MW (LFO pitch) -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -10 06 00 05 0e 0a 40 39 0d 00 1f 1f 00 00 0f 00 40 63 29 03 1f 0b 00 0a 0f -00 40 36 08 06 0b 0b 00 07 0f 00 40 63 00 03 38 05 00 42 5a 6e 18 02 04 00 -28 02 00 00 00 32 00 55 46 4f 20 44 65 63 65 6e 74 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Uzzie -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 06 08 07 0f 0a 43 63 3f 03 1f 04 00 06 0f 00 45 63 29 03 1f 09 00 06 0f -00 45 47 35 03 1f 0a 00 07 0f 00 45 63 00 03 12 44 00 00 63 04 18 02 04 00 -28 02 00 00 00 32 00 20 20 55 7a 7a 69 65 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Uzzie -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 06 08 07 0f 0a 40 63 3f 03 1f 04 00 06 0f 00 40 63 29 03 1f 09 00 06 0f -00 40 47 35 03 1f 0a 00 07 0f 00 40 63 00 03 12 44 00 00 63 04 18 02 04 00 -28 02 00 00 00 32 00 20 20 55 7a 7a 69 65 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Water * -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -06 00 06 04 0f 00 40 44 18 00 08 08 07 07 0f 00 00 63 04 06 06 07 08 07 0f -00 00 5a 05 06 09 08 04 05 0f 00 03 63 03 00 7f 43 00 63 63 7b 18 02 04 00 -63 32 00 00 00 32 00 57 61 74 65 72 20 20 20 20 2a 63 63 63 32 32 32 00 08 -00 38 00 01 00 46 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Waves....1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 01 0f 0a 43 63 3f 03 1f 1f 00 01 0f 00 43 63 29 03 1f 1f 00 03 0f -00 45 63 35 03 0b 0b 00 07 0f 00 45 63 00 03 38 06 00 42 5a 66 18 02 04 00 -28 02 00 00 00 32 00 57 61 76 65 73 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Waves....1 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 01 0f 0a 40 63 3f 03 1f 1f 00 01 0f 00 40 63 29 03 1f 1f 00 03 0f -00 40 63 35 03 0b 0b 00 07 0f 00 40 63 00 03 38 06 00 42 5a 66 18 02 04 00 -28 02 00 00 00 32 00 57 61 76 65 73 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Waves....1 -** Controls: MW (LFO pitch) -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -1f 1f 00 00 0f 0a 40 63 3f 03 1f 1f 00 00 0f 00 40 63 29 03 1f 1f 00 03 0f -00 40 63 35 03 0b 0b 00 07 0f 00 40 63 00 03 38 06 00 42 5a 66 18 02 04 00 -28 02 00 00 00 32 00 57 61 76 65 73 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Waves....2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 01 0f 0a 43 63 3f 03 1f 1f 00 01 0f 00 43 63 29 03 1f 1f 00 03 0f -00 45 63 35 03 04 0b 00 07 0f 00 45 63 00 03 38 04 00 42 5a 66 18 02 04 00 -28 02 00 00 00 32 00 57 61 76 65 73 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Waves....2 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 01 0f 0a 40 63 3f 03 1f 1f 00 01 0f 00 40 63 29 03 1f 1f 00 03 0f -00 40 63 35 03 04 0b 00 07 0f 00 40 63 00 03 38 04 00 42 5a 66 18 02 04 00 -28 02 00 00 00 32 00 57 61 76 65 73 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Waves....2 -** Controls: MW (LFO pitch) -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -1f 1f 00 00 0f 0a 40 63 3f 03 1f 1f 00 00 0f 00 40 63 29 03 1f 1f 00 03 0f -00 40 63 35 03 04 0b 00 07 0f 00 40 63 00 03 38 04 00 42 5a 66 18 02 04 00 -28 02 00 00 00 32 00 57 61 76 65 73 2e 2e 2e 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Waves....3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 01 0f 0a 45 63 3f 03 1f 1f 00 01 0f 00 44 63 29 03 1f 1f 00 03 0f -00 45 63 35 03 08 0b 00 07 0f 00 45 63 00 03 38 05 00 00 58 66 18 02 04 00 -28 02 00 00 00 32 00 57 61 76 65 73 2e 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Waves....3 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 01 0f 0a 40 63 3f 03 1f 1f 00 01 0f 00 40 63 29 03 1f 1f 00 03 0f -00 40 63 35 03 08 0b 00 07 0f 00 40 63 00 03 38 05 00 00 58 66 18 02 04 00 -28 02 00 00 00 32 00 57 61 76 65 73 2e 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Waves....3 -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -1f 1f 00 00 0f 0a 40 63 3f 03 1f 1f 00 00 0f 00 40 63 29 03 1f 1f 00 03 0f -00 40 63 35 03 08 0b 00 07 0f 00 40 63 00 03 38 05 00 00 58 66 18 02 04 00 -28 02 00 00 00 32 00 57 61 76 65 73 2e 2e 2e 2e 33 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Waves....4 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1e 1f 00 01 0f 0a 43 63 3f 03 1f 1f 00 01 0f 00 45 00 29 03 0a 1f 00 03 0f -00 46 63 35 03 0b 0b 00 07 0f 00 46 01 00 03 3e 05 00 42 55 66 18 02 04 00 -28 02 00 00 00 32 00 57 61 76 65 73 2e 2e 2e 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Waves....4 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 00 01 0f 0a 02 63 08 03 1f 1f 00 01 0f 00 04 63 0a 03 1f 1f 00 03 0f -00 04 63 08 03 0c 0a 09 07 0e 00 05 63 00 03 38 23 00 00 00 62 00 02 04 00 -28 02 00 00 00 32 00 57 61 76 65 73 2e 2e 2e 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Waves....4 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1e 1f 00 01 0f 0a 40 63 3f 03 1f 1f 00 01 0f 00 40 00 29 03 0a 1f 00 03 0f -0f 40 63 35 03 0b 0b 00 07 0f 00 40 01 00 03 3e 05 00 42 55 66 18 02 04 00 -28 02 00 00 00 32 00 57 61 76 65 73 2e 2e 2e 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Waves....4 -** Controls: MW (LFO pitch) -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -1e 1f 00 00 0f 0a 40 63 3f 03 1f 1f 00 00 0f 00 40 00 29 03 0a 1f 00 03 0f -0f 40 63 35 03 0b 0b 00 07 0f 00 40 01 00 03 3e 05 00 42 55 66 18 02 04 00 -28 02 00 00 00 32 00 57 61 76 65 73 2e 2e 2e 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Waves....4 -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 00 01 0f 0a 00 63 08 03 1f 1f 00 01 0f 00 00 63 0a 03 1f 1f 00 03 0f -00 00 63 08 03 0c 0a 09 07 0e 00 00 63 00 03 38 23 00 00 00 62 00 02 04 00 -28 02 00 00 00 32 00 57 61 76 65 73 2e 2e 2e 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Waves....4 -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -1f 1f 00 00 0f 0a 00 63 08 03 1f 1f 00 00 0f 00 00 63 0a 03 1f 1f 00 03 0f -00 00 63 08 03 0c 0a 09 07 0e 00 00 63 00 03 38 23 00 00 00 62 00 02 04 00 -28 02 00 00 00 32 00 57 61 76 65 73 2e 2e 2e 2e 34 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Wind * -** Controls: KV, MW (LFO pitch), BC (voice pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 00 13 01 00 00 00 63 21 06 1f 05 13 01 00 00 00 00 00 02 1f 00 13 01 00 -00 00 40 28 05 06 08 00 02 0e 00 01 63 05 03 3b 63 00 63 00 73 24 0c 04 00 -63 32 00 00 00 53 00 57 69 6e 64 20 20 20 20 20 2a 63 63 63 32 32 32 08 00 -00 00 0c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: >>WOW<< -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank D, voice 7 -1f 0c 0d 08 0a 00 01 45 04 03 1f 10 00 04 0f 00 00 4c 00 03 0f 04 02 0a 0a -00 01 55 00 03 1f 1f 00 0c 0f 00 02 63 04 03 39 23 00 00 00 62 0c 02 04 00 -63 32 00 32 00 32 00 3e 3e 57 4f 57 3c 3c 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: WaterGlass -** Controls: KV -** Source: Yamaha TX81Z factory preset, bank D, voice 5 -1f 1f 00 05 0f 00 00 41 32 03 1f 14 10 05 05 01 02 63 07 03 1f 0b 12 08 0f -00 01 63 0c 03 1f 1f 0f 08 0f 00 01 63 04 03 39 23 00 00 00 62 18 07 04 00 -63 32 00 00 00 32 00 57 61 74 65 72 47 6c 61 73 73 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: WeirdAxe * -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0f 0d 09 0f 00 00 5f 3c 03 1f 0f 0d 09 0f 00 02 63 38 03 1d 0f 0d 07 0f -00 01 63 1a 03 1f 0f 0d 07 0f 00 01 63 00 03 04 23 00 00 00 32 24 02 04 00 -28 63 00 00 00 32 00 57 65 69 72 64 41 78 65 20 2a 63 63 63 32 32 32 0d 03 -0d 31 00 04 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: White Blow -** Source: Yamaha DX11 factory preset, bank D, voice 32 -18 13 00 0f 0a 00 00 3f 20 03 1f 12 00 0a 0f 00 00 56 20 03 1f 13 00 0c 0f -00 00 5c 3c 03 0b 0a 0a 0b 0a 00 00 5a 3f 03 02 23 00 00 00 62 30 04 04 00 -28 32 00 00 00 32 00 57 68 69 74 65 20 42 6c 6f 77 63 63 63 32 32 32 0c 06 -00 02 0b 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: White Blow -** Source: from a library of patches collected by Duane Bowker, author unknown -18 13 00 0f 0d 00 00 3f 20 03 1f 12 00 0d 0f 00 00 56 20 03 1f 13 00 0c 0f -00 00 5c 3c 03 0b 0d 0a 0b 0d 00 00 5a 3f 03 02 23 00 00 00 62 30 04 04 00 -28 32 00 00 00 32 00 57 68 69 74 65 20 42 6c 6f 77 63 63 63 32 32 32 0c 06 -00 02 0b 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - ---Bank 29 - -* CATEGORY OTHER - -* SUBCATEGORY Other - -** Name: 120 VAC -** Description: A guitar-like sound -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 07 07 06 0f 00 3d 5e 04 0c 1f 07 07 05 0f 00 1d 46 28 01 1f 07 07 07 0f -00 1d 63 10 0c 1f 07 0a 05 0f 00 3d 5d 04 01 24 1c 11 02 00 42 18 02 04 00 -63 32 00 00 00 32 00 31 32 30 20 56 41 43 20 20 20 63 63 63 32 32 32 00 00 -00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: 120 VAC -** Description: A guitar-like sound -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 07 07 06 0f 00 3a 5e 04 0c 1f 07 07 05 0f 00 19 46 28 01 1f 07 07 07 0f -00 19 63 10 0c 1f 07 0a 05 0f 00 38 5d 04 01 24 1c 11 02 00 42 18 02 04 00 -63 32 00 00 00 32 00 31 32 30 20 56 41 43 20 20 20 63 63 63 32 32 32 00 00 -00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Amazon -** Description: A jungle sound -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 13 1f 03 05 00 06 4b 13 13 13 1f 1f 05 05 00 06 4a 10 13 1f 1f 01 05 0f -00 03 63 03 0d 1f 1f 01 05 0f 00 03 63 05 09 2c 1c 09 07 00 52 05 04 04 00 -63 28 00 0f 00 32 00 41 6d 61 7a 6f 6e 20 20 20 20 63 63 63 32 32 32 00 10 -00 6d 00 16 00 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ArcoGlass* -** Description: A glass harp -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 09 00 05 00 0a 01 47 12 0e 1f 09 00 05 00 0a 01 47 0d 0e 0b 0a 0a 05 00 -09 40 63 00 06 0b 0a 0a 05 00 09 40 63 00 00 2c 15 01 16 0c 3a 24 02 04 00 -28 37 00 00 00 32 00 41 72 63 6f 47 6c 61 73 73 2a 63 63 63 32 32 32 00 06 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Aviary -** Description: A glassy sound -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1f 1f 0f 0f 0a 00 00 1e 03 1f 1f 0b 00 0f 00 00 2f 1a 03 0c 1f 0d 07 0f -00 00 48 03 03 0c 0f 06 05 0f 00 00 50 03 03 7c 23 00 00 00 32 18 02 04 00 -28 02 00 00 00 32 00 41 76 69 61 72 79 20 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Aviary -** Description: A glassy sound -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 1f 0f 0f 0a 00 00 1e 03 1f 1f 0b 01 0f 00 00 2f 1a 03 0c 1f 0d 07 0f -00 00 48 03 03 0c 0f 06 05 0f 00 00 50 03 03 7c 23 00 00 00 32 18 02 04 00 -28 02 00 00 00 32 00 41 76 69 61 72 79 20 20 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: BC1 GlassV -** Controls: KV, MW (LFO pitch), BC (EG amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -09 03 03 06 0f 00 3b 4c 19 0b 0c 0c 05 05 0d 40 04 59 10 10 0b 0a 06 06 0c -27 06 63 08 08 09 06 06 06 0d 00 06 5c 04 13 0c 1e 18 03 00 62 18 07 04 00 -63 32 01 00 00 32 63 42 43 31 20 47 6c 61 73 73 56 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Botl.Shff* -** Description: Blowing across the top of a bottle -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 13 11 0a 0d 00 01 55 13 09 1f 19 00 07 0d 00 01 4f 0a 00 1f 11 0d 09 09 -00 02 5c 09 06 0e 08 00 07 0e 00 42 63 05 0b 3b 1c 00 00 00 5e 05 02 04 00 -63 10 2e 00 00 32 00 42 6f 74 6c 2e 53 68 66 66 2a 63 63 63 32 32 32 00 00 -00 00 00 02 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Cairo * -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 08 06 07 0e 14 00 53 04 0e 1f 0f 0a 0b 0b 00 00 3d 38 0b 1f 1e 06 07 0e -00 02 63 03 08 1f 07 07 0a 0b 00 02 63 04 0b 04 15 00 0a 00 32 05 02 04 00 -28 63 00 00 00 32 00 43 61 69 72 6f 20 20 20 20 2a 63 63 63 32 32 32 00 18 -00 06 00 06 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Celestial -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 00 00 04 0f 00 18 41 39 06 0b 02 03 04 00 00 00 50 05 06 0f 02 04 03 0a -00 08 55 03 04 0e 00 01 06 00 00 02 63 04 00 7e 1a 00 05 01 62 11 0c 05 00 -63 32 00 00 00 32 00 43 65 6c 65 73 74 69 61 6c 20 63 63 63 32 32 32 00 21 -00 11 00 46 00 48 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ChimeStrig -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 09 04 03 08 00 04 57 0a 03 1f 1f 00 03 0f 00 04 5e 00 06 1f 09 04 04 08 -00 04 5b 1f 02 0f 1f 00 04 0f 00 06 5e 08 06 2c 23 00 00 00 02 18 04 04 00 -28 32 00 00 00 32 00 43 68 69 6d 65 53 74 72 69 67 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ChimeStrig -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 09 04 03 08 00 02 57 0a 03 1f 1f 00 03 0f 00 01 5e 00 06 1f 09 04 04 08 -00 00 5b 1f 02 0f 1f 00 04 0f 00 00 5e 08 06 2c 23 00 00 00 02 18 04 04 00 -28 32 00 00 00 32 00 43 68 69 6d 65 53 74 72 69 67 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Deep Space -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1b 07 07 00 0a 44 54 13 03 1f 0a 07 06 00 00 45 52 04 13 1f 12 07 06 00 -00 46 53 10 03 10 0a 0a 04 00 00 46 63 04 03 07 2a 48 01 4b 06 18 02 04 00 -28 02 00 00 00 32 00 44 65 65 70 20 53 70 61 63 65 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Deep Space -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1b 07 07 00 0a 40 54 13 03 1f 0a 07 06 00 00 40 52 04 13 1f 12 07 06 00 -00 40 53 10 03 10 0a 0a 04 00 00 40 63 04 03 07 2a 48 01 4b 06 18 02 04 00 -28 02 00 00 00 32 00 44 65 65 70 20 53 70 61 63 65 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: EleChamber -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0c 06 02 03 0e 00 02 3f 08 02 0b 03 03 05 08 00 04 47 08 00 0a 08 03 07 0f -00 05 63 08 06 09 10 03 05 0f 00 05 63 08 05 5c 21 23 09 00 32 0c 05 04 00 -63 63 63 00 00 32 00 45 6c 65 43 68 61 6d 62 65 72 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: EleChamber -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0c 06 02 03 0e 00 00 3f 08 02 0b 03 03 05 08 00 00 47 08 00 0a 08 03 07 0f -00 01 63 08 06 09 10 03 05 0f 00 01 63 08 05 5c 21 23 09 00 32 0c 05 04 00 -63 63 63 00 00 32 00 45 6c 65 43 68 61 6d 62 65 72 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Enc3rdKind -** Controls: KV, MW (LFO pitch), MW (LFO amplitude) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0a 00 06 00 00 44 63 00 03 1f 0d 00 06 00 00 43 63 04 03 1f 0c 00 06 00 -00 45 63 04 03 1f 0a 00 06 0a 00 45 63 04 03 47 14 4f 1e 02 15 18 04 04 00 -63 01 63 00 00 32 00 45 6e 63 33 72 64 4b 69 6e 64 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Enc3rdKind -** Controls: MW (LFO pitch), MW (LFO amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0a 00 06 00 00 40 63 00 03 1f 0d 00 06 00 00 40 63 04 03 1f 0c 00 06 00 -00 40 63 04 03 1f 0a 00 06 0a 00 40 63 04 03 47 14 4f 1e 02 15 18 04 04 00 -63 01 63 00 00 32 00 45 6e 63 33 72 64 4b 69 6e 64 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Etherial -** Controls: MW (LFO pitch) -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -1f 1f 00 03 0f 00 00 42 13 03 1f 1f 00 03 0f 00 00 3c 13 03 14 1f 00 05 0f -1e 00 56 0a 03 14 1f 00 05 0f 1e 00 56 1c 03 3c 23 00 32 00 42 05 02 04 00 -63 63 00 00 00 32 00 45 74 68 65 72 69 61 6c 20 20 63 63 63 32 32 32 00 30 -00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Floot Base -** Description: Almost a flute, and down a fifth -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -18 1f 16 0f 0f 00 00 63 05 00 18 07 00 0f 07 1b 00 45 03 0c 1f 1f 15 0f 0f -03 00 63 1e 05 0f 14 00 0f 0f 05 01 5f 04 02 3b 20 00 00 00 62 0c 02 05 00 -63 13 63 00 00 32 00 46 6c 6f 6f 74 20 42 61 73 65 63 63 63 32 32 32 00 72 -00 36 00 04 00 08 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Full Ranks -** Source: Unknown (downloaded from TX81Z patch directory on ucsd.edu) -16 00 00 0a 0f 00 00 39 1f 02 18 00 00 05 0f 5b 00 5b 00 10 0f 00 00 08 0f -00 00 63 08 10 0c 00 00 05 0f 00 00 63 00 16 3c 23 00 00 00 02 0c 00 04 00 -63 00 00 00 00 32 00 46 75 6c 6c 20 52 61 6e 6b 73 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: FuzzyPad -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 06 06 04 0f 00 40 40 05 00 14 08 07 05 0f 05 00 47 04 00 0f 07 03 07 0e -08 03 63 04 06 13 08 04 05 0f 00 03 60 04 06 64 1f 00 06 00 4a 05 02 04 00 -63 32 00 00 00 32 00 46 75 7a 7a 79 50 61 64 20 20 63 63 63 32 32 32 06 31 -00 38 00 08 00 38 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Gender Gam -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -15 13 05 06 0a 00 04 54 19 0e 1f 0e 04 06 0c 00 04 4a 06 0e 18 13 03 08 0c -00 04 59 10 06 1f 12 03 06 0d 00 01 63 04 00 37 52 00 07 00 62 18 04 04 00 -28 32 00 00 00 32 00 47 65 6e 64 65 72 20 47 61 6d 63 63 63 32 32 32 00 1e -00 0b 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: GlassHarp1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1c 0a 00 04 00 00 02 50 15 02 1f 0a 00 05 00 00 03 4e 0d 02 0f 0c 0a 06 00 -00 03 63 00 02 0f 0c 00 06 0f 00 04 63 00 04 2e 63 00 00 00 33 1b 04 04 00 -63 01 63 00 00 32 00 47 6c 61 73 73 48 61 72 70 31 63 63 63 32 32 32 0f 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: GlassHarp1 -** Source: from a library of patches collected by Duane Bowker, author unknown -1c 0a 00 04 00 00 00 50 15 02 1f 0a 00 05 00 00 00 4e 0d 02 0f 0c 0a 06 00 -00 00 63 00 02 0f 0c 00 06 0f 00 00 63 00 04 2e 63 00 00 00 33 1b 04 04 00 -63 01 63 00 00 32 00 47 6c 61 73 73 48 61 72 70 31 63 63 63 32 32 32 0f 00 -00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: GlassHarp2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -09 03 03 06 0f 00 3c 40 19 0b 0c 0c 05 05 0d 40 04 4f 10 10 0b 0a 06 06 0c -27 05 63 08 08 09 06 06 06 0d 00 05 5c 04 13 0c 1e 18 03 00 62 18 07 04 00 -63 32 01 00 00 32 00 47 6c 61 73 73 48 61 72 70 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: GlassHarp2 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -09 03 03 06 0f 00 38 40 19 0b 0c 0c 05 05 0d 40 00 4f 10 10 0b 0a 06 06 0c -27 00 63 08 08 09 06 06 06 0d 00 00 5c 04 13 0c 1e 18 03 00 62 18 07 04 00 -63 32 01 00 00 32 00 47 6c 61 73 73 48 61 72 70 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: GlassHarp3 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0c 07 04 04 0a 00 04 3e 2a 03 07 07 04 04 09 00 04 27 2d 05 0c 06 07 07 03 -00 04 63 10 06 0a 08 05 05 0c 00 04 63 10 00 2e 63 00 00 00 23 18 04 04 00 -63 01 63 00 00 32 00 47 6c 61 73 73 48 61 72 70 33 63 63 63 32 32 32 0f 07 -00 20 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: GlassHarp3 -** Source: from a library of patches collected by Duane Bowker, author unknown -0c 07 04 04 0a 00 00 3e 2a 03 07 07 04 04 09 00 00 27 2d 05 0c 06 07 07 03 -00 00 63 10 06 0a 08 05 05 0c 00 00 63 10 00 2e 63 00 00 00 33 18 04 04 00 -63 01 63 00 00 32 00 47 6c 61 73 73 48 61 72 70 33 63 63 63 32 32 32 0f 07 -00 20 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: HarmoPad -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank B, voice 28 -0a 1f 02 05 0f 27 43 4d 05 06 0a 1f 02 05 0f 27 03 4f 04 00 0b 1f 00 04 0f -00 01 63 05 0e 0b 1f 00 04 0f 00 01 63 04 08 04 1c 0e 1c 00 36 05 04 04 00 -28 32 00 00 00 32 00 48 61 72 6d 6f 50 61 64 20 20 63 63 63 32 32 32 04 41 -00 48 00 31 07 38 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Impression -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -09 15 04 07 0f 00 06 50 00 0b 09 15 04 07 0f 00 06 43 00 0b 16 07 04 07 0f -00 05 63 00 03 16 07 04 07 0f 00 05 63 00 03 14 20 3b 02 00 02 18 04 04 00 -63 01 63 00 00 32 00 49 6d 70 72 65 73 73 69 6f 6e 63 63 63 32 32 32 00 00 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Impression -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -09 15 04 07 0f 00 02 50 00 0b 09 15 04 07 0f 00 01 43 00 0b 16 07 04 07 0f -00 00 63 00 03 16 07 04 07 0f 00 00 63 00 03 14 20 3b 02 00 02 18 04 04 00 -63 01 63 00 00 32 00 49 6d 70 72 65 73 73 69 6f 6e 63 63 63 32 32 32 00 00 -00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Jump.....1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 03 01 06 0e 00 03 54 04 03 12 04 01 04 0e 00 05 4d 08 03 15 03 02 09 0e -00 05 63 04 03 15 0c 03 09 0e 00 05 63 04 01 34 26 02 0d 00 32 0c 04 04 00 -28 32 00 00 00 32 00 4a 75 6d 70 2e 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Jump.....1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -12 03 01 06 0e 00 01 54 04 03 12 04 01 04 0e 00 02 4d 08 03 15 03 02 09 0e -00 00 63 04 03 15 0c 03 09 0e 00 00 63 04 01 34 26 02 0d 00 32 0c 04 04 00 -28 32 00 00 00 32 00 4a 75 6d 70 2e 2e 2e 2e 2e 31 63 63 63 32 32 32 00 00 -00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Jump.....2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 03 07 09 0e 00 03 57 04 03 1f 16 18 09 0c 00 05 63 08 1b 1f 16 00 09 0e -00 05 63 04 03 1f 16 00 09 0c 00 05 63 08 03 2c 26 21 20 00 12 18 04 04 00 -28 32 00 00 00 32 00 4a 75 6d 70 2e 2e 2e 2e 2e 32 63 63 63 32 32 32 00 10 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Jump.....2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -12 03 07 09 0e 00 01 57 04 03 1f 16 18 09 0c 00 02 63 08 1b 1f 16 00 09 0e -00 00 63 04 03 1f 16 00 09 0c 00 00 63 08 03 2c 26 21 20 00 12 18 04 04 00 -28 32 00 00 00 32 00 4a 75 6d 70 2e 2e 2e 2e 2e 32 63 63 63 32 32 32 00 10 -00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: KrstlChoir -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank D, voice 3 -1f 00 06 04 0f 00 40 43 18 00 0b 08 07 07 0f 05 00 63 04 06 0f 07 08 07 0f -08 00 59 05 06 0e 08 04 05 0f 00 03 63 03 00 7e 22 00 0f 00 4a 1d 02 04 00 -63 32 00 00 00 32 00 4b 72 73 74 6c 43 68 6f 69 72 63 63 63 32 32 32 00 38 -00 38 00 01 00 46 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: KrystlPad1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 11 06 07 0f 00 45 4f 1a 00 0b 08 07 07 0f 05 01 62 04 03 0f 07 08 07 0f -08 01 62 05 06 0e 08 04 05 0f 00 03 63 03 00 7f 22 00 0f 00 26 11 02 04 00 -63 32 00 00 00 32 00 4b 72 79 73 74 6c 50 61 64 31 63 63 63 32 32 32 00 38 -00 18 00 21 00 26 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: MilkBottle -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0c 1f 06 05 01 00 03 3f 09 08 13 1c 03 05 0b 00 02 53 09 0e 1c 1f 01 05 0f -00 03 46 0a 08 0c 09 01 08 0d 00 04 63 04 00 33 1a 09 07 1f 52 05 02 04 00 -63 19 1f 10 1e 32 00 4d 69 6c 6b 42 6f 74 74 6c 65 63 63 63 32 32 32 20 33 -00 02 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Movement.1 -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0a 09 03 06 0b 00 43 42 2a 10 1f 09 05 03 0f 00 43 63 04 04 1f 09 05 06 0b -00 44 63 19 0a 1f 09 06 06 0f 00 46 63 04 05 64 18 39 09 19 35 00 00 04 00 -63 32 00 32 00 32 00 4d 6f 76 65 6d 65 6e 74 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Movement.1 -** Controls: MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0a 09 03 06 0b 00 40 42 2a 10 1f 09 05 03 0f 00 40 63 04 04 1f 09 05 06 0b -00 40 63 19 0a 1f 09 06 06 0f 00 40 63 04 05 64 18 39 09 19 35 00 00 04 00 -63 32 00 32 00 32 00 4d 6f 76 65 6d 65 6e 74 2e 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Movement.2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0b 09 00 06 0e 00 43 3e 1c 18 1f 09 00 03 0f 00 44 53 08 01 1f 09 01 06 0e -00 43 63 08 02 1f 09 00 06 0f 00 45 63 08 15 7c 25 00 00 27 37 00 00 04 00 -63 32 00 32 00 32 00 4d 6f 76 65 6d 65 6e 74 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Movement.2 -** Source: from a library of patches collected by Duane Bowker, author unknown -0b 09 00 06 0e 00 40 3e 1c 18 1f 09 00 03 0f 00 40 53 08 01 1f 09 01 06 0e -00 40 63 08 02 1f 09 00 06 0f 00 40 63 08 15 7c 25 00 00 27 37 00 00 04 00 -63 32 00 32 00 32 00 4d 6f 76 65 6d 65 6e 74 2e 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Musicbox * -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 1a 01 01 09 00 00 4b 1f 06 1f 1f 1f 0f 00 00 00 5e 30 03 1f 1c 0a 04 0b -00 00 63 08 08 1b 16 1f 0f 00 00 00 52 30 03 04 04 00 00 00 52 18 02 04 00 -28 63 00 00 00 32 00 4d 75 73 69 63 62 6f 78 20 2a 63 63 63 32 32 32 00 10 -0c 0f 00 00 0a 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Obelisk -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -02 1d 00 04 0f 00 18 41 39 06 02 02 03 04 00 00 00 50 05 06 02 02 04 03 0a -00 08 55 03 04 02 0d 01 06 00 00 02 63 04 00 7f 1a 00 05 01 62 11 0c 05 00 -63 32 00 00 00 32 00 4f 62 65 6c 69 73 6b 20 20 20 63 63 63 32 32 32 00 21 -00 11 00 46 00 48 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ornt E.T. -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 03 00 06 04 00 42 50 2a 05 1f 05 00 06 04 00 42 47 34 03 1f 03 00 06 04 -00 45 5d 22 04 1f 04 00 06 04 00 44 63 04 03 6c 48 2a 0a 27 36 18 04 04 00 -28 32 00 00 00 32 00 4f 72 6e 74 20 45 2e 54 2e 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ornt E.T. -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 03 00 06 04 00 40 50 2a 05 1f 05 00 06 04 00 40 47 34 03 1f 03 00 06 04 -00 40 5d 22 04 1f 04 00 06 04 00 40 63 04 03 6c 48 2a 0a 27 36 18 04 04 00 -28 32 00 00 00 32 00 4f 72 6e 74 20 45 2e 54 2e 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ornt Quest -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -09 08 1f 09 05 00 03 63 3f 1b 12 1f 0e 0f 0f 00 04 63 0d 03 0a 1f 09 0f 0f -00 04 5e 19 03 1f 06 03 0f 0f 00 05 61 04 03 3f 15 00 15 23 12 18 04 04 00 -28 32 00 00 00 32 00 4f 72 6e 74 20 51 75 65 73 74 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Ornt Quest -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -09 08 1f 09 05 00 00 63 3f 1b 12 1f 0e 0f 0f 00 00 63 0d 03 0a 1f 09 0f 0f -00 00 5e 19 03 1f 06 03 0f 0f 00 00 61 04 03 3f 15 00 15 23 12 18 04 04 00 -28 32 00 00 00 32 00 4f 72 6e 74 20 51 75 65 73 74 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntFlight -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -12 06 00 04 00 2e 02 46 0d 1a 1f 13 1d 09 0a 00 02 63 34 04 12 02 00 04 00 -2e 05 63 08 1a 13 03 15 09 0d 00 04 5d 08 03 7c 23 00 00 00 32 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 46 6c 69 67 68 74 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntFlight -** Source: from a library of patches collected by Duane Bowker, author unknown -12 06 00 04 00 2e 00 46 0d 1a 1f 13 1d 09 0a 00 00 63 34 04 12 02 00 04 00 -2e 00 63 08 1a 13 03 15 09 0d 00 00 5d 08 03 7c 23 00 00 00 32 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 46 6c 69 67 68 74 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntSound1 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -09 03 02 05 00 00 02 40 0a 03 1f 0a 03 05 00 00 03 54 08 03 1f 12 04 05 00 -00 03 63 0a 03 06 05 00 05 00 00 05 63 04 06 77 38 44 00 3f 12 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 53 6f 75 6e 64 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntSound1 -** Source: from a library of patches collected by Duane Bowker, author unknown -09 03 02 05 00 00 00 40 0a 03 1f 0a 03 05 00 00 00 54 08 03 1f 12 04 05 00 -00 00 63 0a 03 06 05 00 05 00 00 00 63 04 06 77 38 44 00 3f 12 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 53 6f 75 6e 64 31 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntSound2 -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -09 03 09 04 0c 00 02 40 08 03 09 0d 03 02 0c 00 02 54 04 03 16 0f 04 05 0c -00 05 63 04 03 16 06 01 07 0c 00 05 63 04 06 74 38 44 00 3f 31 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 53 6f 75 6e 64 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: OrntSound2 -** Source: from a library of patches collected by Duane Bowker, author unknown -09 03 09 04 0c 00 00 40 08 03 09 0d 03 02 0c 00 00 54 04 03 16 0f 04 05 0c -00 00 63 04 03 16 06 01 07 0c 00 00 63 04 06 74 38 44 00 3f 31 0c 02 04 00 -63 32 00 32 00 32 00 4f 72 6e 74 53 6f 75 6e 64 32 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: ParisDream -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0a 0b 06 0b 00 02 4b 1f 01 13 0b 0c 07 0a 00 02 63 16 01 1f 09 0c 06 0a -00 02 54 0a 0d 0e 0f 0c 07 0d 00 00 63 16 05 3e 1a 00 05 00 42 0c 01 04 00 -63 32 00 00 00 32 00 50 61 72 69 73 44 72 65 61 6d 63 63 63 32 32 32 00 38 -00 10 00 08 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PianoVoice -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 0a 0e 07 06 63 04 4d 1f 03 0a 1f 00 03 0f 00 04 4c 08 03 1f 07 07 05 07 -00 05 63 04 03 08 0e 00 06 0f 00 45 63 04 03 7c 23 00 0e 00 36 18 02 04 00 -28 02 00 00 00 32 00 50 69 61 6e 6f 56 6f 69 63 65 63 63 63 32 32 32 00 00 -00 00 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PianoVoice -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 0a 0e 07 06 63 03 4d 1f 03 0a 1f 00 03 0f 00 02 4c 08 03 1f 07 07 05 07 -00 00 63 04 03 08 0e 00 06 0f 00 40 63 04 03 7c 23 00 0e 00 36 18 02 04 00 -28 02 00 00 00 32 00 50 69 61 6e 6f 56 6f 69 63 65 63 63 63 32 32 32 00 00 -00 00 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PianoStrng -** Controls: KV, MW (LFO pitch) -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -1f 1c 00 04 0f 1e 02 43 09 06 1f 1c 00 04 0f 1e 02 43 0a 00 1f 1f 00 05 0f -1e 01 63 09 06 1f 1f 00 05 0f 1e 01 63 0a 00 3c 1f 06 0a 00 52 05 02 04 00 -63 32 00 00 00 32 00 50 69 61 6e 6f 53 74 72 6e 67 63 63 63 32 32 32 00 02 -00 00 02 32 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PlasticHit -** Controls: KV, MW (LFO pitch) -** Source: Yamaha TX81Z factory preset, bank C, voice 31 -1f 14 0e 07 04 00 04 5b 30 16 1f 12 04 0a 06 00 04 61 04 10 1f 0f 03 05 0b -00 02 5e 04 10 1f 0b 03 06 0b 00 02 63 04 16 03 1b 0b 05 00 52 0c 04 04 00 -32 32 00 00 00 32 00 50 6c 61 73 74 69 63 48 69 74 63 63 63 32 32 32 00 30 -00 50 00 50 07 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Pno String -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 07 07 05 07 00 04 43 2a 02 18 03 03 05 08 00 04 58 08 00 1f 08 06 06 07 -00 07 63 04 0e 09 10 03 05 0f 00 06 5e 08 05 2c 21 23 0f 00 12 0c 05 04 00 -63 63 63 00 00 32 00 50 6e 6f 20 53 74 72 69 6e 67 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Pno String -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 07 07 05 07 00 03 43 2a 02 18 03 03 05 08 00 01 58 08 00 1f 08 06 06 07 -00 00 63 04 0e 09 10 03 05 0f 00 00 5e 08 05 2c 21 23 0f 00 12 0c 05 04 00 -63 63 63 00 00 32 00 50 6e 6f 20 53 74 72 69 6e 67 63 63 63 32 32 32 00 00 -00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PnoClouds -** Controls: KV, MW (LFO pitch), BC (LFO pitch), BC (EG amplitude) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 1f 08 05 0f 17 45 47 05 02 06 0b 01 04 0e 00 24 4e 1a 00 1f 1f 08 05 0f -00 04 63 04 03 07 07 01 04 0e 00 24 4e 1a 06 06 1c 0e 09 2e 4a 05 02 04 00 -63 32 00 07 00 32 39 50 6e 6f 43 6c 6f 75 64 73 20 63 63 63 32 32 32 06 41 -00 57 00 78 00 56 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: PopPercuss -** Description: guitar / horn / electric piano mix -** Controls: KV -** Source: GLIB (Michael Kesti and others) -1f 0c 06 0b 06 00 04 56 04 02 1f 02 03 0b 0e 43 04 61 04 10 1f 12 06 08 0e -00 04 60 08 00 1a 17 08 08 0c 00 03 63 04 03 33 14 00 00 00 62 18 01 04 00 -63 32 00 32 00 32 00 50 6f 70 50 65 72 63 75 73 73 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Sawsy Pad1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -0e 08 06 07 0e 1d 01 63 03 06 0e 08 07 07 0f 16 41 62 05 00 0e 08 05 07 0f -1d 01 62 05 00 0e 08 04 05 0f 14 41 63 04 06 7f 22 00 0f 00 36 05 02 05 03 -63 32 00 00 00 32 00 53 61 77 73 79 20 50 61 64 31 63 63 63 32 32 32 00 36 -00 31 00 31 00 38 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Solstice -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -0a 1b 0d 06 0f 00 04 31 12 00 0d 1b 0d 06 0f 00 04 43 13 06 0c 1b 0d 06 0f -00 04 37 12 00 1f 1b 0d 06 0f 00 04 63 19 03 47 23 13 00 00 32 0c 04 04 00 -63 01 63 00 00 32 00 53 6f 6c 73 74 69 63 65 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Solstice -** Source: from a library of patches collected by Duane Bowker, author unknown -0a 1b 0d 06 0f 00 00 31 12 00 0d 1b 0d 06 0f 00 00 43 13 06 0c 1b 0d 06 0f -00 00 37 12 00 1f 1b 0d 06 0f 00 00 63 19 03 47 23 13 00 00 32 0c 04 04 00 -63 01 63 00 00 32 00 53 6f 6c 73 74 69 63 65 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SpoonChoir -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1e 0b 0f 04 07 00 40 43 1c 00 13 0c 07 07 0b 05 00 54 05 00 1f 07 02 07 0f -08 03 5c 00 06 13 0c 04 05 0a 00 03 57 03 06 7c 1f 00 06 00 4a 11 02 04 00 -63 32 00 00 00 32 00 53 70 6f 6f 6e 43 68 6f 69 72 63 63 63 32 32 32 06 70 -00 71 00 04 00 56 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SpreadThin -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -10 0a 06 08 0c 00 02 59 08 0b 18 12 06 0a 00 00 05 5a 04 0b 15 07 06 08 0c -00 04 63 04 0b 15 1d 06 0f 0f 00 05 63 04 03 24 1e 00 00 00 22 00 05 04 00 -63 63 63 00 00 32 00 53 70 72 65 61 64 54 68 69 6e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: SpreadThin -** Controls: KV -** Source: from a library of patches collected by Duane Bowker, author unknown -10 0a 06 08 0c 00 01 59 08 0b 18 12 06 0a 00 00 01 5a 04 0b 15 07 06 08 0c -00 00 63 04 0b 15 1d 06 0f 0f 00 00 63 04 03 24 1e 00 00 00 22 00 05 04 00 -63 63 63 00 00 32 00 53 70 72 65 61 64 54 68 69 6e 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: St Nick..1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 00 00 01 0f 00 04 4c 00 02 1f 1f 0c 05 0f 00 03 53 2a 0b 0c 0c 06 05 0f -00 04 63 00 04 1f 0c 06 05 0f 00 07 63 08 0b 3c 1b 28 10 00 22 18 04 04 00 -28 32 00 00 00 32 00 53 74 20 4e 69 63 6b 2e 2e 31 63 63 63 32 32 32 00 20 -00 00 00 40 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: St Nick..1 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 00 00 01 0f 00 01 4c 00 02 1f 1f 0c 05 0f 00 00 53 2a 0b 0c 0c 06 05 0f -00 00 63 00 04 1f 0c 06 05 0f 00 01 63 08 0b 3c 1b 28 10 00 22 18 04 04 00 -28 32 00 00 00 32 00 53 74 20 4e 69 63 6b 2e 2e 31 63 63 63 32 32 32 00 20 -00 00 00 40 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: St Nick..2 -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 00 00 01 0f 00 02 4c 04 00 19 1f 0c 05 0f 00 03 63 0a 03 0c 0c 06 05 0f -00 04 5a 04 06 19 0c 06 05 0f 00 06 63 04 03 36 22 28 2b 00 12 18 04 04 00 -28 32 00 00 00 32 00 53 74 20 4e 69 63 6b 2e 2e 32 63 63 63 32 32 32 00 20 -00 10 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: St Nick..2 -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 00 00 01 0f 00 00 4c 04 00 19 1f 0c 05 0f 00 00 63 0a 03 0c 0c 06 05 0f -00 00 5a 04 06 19 0c 06 05 0f 00 00 63 04 03 36 22 28 2b 00 12 18 04 04 00 -28 32 00 00 00 32 00 53 74 20 4e 69 63 6b 2e 2e 32 63 63 63 32 32 32 00 20 -00 10 00 10 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: StonedCycl -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -04 0f 07 06 0f 00 05 4d 08 00 04 0d 07 06 0f 00 04 63 04 06 04 0e 07 06 0f -00 06 38 00 00 05 0e 07 06 0f 00 06 63 04 03 7a 63 63 06 00 53 00 04 04 00 -63 01 63 00 00 32 00 53 74 6f 6e 65 64 43 79 63 6c 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: StonedCycl -** Controls: MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -04 0f 07 06 0f 00 00 4d 08 00 04 0d 07 06 0f 00 00 63 04 06 04 0e 07 06 0f -00 00 38 00 00 05 0e 07 06 0f 00 00 63 04 03 7a 63 63 06 00 53 00 04 04 00 -63 01 63 00 00 32 00 53 74 6f 6e 65 64 43 79 63 6c 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Texture * -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -0c 0f 0d 07 0f 00 00 63 00 00 1b 00 0d 07 0f 00 01 63 04 00 0f 00 0d 07 0f -00 02 63 0d 06 1f 00 0d 07 0f 00 01 63 04 06 6f 32 00 63 00 33 18 0c 04 00 -63 32 00 00 00 32 00 54 65 78 74 75 72 65 20 20 2a 63 63 63 32 32 32 00 50 -00 40 00 60 00 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: That Girl* -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Rod Lemcke, author unknown -1e 02 07 05 00 00 02 5e 05 19 1e 07 0a 08 0b 00 05 59 38 18 1e 06 0a 07 00 -00 02 63 03 0c 1b 06 1f 0b 00 00 02 60 04 13 04 1d 12 1e 00 32 05 02 04 00 -28 63 00 00 00 32 00 54 68 61 74 20 47 69 72 6c 2a 63 63 63 32 32 32 00 01 -00 06 00 06 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Up We Go -** Controls: KV -** Source: from a library of patches collected by Rod Lemcke, author unknown -1f 12 0c 06 0e 00 04 5f 04 03 1f 0f 0c 04 0e 00 02 50 07 0b 1b 03 01 02 0e -00 05 51 0e 03 1f 09 0f 06 0d 00 06 63 04 03 44 23 00 00 00 32 18 04 04 00 -63 01 63 00 00 32 00 55 70 20 57 65 20 47 6f 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: Up We Go -** Source: from a library of patches collected by Duane Bowker, author unknown -1f 12 0c 06 0e 00 00 5f 04 03 1f 0f 0c 04 0e 00 00 50 07 0b 1b 03 01 02 0e -00 00 51 0e 03 1f 09 0f 06 0d 00 00 63 04 03 44 23 00 00 00 32 18 04 04 00 -63 01 63 00 00 32 00 55 70 20 57 65 20 47 6f 20 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: WineGlass* -** Controls: KV, MW (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -03 05 05 04 00 40 01 35 24 08 08 07 01 04 0c 40 41 34 19 0e 08 09 00 04 0c -32 44 63 08 1e 03 01 00 04 0c 32 42 5b 08 18 04 08 00 08 22 3e 18 04 04 00 -63 32 00 00 00 32 60 57 69 6e 65 47 6c 61 73 73 2a 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: WireWaves -** Controls: KV, MW (LFO pitch), BC (LFO pitch) -** Source: from a library of patches collected by Duane Bowker, author unknown -14 19 03 05 00 00 07 5d 18 12 19 09 00 05 00 1f 06 3e 2d 16 12 07 07 05 0c -00 05 63 0b 08 10 09 07 05 0d 00 05 63 0d 08 34 1a 09 05 00 52 00 02 04 00 -63 19 00 10 00 32 00 57 69 72 65 57 61 76 65 73 20 63 63 63 32 32 32 20 32 -1d 74 00 69 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - - -** Name: XyloSynth -** Controls: KV -** Source: by Steve Michelson, from the patch library of his dx11lib librarian -1f 16 0e 07 07 15 06 63 24 0b 1a 18 0c 07 05 0c 02 63 0a 0b 17 1f 0d 07 0f -00 02 63 0a 0b 16 1f 0a 05 0f 00 01 63 04 0b 3e 23 00 00 00 52 18 02 04 00 -28 32 00 00 00 32 00 58 79 6c 6f 53 79 6e 74 68 20 63 63 63 32 32 32 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 - diff --git a/muse/synti/deicsonze/CMakeLists.txt b/muse/synti/deicsonze/CMakeLists.txt deleted file mode 100644 index bbb1f13b..00000000 --- a/muse/synti/deicsonze/CMakeLists.txt +++ /dev/null @@ -1,59 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -include(${PROJECT_SOURCE_DIR}/pch.txt) - -QT4_WRAP_CPP ( deicsonze_mocs deicsonzegui.h ) -QT4_WRAP_UI ( deicsonze_uis deicsonzegui.ui ) - -add_library ( deicsonze SHARED - ${PROJECT_BINARY_DIR}/all.h - ${PROJECT_BINARY_DIR}/all-pic.h.pch - deicsonze.cpp - deicsonzepreset.cpp - deicsonzeplugin.cpp - deicsonzefilter.cpp - deicsonzegui.cpp - deicsonzegui.h - - ${deicsonze_mocs} - ${deicsonze_uis} - ) - -target_link_libraries( deicsonze synti ) - -# - tell cmake to name target deicsonze.so instead of -# libdeicsonze.so -# - use precompiled header files -# -set_target_properties ( deicsonze - PROPERTIES PREFIX "" - #COMPILE_FLAGS "-O2 -include ${PROJECT_BINARY_DIR}/all-pic.h" - COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all-pic.h" - ) - -target_link_libraries(deicsonze - al awl synti - ${QT_LIBRARIES} - ) - -install_targets ( /${CMAKE_INSTALL_LIBDIR}/${MusE_INSTALL_NAME}/synthi/ deicsonze ) - -install_files ( /share/${MusE_INSTALL_NAME}/presets/deicsonze SutulaBank.dei ) diff --git a/muse/synti/deicsonze/README b/muse/synti/deicsonze/README deleted file mode 100644 index c9b36d02..00000000 --- a/muse/synti/deicsonze/README +++ /dev/null @@ -1,57 +0,0 @@ -DeicsOnze - -Copyright (C) 2005-2006 by Nil Geisweiller - -------- -License -------- - -DeicsOnze is distributed under the terms of the GNU General Public License -(see COPYING file). - ----------- -Descripion ----------- - -DeicsOnze is a virtual synthesizer plugin for MusE which reproduces the -FM synthesis of the YAMAHA DX11 synthesizer/TX81Z sound module. - -------- -Remarks -------- - -It contains over 2000 presets archived by Bryan Sutula belonging to the public -domain. If by any chance you find some of them that are under copyright please -contact me to take them off. - -Not every function is implemented but it's already sounding like the original -(even better). Pitch bend, modulation and some others are not implemented yet. - -The files with the extention .fig in the directory pics have been made -with xfig. - ------------ -Compilation ------------ - -DeicsOnze is compiled with the optimization -O3. This permits it to be -twice faster than without optimization, however the compilation time is longer -(10 minutes on my Athlon XP-M 2000) and may not pass on any machine. If not -remove -O3 in the file CMakeLists.txt. - ----- -Help ----- - -The last features (portamento and pitch envelope) have been implemented -without DX11 only with the documentation. If you have a DX11 or TX81Z I need -you! Please record your sound with different values of portamento and pitch -envelope and send it to me so I can adjust the paramenter of DeicsOnze to fit -the real DX11. - -------- -Contact -------- - -Nil Geisweiller -a-lin[NO_SPAM_PLEASE]@users.sourceforge.net diff --git a/muse/synti/deicsonze/SutulaBank.dei b/muse/synti/deicsonze/SutulaBank.dei deleted file mode 100644 index 3a64e876..00000000 --- a/muse/synti/deicsonze/SutulaBank.dei +++ /dev/null @@ -1,177644 +0,0 @@ - - - Sutula Bank - - ORCHESTRA - 0 - - Orchestra - 0 - - FIFTH - 6 - - TRIANGL - 33 - 35 - 15 - 0 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 2 - 5 - 2 - - - 2 - 2 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 2 - -3 - 3 - -1 - - 9 - 24 - 17 - 9 - 16 - 3 - 7 - 3 - 15 - 8 - 11 - 11 - 3 - 3 - 3 - 3 - 5 - 5 - 7 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 81 - 99 - 78 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - EleOrchtra - 0 - - - SEVENTH - 7 - - TRIANGL - 33 - 33 - 7 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 1 - 1 - - - 1.49 - 2.99 - 3 - 3 - no - no - no - no - 9 - 10 - 8 - 8 - - W4 - W2 - W1 - W1 - -3 - 3 - -3 - -3 - - 8 - 7 - 15 - 16 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 97 - 99 - 75 - - 1 - 1 - 1 - 1 - 0 - 11 - 0 - 0 - - - -19 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Orchestra* - 1 - - - FIFTH - 4 - - TRIANGL - 32 - 44 - 20 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 5 - 1 - - - 2 - 2 - 6 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - -1 - -1 - 2 - - 31 - 16 - 14 - 16 - 21 - 12 - 21 - 12 - 15 - 15 - 15 - 15 - 6 - 3 - 6 - 3 - 5 - 4 - 5 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 62 - 93 - 71 - - 1 - 1 - 1 - 1 - 30 - 50 - 30 - 50 - - - -12 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntOrkest - 2 - - - - Symphony - 1 - - FIFTH - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 5 - 4 - - - 2 - 0.5 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W1 - 3 - 3 - -1 - 0 - - 15 - 31 - 15 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 4 - 3 - 4 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 95 - 91 - 89 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sympathy.1 - 0 - - - FIFTH - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 3 - - - 2 - 2 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W1 - 3 - 3 - -1 - 0 - - 15 - 31 - 15 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 4 - 3 - 4 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 85 - 91 - 82 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sympathy.2 - 1 - - - FIFTH - 7 - - TRIANGL - 35 - 14 - 14 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1.5 - 1.5 - 1.51 - 1.51 - no - no - no - no - 16 - 16 - 14 - 14 - - W1 - W2 - W1 - W1 - -3 - 3 - 0 - 0 - - 7 - 13 - 12 - 15 - 4 - 4 - 4 - 4 - 14 - 14 - 14 - 14 - 3 - 0 - 3 - 3 - 5 - 5 - 5 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 82 - 99 - 74 - - 0 - 0 - 0 - 0 - 12 - 29 - 14 - 22 - - - -7 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sympho * - 2 - - - FIFTH - 7 - - TRIANGL - 31 - 12 - 16 - 0 - off - - - 4 - 3 - on - off - on - on - 7 - 0 - 7 - 1 - 0 - 0 - 0 - 1 - - - 1.51 - 1.5 - 1.5 - 1.5 - no - no - no - no - 14 - 16 - 16 - 16 - - W1 - W4 - W1 - W1 - -3 - 3 - 0 - 0 - - 10 - 17 - 12 - 21 - 4 - 23 - 8 - 4 - 14 - 15 - 15 - 14 - 3 - 3 - 3 - 0 - 5 - 4 - 5 - 1 - VOF - V12 - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 69 - 99 - 77 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -19 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 12 - 7 - 0 - 0 - 50 - 25 - 0 - 0 - 0 - 0 - 0 - - Symphony * - 3 - - - FIFTH - 4 - - TRIANGL - 38 - 24 - 15 - 0 - on - - - 2 - 1 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 4 - 4 - - - 2 - 2 - 4 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W3 - W2 - W2 - 0 - 0 - 0 - -1 - - 12 - 14 - 24 - 25 - 13 - 9 - 9 - 19 - 13 - 14 - 14 - 14 - 0 - 0 - 5 - 7 - 5 - 5 - 4 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 81 - 75 - 89 - - 0 - 0 - 1 - 2 - 0 - 0 - 10 - 10 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Symphony.1 - 4 - - - FIFTH - 6 - - TRIANGL - 34 - 24 - 15 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 3 - 5 - 1 - - - 4 - 8 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W2 - W2 - -3 - -1 - -2 - 2 - - 31 - 25 - 12 - 25 - 10 - 19 - 10 - 5 - 11 - 14 - 15 - 14 - 6 - 6 - 0 - 0 - 4 - 4 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 77 - 77 - 98 - 81 - - 0 - 1 - 0 - 0 - 0 - 10 - 10 - 65 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Symphony.2 - 5 - - - FIFTH - 5 - - TRIANGL - 30 - 0 - 6 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 3 - 3 - 3 - - - 2 - 2 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W7 - W3 - W1 - W1 - -2 - -1 - 0 - -2 - - 18 - 15 - 13 - 28 - 8 - 12 - 10 - 5 - 13 - 14 - 14 - 14 - 3 - 1 - 0 - 0 - 6 - 5 - 6 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 88 - 57 - 93 - 76 - - 0 - 0 - 0 - 0 - 0 - 10 - 10 - 41 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Symphony.3 - 6 - - - FIFTH - 6 - - TRIANGL - 30 - 11 - 9 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 3 - 5 - 2 - - - 2 - 6 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W3 - W3 - W4 - -2 - 2 - 0 - 1 - - 12 - 23 - 21 - 27 - 10 - 12 - 13 - 26 - 15 - 15 - 14 - 13 - 0 - 0 - 5 - 5 - 5 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 75 - 99 - 73 - - 0 - 0 - 1 - 1 - 10 - 10 - 52 - 52 - - - -24 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Symphony.4 - 7 - - - SIXTH - 6 - - TRIANGL - 30 - 26 - 12 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 0 - 3 - 3 - - - 2 - 4 - 3 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W5 - W3 - W5 - -2 - -1 - 1 - 1 - - 12 - 12 - 13 - 29 - 9 - 10 - 11 - 3 - 9 - 9 - 9 - 10 - 8 - 8 - 6 - 6 - 7 - 6 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 74 - 97 - 72 - - 0 - 1 - 0 - 2 - 21 - 10 - 26 - 41 - - - -24 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Symphony.5 - 8 - - - SIXTH - 6 - - TRIANGL - 30 - 26 - 12 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 2 - 2 - 3 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W3 - W5 - -2 - -1 - 1 - 1 - - 12 - 12 - 13 - 29 - 9 - 10 - 11 - 3 - 14 - 14 - 15 - 15 - 0 - 1 - 6 - 6 - 4 - 5 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 74 - 79 - 72 - - 0 - 1 - 0 - 2 - 21 - 10 - 26 - 41 - - - -24 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Symphony.5* - 9 - - - FIFTH - 4 - - TRIANGL - 29 - 25 - 61 - 37 - off - - - 2 - 1 - on - on - on - on - 0 - 5 - 0 - 0 - 4 - 5 - 0 - 0 - - - 4 - 8 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W3 - W1 - W4 - 2 - 1 - -3 - -1 - - 23 - 26 - 11 - 15 - 10 - 5 - 10 - 10 - 15 - 14 - 15 - 5 - 0 - 0 - 3 - 2 - 6 - 7 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 91 - 80 - 86 - 76 - - 0 - 0 - 2 - 1 - 20 - 10 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Symphony.6 - 10 - - - FIFTH - 4 - - TRIANGL - 28 - 0 - 42 - 11 - off - - - 2 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - - - 2 - 6 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W2 - 2 - 1 - -3 - -1 - - 16 - 10 - 19 - 9 - 10 - 5 - 8 - 10 - 15 - 14 - 15 - 5 - 0 - 0 - 2 - 2 - 6 - 7 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 91 - 53 - 86 - 76 - - 0 - 0 - 2 - 1 - 20 - 10 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Symphony.6* - 11 - - - FIFTH - 5 - - TRIANGL - 28 - 0 - 15 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 4 - 3 - 3 - - - 2 - 2 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W2 - W1 - W5 - -2 - -1 - 1 - -3 - - 18 - 18 - 14 - 15 - 16 - 12 - 16 - 12 - 14 - 14 - 14 - 14 - 0 - 4 - 0 - 4 - 5 - 4 - 7 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 81 - 77 - 95 - 81 - - 0 - 1 - 0 - 1 - 0 - 10 - 73 - 73 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Symphony.7 - 12 - - - - - WIND - 1 - - Brass - 0 - - SEVENTH - 5 - - TRIANGL - 31 - 14 - 16 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 4 - 4 - 4 - - - 1 - 1 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W3 - W1 - W1 - 0 - 0 - 0 - 0 - - 13 - 13 - 13 - 13 - 31 - 31 - 31 - 7 - 15 - 15 - 15 - 14 - 0 - 0 - 0 - 0 - 7 - 7 - 8 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 95 - 95 - 85 - - 0 - 0 - 0 - 1 - 10 - 10 - 0 - 15 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgBrass1 - 0 - - - SIXTH - 5 - - TRIANGL - 31 - 0 - 5 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 6 - 2 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W3 - W4 - W1 - 0 - 0 - 0 - 0 - - 15 - 15 - 16 - 13 - 5 - 5 - 31 - 4 - 15 - 15 - 15 - 12 - 1 - 1 - 0 - 3 - 8 - 8 - 9 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 86 - 85 - 83 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgBrass2 - 1 - - - SEVENTH - 7 - - TRIANGL - 31 - 14 - 16 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 5 - 4 - - - 2 - 1 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W5 - W3 - 3 - 1 - 1 - -2 - - 15 - 13 - 13 - 13 - 31 - 31 - 31 - 7 - 15 - 15 - 15 - 14 - 0 - 0 - 0 - 0 - 7 - 7 - 8 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 95 - 95 - 77 - - 0 - 0 - 0 - 0 - 10 - 10 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgBrass3 - 2 - - - SIXTH - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 5 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W4 - W1 - W4 - 3 - 3 - 1 - -1 - - 15 - 15 - 16 - 13 - 3 - 3 - 31 - 4 - 1 - 1 - 5 - 15 - 4 - 4 - 0 - 0 - 8 - 8 - 9 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 85 - 85 - 83 - - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgBrass4 - 3 - - - FIFTH - 6 - - TRIANGL - 35 - 0 - 5 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 3 - 3 - 2 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W5 - W3 - W4 - W1 - 3 - 3 - 0 - 0 - - 16 - 21 - 22 - 18 - 27 - 16 - 7 - 10 - 12 - 9 - 15 - 12 - 6 - 6 - 6 - 6 - 7 - 7 - 8 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 73 - 99 - 83 - - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgBrass5 - 4 - - - FOURTH - 4 - - TRIANGL - 30 - 37 - 37 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 6 - 2 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W3 - W1 - W3 - 3 - 2 - 1 - -2 - - 17 - 21 - 15 - 18 - 10 - 9 - 7 - 10 - 12 - 11 - 15 - 12 - 5 - 6 - 6 - 6 - 7 - 6 - 8 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 82 - 76 - 83 - - 0 - 1 - 0 - 1 - 15 - 30 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgBrass6 - 5 - - - SIXTH - 4 - - TRIANGL - 34 - 36 - 15 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 5 - 2 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W5 - W1 - W3 - 3 - 2 - 3 - 1 - - 16 - 16 - 22 - 20 - 31 - 31 - 31 - 10 - 13 - 13 - 14 - 12 - 6 - 9 - 5 - 3 - 14 - 14 - 13 - 13 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 99 - 99 - 88 - - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FINGER - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgBrass7 - 6 - - - SEVENTH - 4 - - TRIANGL - 40 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 3 - 3 - 1 - - - 0.5 - 0.5 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W3 - W1 - W1 - 2 - 1 - 0 - -1 - - 31 - 31 - 31 - 31 - 24 - 10 - 24 - 10 - 15 - 15 - 15 - 15 - 6 - 6 - 6 - 6 - 13 - 13 - 13 - 13 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 94 - 94 - 97 - - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FINGER - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgBrass8 - 7 - - - FIFTH - 7 - - TRIANGL - 43 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 3 - 4 - 1 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W2 - W1 - W1 - 0 - 3 - 3 - 0 - - 31 - 18 - 31 - 31 - 6 - 12 - 22 - 10 - 12 - 10 - 12 - 15 - 4 - 2 - 8 - 6 - 13 - 15 - 15 - 13 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 81 - 99 - 81 - - 0 - 1 - 0 - 1 - 0 - 10 - 0 - 0 - - - -12 - POLY - 2 - FINGER - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgBrass9 - 8 - - - FIFTH - 6 - - TRIANGL - 28 - 21 - 6 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 1 - 4 - 2 - - - 1.5 - 1.5 - 1.49 - 1.49 - no - no - no - no - 16 - 16 - 9 - 9 - - W1 - W4 - W1 - W1 - -2 - -1 - 2 - 2 - - 16 - 15 - 16 - 15 - 5 - 14 - 31 - 31 - 14 - 14 - 15 - 15 - 0 - 0 - 0 - 4 - 7 - 8 - 9 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 91 - 97 - 83 - - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - - - -7 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AtackBrass - 9 - - - THIRD - 7 - - TRIANGL - 30 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 15 - 13 - 31 - 13 - 31 - 14 - 31 - 31 - 15 - 0 - 15 - 15 - 0 - 0 - 0 - 0 - 8 - 15 - 15 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 71 - 0 - 67 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Back Brass - 10 - - - FOURTH - 7 - - TRIANGL - 35 - 1 - 10 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 7 - 5 - 4 - 4 - 4 - - - 2 - 2 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -1 - 0 - 0 - - 18 - 18 - 18 - 27 - 31 - 31 - 31 - 3 - 15 - 15 - 15 - 14 - 0 - 0 - 0 - 0 - 10 - 10 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 75 - 79 - 71 - - 0 - 0 - 0 - 0 - 1 - 0 - 69 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 99 - 0 - 0 - 0 - 0 - 0 - - BC1 Feed - 11 - - - THIRD - 7 - - TRIANGL - 32 - 5 - 3 - 0 - off - - - 6 - 0 - off - off - off - off - 5 - 4 - 4 - 7 - 6 - 4 - 5 - 3 - - - 1 - 1 - 3.14 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 14 - 9 - 10 - 11 - 31 - 31 - 31 - 9 - 15 - 15 - 15 - 14 - 0 - 0 - 0 - 0 - 9 - 8 - 15 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 61 - 33 - 74 - - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 99 - 0 - 0 - 0 - 0 - 0 - - BC1 Horns - 12 - - - FIFTH - 7 - - TRIANGL - 32 - 6 - 3 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 1 - - - 2 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W1 - W1 - 1 - -1 - -1 - -2 - - 19 - 16 - 20 - 16 - 31 - 11 - 31 - 9 - 15 - 10 - 15 - 10 - 0 - 0 - 0 - 0 - 10 - 9 - 10 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 82 - 98 - 80 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Brass 1 - 13 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -2 - 3 - -3 - 3 - - 13 - 13 - 13 - 13 - 13 - 13 - 13 - 13 - 11 - 15 - 11 - 13 - 0 - 0 - 0 - 0 - 8 - 10 - 8 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 79 - 99 - 71 - - 1 - 1 - 1 - 1 - 0 - 45 - 0 - 1 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Brass 1* - 14 - - - FIFTH - 7 - - TRIANGL - 32 - 6 - 3 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 1 - 2 - - - 0.5 - 0.5 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W4 - W1 - W1 - -1 - -3 - 3 - 1 - - 18 - 10 - 21 - 17 - 31 - 8 - 31 - 10 - 15 - 10 - 15 - 10 - 0 - 0 - 0 - 0 - 9 - 8 - 10 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 89 - 98 - 83 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Brass 2 - 15 - - - THIRD - 6 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - -3 - 3 - 3 - - 20 - 31 - 20 - 25 - 31 - 4 - 11 - 5 - 15 - 10 - 15 - 14 - 0 - 0 - 15 - 0 - 10 - 5 - 10 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 55 - 80 - 81 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 10 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Brass 3 - 16 - - - SIXTH - 7 - - TRIANGL - 35 - 20 - 10 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 21 - 21 - 21 - 15 - 31 - 31 - 31 - 10 - 15 - 15 - 15 - 13 - 0 - 0 - 0 - 0 - 10 - 10 - 10 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 92 - 92 - 73 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Brass 4 - 17 - - - THIRD - 7 - - TRIANGL - 35 - 27 - 10 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 1 - 3.14 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 21 - 17 - 31 - 17 - 31 - 17 - 16 - 14 - 15 - 12 - 5 - 14 - 0 - 0 - 0 - 0 - 11 - 9 - 15 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 70 - 52 - 74 - - 1 - 0 - 1 - 0 - 0 - 0 - 32 - 10 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Brass 5 - 18 - - - FOURTH - 7 - - TRIANGL - 35 - 15 - 16 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 5 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 21 - 31 - 19 - 15 - 12 - 15 - 11 - 0 - 17 - 0 - 0 - 5 - 3 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 79 - 70 - 85 - - 0 - 0 - 0 - 0 - 0 - 30 - 30 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Brass 6 - 19 - - - SECOND - 7 - - TRIANGL - 35 - 15 - 16 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 2 - 1 - 1 - 11 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 25 - 31 - 31 - 31 - 31 - 11 - 17 - 17 - 15 - 15 - 14 - 11 - 0 - 0 - 0 - 19 - 5 - 3 - 3 - 12 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 57 - 93 - 72 - - 0 - 0 - 0 - 0 - 0 - 30 - 30 - 15 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Brass 7 - 20 - - - FIFTH - 5 - - TRIANGL - 38 - 33 - 0 - 71 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 2 - - - 2 - 2 - 3 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W3 - W1 - W1 - 3 - 3 - -1 - -1 - - 19 - 19 - 19 - 16 - 5 - 5 - 21 - 6 - 11 - 11 - 11 - 11 - 6 - 6 - 6 - 6 - 8 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 75 - 99 - 85 - - 0 - 0 - 0 - 0 - 10 - 10 - 10 - 33 - - - -12 - POLY - 4 - FINGER - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Brass 5th - 21 - - - FIFTH - 7 - - TRIANGL - 31 - 45 - 1 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 5 - 2 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W2 - W3 - -3 - 1 - -1 - 3 - - 19 - 8 - 20 - 8 - 7 - 9 - 8 - 7 - 12 - 14 - 13 - 12 - 6 - 5 - 6 - 6 - 8 - 9 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 96 - 90 - 88 - - 0 - 0 - 0 - 0 - 0 - 71 - 0 - 39 - - - 0 - POLY - 4 - FINGER - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Brass....1 - 22 - - - FOURTH - 7 - - TRIANGL - 35 - 45 - 5 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 6 - 1 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W4 - W1 - W6 - 2 - 1 - 2 - 1 - - 17 - 14 - 15 - 20 - 7 - 10 - 10 - 27 - 12 - 0 - 12 - 9 - 6 - 4 - 6 - 6 - 8 - 10 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 75 - 78 - 81 - - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 39 - - - 0 - POLY - 4 - FINGER - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Brass....2 - 23 - - - FOURTH - 7 - - TRIANGL - 35 - 45 - 5 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 2 - 1 - - - 1 - 1 - 0.5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W4 - W1 - W6 - 2 - 1 - 2 - 1 - - 17 - 14 - 15 - 20 - 7 - 10 - 10 - 27 - 12 - 0 - 12 - 9 - 6 - 4 - 6 - 6 - 8 - 10 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 75 - 78 - 81 - - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 39 - - - 0 - POLY - 4 - FINGER - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Brass....2* - 24 - - - FOURTH - 6 - - TRIANGL - 35 - 12 - 15 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 5 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W5 - W3 - W3 - 1 - -3 - 1 - 2 - - 16 - 12 - 15 - 21 - 7 - 10 - 10 - 27 - 12 - 0 - 12 - 9 - 6 - 4 - 6 - 6 - 8 - 10 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 67 - 73 - 89 - - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 39 - - - 0 - POLY - 4 - FINGER - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Brass....3 - 25 - - - FIFTH - 4 - - TRIANGL - 36 - 35 - 0 - 43 - on - - - 0 - 1 - on - on - on - off - 0 - 0 - 0 - 0 - 6 - 5 - 4 - 3 - - - 4 - 8 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W3 - W2 - -1 - 0 - 0 - 0 - - 31 - 31 - 20 - 17 - 6 - 6 - 7 - 4 - 13 - 13 - 14 - 15 - 6 - 6 - 5 - 4 - 6 - 5 - 6 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 83 - 82 - 97 - 80 - - 0 - 0 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BrassChime - 26 - - - FIFTH - 3 - - TRIANGL - 14 - 0 - 13 - 0 - on - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 4 - 2 - - - 0.5 - 0.5 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W4 - W3 - W1 - -1 - -3 - -1 - 3 - - 14 - 21 - 16 - 12 - 12 - 19 - 31 - 17 - 14 - 15 - 15 - 15 - 7 - 5 - 4 - 3 - 6 - 7 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 68 - 97 - 71 - - 0 - 0 - 0 - 1 - 20 - 60 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BrassEns.1 - 27 - - - SIXTH - 6 - - TRIANGL - 38 - 0 - 0 - 38 - off - - - 1 - 1 - off - off - on - off - 0 - 0 - 0 - 0 - 4 - 1 - 5 - 1 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W7 - W5 - W4 - 2 - -2 - -2 - 2 - - 20 - 14 - 19 - 15 - 12 - 19 - 31 - 17 - 14 - 15 - 15 - 15 - 7 - 4 - 4 - 3 - 6 - 7 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 96 - 98 - 79 - - 0 - 0 - 0 - 1 - 20 - 43 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BrassEns.2 - 28 - - - FIFTH - 4 - - TRIANGL - 32 - 51 - 11 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 4 - 1 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W4 - 2 - -3 - 2 - -1 - - 15 - 14 - 12 - 14 - 12 - 9 - 31 - 5 - 14 - 15 - 15 - 15 - 4 - 4 - 4 - 3 - 5 - 6 - 6 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 69 - 92 - 87 - - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BrassEns.3 - 29 - - - FOURTH - 4 - - TRIANGL - 32 - 51 - 11 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 2 - 5 - 2 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W3 - W1 - W1 - 1 - -1 - 2 - -2 - - 17 - 20 - 12 - 31 - 5 - 8 - 12 - 15 - 14 - 15 - 15 - 12 - 4 - 4 - 9 - 3 - 7 - 9 - 7 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 65 - 63 - 58 - - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BrassEns.4 - 30 - - - FIFTH - 7 - - TRIANGL - 32 - 6 - 3 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 7 - 0 - 7 - 1 - 1 - 1 - 1 - - - 0.5 - 0.5 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W4 - W1 - W1 - -1 - -3 - 3 - 1 - - 14 - 9 - 14 - 13 - 22 - 5 - 22 - 10 - 15 - 13 - 15 - 13 - 0 - 0 - 0 - 0 - 6 - 5 - 7 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 89 - 98 - 83 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BrassSynth - 31 - - - FOURTH - 6 - - TRIANGL - 35 - 0 - 25 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 3 - 6 - 2 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W3 - W1 - W2 - -3 - 0 - 0 - 3 - - 17 - 16 - 15 - 21 - 7 - 10 - 10 - 31 - 12 - 0 - 12 - 9 - 6 - 5 - 6 - 6 - 8 - 10 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 82 - 77 - 84 - - 0 - 0 - 0 - 0 - 0 - 0 - 90 - 0 - - - 0 - POLY - 2 - FINGER - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Brass.Vibe - 32 - - - FIFTH - 6 - - TRIANGL - 23 - 0 - 11 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 1 - - - 1.5 - 1.5 - 1.5 - 1.5 - no - no - no - no - 16 - 16 - 16 - 16 - - W1 - W1 - W1 - W1 - 0 - -3 - 3 - 3 - - 16 - 13 - 18 - 14 - 12 - 8 - 31 - 8 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 77 - 99 - 81 - - 0 - 0 - 0 - 0 - 13 - 39 - 9 - 25 - - - -19 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 30 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Brassy * - 33 - - - FIFTH - 7 - - SQUARE - 29 - 0 - 0 - 8 - off - - - 0 - 3 - off - off - on - on - 0 - 0 - 0 - 0 - 2 - 0 - 2 - 0 - - - 1 - 0.5 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W3 - 3 - 3 - -3 - -3 - - 13 - 13 - 15 - 14 - 14 - 14 - 12 - 14 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 4 - 2 - 4 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 50 - 99 - 78 - - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 13 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Chariots - 34 - - - FIFTH - 7 - - TRIANGL - 28 - 6 - 6 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - - - 1.5 - 1.5 - 1.49 - 1.49 - no - no - no - no - 16 - 16 - 9 - 9 - - W4 - W4 - W1 - W1 - -3 - -3 - 3 - 3 - - 14 - 14 - 14 - 14 - 18 - 8 - 18 - 8 - 15 - 13 - 15 - 13 - 0 - 0 - 0 - 0 - 8 - 9 - 8 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 87 - 99 - 78 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -19 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - ChorusBras - 35 - - - FIFTH - 7 - - TRIANGL - 30 - 45 - 12 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 0 - 2 - 0 - - - 6 - 2.99 - 2.99 - 3 - no - no - no - no - 8 - 10 - 10 - 8 - - W4 - W2 - W1 - W4 - 1 - 3 - 3 - -3 - - 13 - 13 - 11 - 28 - 11 - 20 - 11 - 12 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 78 - 99 - 70 - - 0 - 0 - 0 - 0 - 0 - 47 - 0 - 0 - - - -19 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Ensemble * - 36 - - - FIFTH - 7 - - TRIANGL - 33 - 8 - 12 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 2 - - - 3 - 6 - 2.99 - 9 - no - no - no - no - 8 - 8 - 10 - 8 - - W3 - W4 - W3 - W5 - -3 - -3 - 3 - 3 - - 15 - 11 - 10 - 20 - 6 - 4 - 7 - 6 - 11 - 7 - 10 - 10 - 1 - 2 - 2 - 0 - 5 - 4 - 5 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 82 - 99 - 61 - - 0 - 0 - 0 - 0 - 0 - 20 - 0 - 20 - - - -19 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Ensemble 1 - 37 - - - FIFTH - 7 - - TRIANGL - 33 - 8 - 12 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 2 - - - 3 - 6 - 2.99 - 9 - no - no - no - no - 8 - 8 - 10 - 8 - - W3 - W4 - W5 - W6 - -3 - -3 - 3 - 3 - - 17 - 11 - 12 - 20 - 6 - 4 - 7 - 6 - 11 - 8 - 11 - 8 - 1 - 2 - 2 - 0 - 5 - 4 - 5 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 80 - 99 - 61 - - 0 - 0 - 0 - 0 - 0 - 20 - 0 - 20 - - - -19 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Ensemble 2 - 38 - - - SIXTH - 7 - - TRIANGL - 29 - 15 - 8 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 3 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W1 - W1 - 3 - 0 - 2 - 2 - - 17 - 15 - 16 - 15 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 9 - 0 - 8 - 8 - 9 - 8 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 79 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 7 - - Full Brass - 39 - - - THIRD - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 25 - 31 - 31 - 20 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 10 - 15 - 15 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 58 - 52 - 71 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Hard Brass - 40 - - - THIRD - 7 - - TRIANGL - 30 - 9 - 2 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 3 - 1 - - - 0.5 - 0.5 - 1.57 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W4 - W1 - 0 - 0 - 0 - 0 - - 15 - 16 - 16 - 10 - 24 - 8 - 15 - 7 - 15 - 10 - 5 - 14 - 0 - 0 - 0 - 0 - 10 - 10 - 10 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 67 - 64 - 77 - - 1 - 1 - 1 - 1 - 0 - 28 - 9 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 19 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Horn - 41 - - - SIXTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 2 - - - 1 - 1 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W3 - 3 - 3 - 1 - 1 - - 15 - 14 - 16 - 13 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 11 - 8 - 8 - 9 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 91 - 81 - 90 - 85 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Horn.....1 - 42 - - - THIRD - 4 - - TRIANGL - 35 - 0 - 4 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 1 - - - 1 - 1 - 8.48 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W1 - W4 - -2 - 0 - 1 - 3 - - 16 - 15 - 22 - 15 - 7 - 8 - 16 - 10 - 12 - 10 - 0 - 9 - 6 - 6 - 6 - 6 - 9 - 8 - 10 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 73 - 70 - 80 - - 0 - 0 - 2 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Horn.....2 - 43 - - - FOURTH - 5 - - TRIANGL - 35 - 0 - 8 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 6 - 4 - 1 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W2 - -1 - -1 - 1 - 2 - - 16 - 15 - 15 - 11 - 6 - 9 - 9 - 31 - 11 - 5 - 4 - 15 - 4 - 5 - 6 - 6 - 8 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 84 - 73 - 78 - - 0 - 3 - 2 - 0 - 0 - 66 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Horn.....3 - 44 - - - SIXTH - 5 - - TRIANGL - 32 - 19 - 9 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 4 - 3 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W2 - W1 - W6 - 1 - 1 - -1 - 3 - - 18 - 16 - 15 - 18 - 22 - 10 - 10 - 7 - 11 - 12 - 15 - 12 - 2 - 4 - 3 - 3 - 10 - 10 - 10 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 99 - 99 - 81 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Horn.....4 - 45 - - - FOURTH - 4 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 6 - 4 - - - 1.51 - 1.5 - 1.5 - 1.5 - no - no - no - no - 14 - 16 - 16 - 16 - - W1 - W4 - W1 - W1 - 2 - 2 - -2 - -2 - - 17 - 17 - 21 - 18 - 6 - 9 - 4 - 7 - 15 - 13 - 15 - 15 - 5 - 8 - 1 - 8 - 9 - 9 - 12 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 83 - 60 - 73 - - 0 - 1 - 0 - 0 - 0 - 0 - 30 - 0 - - - -7 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Horn.....5 - 46 - - - SIXTH - 6 - - TRIANGL - 35 - 0 - 8 - 0 - on - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 2 - - - 1 - 2 - 4 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W4 - W1 - W1 - 1 - 1 - -1 - 3 - - 16 - 17 - 21 - 18 - 6 - 8 - 4 - 7 - 15 - 13 - 15 - 15 - 5 - 6 - 1 - 2 - 9 - 9 - 12 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 87 - 79 - - 0 - 1 - 0 - 0 - 0 - 0 - 30 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Horn.....6 - 47 - - - FOURTH - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 1 - - - 1 - 1 - 5 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - -2 - 0 - 1 - 3 - - 21 - 19 - 15 - 16 - 7 - 8 - 3 - 10 - 12 - 10 - 9 - 9 - 6 - 6 - 6 - 6 - 9 - 8 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 71 - 62 - 78 - - 0 - 0 - 0 - 0 - 0 - 0 - 85 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Horn.....7 - 48 - - - SIXTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 7 - 0 - 0 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 3 - 0 - 0 - - 15 - 14 - 16 - 14 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 19 - 4 - 5 - 8 - 8 - 8 - 9 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 70 - 75 - 86 - 70 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Horns short - 49 - - - SIXTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 3 - 0 - 0 - - 15 - 14 - 16 - 13 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 11 - 8 - 8 - 9 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 91 - 72 - 91 - 70 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Horns - 50 - - - SIXTH - 7 - - TRIANGL - 29 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 5 - 4 - 4 - 4 - 2 - 2 - 3 - 2 - - - 1.5 - 1.49 - 1.5 - 1.5 - no - no - no - no - 16 - 9 - 16 - 16 - - W1 - W1 - W1 - W1 - -3 - 3 - -3 - 0 - - 16 - 15 - 17 - 14 - 31 - 31 - 31 - 9 - 15 - 15 - 15 - 14 - 0 - 0 - 0 - 0 - 9 - 8 - 9 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 82 - 99 - 81 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -19 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 99 - 0 - 0 - 0 - 0 - 0 - - Horns BC - 51 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 3 - -3 - 3 - - 22 - 11 - 17 - 11 - 4 - 3 - 1 - 3 - 13 - 13 - 13 - 13 - 1 - 1 - 1 - 1 - 5 - 7 - 5 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 60 - 93 - 99 - 73 - - 2 - 1 - 2 - 0 - 0 - 0 - 0 - 31 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - JonesBrass - 52 - - - THIRD - 0 - - TRIANGL - 28 - 15 - 16 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 0 - - - 1 - 2 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - 0 - 0 - 0 - 1 - - 16 - 29 - 29 - 16 - 3 - 18 - 10 - 4 - 15 - 12 - 12 - 13 - 1 - 19 - 9 - 1 - 9 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 65 - 66 - 59 - - 0 - 0 - 0 - 0 - 0 - 0 - 90 - 0 - - - 0 - POLY - 2 - FINGER - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - LightBrass - 53 - - - FIFTH - 6 - - TRIANGL - 28 - 15 - 11 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 6 - 2 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W3 - W1 - W1 - 2 - 3 - -3 - -3 - - 16 - 14 - 15 - 14 - 18 - 7 - 15 - 17 - 15 - 12 - 15 - 13 - 0 - 2 - 1 - 2 - 7 - 7 - 8 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 90 - 99 - 83 - - 0 - 0 - 0 - 0 - 0 - 0 - 90 - 0 - - - 0 - POLY - 2 - FINGER - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - MelloBrass - 54 - - - FIFTH - 7 - - TRIANGL - 32 - 6 - 3 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 1 - 2 - - - 0.5 - 0.5 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W4 - W1 - W1 - -1 - -3 - 3 - 1 - - 23 - 18 - 26 - 22 - 31 - 10 - 31 - 15 - 15 - 13 - 15 - 13 - 0 - 0 - 0 - 0 - 9 - 8 - 10 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 71 - 99 - 82 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - MufflBrass - 55 - - - THIRD - 7 - - TRIANGL - 32 - 62 - 6 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 5 - 3 - - - 1 - 1 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 16 - 18 - 15 - 21 - 9 - 9 - 9 - 9 - 13 - 13 - 13 - 13 - 9 - 9 - 9 - 9 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 82 - 66 - 75 - - 1 - 1 - 2 - 1 - 35 - 13 - 99 - 63 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Ornt Brass - 56 - - - FIFTH - 4 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 5 - 4 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W3 - 2 - 0 - -1 - 0 - - 27 - 27 - 21 - 24 - 6 - 6 - 7 - 18 - 8 - 8 - 15 - 15 - 6 - 6 - 6 - 6 - 7 - 7 - 8 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 86 - 92 - 93 - - 1 - 1 - 0 - 1 - 0 - 0 - 0 - 10 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - PianoBrass1 - 57 - - - FIFTH - 7 - - TRIANGL - 35 - 52 - 3 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 6 - 3 - 4 - - - 2 - 4 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - 0 - 0 - 0 - 3 - - 31 - 31 - 10 - 8 - 6 - 5 - 31 - 31 - 15 - 11 - 15 - 15 - 4 - 0 - 0 - 0 - 6 - 15 - 9 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 70 - 99 - 78 - - 2 - 3 - 3 - 0 - 0 - 99 - 99 - 16 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - PianoBrass2 - 58 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 14 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 3 - -3 - 3 - - 22 - 22 - 17 - 11 - 4 - 12 - 1 - 3 - 13 - 11 - 13 - 13 - 1 - 8 - 1 - 1 - 5 - 4 - 5 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 53 - 99 - 72 - - 2 - 2 - 2 - 1 - 0 - 52 - 0 - 31 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - PianoBrass3 - 59 - - - FIRST - 7 - - TRIANGL - 32 - 20 - 31 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W6 - W1 - W4 - 0 - 0 - 0 - 3 - - 27 - 26 - 19 - 16 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 12 - 0 - 0 - 0 - 0 - 11 - 3 - 5 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 73 - 72 - 73 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - POWERBRASS - 60 - - - FIRST - 7 - - TRIANGL - 32 - 20 - 31 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 3 - - 27 - 26 - 19 - 16 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 12 - 0 - 0 - 0 - 0 - 11 - 3 - 5 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 73 - 72 - 73 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - PowerBrass - 61 - - - FOURTH - 6 - - TRIANGL - 35 - 1 - 13 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 2 - - - 1 - 1 - 4 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W3 - W3 - W5 - 0 - 1 - 0 - 0 - - 20 - 12 - 21 - 15 - 7 - 10 - 31 - 31 - 12 - 10 - 11 - 15 - 3 - 4 - 0 - 0 - 9 - 9 - 10 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 84 - 69 - 91 - - 0 - 1 - 0 - 0 - 0 - 0 - 76 - 99 - - - 0 - POLY - 4 - FINGER - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SplatBrass - 62 - - - THIRD - 7 - - TRIANGL - 31 - 25 - 7 - 0 - off - - - 5 - 0 - off - off - off - off - 5 - 3 - 4 - 5 - 2 - 2 - 3 - 2 - - - 1 - 1 - 3.14 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 1 - 0 - 0 - 0 - - 15 - 16 - 31 - 12 - 31 - 31 - 15 - 5 - 15 - 15 - 6 - 14 - 0 - 0 - 0 - 0 - 9 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 70 - 72 - 82 - - 1 - 0 - 0 - 1 - 0 - 0 - 35 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 99 - 0 - 0 - 0 - 0 - 0 - - SpitBoneBC - 63 - - - FIFTH - 7 - - TRIANGL - 33 - 30 - 4 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 1 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W4 - W1 - W1 - 3 - 3 - -3 - -3 - - 24 - 18 - 24 - 18 - 31 - 11 - 31 - 10 - 15 - 14 - 15 - 14 - 0 - 0 - 0 - 0 - 11 - 9 - 11 - 9 - VOF - VOF - VOF - VOF - - - 99 - 95 - 99 - 50 - 50 - 50 - - 98 - 82 - 98 - 83 - - 0 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Brass 1 - 64 - - - FIFTH - 5 - - TRIANGL - 33 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 1 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W8 - W4 - W8 - W4 - 3 - 3 - -3 - -3 - - 24 - 18 - 24 - 18 - 31 - 12 - 31 - 12 - 15 - 6 - 15 - 6 - 0 - 0 - 0 - 0 - 11 - 9 - 11 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 90 - 98 - 85 - - 0 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Brass 2 - 65 - - - THIRD - 7 - - TRIANGL - 31 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 1 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W7 - W7 - W4 - 0 - 0 - 0 - 0 - - 17 - 18 - 15 - 15 - 31 - 10 - 11 - 8 - 15 - 11 - 11 - 14 - 0 - 0 - 0 - 0 - 10 - 7 - 5 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 45 - 77 - 82 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 7 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Brass 3 - 66 - - - FIFTH - 7 - - TRIANGL - 28 - 28 - 10 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 2 - 0 - 1 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W2 - W4 - W2 - -3 - -3 - 3 - 3 - - 17 - 15 - 17 - 15 - 9 - 15 - 9 - 15 - 12 - 14 - 12 - 14 - 0 - 0 - 0 - 0 - 10 - 1 - 10 - 1 - VOF - VOF - VOF - VOF - - - 99 - 96 - 99 - 50 - 50 - 50 - - 99 - 76 - 99 - 76 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Brass 4 - 67 - - - FIFTH - 5 - - TRIANGL - 34 - 33 - 0 - 16 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 2 - - - 1 - 2 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W3 - W1 - W3 - 0 - 1 - 0 - 0 - - 21 - 19 - 21 - 18 - 6 - 14 - 6 - 6 - 12 - 10 - 11 - 10 - 8 - 9 - 6 - 3 - 9 - 10 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 83 - 99 - 91 - - 3 - 1 - 1 - 1 - 0 - 0 - 10 - 33 - - - 0 - POLY - 4 - FINGER - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - TightBrass - 68 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 0 - 0 - 1 - - - 2 - 2 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W7 - W1 - W1 - 2 - 3 - -2 - 0 - - 23 - 21 - 25 - 20 - 14 - 15 - 17 - 14 - 14 - 12 - 15 - 14 - 0 - 0 - 0 - 0 - 10 - 10 - 10 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 95 - 99 - 84 - - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Tpt.Sect.* - 69 - - - FIFTH - 7 - - TRIANGL - 31 - 14 - 28 - 0 - off - - - 3 - 0 - off - off - off - on - 0 - 0 - 0 - 0 - 1 - 3 - 1 - 2 - - - 1.5 - 1.5 - 1.49 - 1.49 - no - no - no - no - 16 - 16 - 9 - 9 - - W2 - W4 - W2 - W4 - -3 - -3 - 3 - 3 - - 10 - 7 - 17 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 2 - 0 - 2 - 4 - 5 - 7 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 79 - 99 - 77 - - 1 - 0 - 1 - 0 - 12 - 39 - 0 - 27 - - - -7 - POLY - 4 - FINGER - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Tpt&Woodwd - 70 - - - FOURTH - 5 - - TRIANGL - 29 - 30 - 53 - 0 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 2 - 5 - 2 - - - 1 - 3.14 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W3 - W1 - W3 - -1 - 0 - -1 - 2 - - 12 - 15 - 18 - 14 - 7 - 16 - 12 - 13 - 11 - 9 - 15 - 15 - 5 - 6 - 5 - 3 - 7 - 7 - 8 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 65 - 76 - 73 - - 0 - 0 - 0 - 0 - 0 - 0 - 69 - 35 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 1 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - WindEns..1 - 71 - - - FOURTH - 5 - - TRIANGL - 29 - 30 - 53 - 0 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 2 - 4 - 2 - - - 1 - 1 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W4 - W2 - -1 - 0 - -1 - 2 - - 13 - 22 - 13 - 31 - 7 - 16 - 12 - 13 - 11 - 9 - 15 - 15 - 5 - 6 - 7 - 3 - 7 - 7 - 8 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 71 - 76 - 80 - - 0 - 0 - 0 - 0 - 0 - 0 - 69 - 35 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 1 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - WindEns..2 - 72 - - - FIFTH - 7 - - TRIANGL - 32 - 6 - 4 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 1 - 3 - 1 - - - 2 - 2 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 2 - -2 - -3 - - 14 - 31 - 16 - 18 - 31 - 31 - 31 - 8 - 15 - 15 - 15 - 14 - 0 - 0 - 0 - 0 - 11 - 7 - 12 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 65 - 86 - 76 - - 1 - 0 - 0 - 1 - 0 - 0 - 26 - 54 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Wood Wind - 73 - - - FIFTH - 7 - - TRIANGL - 28 - 29 - 16 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 5 - - - 1 - 1 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 3 - - 31 - 31 - 31 - 19 - 18 - 9 - 9 - 5 - 10 - 0 - 14 - 10 - 8 - 0 - 5 - 0 - 8 - 11 - 8 - 14 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 77 - 89 - 89 - - 0 - 2 - 0 - 0 - 0 - 67 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - pianohorn - 74 - - - - Accordion - 1 - - THIRD - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 5 - 2 - off - off - on - on - 0 - 0 - 2 - 2 - 0 - 0 - 0 - 0 - - - 2 - 1 - 6 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W2 - W7 - 0 - -1 - 1 - 0 - - 15 - 19 - 31 - 15 - 4 - 4 - 4 - 4 - 2 - 2 - 2 - 2 - 3 - 3 - 3 - 3 - 10 - 7 - 7 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 67 - 56 - 64 - - 0 - 0 - 0 - 0 - 16 - 0 - 35 - 16 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 99 - 0 - 0 - 0 - 0 - 0 - - Accordion* - 0 - - - FIFTH - 3 - - TRIANGL - 28 - 10 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 0 - 0 - 2 - - - 2 - 1 - 3 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W6 - W2 - W2 - W8 - 3 - 3 - -3 - -3 - - 14 - 31 - 14 - 20 - 31 - 31 - 31 - 18 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 8 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 70 - 83 - 84 - - 1 - 1 - 1 - 1 - 6 - 0 - 14 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Accordion - 1 - - - FIFTH - 5 - - TRIANGL - 18 - 0 - 3 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 6 - 6 - 2 - - - 1 - 4 - 2 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W1 - W1 - W3 - 3 - -3 - 1 - 0 - - 14 - 31 - 18 - 31 - 31 - 4 - 5 - 5 - 15 - 15 - 13 - 15 - 0 - 0 - 3 - 3 - 10 - 5 - 10 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 73 - 99 - 62 - - 0 - 0 - 0 - 0 - 0 - 0 - 99 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Accordion1 - 2 - - - THIRD - 7 - - TRIANGL - 18 - 0 - 3 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 1 - - - 1 - 4 - 2 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W1 - W1 - W1 - 3 - -3 - 3 - -3 - - 14 - 31 - 31 - 16 - 31 - 4 - 11 - 6 - 15 - 15 - 15 - 14 - 0 - 0 - 0 - 0 - 10 - 5 - 10 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 55 - 54 - 65 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Accordion2 - 3 - - - THIRD - 7 - - TRIANGL - 18 - 0 - 3 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 4 - 3 - - - 1 - 4 - 4 - 9 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W3 - W1 - W1 - 3 - -3 - 3 - -3 - - 14 - 31 - 31 - 16 - 31 - 4 - 11 - 6 - 15 - 15 - 15 - 14 - 0 - 0 - 0 - 0 - 10 - 5 - 10 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 55 - 54 - 62 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Accordion3 - 4 - - - THIRD - 7 - - TRIANGL - 18 - 0 - 3 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 6 - 5 - 2 - - - 2 - 2 - 2 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W2 - 3 - -3 - 3 - -3 - - 14 - 31 - 31 - 16 - 31 - 4 - 11 - 6 - 15 - 15 - 15 - 14 - 0 - 0 - 0 - 0 - 10 - 5 - 10 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 61 - 54 - 62 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Accordion4 - 5 - - - SECOND - 7 - - TRIANGL - 25 - 0 - 3 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 1 - - - 1 - 4 - 2 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - -3 - 3 - -3 - - 14 - 31 - 31 - 16 - 31 - 4 - 11 - 6 - 15 - 15 - 15 - 14 - 0 - 0 - 0 - 0 - 10 - 5 - 10 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 73 - 70 - 74 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Squeezebox - 6 - - - - Bag - 2 - - FIFTH - 4 - - TRIANGL - 38 - 60 - 6 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 6 - 5 - - - 3 - 1 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W3 - W1 - W1 - 0 - 0 - 0 - 0 - - 19 - 23 - 19 - 24 - 7 - 10 - 7 - 10 - 15 - 13 - 12 - 12 - 6 - 4 - 6 - 4 - 10 - 2 - 10 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 78 - 96 - 87 - - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bag Pipe - 0 - - - - Bassoon - 3 - - FIRST - 7 - - TRIANGL - 31 - 8 - 7 - 10 - off - - - 5 - 3 - off - on - on - on - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 1 - - - 2 - 0.5 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 15 - 25 - 16 - 16 - 31 - 31 - 31 - 23 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 9 - 7 - 1 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 91 - 78 - 75 - 68 - - 0 - 0 - 0 - 0 - 0 - 53 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 35 - 30 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bassoon - 0 - - - FIFTH - 3 - - TRIANGL - 37 - 41 - 0 - 0 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 4 - 5 - - - 1 - 1 - 2 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W4 - 1 - 0 - 0 - 0 - - 18 - 18 - 18 - 18 - 13 - 13 - 13 - 0 - 14 - 13 - 13 - 13 - 9 - 9 - 9 - 3 - 10 - 10 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 65 - 98 - 80 - - 0 - 0 - 0 - 0 - 0 - 65 - 67 - 71 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bassoon..1 - 1 - - - FIRST - 4 - - TRIANGL - 32 - 12 - 6 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 5 - 4 - 2 - - - 2 - 0.5 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W3 - W1 - 0 - 0 - 0 - 0 - - 15 - 24 - 17 - 17 - 31 - 31 - 31 - 22 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 8 - 8 - 1 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 88 - 83 - 69 - 56 - - 0 - 0 - 0 - 0 - 0 - 71 - 0 - 0 - - - -12 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bassoon..2 - 2 - - - SIXTH - 6 - - TRIANGL - 39 - 33 - 0 - 38 - off - - - 3 - 1 - off - off - on - off - 0 - 0 - 0 - 0 - 3 - 3 - 5 - 1 - - - 2 - 4 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W1 - W3 - W1 - 0 - 0 - 0 - 0 - - 18 - 19 - 19 - 18 - 24 - 6 - 24 - 24 - 15 - 15 - 15 - 15 - 6 - 6 - 6 - 6 - 9 - 9 - 9 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 69 - - 0 - 0 - 0 - 0 - 0 - 71 - 0 - 99 - - - -12 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bassoon..3 - 4 - - - FIFTH - 3 - - TRIANGL - 39 - 33 - 0 - 38 - off - - - 2 - 1 - off - off - on - off - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 1 - - - 1 - 2 - 2 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 18 - 18 - 19 - 19 - 12 - 12 - 13 - 6 - 14 - 13 - 14 - 14 - 6 - 6 - 9 - 3 - 10 - 10 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 73 - 99 - 78 - - 1 - 1 - 0 - 0 - 0 - 71 - 0 - 99 - - - -12 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bassoon..4 - 5 - - - SIXTH - 1 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 6 - 2 - - - 3 - 0.5 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 2 - 3 - - 16 - 22 - 15 - 22 - 31 - 16 - 6 - 8 - 15 - 15 - 15 - 7 - 0 - 0 - 0 - 5 - 10 - 4 - 11 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 85 - 99 - 89 - - 1 - 0 - 0 - 1 - 0 - 70 - 0 - 25 - - - -12 - POLY - 7 - FULL - 1 - POR - 99 - 0 - 0 - 50 - 0 - 30 - 10 - 50 - 99 - 0 - 0 - 0 - 0 - 0 - - BassoonSyn - 6 - - - - Clarinet - 4 - - THIRD - 0 - - TRIANGL - 37 - 0 - 0 - 41 - off - - - 1 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 4 - 1 - - - 1 - 2 - 4 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 1 - 0 - 0 - 1 - - 16 - 31 - 31 - 19 - 31 - 27 - 17 - 18 - 15 - 14 - 12 - 13 - 0 - 6 - 0 - 0 - 11 - 4 - 6 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 85 - 63 - 82 - 71 - - 1 - 0 - 0 - 1 - 0 - 65 - 90 - 34 - - - -24 - POLY - 2 - FINGER - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bass Clair - 0 - - - THIRD - 7 - - TRIANGL - 34 - 20 - 10 - 24 - off - - - 5 - 3 - off - off - on - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 1 - - - 1 - 1 - 5 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 16 - 12 - 31 - 19 - 31 - 20 - 17 - 18 - 15 - 14 - 12 - 13 - 0 - 0 - 0 - 0 - 11 - 5 - 6 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 85 - 59 - 79 - 76 - - 0 - 0 - 0 - 1 - 0 - 60 - 90 - 34 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - Clairnet.1 - 1 - - - FIFTH - 7 - - TRIANGL - 36 - 39 - 0 - 0 - on - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 5 - 1 - - - 2 - 4 - 4 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W4 - 0 - 1 - 0 - 2 - - 15 - 31 - 16 - 30 - 6 - 6 - 12 - 12 - 14 - 15 - 14 - 15 - 6 - 4 - 12 - 15 - 7 - 6 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 70 - 84 - 51 - - 1 - 0 - 0 - 0 - 40 - 92 - 71 - 65 - - - -24 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Clairnet.2 - 2 - - - SEVENTH - 7 - - TRIANGL - 36 - 2 - 31 - 81 - off - - - 1 - 1 - on - on - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 1 - - - 0.5 - 1 - 0.5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 18 - 31 - 18 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 5 - 4 - 5 - 6 - 7 - 6 - 9 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 80 - 99 - 81 - - 1 - 0 - 0 - 0 - 14 - 52 - 14 - 54 - - - 12 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Clairnet.3 - 3 - - - FIRST - 4 - - TRIANGL - 20 - 0 - 0 - 16 - off - - - 6 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 4 - 3 - - - 1 - 2 - 4 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W4 - 0 - 0 - 0 - 3 - - 31 - 11 - 19 - 31 - 7 - 6 - 6 - 7 - 7 - 7 - 7 - 7 - 7 - 7 - 7 - 7 - 4 - 4 - 3 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 74 - 54 - 71 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - ClaraPiano - 4 - - - THIRD - 0 - - TRIANGL - 31 - 20 - 7 - 16 - off - - - 5 - 3 - off - off - on - off - 0 - 0 - 0 - 0 - 2 - 2 - 3 - 2 - - - 1 - 2 - 3 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W3 - W1 - 0 - 0 - 0 - 0 - - 17 - 14 - 19 - 18 - 31 - 20 - 17 - 2 - 15 - 14 - 11 - 14 - 0 - 0 - 0 - 0 - 9 - 5 - 6 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 89 - 72 - 86 - 81 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 9 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 30 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Clarinet - 5 - - - THIRD - 7 - - TRIANGL - 30 - 10 - 3 - 5 - off - - - 6 - 3 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 3 - 3 - 1 - - - 1 - 2 - 5 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W1 - W1 - 0 - 0 - 0 - 0 - - 17 - 21 - 16 - 21 - 31 - 15 - 16 - 10 - 15 - 10 - 14 - 14 - 0 - 0 - 0 - 0 - 10 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 84 - 65 - 75 - - 1 - 2 - 1 - 0 - 0 - 27 - 31 - 47 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 26 - 15 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Clarinet 1 - 6 - - - THIRD - 4 - - TRIANGL - 30 - 10 - 3 - 5 - off - - - 6 - 3 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 1 - 2 - - - 1 - 2 - 3 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W6 - W3 - W1 - 0 - 0 - 0 - 0 - - 17 - 15 - 18 - 31 - 31 - 15 - 18 - 31 - 15 - 10 - 10 - 15 - 0 - 0 - 0 - 0 - 11 - 9 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 76 - 74 - 75 - - 1 - 2 - 1 - 0 - 0 - 82 - 58 - 15 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 26 - 15 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Clarinet 2 - 7 - - - FIFTH - 5 - - TRIANGL - 38 - 7 - 3 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 4 - 2 - - - 1 - 2 - 0.5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 1 - 0 - 0 - 1 - - 16 - 16 - 15 - 15 - 4 - 4 - 16 - 11 - 15 - 13 - 12 - 13 - 3 - 3 - 3 - 6 - 9 - 8 - 7 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 68 - 90 - 71 - - 1 - 0 - 0 - 1 - 0 - 60 - 4 - 34 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - HolowClair - 8 - - - SECOND - 7 - - TRIANGL - 29 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 3 - 2 - 2 - - - 1 - 4 - 7 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W2 - W8 - 0 - 0 - -3 - 2 - - 15 - 14 - 14 - 7 - 8 - 7 - 5 - 6 - 13 - 12 - 11 - 15 - 0 - 1 - 1 - 1 - 6 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 69 - 77 - 55 - - 2 - 1 - 3 - 2 - 0 - 27 - 16 - 33 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 22 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 4 - - SynClarnet - 9 - - - - EnglishHorn - 5 - - FIFTH - 2 - - TRIANGL - 29 - 60 - 0 - 36 - off - - - 2 - 1 - on - off - off - off - 6 - 4 - 3 - 0 - 5 - 6 - 6 - 2 - - - 3 - 2 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W3 - 0 - 0 - 0 - 0 - - 18 - 31 - 16 - 20 - 7 - 10 - 10 - 10 - 13 - 12 - 11 - 12 - 6 - 4 - 4 - 4 - 10 - 2 - 10 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 71 - 99 - 75 - - 0 - 0 - 0 - 0 - 10 - 58 - 92 - 82 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - English Hn - 0 - - - - FlugelHorn - 6 - - THIRD - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 1 - 2 - 1 - - - 1 - 1 - 2.82 - 1 - no - no - no - no - 8 - 8 - 48 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 3 - - 14 - 16 - 21 - 14 - 7 - 10 - 17 - 10 - 13 - 0 - 6 - 13 - 1 - 0 - 0 - 0 - 8 - 10 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 61 - 79 - 77 - - 1 - 1 - 1 - 1 - 0 - 13 - 5 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Flugel * - 0 - - - THIRD - 5 - - TRIANGL - 35 - 25 - 4 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 6 - 1 - - - 1 - 1 - 1.73 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 1 - 1 - 1 - 0 - - 16 - 15 - 31 - 12 - 31 - 31 - 15 - 5 - 15 - 15 - 0 - 0 - 0 - 0 - 0 - 0 - 9 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 60 - 55 - 81 - - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - FlugelHorn - 1 - - - - Flute - 7 - - FOURTH - 0 - - TRIANGL - 30 - 36 - 7 - 0 - off - - - 5 - 2 - on - on - on - on - 0 - 4 - 5 - 2 - 2 - 3 - 3 - 2 - - - 1.5 - 3 - 2.99 - 8.98 - no - no - no - no - 16 - 8 - 10 - 14 - - W2 - W4 - W4 - W2 - 0 - -3 - 3 - -2 - - 13 - 5 - 4 - 2 - 31 - 6 - 5 - 2 - 15 - 13 - 12 - 15 - 0 - 1 - 1 - 1 - 4 - 2 - 1 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 80 - 77 - 60 - - 1 - 0 - 0 - 0 - 0 - 38 - 18 - 0 - - - -7 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 21 - 0 - 8 - 0 - 50 - 14 - 0 - 0 - 0 - 0 - 0 - - AdditivFlt - 0 - - - FOURTH - 5 - - TRIANGL - 35 - 41 - 7 - 54 - off - - - 1 - 1 - off - off - on - off - 0 - 0 - 0 - 0 - 4 - 4 - 5 - 0 - - - 1 - 1 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 13 - 12 - 22 - 15 - 18 - 19 - 31 - 15 - 15 - 15 - 15 - 15 - 4 - 7 - 4 - 5 - 9 - 7 - 1 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 83 - 60 - 61 - 40 - - 0 - 0 - 0 - 0 - 0 - 71 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Alto Flute - 1 - - - FOURTH - 5 - - TRIANGL - 35 - 41 - 7 - 54 - off - - - 1 - 1 - off - off - on - off - 0 - 0 - 0 - 0 - 5 - 4 - 4 - 3 - - - 1 - 0.5 - 0.5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 13 - 12 - 22 - 15 - 18 - 19 - 31 - 15 - 15 - 15 - 15 - 15 - 4 - 7 - 4 - 5 - 9 - 7 - 1 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 60 - 65 - 50 - - 0 - 0 - 0 - 0 - 0 - 71 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bass Flute1 - 2 - - - FOURTH - 5 - - TRIANGL - 35 - 41 - 7 - 54 - off - - - 1 - 1 - off - off - on - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0.5 - 0.5 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 13 - 12 - 22 - 15 - 18 - 19 - 31 - 15 - 15 - 15 - 15 - 15 - 4 - 7 - 4 - 5 - 9 - 7 - 1 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 60 - 65 - 50 - - 0 - 0 - 0 - 0 - 0 - 71 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bass Flute2 - 3 - - - THIRD - 0 - - TRIANGL - 29 - 24 - 6 - 25 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 6 - 2 - 3 - - - 1 - 1.76 - 1.12 - 1 - no - no - no - no - 8 - 12 - 10 - 8 - - W1 - W1 - W1 - W1 - -1 - 1 - -3 - 3 - - 15 - 29 - 29 - 16 - 3 - 18 - 10 - 3 - 15 - 14 - 13 - 15 - 1 - 18 - 9 - 2 - 9 - 7 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 71 - 89 - 79 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 25 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 49 - 0 - 41 - 18 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Flute * - 4 - - - FOURTH - 7 - - TRIANGL - 30 - 7 - 7 - 13 - off - - - 5 - 3 - on - on - on - on - 0 - 0 - 0 - 0 - 2 - 3 - 2 - 2 - - - 1 - 1 - 1 - 1.73 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W4 - 0 - 0 - 0 - 0 - - 15 - 25 - 18 - 16 - 31 - 31 - 25 - 22 - 15 - 15 - 15 - 7 - 0 - 0 - 0 - 0 - 9 - 7 - 1 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 71 - 58 - 73 - - 1 - 0 - 0 - 0 - 0 - 11 - 13 - 0 - - - 12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 30 - 64 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Flute - 5 - - - FOURTH - 7 - - TRIANGL - 31 - 8 - 32 - 2 - off - - - 4 - 2 - on - on - on - on - 0 - 0 - 0 - 0 - 3 - 2 - 2 - 7 - - - 2 - 2 - 3 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 3 - 0 - 3 - - 15 - 11 - 17 - 17 - 4 - 4 - 16 - 14 - 15 - 10 - 10 - 9 - 0 - 0 - 2 - 3 - 9 - 5 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 77 - 76 - 57 - - 1 - 2 - 1 - 1 - 0 - 24 - 27 - 14 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Flute 1 - 6 - - - FOURTH - 7 - - TRIANGL - 31 - 8 - 32 - 2 - off - - - 4 - 2 - on - on - on - on - 0 - 0 - 0 - 0 - 3 - 2 - 2 - 7 - - - 2 - 2 - 4 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 3 - 0 - 3 - - 15 - 11 - 17 - 17 - 4 - 4 - 16 - 14 - 15 - 13 - 10 - 9 - 0 - 0 - 2 - 3 - 9 - 5 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 77 - 76 - 57 - - 1 - 2 - 1 - 1 - 0 - 24 - 27 - 14 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Flute 1* - 7 - - - FIFTH - 7 - - TRIANGL - 31 - 8 - 32 - 2 - off - - - 4 - 2 - on - on - on - on - 0 - 0 - 0 - 0 - 3 - 2 - 3 - 1 - - - 2.99 - 2.99 - 3 - 6 - no - no - no - no - 10 - 10 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 3 - -3 - -3 - - 15 - 19 - 15 - 19 - 0 - 4 - 0 - 4 - 15 - 14 - 15 - 14 - 0 - 0 - 0 - 0 - 9 - 5 - 9 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 72 - 99 - 53 - - 1 - 2 - 1 - 2 - 0 - 3 - 0 - 3 - - - -19 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Flute 2 - 8 - - - FOURTH - 5 - - TRIANGL - 30 - 20 - 45 - 99 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 4 - 5 - 4 - - - 2 - 2 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W4 - W1 - W3 - 0 - -1 - 1 - 0 - - 17 - 22 - 11 - 27 - 0 - 21 - 0 - 25 - 13 - 13 - 13 - 13 - 3 - 18 - 3 - 0 - 9 - 1 - 9 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 86 - 53 - 93 - - 0 - 0 - 0 - 0 - 20 - 89 - 70 - 69 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 1 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - Flute....1 - 9 - - - THIRD - 0 - - TRIANGL - 28 - 22 - 42 - 0 - off - - - 3 - 1 - off - on - on - off - 0 - 0 - 0 - 0 - 4 - 4 - 5 - 2 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W5 - W1 - 0 - 0 - 0 - 0 - - 15 - 18 - 31 - 27 - 0 - 21 - 0 - 25 - 13 - 13 - 13 - 13 - 3 - 18 - 3 - 0 - 9 - 1 - 9 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 91 - 88 - 60 - 75 - - 0 - 0 - 0 - 0 - 20 - 89 - 70 - 69 - - - 12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 1 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Flute....2 - 10 - - - THIRD - 1 - - TRIANGL - 32 - 20 - 53 - 0 - off - - - 1 - 1 - off - on - on - off - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 0 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 13 - 15 - 31 - 27 - 0 - 13 - 0 - 25 - 13 - 15 - 13 - 13 - 3 - 15 - 3 - 0 - 9 - 9 - 9 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 91 - 41 - 51 - 65 - - 0 - 0 - 0 - 0 - 20 - 0 - 70 - 69 - - - 12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 1 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Flute....3 - 11 - - - THIRD - 7 - - TRIANGL - 31 - 9 - 15 - 30 - off - - - 5 - 3 - off - on - on - off - 0 - 0 - 0 - 0 - 4 - 5 - 5 - 3 - - - 1 - 1 - 2.05 - 2 - no - no - no - no - 8 - 8 - 11 - 8 - - W1 - W2 - W1 - W2 - 3 - -3 - 3 - -3 - - 16 - 31 - 25 - 27 - 26 - 18 - 19 - 18 - 15 - 14 - 6 - 13 - 0 - 0 - 0 - 0 - 8 - 5 - 5 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 52 - 83 - 59 - - 1 - 0 - 0 - 1 - 0 - 46 - 0 - 34 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Flute....4 - 12 - - - THIRD - 7 - - TRIANGL - 31 - 9 - 15 - 30 - off - - - 5 - 3 - off - on - on - off - 0 - 0 - 0 - 0 - 0 - 2 - 1 - 1 - - - 1 - 4 - 5.65 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W2 - 3 - -3 - 3 - -3 - - 16 - 31 - 25 - 27 - 26 - 18 - 19 - 18 - 15 - 14 - 6 - 13 - 0 - 0 - 0 - 0 - 8 - 5 - 5 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 52 - 83 - 59 - - 1 - 0 - 0 - 1 - 0 - 46 - 0 - 34 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Flute....4* - 13 - - - FOURTH - 7 - - TRIANGL - 35 - 4 - 7 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 4 - 5 - - - 1 - 2 - 1 - 2.82 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 16 - 21 - 16 - 16 - 31 - 31 - 31 - 23 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 0 - 9 - 7 - 1 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 87 - 69 - 59 - 54 - - 0 - 0 - 0 - 0 - 0 - 71 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - Flute....5 - 14 - - - FOURTH - 7 - - TRIANGL - 32 - 17 - 18 - 51 - off - - - 5 - 1 - off - off - on - off - 0 - 0 - 0 - 0 - 2 - 1 - 1 - 0 - - - 1 - 1 - 2 - 25.95 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 15 - 31 - 31 - 19 - 31 - 20 - 20 - 30 - 15 - 14 - 1 - 14 - 0 - 0 - 0 - 0 - 11 - 5 - 15 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 81 - 77 - 99 - - 1 - 0 - 0 - 1 - 0 - 36 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 55 - 14 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Jazz Flute - 15 - - - THIRD - 0 - - TRIANGL - 30 - 13 - 8 - 26 - off - - - 5 - 3 - off - on - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 3 - 2 - - - 1 - 2 - 5.65 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W3 - W1 - 3 - -3 - 3 - -3 - - 16 - 31 - 25 - 27 - 31 - 20 - 20 - 18 - 15 - 14 - 6 - 13 - 0 - 0 - 0 - 0 - 8 - 5 - 6 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 64 - 80 - 66 - - 1 - 2 - 0 - 1 - 0 - 0 - 0 - 20 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 35 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Pan Floot - 16 - - - FIFTH - 7 - - TRIANGL - 46 - 14 - 9 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 6 - 5 - - - 3 - 3 - 0.5 - 6.28 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 1 - -1 - -1 - - 16 - 31 - 18 - 18 - 6 - 6 - 6 - 21 - 14 - 9 - 13 - 15 - 2 - 3 - 3 - 15 - 9 - 7 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 62 - 58 - 70 - - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 46 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Pan Flute1 - 17 - - - FOURTH - 7 - - TRIANGL - 31 - 13 - 14 - 30 - off - - - 5 - 3 - off - on - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 1 - - - 1 - 2 - 1 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - 3 - -3 - 3 - -3 - - 16 - 31 - 25 - 27 - 31 - 20 - 20 - 18 - 15 - 14 - 7 - 13 - 0 - 0 - 0 - 0 - 8 - 5 - 6 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 46 - 55 - 70 - - 1 - 0 - 0 - 1 - 0 - 36 - 0 - 34 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Pan Flute2 - 18 - - - FIFTH - 0 - - SHOLD - 99 - 0 - 20 - 55 - off - - - 4 - 1 - off - off - off - on - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W1 - W4 - -1 - 0 - 0 - 0 - - 16 - 17 - 16 - 17 - 4 - 23 - 4 - 23 - 7 - 6 - 7 - 6 - 4 - 1 - 4 - 1 - 10 - 1 - 10 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 53 - 59 - 99 - - 0 - 0 - 3 - 0 - 17 - 0 - 17 - 0 - - - 12 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - Pan Flute3 - 19 - - - FIFTH - 0 - - SHOLD - 99 - 0 - 12 - 19 - off - - - 6 - 3 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 3 - 2 - 0 - - - 1 - 4 - 1 - 8.04 - no - no - no - no - 8 - 8 - 8 - 10 - - W2 - W1 - W1 - W1 - 0 - 0 - -1 - -3 - - 15 - 31 - 12 - 21 - 31 - 31 - 25 - 25 - 15 - 15 - 15 - 15 - 4 - 17 - 10 - 7 - 7 - 15 - 8 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 90 - 89 - 55 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 59 - - - 0 - POLY - 2 - FULL - 0 - POR - 59 - 0 - 0 - 31 - 0 - 0 - 0 - 49 - 0 - 0 - 0 - 0 - 0 - 0 - - PanFlute * - 20 - - - FIFTH - 0 - - TRIANGL - 35 - 41 - 7 - 54 - off - - - 1 - 1 - off - off - on - off - 0 - 0 - 0 - 0 - 5 - 5 - 6 - 7 - - - 1 - 1 - 1 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W5 - W3 - W3 - -2 - 1 - 0 - 2 - - 19 - 31 - 21 - 31 - 21 - 31 - 31 - 18 - 10 - 15 - 15 - 10 - 21 - 29 - 0 - 18 - 9 - 7 - 10 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 72 - 99 - 90 - - 0 - 0 - 0 - 0 - 0 - 71 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Perc Flute1 - 21 - - - FIFTH - 0 - - TRIANGL - 35 - 41 - 7 - 54 - off - - - 1 - 1 - off - off - on - off - 0 - 0 - 0 - 0 - 0 - 0 - 1 - 1 - - - 1 - 1 - 1 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W5 - W1 - W1 - -2 - 1 - 0 - 2 - - 19 - 31 - 21 - 31 - 21 - 31 - 31 - 18 - 10 - 15 - 15 - 10 - 21 - 29 - 0 - 18 - 9 - 7 - 10 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 72 - 99 - 90 - - 0 - 0 - 0 - 0 - 0 - 71 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Perc Flute2 - 22 - - - FOURTH - 0 - - TRIANGL - 28 - 4 - 11 - 0 - on - - - 5 - 2 - on - on - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - - - 1.5 - 3 - 2.99 - 6 - no - no - no - no - 16 - 8 - 10 - 8 - - W1 - W1 - W1 - W1 - 0 - -3 - 3 - -2 - - 16 - 31 - 31 - 31 - 8 - 25 - 20 - 23 - 14 - 13 - 11 - 13 - 0 - 0 - 9 - 17 - 6 - 1 - 9 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 71 - 93 - 85 - - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - - - -19 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Perc Flute3 - 23 - - - FOURTH - 5 - - TRIANGL - 35 - 18 - 10 - 53 - off - - - 1 - 1 - off - off - on - off - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 3 - - - 2 - 2 - 1 - 2.05 - no - no - no - no - 8 - 8 - 8 - 11 - - W1 - W4 - W1 - W1 - 0 - 0 - 0 - 0 - - 15 - 15 - 16 - 16 - 31 - 31 - 31 - 23 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 0 - 9 - 7 - 1 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 59 - 44 - 52 - - 0 - 0 - 0 - 0 - 0 - 71 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Soft Flute - 24 - - - SEVENTH - 5 - - TRIANGL - 33 - 0 - 5 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 3 - 5 - 3 - - - 1 - 2 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -3 - 0 - 0 - - 18 - 21 - 7 - 24 - 1 - 28 - 1 - 18 - 13 - 13 - 13 - 14 - 3 - 21 - 3 - 21 - 10 - 10 - 10 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 88 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 2 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Song Flute - 25 - - - FIFTH - 2 - - SHOLD - 99 - 0 - 12 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 4 - 3 - - - 1 - 5 - 7 - 10.99 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W5 - 0 - 0 - 0 - 0 - - 13 - 18 - 13 - 18 - 24 - 24 - 14 - 24 - 14 - 13 - 7 - 11 - 3 - 0 - 4 - 1 - 4 - 2 - 4 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 75 - 99 - 88 - - 2 - 2 - 2 - 0 - 0 - 0 - 0 - 22 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SynthFlute - 26 - - - - FrenchHorn - 8 - - FIFTH - 6 - - TRIANGL - 22 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 2 - 1 - 2 - - - 0.5 - 0.5 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 3 - 3 - -3 - - 22 - 10 - 14 - 12 - 13 - 8 - 31 - 8 - 15 - 15 - 15 - 15 - 0 - 5 - 0 - 3 - 6 - 7 - 6 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 90 - 99 - 84 - - 0 - 0 - 0 - 0 - 0 - 10 - 29 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Fr.Horn * - 0 - - - SECOND - 7 - - TRIANGL - 26 - 25 - 8 - 10 - off - - - 4 - 2 - on - on - on - on - 0 - 0 - 0 - 0 - 2 - 2 - 3 - 2 - - - 1 - 1 - 3.14 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 1 - -3 - 3 - -3 - - 12 - 14 - 31 - 8 - 31 - 31 - 14 - 5 - 15 - 15 - 0 - 0 - 0 - 0 - 0 - 0 - 6 - 6 - 6 - 6 - VOF - V24 - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 67 - 59 - 71 - - 1 - 0 - 0 - 1 - 0 - 0 - 14 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 30 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - FrenchHorn - 1 - - - THIRD - 7 - - TRIANGL - 37 - 0 - 4 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 3 - 5 - 1 - - - 1 - 1 - 3.14 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 1 - 1 - 1 - 0 - - 18 - 15 - 13 - 15 - 31 - 31 - 15 - 5 - 15 - 15 - 0 - 0 - 0 - 0 - 0 - 0 - 9 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 54 - 57 - 75 - - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - FrnchHorn1 - 2 - - - FOURTH - 3 - - TRIANGL - 37 - 0 - 10 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 5 - - - 1 - 1 - 4 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W1 - 0 - 0 - 0 - 0 - - 18 - 15 - 13 - 15 - 31 - 31 - 15 - 5 - 15 - 15 - 0 - 0 - 0 - 0 - 0 - 0 - 9 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 72 - 64 - 78 - - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - FrnchHorn2 - 3 - - - - Harmonica - 9 - - FIFTH - 4 - - TRIANGL - 41 - 0 - 0 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 3 - - - 1 - 1 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 3 - 0 - 0 - - 29 - 18 - 16 - 16 - 31 - 12 - 31 - 13 - 15 - 15 - 15 - 15 - 0 - 6 - 4 - 1 - 13 - 9 - 12 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 78 - 79 - 99 - 78 - - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 10 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Harmonic.1 - 0 - - - FIFTH - 5 - - TRIANGL - 41 - 0 - 0 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 2 - - - 1 - 0.5 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - 0 - 3 - 0 - 0 - - 29 - 18 - 16 - 11 - 31 - 12 - 31 - 13 - 15 - 15 - 15 - 15 - 0 - 6 - 4 - 1 - 13 - 9 - 12 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 86 - 90 - 87 - - 0 - 1 - 1 - 1 - 0 - 0 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Harmonic.2 - 1 - - - SECOND - 3 - - TRIANGL - 31 - 33 - 0 - 37 - off - - - 3 - 2 - on - off - on - off - 0 - 0 - 4 - 0 - 0 - 0 - 0 - 1 - - - 1 - 0.5 - 5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 3 - 0 - 0 - - 13 - 12 - 14 - 13 - 5 - 8 - 9 - 13 - 15 - 12 - 15 - 13 - 1 - 0 - 1 - 1 - 9 - 9 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 62 - 60 - 66 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 41 - 0 - 0 - 0 - 0 - 0 - - Harmonica* - 2 - - - FIRST - 0 - - TRIANGL - 35 - 15 - 2 - 27 - off - - - 5 - 3 - off - on - on - on - 0 - 0 - 0 - 0 - 3 - 1 - 2 - 1 - - - 3 - 1 - 3 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W6 - W6 - W6 - 1 - -1 - 1 - 2 - - 13 - 12 - 12 - 16 - 11 - 11 - 14 - 9 - 14 - 14 - 13 - 13 - 1 - 2 - 2 - 2 - 9 - 3 - 8 - 6 - VOF - V48 - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 79 - 75 - 62 - - 2 - 2 - 3 - 2 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FINGER - 0 - POR - 99 - 0 - 0 - 40 - 80 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Harmonica1 - 3 - - - SEVENTH - 0 - - TRIANGL - 29 - 4 - 1 - 39 - off - - - 5 - 1 - on - on - on - off - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 2 - - - 1 - 1 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W5 - W6 - W4 - W5 - 0 - 0 - 0 - 0 - - 10 - 12 - 12 - 14 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 10 - 9 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 95 - 92 - 75 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Harmonica2 - 4 - - - FIFTH - 0 - - TRIANGL - 31 - 0 - 11 - 0 - off - - - 4 - 1 - on - on - on - on - 7 - 3 - 3 - 7 - 4 - 3 - 5 - 1 - - - 2 - 1 - 1 - 7.07 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W2 - 0 - 0 - 0 - -3 - - 13 - 31 - 15 - 31 - 31 - 31 - 16 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 9 - 0 - 8 - 3 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 59 - 97 - 41 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Harmonica3 - 5 - - - FIFTH - 0 - - SAWUP - 29 - 60 - 4 - 0 - off - - - 0 - 0 - off - off - off - off - 7 - 3 - 3 - 7 - 5 - 4 - 6 - 2 - - - 1 - 1 - 1 - 14.13 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W3 - W2 - 0 - 0 - 0 - -3 - - 13 - 16 - 15 - 31 - 31 - 10 - 16 - 9 - 15 - 6 - 15 - 10 - 0 - 5 - 9 - 31 - 8 - 10 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 75 - 91 - 47 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Harmonica4 - 6 - - - SEVENTH - 0 - - TRIANGL - 31 - 0 - 11 - 0 - off - - - 4 - 1 - on - on - on - on - 7 - 3 - 3 - 7 - 5 - 2 - 5 - 2 - - - 1 - 0.5 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W4 - W1 - W1 - 0 - 0 - 0 - -3 - - 13 - 31 - 15 - 31 - 31 - 31 - 16 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 9 - 0 - 8 - 7 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 59 - 90 - 42 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Harmonica5 - 7 - - - - Oboe - 10 - - THIRD - 4 - - TRIANGL - 35 - 11 - 8 - 10 - off - - - 5 - 1 - on - on - on - on - 7 - 0 - 7 - 0 - 0 - 0 - 0 - 0 - - - 2 - 0.5 - 3 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 9 - 15 - 14 - 11 - 15 - 13 - 24 - 17 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 9 - 8 - 8 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 84 - 64 - 80 - 99 - - 3 - 3 - 3 - 3 - 0 - 18 - 99 - 99 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 24 - 30 - 50 - 99 - 0 - 0 - 0 - 0 - 0 - - BC1 Oboe - 0 - - - FIFTH - 0 - - TRIANGL - 34 - 20 - 25 - 27 - off - - - 3 - 2 - off - on - off - on - 0 - 0 - 0 - 0 - 1 - 2 - 1 - 3 - - - 3 - 2 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 3 - -3 - -3 - - 15 - 31 - 16 - 28 - 7 - 10 - 7 - 10 - 15 - 13 - 15 - 12 - 0 - 0 - 0 - 0 - 10 - 2 - 10 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 58 - 99 - 51 - - 1 - 0 - 1 - 0 - 9 - 34 - 8 - 35 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Oboe * - 1 - - - THIRD - 0 - - TRIANGL - 31 - 17 - 8 - 14 - off - - - 5 - 3 - off - on - off - off - 0 - 0 - 0 - 0 - 3 - 1 - 2 - 1 - - - 2 - 0.5 - 2 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W3 - W3 - 0 - 0 - 0 - 0 - - 15 - 18 - 16 - 16 - 26 - 20 - 10 - 18 - 14 - 14 - 13 - 13 - 0 - 0 - 0 - 0 - 10 - 5 - 6 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 89 - 91 - 75 - 81 - - 1 - 0 - 3 - 0 - 6 - 35 - 48 - 5 - - - 12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 40 - 25 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Oboe1 - 2 - - - FOURTH - 0 - - TRIANGL - 31 - 10 - 15 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 1 - 1 - 2 - - - 3 - 1 - 2 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W4 - W3 - 0 - 0 - 0 - 0 - - 18 - 31 - 21 - 20 - 31 - 31 - 20 - 18 - 15 - 15 - 10 - 10 - 0 - 0 - 0 - 0 - 11 - 3 - 5 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 78 - 60 - 83 - - 1 - 1 - 1 - 1 - 6 - 0 - 9 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Oboe2 - 3 - - - SIXTH - 1 - - TRIANGL - 34 - 7 - 12 - 67 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 4 - 2 - - - 1 - 1 - 5 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -1 - 0 - 1 - 3 - - 16 - 16 - 15 - 27 - 4 - 4 - 4 - 4 - 12 - 12 - 12 - 12 - 6 - 6 - 6 - 6 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 91 - 77 - 80 - 77 - - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Oboe.....1 - 4 - - - FIFTH - 6 - - TRIANGL - 34 - 7 - 12 - 67 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 4 - 5 - 1 - - - 2 - 1 - 2 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -1 - 0 - 1 - 3 - - 16 - 16 - 15 - 27 - 4 - 4 - 4 - 4 - 12 - 12 - 12 - 12 - 6 - 6 - 6 - 6 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 69 - 95 - 70 - - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Oboe.....2 - 5 - - - FIFTH - 6 - - TRIANGL - 34 - 7 - 12 - 67 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 1 - - - 3 - 1 - 2 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -1 - 0 - 1 - 3 - - 16 - 16 - 15 - 27 - 4 - 4 - 4 - 4 - 12 - 12 - 12 - 12 - 6 - 6 - 6 - 6 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 69 - 95 - 70 - - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Oboe.....2* - 6 - - - THIRD - 6 - - TRIANGL - 35 - 37 - 8 - 30 - on - - - 5 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 4 - 3 - 5 - 1 - - - 3 - 0.5 - 3 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W4 - W1 - 0 - 1 - 0 - 1 - - 9 - 15 - 13 - 12 - 15 - 13 - 24 - 17 - 15 - 15 - 0 - 15 - 0 - 0 - 0 - 0 - 9 - 8 - 8 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 80 - 71 - 73 - 85 - - 3 - 3 - 3 - 1 - 0 - 18 - 99 - 99 - - - 0 - POLY - 2 - FINGER - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Oboe.....3 - 7 - - - THIRD - 0 - - TRIANGL - 34 - 10 - 17 - 30 - on - - - 3 - 1 - off - on - on - off - 0 - 0 - 0 - 0 - 4 - 2 - 4 - 4 - - - 3 - 14 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 22 - 20 - 30 - 31 - 6 - 8 - 12 - 16 - 11 - 11 - 11 - 11 - 1 - 7 - 4 - 2 - 9 - 7 - 7 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 53 - 80 - 73 - - 0 - 1 - 1 - 1 - 10 - 66 - 66 - 27 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Ornt Oboe - 8 - - - - Ocarina - 11 - - FIFTH - 7 - - TRIANGL - 46 - 39 - 7 - 54 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 5 - 6 - 4 - - - 4 - 4 - 4 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -1 - 0 - 0 - - 18 - 19 - 19 - 31 - 3 - 3 - 29 - 3 - 14 - 3 - 15 - 15 - 31 - 15 - 0 - 24 - 9 - 6 - 10 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 49 - 93 - 99 - - 2 - 2 - 1 - 1 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Ocarina - 0 - - - - Piccolo - 12 - - FIFTH - 7 - - TRIANGL - 33 - 13 - 14 - 33 - off - - - 4 - 2 - off - on - off - on - 0 - 0 - 0 - 0 - 1 - 0 - 2 - 0 - - - 6 - 6 - 5.99 - 11.89 - no - no - no - no - 8 - 8 - 12 - 15 - - W1 - W1 - W1 - W2 - -2 - 3 - -3 - 3 - - 16 - 12 - 14 - 25 - 19 - 18 - 19 - 18 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 9 - 5 - 9 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 60 - 99 - 49 - - 1 - 0 - 1 - 0 - 11 - 19 - 10 - 44 - - - -7 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Piccolo * - 0 - - - SEVENTH - 0 - - TRIANGL - 40 - 41 - 0 - 0 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 6 - 6 - - - 2 - 2 - 2 - 5.65 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W3 - 0 - 0 - 0 - 0 - - 16 - 21 - 15 - 31 - 6 - 3 - 4 - 21 - 9 - 8 - 9 - 9 - 4 - 4 - 5 - 4 - 10 - 10 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 50 - - 0 - 0 - 0 - 0 - 0 - 71 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Piccolo..1 - 1 - - - SEVENTH - 0 - - TRIANGL - 40 - 34 - 7 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 0 - - - 2 - 2 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W3 - W1 - 0 - 0 - 0 - 0 - - 18 - 18 - 18 - 31 - 18 - 4 - 9 - 31 - 14 - 14 - 14 - 14 - 15 - 12 - 9 - 31 - 10 - 10 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 44 - - 0 - 0 - 0 - 0 - 0 - 71 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Piccolo..2 - 2 - - - SEVENTH - 0 - - TRIANGL - 40 - 34 - 7 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 1 - 3 - 0 - - - 1 - 4 - 4 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W3 - W1 - 0 - 0 - 0 - 0 - - 18 - 18 - 18 - 31 - 18 - 4 - 9 - 31 - 14 - 14 - 14 - 14 - 15 - 12 - 9 - 31 - 10 - 10 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 44 - - 0 - 0 - 0 - 0 - 0 - 71 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Piccolo..2* - 3 - - - SEVENTH - 0 - - TRIANGL - 40 - 41 - 0 - 0 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 4 - 4 - 4 - - - 4 - 4 - 4 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W3 - W1 - 0 - 0 - 0 - 0 - - 18 - 18 - 18 - 18 - 5 - 5 - 5 - 5 - 14 - 14 - 14 - 14 - 5 - 5 - 5 - 5 - 10 - 10 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 88 - 80 - 82 - 74 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Piccolo..3 - 4 - - - - Recorder - 13 - - FIFTH - 6 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 3 - - - 1 - 2 - 1 - 7 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 18 - 18 - 18 - 19 - 22 - 22 - 18 - 24 - 6 - 7 - 13 - 12 - 15 - 18 - 0 - 0 - 9 - 10 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 81 - 99 - 78 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntRecord - 0 - - - THIRD - 7 - - TRIANGL - 27 - 4 - 15 - 6 - off - - - 4 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 3 - 2 - 4 - 4 - - - 1 - 3 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - -3 - 0 - 3 - - 17 - 20 - 20 - 20 - 8 - 0 - 31 - 10 - 14 - 15 - 15 - 10 - 0 - 0 - 15 - 0 - 11 - 3 - 8 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 45 - 50 - 54 - - 0 - 0 - 0 - 0 - 2 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 67 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Recorder1 - 1 - - - THIRD - 7 - - TRIANGL - 27 - 4 - 15 - 6 - off - - - 4 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 3 - 2 - 4 - 4 - - - 1 - 4 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - -3 - 0 - 3 - - 17 - 20 - 20 - 20 - 8 - 0 - 31 - 10 - 14 - 15 - 15 - 10 - 0 - 0 - 15 - 0 - 11 - 3 - 8 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 45 - 50 - 54 - - 0 - 0 - 0 - 0 - 2 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 67 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Recorder2 - 2 - - - SEVENTH - 5 - - TRIANGL - 37 - 42 - 38 - 54 - off - - - 1 - 1 - off - on - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 5 - 1 - - - 1 - 1 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 15 - 15 - 15 - 24 - 0 - 0 - 0 - 31 - 13 - 13 - 13 - 14 - 3 - 3 - 3 - 22 - 10 - 10 - 10 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 97 - 97 - 93 - - 1 - 1 - 1 - 3 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Recorder.1 - 3 - - - SIXTH - 0 - - TRIANGL - 32 - 42 - 21 - 67 - on - - - 2 - 1 - off - off - on - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 3 - - - 2 - 2 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 15 - 13 - 13 - 24 - 18 - 10 - 21 - 31 - 12 - 0 - 12 - 14 - 7 - 6 - 7 - 16 - 9 - 10 - 9 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 99 - 99 - 0 - - 0 - 0 - 0 - 3 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Recorder.2 - 4 - - - SEVENTH - 6 - - TRIANGL - 32 - 42 - 21 - 67 - on - - - 2 - 1 - off - off - on - off - 0 - 0 - 0 - 0 - 5 - 6 - 5 - 1 - - - 2 - 2 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 16 - 19 - 16 - 24 - 3 - 29 - 3 - 28 - 13 - 14 - 13 - 14 - 3 - 21 - 3 - 21 - 10 - 12 - 10 - 12 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 63 - - 1 - 0 - 1 - 3 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Recorder.3 - 5 - - - SEVENTH - 6 - - TRIANGL - 32 - 42 - 21 - 67 - on - - - 2 - 1 - off - off - on - off - 0 - 0 - 0 - 0 - 7 - 5 - 6 - 1 - - - 1 - 2 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 16 - 19 - 16 - 24 - 3 - 29 - 3 - 28 - 13 - 14 - 13 - 14 - 3 - 21 - 3 - 21 - 10 - 12 - 10 - 12 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 63 - - 1 - 0 - 1 - 3 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Recorder.4 - 6 - - - SEVENTH - 5 - - TRIANGL - 33 - 42 - 0 - 0 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 1 - - - 0.5 - 1 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W4 - 0 - 0 - 0 - 0 - - 16 - 16 - 15 - 24 - 31 - 15 - 9 - 29 - 15 - 15 - 4 - 15 - 3 - 10 - 10 - 21 - 9 - 10 - 12 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 98 - 94 - 94 - - 1 - 1 - 1 - 2 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Recorder.5 - 7 - - - - Saxophone - 14 - - FIRST - 7 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 3 - 1 - 0 - - - 0.5 - 2 - 5.65 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W2 - W1 - W1 - 0 - 0 - 0 - 0 - - 15 - 12 - 17 - 15 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 8 - 9 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 68 - 55 - 82 - - 0 - 3 - 0 - 3 - 0 - 58 - 0 - 49 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Alto Sax - 0 - - - FIRST - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 4 - 0 - off - off - off - off - 7 - 4 - 3 - 4 - 5 - 5 - 5 - 5 - - - 1 - 0.5 - 5.65 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 1 - 1 - - 15 - 12 - 17 - 15 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 8 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 73 - 53 - 99 - - 0 - 3 - 0 - 3 - 0 - 58 - 0 - 49 - - - 0 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 10 - 86 - 50 - 99 - 0 - 0 - 0 - 0 - 0 - - BC1 AltSax - 1 - - - THIRD - 7 - - TRIANGL - 33 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 7 - 4 - 3 - 4 - 0 - 0 - 0 - 0 - - - 1 - 0.5 - 5.65 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 3 - 0 - - 16 - 16 - 16 - 16 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 9 - 9 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 66 - 48 - 68 - - 0 - 0 - 0 - 0 - 0 - 42 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 99 - 0 - 0 - 0 - 0 - 0 - - <BC1> Sax - 2 - - - THIRD - 7 - - TRIANGL - 30 - 23 - 12 - 0 - off - - - 5 - 0 - off - off - off - off - 7 - 0 - 0 - 0 - 3 - 1 - 1 - 1 - - - 2 - 1 - 12.72 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -3 - 0 - -2 - - 16 - 29 - 29 - 29 - 31 - 31 - 15 - 4 - 15 - 15 - 10 - 14 - 0 - 0 - 0 - 0 - 10 - 3 - 8 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 75 - 70 - 81 - - 1 - 1 - 1 - 1 - 0 - 17 - 0 - 0 - - - 0 - MONO - 2 - FINGER - 15 - POR - 99 - 0 - 0 - 50 - 1 - 0 - 0 - 50 - 99 - 0 - 0 - 0 - 0 - 0 - - BCSexyPhon - 3 - - - THIRD - 7 - - TRIANGL - 30 - 9 - 2 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 3 - 3 - 7 - 2 - 2 - 2 - 1 - - - 0.5 - 0.5 - 5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W4 - W3 - 0 - -3 - 0 - 3 - - 22 - 31 - 31 - 31 - 27 - 11 - 18 - 10 - 15 - 10 - 13 - 14 - 0 - 0 - 0 - 0 - 10 - 10 - 10 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 70 - 76 - 82 - - 1 - 1 - 1 - 1 - 0 - 28 - 9 - 13 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 11 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - ElectroSax - 4 - - - FIFTH - 7 - - TRIANGL - 41 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 4 - - - 1 - 1 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W2 - W2 - 0 - 3 - 0 - 0 - - 24 - 18 - 27 - 31 - 31 - 12 - 31 - 13 - 15 - 15 - 15 - 15 - 0 - 6 - 4 - 0 - 12 - 9 - 12 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 92 - 92 - 64 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 12 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - GreatDXled - 5 - - - THIRD - 7 - - TRIANGL - 30 - 17 - 11 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 3 - 1 - - - 2 - 1 - 11 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W4 - W2 - W4 - 0 - 0 - 0 - 0 - - 16 - 15 - 16 - 17 - 31 - 31 - 14 - 4 - 15 - 15 - 12 - 14 - 0 - 0 - 0 - 0 - 10 - 3 - 8 - 6 - VOF - V24 - V24 - V12 - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 80 - 68 - 76 - - 1 - 1 - 2 - 1 - 0 - 52 - 99 - 51 - - - -12 - POLY - 4 - FINGER - 0 - POR - 99 - 0 - 0 - 50 - 2 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - MelloTenor - 6 - - - THIRD - 7 - - TRIANGL - 30 - 9 - 9 - 0 - off - - - 5 - 2 - on - on - on - on - 0 - 0 - 0 - 0 - 2 - 3 - 2 - 2 - - - 1 - 0.5 - 7.25 - 0.5 - no - no - no - no - 8 - 8 - 12 - 8 - - W3 - W3 - W6 - W2 - 0 - 0 - 3 - 0 - - 16 - 17 - 17 - 16 - 31 - 31 - 9 - 31 - 15 - 15 - 13 - 15 - 0 - 0 - 0 - 0 - 9 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 81 - 43 - 74 - - 1 - 0 - 0 - 0 - 0 - 10 - 0 - 0 - - - 12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 49 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - RaspAlto - 7 - - - THIRD - 6 - - TRIANGL - 32 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 4 - 4 - 3 - - - 1 - 1 - 3 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W7 - W1 - 0 - 0 - 0 - 0 - - 20 - 16 - 18 - 20 - 31 - 12 - 19 - 8 - 15 - 10 - 11 - 10 - 0 - 0 - 0 - 0 - 10 - 9 - 6 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 69 - 80 - 73 - - 1 - 1 - 1 - 1 - 0 - 33 - 27 - 23 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sax 1 - 8 - - - THIRD - 6 - - TRIANGL - 32 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 4 - 4 - 3 - - - 2 - 1 - 4.24 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W6 - W2 - W7 - W1 - 0 - 0 - 0 - 0 - - 18 - 17 - 21 - 16 - 19 - 15 - 19 - 8 - 10 - 10 - 9 - 10 - 0 - 0 - 0 - 0 - 10 - 9 - 6 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 78 - 65 - 73 - - 1 - 1 - 1 - 1 - 0 - 15 - 0 - 44 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sax 2 - 9 - - - FIRST - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 4 - 0 - off - off - off - off - 7 - 4 - 3 - 0 - 6 - 6 - 5 - 3 - - - 1 - 0.5 - 6 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - 0 - 0 - 1 - 1 - - 17 - 10 - 10 - 16 - 31 - 31 - 31 - 6 - 15 - 15 - 15 - 3 - 0 - 0 - 0 - 18 - 8 - 8 - 8 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 89 - 41 - 99 - - 0 - 3 - 0 - 1 - 0 - 58 - 0 - 49 - - - 0 - POLY - 5 - FULL - 1 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sax Synth - 10 - - - SECOND - 7 - - TRIANGL - 30 - 17 - 11 - 0 - off - - - 4 - 2 - off - off - on - on - 0 - 0 - 4 - 4 - 2 - 2 - 3 - 1 - - - 2 - 1 - 11 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W4 - W2 - W4 - 0 - 0 - 0 - 0 - - 24 - 15 - 12 - 10 - 31 - 31 - 14 - 4 - 15 - 15 - 12 - 14 - 0 - 0 - 0 - 0 - 10 - 3 - 8 - 6 - VOF - VOF - V12 - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 84 - 77 - 69 - - 1 - 1 - 1 - 1 - 0 - 54 - 15 - 29 - - - -12 - POLY - 2 - FINGER - 0 - POR - 99 - 0 - 0 - 50 - 4 - 0 - 0 - 50 - 35 - 0 - 0 - 0 - 0 - 0 - - Saxophone* - 11 - - - FOURTH - 7 - - TRIANGL - 34 - 11 - 7 - 0 - on - - - 4 - 0 - off - off - off - off - 7 - 4 - 3 - 0 - 4 - 2 - 5 - 1 - - - 1 - 1 - 5.99 - 0.5 - no - no - no - no - 8 - 8 - 12 - 8 - - W2 - W3 - W5 - W1 - 0 - 0 - 3 - 0 - - 17 - 18 - 16 - 31 - 3 - 7 - 4 - 3 - 15 - 15 - 15 - 15 - 3 - 4 - 2 - 1 - 9 - 9 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 88 - 74 - 61 - 55 - - 0 - 0 - 0 - 0 - 0 - 42 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - Saxophone1 - 12 - - - FOURTH - 7 - - TRIANGL - 33 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 7 - 4 - 3 - 0 - 3 - 2 - 3 - 0 - - - 1 - 1 - 5.99 - 0.87 - no - no - no - no - 8 - 8 - 12 - 8 - - W2 - W5 - W2 - W1 - 0 - 0 - 3 - 0 - - 17 - 14 - 17 - 19 - 5 - 31 - 31 - 30 - 14 - 13 - 14 - 15 - 0 - 0 - 0 - 0 - 8 - 9 - 9 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 75 - 59 - 46 - - 0 - 0 - 0 - 0 - 0 - 42 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Saxophone2 - 13 - - - FOURTH - 7 - - TRIANGL - 33 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 7 - 4 - 3 - 0 - 0 - 2 - 3 - 0 - - - 1 - 0.5 - 5.65 - 0.87 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W5 - W1 - W1 - 0 - 0 - 3 - 0 - - 17 - 14 - 17 - 19 - 5 - 31 - 31 - 30 - 14 - 13 - 14 - 15 - 0 - 0 - 0 - 0 - 8 - 9 - 9 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 75 - 59 - 55 - - 0 - 0 - 0 - 0 - 0 - 42 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Saxophone3 - 14 - - - FOURTH - 7 - - TRIANGL - 33 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 7 - 4 - 3 - 0 - 5 - 3 - 5 - 0 - - - 1 - 1 - 5 - 1 - no - no - no - no - 8 - 8 - 11 - 8 - - W2 - W2 - W5 - W1 - 0 - 0 - 3 - 0 - - 16 - 15 - 31 - 20 - 30 - 31 - 3 - 3 - 14 - 13 - 14 - 15 - 0 - 0 - 0 - 1 - 8 - 9 - 9 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 79 - 61 - 65 - - 0 - 0 - 0 - 0 - 0 - 75 - 61 - 25 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Saxophone4 - 15 - - - FOURTH - 7 - - TRIANGL - 33 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 7 - 4 - 3 - 0 - 1 - 2 - 2 - 0 - - - 1 - 0.5 - 6.92 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W5 - W1 - 0 - 0 - 3 - 0 - - 16 - 15 - 31 - 20 - 30 - 31 - 3 - 3 - 14 - 13 - 14 - 15 - 0 - 0 - 0 - 1 - 8 - 9 - 9 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 79 - 61 - 65 - - 0 - 0 - 0 - 0 - 0 - 75 - 61 - 25 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Saxophone5 - 16 - - - FIRST - 7 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 4 - 0 - off - off - off - off - 7 - 4 - 3 - 0 - 4 - 5 - 4 - 2 - - - 0.5 - 0.5 - 5.99 - 1 - no - no - no - no - 8 - 8 - 12 - 8 - - W1 - W4 - W1 - W1 - 0 - 0 - 1 - 1 - - 15 - 12 - 17 - 15 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 8 - 7 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 66 - 61 - 82 - - 0 - 3 - 0 - 3 - 0 - 58 - 0 - 49 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - Saxophone6 - 17 - - - FIRST - 7 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 4 - 0 - off - off - off - off - 7 - 4 - 3 - 0 - 0 - 2 - 1 - 2 - - - 1 - 1 - 5.65 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W1 - W1 - 0 - 0 - 1 - 1 - - 15 - 12 - 17 - 15 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 8 - 7 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 66 - 61 - 82 - - 0 - 3 - 0 - 3 - 0 - 58 - 0 - 49 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - Saxophone7 - 18 - - - THIRD - 6 - - TRIANGL - 30 - 17 - 10 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 4 - 5 - 3 - - - 1 - 0.5 - 7.22 - 0.5 - no - no - no - no - 8 - 8 - 10 - 8 - - W4 - W4 - W5 - W2 - 0 - 0 - 0 - 0 - - 17 - 17 - 17 - 16 - 31 - 31 - 15 - 15 - 15 - 14 - 14 - 15 - 0 - 0 - 0 - 0 - 9 - 8 - 8 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 78 - 47 - 79 - - 0 - 1 - 0 - 0 - 0 - 20 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - Saxophone8 - 19 - - - FOURTH - 7 - - TRIANGL - 33 - 5 - 9 - 0 - on - - - 5 - 0 - off - off - off - off - 7 - 4 - 3 - 0 - 4 - 4 - 4 - 3 - - - 1 - 1 - 5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W5 - W3 - W5 - 0 - 0 - 0 - 0 - - 17 - 12 - 15 - 19 - 30 - 31 - 31 - 30 - 14 - 13 - 14 - 15 - 0 - 0 - 0 - 0 - 8 - 9 - 9 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 75 - 57 - 70 - - 0 - 0 - 0 - 0 - 0 - 42 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Saxophone9 - 20 - - - FOURTH - 7 - - TRIANGL - 33 - 5 - 9 - 0 - on - - - 5 - 0 - off - off - off - off - 7 - 4 - 3 - 0 - 0 - 1 - 1 - 0 - - - 1 - 0.5 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W3 - W1 - 0 - 0 - 0 - 0 - - 17 - 12 - 15 - 19 - 30 - 31 - 31 - 30 - 14 - 13 - 14 - 15 - 0 - 0 - 0 - 0 - 8 - 9 - 9 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 75 - 57 - 70 - - 0 - 0 - 0 - 0 - 0 - 42 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Saxophone10 - 21 - - - THIRD - 0 - - TRIANGL - 30 - 9 - 9 - 0 - off - - - 5 - 2 - on - on - on - on - 0 - 0 - 0 - 0 - 4 - 2 - 2 - 2 - - - 1 - 0.5 - 7 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W3 - W6 - W1 - 0 - 0 - 3 - 0 - - 17 - 19 - 17 - 16 - 31 - 31 - 9 - 31 - 15 - 15 - 8 - 15 - 0 - 0 - 0 - 0 - 9 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 88 - 30 - 44 - - 1 - 0 - 0 - 0 - 0 - 38 - 45 - 12 - - - 12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 49 - 18 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SopranoSax - 22 - - - - Trombone - 15 - - THIRD - 7 - - TRIANGL - 39 - 0 - 41 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 1 - - - 1 - 0.5 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W2 - W1 - 0 - 0 - 0 - 0 - - 18 - 21 - 22 - 15 - 31 - 31 - 25 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 18 - 0 - 8 - 8 - 9 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 44 - 84 - 74 - - 0 - 0 - 1 - 0 - 0 - 0 - 1 - 0 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Mute Trmbn - 0 - - - THIRD - 7 - - TRIANGL - 29 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 2 - 3 - 3 - - - 1 - 1 - 3.18 - 1 - no - no - no - no - 8 - 8 - 11 - 8 - - W1 - W1 - W1 - W1 - 0 - 3 - 0 - 3 - - 14 - 12 - 31 - 11 - 7 - 10 - 8 - 10 - 13 - 13 - 13 - 13 - 0 - 0 - 0 - 0 - 8 - 6 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 83 - 42 - 78 - - 1 - 1 - 1 - 1 - 0 - 0 - 20 - 0 - - - -12 - POLY - 5 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Trombone * - 1 - - - THIRD - 7 - - TRIANGL - 32 - 9 - 3 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 3 - 2 - - - 0.5 - 0.5 - 1.57 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W2 - W1 - 0 - 0 - 0 - 0 - - 15 - 16 - 16 - 14 - 24 - 12 - 17 - 11 - 15 - 10 - 5 - 14 - 0 - 0 - 0 - 0 - 11 - 10 - 10 - 9 - VOF - VOF - VOF - VOF - - - 99 - 82 - 99 - 50 - 50 - 50 - - 99 - 71 - 71 - 80 - - 1 - 1 - 1 - 1 - 0 - 28 - 9 - 15 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Trombone1 - 2 - - - THIRD - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 1 - 3.14 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 1 - 0 - 0 - 0 - - 19 - 15 - 31 - 15 - 31 - 31 - 14 - 31 - 15 - 15 - 0 - 15 - 0 - 0 - 0 - 0 - 8 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 46 - 82 - 66 - - 0 - 0 - 2 - 0 - 0 - 0 - 1 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Trombone2 - 3 - - - THIRD - 6 - - TRIANGL - 39 - 0 - 41 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 5 - 1 - - - 1 - 1 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 18 - 21 - 20 - 15 - 31 - 31 - 14 - 31 - 15 - 15 - 0 - 15 - 0 - 0 - 0 - 0 - 8 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 54 - 87 - 82 - - 0 - 0 - 2 - 0 - 0 - 0 - 1 - 0 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Trombone.1 - 4 - - - THIRD - 7 - - TRIANGL - 39 - 0 - 41 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 4 - 6 - 1 - - - 1 - 1 - 3.14 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W2 - W1 - 0 - 0 - 0 - 0 - - 18 - 21 - 15 - 15 - 31 - 31 - 16 - 31 - 15 - 15 - 6 - 15 - 0 - 0 - 5 - 0 - 8 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 43 - 80 - 79 - - 0 - 0 - 2 - 0 - 0 - 0 - 1 - 0 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Trombone.2 - 5 - - - - Trumpet - 16 - - THIRD - 0 - - TRIANGL - 35 - 25 - 6 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 5 - 4 - 5 - - - 1.5 - 1.49 - 3.12 - 1.5 - no - no - no - no - 16 - 9 - 10 - 16 - - W1 - W4 - W1 - W4 - 0 - 3 - 1 - -3 - - 16 - 16 - 15 - 16 - 31 - 31 - 16 - 5 - 15 - 15 - 0 - 11 - 0 - 0 - 0 - 0 - 7 - 7 - 12 - 8 - VOF - VOF - V24 - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 84 - 45 - 88 - - 1 - 1 - 1 - 1 - 0 - 15 - 26 - 15 - - - -7 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 29 - 0 - 8 - 39 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - 2 Trumpets - 0 - - - THIRD - 7 - - TRIANGL - 35 - 19 - 4 - 0 - off - - - 6 - 0 - off - off - off - off - 4 - 4 - 7 - 7 - 0 - 0 - 0 - 0 - - - 1 - 1 - 3.14 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 18 - 14 - 16 - 16 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 9 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 60 - 36 - 72 - - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 99 - 0 - 0 - 0 - 0 - 0 - - BC1Trumpet - 1 - - - THIRD - 5 - - TRIANGL - 35 - 19 - 4 - 0 - off - - - 6 - 0 - off - off - off - off - 4 - 4 - 7 - 7 - 6 - 5 - 5 - 5 - - - 1 - 1 - 3.14 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 18 - 14 - 16 - 16 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 9 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 66 - 32 - 73 - - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 3 - 3 - 50 - 99 - 0 - 0 - 0 - 0 - 0 - - BC1 Trumpt - 2 - - - FIFTH - 7 - - TRIANGL - 31 - 0 - 6 - 0 - on - - - 4 - 2 - off - off - off - on - 0 - 0 - 0 - 0 - 3 - 0 - 3 - 0 - - - 1.5 - 1.5 - 1.5 - 1.49 - no - no - no - no - 16 - 16 - 16 - 97 - - W5 - W4 - W1 - W1 - 3 - -3 - 3 - -3 - - 15 - 12 - 15 - 31 - 8 - 8 - 7 - 6 - 15 - 15 - 14 - 15 - 4 - 7 - 3 - 6 - 5 - 5 - 7 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 82 - 99 - 72 - - 0 - 0 - 0 - 0 - 0 - 5 - 8 - 0 - - - -7 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - FanfarTpts - 3 - - - THIRD - 3 - - TRIANGL - 34 - 35 - 5 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 5 - 1 - - - 2 - 2 - 3 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W3 - 1 - 1 - 1 - -3 - - 18 - 21 - 15 - 15 - 7 - 27 - 16 - 10 - 15 - 10 - 9 - 13 - 9 - 7 - 7 - 8 - 9 - 8 - 7 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 67 - 54 - 76 - - 1 - 2 - 2 - 0 - 0 - 0 - 2 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Mute Trmpt - 4 - - - FOURTH - 7 - - TRIANGL - 36 - 0 - 12 - 0 - on - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 5 - 2 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 18 - 18 - 19 - 17 - 16 - 16 - 22 - 5 - 15 - 13 - 9 - 13 - 6 - 6 - 6 - 6 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 74 - 50 - - 1 - 1 - 2 - 0 - 1 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Ornt Trmpt - 5 - - - SIXTH - 7 - - TRIANGL - 99 - 0 - 14 - 0 - off - - - 4 - 2 - off - off - off - on - 2 - 5 - 5 - 2 - 2 - 2 - 2 - 3 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -1 - 0 - 1 - -3 - - 21 - 21 - 21 - 16 - 31 - 31 - 31 - 9 - 15 - 15 - 15 - 14 - 0 - 0 - 0 - 0 - 9 - 9 - 9 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 82 - - 0 - 0 - 0 - 2 - 0 - 0 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 72 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Trumpet * - 6 - - - THIRD - 0 - - TRIANGL - 28 - 25 - 0 - 0 - off - - - 5 - 3 - on - off - off - off - 0 - 0 - 0 - 0 - 2 - 3 - 2 - 2 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 1 - 0 - 0 - 0 - - 16 - 25 - 18 - 12 - 31 - 31 - 11 - 5 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 9 - 7 - 1 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 71 - 58 - 73 - - 1 - 0 - 0 - 0 - 0 - 11 - 13 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 11 - 0 - 0 - 25 - 50 - 99 - 0 - 0 - 0 - 0 - 5 - - Trumpet - 7 - - - THIRD - 7 - - TRIANGL - 35 - 19 - 4 - 0 - off - - - 6 - 0 - off - off - off - off - 4 - 4 - 7 - 7 - 0 - 0 - 0 - 0 - - - 1 - 1 - 3.14 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 18 - 14 - 16 - 16 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 9 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 60 - 36 - 72 - - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Trumpet - 8 - - - THIRD - 7 - - TRIANGL - 31 - 9 - 4 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 3 - 1 - - - 1 - 1 - 1.57 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W6 - W4 - W4 - W1 - 0 - 0 - 0 - 0 - - 20 - 19 - 16 - 18 - 24 - 14 - 15 - 16 - 15 - 10 - 5 - 10 - 0 - 0 - 0 - 0 - 11 - 10 - 10 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 67 - 64 - 78 - - 1 - 1 - 1 - 1 - 0 - 28 - 9 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 19 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Trumpet 1 - 9 - - - THIRD - 7 - - TRIANGL - 32 - 20 - 26 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 1 - 7 - 1 - - - 1 - 1 - 0.87 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 19 - 12 - 12 - 16 - 9 - 14 - 12 - 14 - 15 - 14 - 0 - 14 - 0 - 0 - 0 - 0 - 10 - 3 - 9 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 64 - 51 - 78 - - 0 - 0 - 0 - 0 - 18 - 40 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 60 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Trumpet 2 - 10 - - - THIRD - 7 - - TRIANGL - 32 - 20 - 26 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 1 - 7 - 1 - - - 1 - 1 - 0.87 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 17 - 10 - 10 - 14 - 8 - 13 - 11 - 13 - 15 - 14 - 0 - 14 - 0 - 0 - 0 - 0 - 10 - 3 - 9 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 64 - 51 - 78 - - 0 - 0 - 0 - 0 - 18 - 40 - 0 - 0 - - - 12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Trumpet 3 - 11 - - - THIRD - 7 - - TRIANGL - 29 - 30 - 15 - 0 - on - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 6 - 6 - 2 - - - 1 - 2.05 - 1 - 1 - no - no - no - no - 8 - 11 - 8 - 8 - - W3 - W1 - W3 - W1 - 1 - 0 - 0 - -1 - - 18 - 15 - 15 - 15 - 7 - 15 - 7 - 10 - 13 - 0 - 11 - 15 - 5 - 5 - 9 - 7 - 10 - 10 - 7 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 70 - 66 - 80 - - 0 - 2 - 1 - 1 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Trumpet..1 - 12 - - - THIRD - 7 - - TRIANGL - 29 - 30 - 15 - 0 - on - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 0 - 2 - - - 1 - 1.73 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W1 - W3 - W1 - 1 - 0 - 0 - -1 - - 18 - 15 - 15 - 15 - 7 - 15 - 7 - 10 - 13 - 0 - 11 - 15 - 5 - 5 - 9 - 7 - 10 - 10 - 7 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 70 - 66 - 80 - - 0 - 2 - 1 - 1 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Trumpet..1* - 13 - - - THIRD - 7 - - TRIANGL - 35 - 30 - 23 - 16 - off - - - 3 - 1 - off - off - off - on - 0 - 0 - 0 - 0 - 6 - 4 - 6 - 1 - - - 1 - 1 - 3.14 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W1 - W1 - W1 - 1 - 0 - 0 - -1 - - 18 - 15 - 15 - 15 - 7 - 15 - 16 - 10 - 13 - 0 - 14 - 15 - 5 - 5 - 6 - 7 - 10 - 10 - 7 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 65 - 70 - 78 - - 0 - 2 - 1 - 1 - 0 - 0 - 2 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Trumpet..2 - 14 - - - THIRD - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 6 - 2 - - - 1 - 1 - 4 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W3 - W1 - W1 - 1 - 2 - -2 - -1 - - 19 - 21 - 15 - 15 - 7 - 28 - 16 - 10 - 13 - 12 - 14 - 13 - 6 - 6 - 6 - 6 - 9 - 8 - 9 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 79 - 73 - 89 - - 0 - 2 - 1 - 1 - 0 - 0 - 2 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Trumpet..3 - 15 - - - THIRD - 7 - - TRIANGL - 34 - 0 - 8 - 46 - off - - - 4 - 1 - off - off - off - on - 0 - 0 - 0 - 0 - 7 - 3 - 6 - 2 - - - 1 - 1 - 5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W1 - W1 - 1 - 0 - -1 - -1 - - 19 - 21 - 15 - 15 - 7 - 28 - 3 - 10 - 13 - 12 - 9 - 13 - 6 - 6 - 6 - 6 - 9 - 8 - 7 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 77 - 49 - 83 - - 0 - 2 - 1 - 1 - 0 - 0 - 2 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Trumpet..4 - 16 - - - THIRD - 5 - - TRIANGL - 34 - 35 - 5 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 6 - 2 - - - 1 - 1 - 1.73 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W3 - W1 - W1 - 1 - 0 - -1 - -1 - - 21 - 21 - 15 - 12 - 7 - 28 - 3 - 10 - 13 - 12 - 9 - 13 - 6 - 6 - 6 - 6 - 9 - 8 - 7 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 70 - 52 - 77 - - 0 - 2 - 1 - 1 - 0 - 0 - 2 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Trumpet..5 - 17 - - - THIRD - 7 - - TRIANGL - 30 - 25 - 5 - 0 - off - - - 5 - 0 - off - off - off - off - 4 - 4 - 7 - 7 - 2 - 2 - 3 - 2 - - - 1 - 1 - 2.9 - 1 - no - no - no - no - 8 - 8 - 9 - 8 - - W1 - W6 - W6 - W1 - 0 - 0 - 0 - 0 - - 18 - 14 - 15 - 15 - 31 - 31 - 26 - 31 - 15 - 15 - 13 - 15 - 0 - 0 - 11 - 4 - 8 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 75 - 54 - 81 - - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Trumpet81Z - 18 - - - FOURTH - 7 - - TRIANGL - 29 - 3 - 15 - 1 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 1 - 0 - 0 - - - 1.5 - 1.49 - 1.51 - 3.23 - no - no - no - no - 16 - 9 - 14 - 9 - - W1 - W2 - W1 - W7 - 0 - -3 - 3 - 3 - - 19 - 15 - 17 - 19 - 31 - 31 - 14 - 0 - 15 - 15 - 9 - 15 - 1 - 3 - 6 - 0 - 8 - 10 - 10 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 93 - 54 - 58 - - 0 - 0 - 0 - 0 - 0 - 5 - 8 - 0 - - - -7 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 7 - - TrumptSolo - 19 - - - THIRD - 7 - - TRIANGL - 30 - 19 - 4 - 0 - off - - - 4 - 0 - off - off - off - off - 4 - 4 - 7 - 7 - 2 - 2 - 3 - 2 - - - 1 - 1 - 3.14 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 18 - 14 - 16 - 15 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 11 - 4 - 9 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 75 - 47 - 82 - - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - Trumpet V - 20 - - - - Tuba - 17 - - FOURTH - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 5 - 3 - - - 1 - 0.5 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W1 - W3 - W1 - 0 - 0 - 0 - 0 - - 14 - 20 - 15 - 31 - 15 - 13 - 16 - 15 - 15 - 9 - 9 - 13 - 3 - 2 - 3 - 5 - 8 - 7 - 7 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 72 - 72 - 76 - - 0 - 0 - 0 - 0 - 20 - 89 - 70 - 69 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 1 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - << Tuba >> - 0 - - - THIRD - 7 - - TRIANGL - 31 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 1 - 1 - 1 - - - 0.5 - 0.5 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W2 - W1 - 0 - 0 - 0 - 0 - - 16 - 16 - 16 - 15 - 10 - 10 - 12 - 15 - 10 - 10 - 11 - 9 - 0 - 0 - 0 - 0 - 11 - 6 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 71 - 69 - 82 - - 0 - 0 - 0 - 0 - 14 - 0 - 0 - 21 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Tuba - 1 - - - - Whistle - 18 - - SIXTH - 0 - - TRIANGL - 32 - 22 - 21 - 67 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 2 - 2 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - -1 - -3 - 0 - - 12 - 11 - 10 - 31 - 15 - 16 - 15 - 31 - 14 - 14 - 0 - 15 - 0 - 0 - 28 - 0 - 9 - 9 - 9 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 0 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 12 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Whistle * - 0 - - - SEVENTH - 7 - - TRIANGL - 37 - 11 - 38 - 99 - off - - - 3 - 1 - off - on - on - off - 0 - 0 - 0 - 0 - 6 - 4 - 5 - 3 - - - 2 - 2 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 19 - 19 - 19 - 19 - 6 - 6 - 6 - 28 - 13 - 13 - 13 - 14 - 3 - 3 - 3 - 21 - 10 - 10 - 10 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 0 - 0 - 0 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Whistle..1 - 1 - - - EIGHTH - 2 - - TRIANGL - 34 - 0 - 20 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 4 - 5 - - - 4 - 4 - 4 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -1 - 0 - 2 - - 7 - 8 - 7 - 8 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 2 - 2 - 2 - 7 - 5 - 5 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 62 - 60 - 98 - - 3 - 0 - 1 - 0 - 0 - 0 - 78 - 71 - - - -12 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - Whistle..2 - 2 - - - FIFTH - 7 - - TRIANGL - 35 - 9 - 11 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 6 - 3 - - - 2 - 1 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W3 - W1 - W1 - 0 - 0 - 0 - 0 - - 13 - 25 - 15 - 31 - 8 - 16 - 9 - 15 - 14 - 8 - 15 - 0 - 0 - 0 - 0 - 0 - 9 - 9 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 66 - 93 - 66 - - 0 - 0 - 0 - 0 - 26 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 51 - 0 - 0 - 0 - 0 - 0 - 0 - - Whistle..3 - 3 - - - FIFTH - 7 - - TRIANGL - 35 - 3 - 15 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 0 - 2 - 4 - - - 2 - 0.71 - 2 - 1.73 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 13 - 25 - 15 - 31 - 8 - 16 - 9 - 15 - 14 - 8 - 15 - 0 - 0 - 0 - 0 - 0 - 9 - 9 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 56 - 78 - 78 - - 0 - 0 - 0 - 0 - 26 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 51 - 0 - 0 - 0 - 0 - 0 - 0 - - Whistling - 4 - - - - - STRINGS - 2 - - Strings - 0 - - FIFTH - 5 - - TRIANGL - 38 - 33 - 32 - 71 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 0 - 5 - 4 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W2 - W5 - 0 - 1 - -3 - -3 - - 13 - 14 - 12 - 13 - 4 - 5 - 10 - 10 - 12 - 12 - 14 - 14 - 18 - 18 - 0 - 0 - 8 - 8 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 79 - 99 - 81 - - 0 - 0 - 0 - 1 - 20 - 0 - 7 - 40 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgStr..1 - 0 - - - FIFTH - 6 - - TRIANGL - 38 - 33 - 17 - 71 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 1 - 4 - 2 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W4 - W3 - W6 - -1 - 1 - -3 - -3 - - 11 - 13 - 13 - 14 - 9 - 12 - 9 - 10 - 14 - 14 - 15 - 14 - 0 - 1 - 0 - 0 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 77 - 91 - 73 - - 0 - 0 - 0 - 1 - 20 - 0 - 5 - 30 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgStr..2 - 1 - - - FIFTH - 5 - - TRIANGL - 38 - 33 - 22 - 59 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 2 - 4 - 2 - - - 2 - 2 - 2 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W1 - W1 - W3 - 0 - 1 - 0 - 0 - - 11 - 14 - 13 - 13 - 10 - 10 - 10 - 9 - 13 - 14 - 15 - 14 - 1 - 1 - 2 - 3 - 5 - 4 - 5 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 75 - 89 - 57 - - 1 - 0 - 0 - 1 - 20 - 0 - 10 - 40 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgStr..3 - 2 - - - SIXTH - 5 - - TRIANGL - 34 - 10 - 10 - 8 - off - - - 2 - 1 - off - on - off - on - 0 - 0 - 0 - 0 - 3 - 4 - 5 - 2 - - - 1.32 - 2 - 4 - 4 - no - no - no - no - 15 - 8 - 8 - 8 - - W2 - W3 - W1 - W4 - 1 - 1 - 1 - -1 - - 11 - 13 - 12 - 31 - 31 - 7 - 31 - 19 - 15 - 6 - 15 - 14 - 6 - 14 - 0 - 0 - 8 - 6 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 87 - 83 - 68 - - 0 - 0 - 0 - 0 - 10 - 14 - 82 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgStr..4 - 3 - - - FIFTH - 2 - - TRIANGL - 32 - 15 - 10 - 0 - on - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 1 - 3 - 4 - - - 1 - 3 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W5 - W2 - W1 - -1 - 2 - -3 - 3 - - 9 - 12 - 9 - 12 - 31 - 3 - 31 - 3 - 15 - 4 - 15 - 4 - 0 - 30 - 1 - 30 - 5 - 5 - 8 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 91 - 73 - 87 - 72 - - 0 - 1 - 1 - 0 - 37 - 35 - 21 - 86 - - - -12 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgStr..5 - 4 - - - FIFTH - 2 - - TRIANGL - 32 - 15 - 10 - 0 - on - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 2 - 3 - 4 - - - 2 - 4 - 2 - 10 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W3 - W4 - W6 - -2 - 2 - -3 - 3 - - 10 - 13 - 10 - 13 - 31 - 3 - 31 - 3 - 15 - 4 - 15 - 4 - 0 - 30 - 1 - 30 - 5 - 5 - 8 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 72 - 91 - 65 - - 0 - 1 - 1 - 0 - 37 - 35 - 21 - 86 - - - -12 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgStr..6 - 5 - - - FIFTH - 5 - - TRIANGL - 32 - 15 - 10 - 0 - on - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 2 - 4 - 4 - - - 2 - 2 - 2 - 10 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - -2 - 2 - -3 - 3 - - 11 - 14 - 13 - 15 - 4 - 11 - 21 - 15 - 15 - 14 - 15 - 13 - 0 - 1 - 3 - 4 - 5 - 5 - 8 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 91 - 75 - 87 - 58 - - 0 - 0 - 0 - 0 - 37 - 35 - 21 - 86 - - - -12 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgStr..7 - 6 - - - SIXTH - 5 - - TRIANGL - 34 - 14 - 12 - 8 - off - - - 5 - 1 - off - on - off - on - 0 - 0 - 0 - 0 - 4 - 3 - 5 - 2 - - - 2 - 2 - 8 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W4 - W2 - W7 - -3 - -1 - 0 - -2 - - 10 - 13 - 12 - 19 - 3 - 4 - 7 - 11 - 15 - 13 - 15 - 13 - 6 - 2 - 6 - 5 - 8 - 6 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 92 - 86 - 68 - - 0 - 0 - 0 - 2 - 10 - 14 - 82 - 10 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgStr..8 - 7 - - - FIFTH - 4 - - TRIANGL - 30 - 14 - 12 - 8 - off - - - 5 - 1 - off - on - off - on - 0 - 0 - 0 - 0 - 4 - 1 - 4 - 2 - - - 2 - 2 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W6 - W1 - W4 - 1 - 3 - -1 - 0 - - 10 - 13 - 10 - 14 - 3 - 12 - 9 - 11 - 15 - 14 - 15 - 14 - 0 - 0 - 6 - 5 - 6 - 5 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 60 - 94 - 66 - - 0 - 1 - 0 - 0 - 10 - 14 - 82 - 0 - - - -24 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - AnlgStr..9 - 8 - - - FIFTH - 4 - - TRIANGL - 34 - 14 - 12 - 8 - off - - - 5 - 1 - off - on - off - on - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 2 - 6 - 1 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W4 - 1 - 3 - -1 - 0 - - 12 - 13 - 10 - 14 - 3 - 12 - 9 - 11 - 15 - 14 - 15 - 14 - 0 - 0 - 6 - 5 - 6 - 5 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 60 - 94 - 66 - - 0 - 1 - 0 - 0 - 10 - 14 - 82 - 0 - - - -24 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - AnlgStr..9* - 9 - - - FIFTH - 2 - - TRIANGL - 23 - 19 - 41 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 2 - 4 - 3 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W2 - W1 - 3 - 3 - 3 - -3 - - 9 - 12 - 9 - 12 - 31 - 3 - 31 - 3 - 15 - 4 - 15 - 4 - 0 - 30 - 1 - 30 - 5 - 5 - 8 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 72 - 95 - 76 - - 0 - 1 - 1 - 0 - 37 - 35 - 21 - 86 - - - -12 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgStr.10 - 10 - - - FIFTH - 2 - - TRIANGL - 23 - 19 - 41 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0.5 - 2 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W2 - W1 - 3 - 3 - 3 - -3 - - 9 - 12 - 9 - 12 - 31 - 3 - 31 - 3 - 15 - 4 - 15 - 4 - 0 - 30 - 1 - 30 - 5 - 5 - 8 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 72 - 95 - 76 - - 0 - 1 - 1 - 0 - 37 - 35 - 21 - 86 - - - -12 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgStr.10* - 11 - - - FIFTH - 4 - - TRIANGL - 33 - 25 - 14 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 3 - 5 - 3 - - - 1 - 4 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W4 - W1 - W1 - 0 - -3 - 3 - -3 - - 12 - 16 - 12 - 11 - 31 - 3 - 11 - 11 - 15 - 4 - 14 - 12 - 0 - 30 - 1 - 2 - 5 - 5 - 7 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 72 - 92 - 73 - - 0 - 0 - 0 - 1 - 37 - 88 - 38 - 35 - - - 12 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgStr.11 - 12 - - - FIFTH - 4 - - TRIANGL - 32 - 15 - 10 - 0 - on - - - 5 - 0 - off - off - off - off - 0 - 7 - 0 - 0 - 6 - 4 - 5 - 4 - - - 1 - 2 - 2 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -2 - 2 - -3 - 3 - - 9 - 12 - 9 - 12 - 31 - 3 - 31 - 3 - 15 - 4 - 15 - 4 - 0 - 30 - 1 - 30 - 5 - 5 - 8 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 91 - 82 - 87 - 83 - - 0 - 1 - 1 - 0 - 37 - 35 - 21 - 86 - - - -12 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 5 - 9 - 50 - 99 - 0 - 0 - 0 - 0 - 0 - - BC1 String - 13 - - - FIFTH - 5 - - TRIANGL - 33 - 30 - 15 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 2 - 4 - 2 - - - 2 - 4 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W5 - W2 - W1 - 3 - 1 - 2 - -3 - - 12 - 23 - 12 - 24 - 8 - 12 - 11 - 3 - 11 - 15 - 15 - 8 - 0 - 7 - 4 - 2 - 6 - 1 - 7 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 91 - 61 - 97 - 74 - - 0 - 0 - 0 - 1 - 37 - 63 - 18 - 45 - - - 0 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - DualStr..1 - 14 - - - FIFTH - 5 - - TRIANGL - 33 - 30 - 15 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 9 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W5 - W2 - W1 - 3 - 1 - 2 - -3 - - 13 - 31 - 9 - 24 - 8 - 12 - 16 - 3 - 11 - 15 - 15 - 8 - 0 - 7 - 4 - 2 - 6 - 1 - 7 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 91 - 61 - 97 - 74 - - 0 - 0 - 0 - 1 - 37 - 63 - 18 - 45 - - - 0 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - DualStr..1* - 15 - - - FIFTH - 6 - - TRIANGL - 33 - 30 - 15 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 2 - 4 - 3 - - - 2 - 1 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W4 - W2 - W1 - 2 - -2 - 2 - 0 - - 10 - 22 - 9 - 24 - 8 - 12 - 16 - 3 - 11 - 15 - 15 - 8 - 0 - 7 - 4 - 2 - 6 - 1 - 7 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 73 - 89 - 70 - - 0 - 0 - 0 - 1 - 37 - 63 - 18 - 45 - - - 0 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 4 - - DualStr..2 - 16 - - - FIFTH - 6 - - TRIANGL - 33 - 30 - 15 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 2 - 2 - 1 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W4 - W2 - W1 - 2 - -2 - 2 - 0 - - 10 - 22 - 9 - 24 - 8 - 12 - 16 - 3 - 11 - 15 - 15 - 8 - 0 - 7 - 4 - 2 - 6 - 1 - 7 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 73 - 89 - 70 - - 0 - 0 - 0 - 1 - 37 - 63 - 18 - 45 - - - 0 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 4 - - DualStr..2* - 17 - - - FIFTH - 5 - - TRIANGL - 33 - 30 - 15 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 3 - 3 - - - 2 - 6 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W2 - W1 - W2 - 3 - -3 - 0 - 0 - - 10 - 21 - 10 - 21 - 7 - 10 - 16 - 5 - 11 - 15 - 15 - 8 - 1 - 1 - 1 - 1 - 5 - 5 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 91 - 56 - 89 - 80 - - 0 - 0 - 0 - 0 - 37 - 63 - 18 - 45 - - - 0 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - DualStr..3 - 18 - - - FIFTH - 4 - - TRIANGL - 33 - 35 - 15 - 0 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 4 - 4 - 4 - - - 2 - 2 - 4 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W1 - W1 - W1 - 2 - -3 - 3 - -1 - - 9 - 24 - 15 - 22 - 16 - 3 - 4 - 22 - 15 - 8 - 15 - 14 - 3 - 3 - 3 - 3 - 5 - 5 - 7 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 91 - 99 - 88 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -24 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - ELKA Strg1 - 19 - - - FIFTH - 7 - - TRIANGL - 35 - 25 - 20 - 0 - on - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 5 - 3 - - - 1 - 1 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W4 - W3 - W1 - 2 - -3 - 3 - -1 - - 11 - 20 - 11 - 21 - 16 - 3 - 4 - 22 - 15 - 8 - 15 - 14 - 3 - 3 - 3 - 3 - 5 - 5 - 7 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 81 - 99 - 75 - - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - ELKA Strg2 - 20 - - - FIFTH - 7 - - TRIANGL - 31 - 6 - 9 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 1 - 2 - - - 3 - 3 - 2.99 - 2.99 - no - no - no - no - 8 - 8 - 10 - 10 - - W2 - W4 - W4 - W1 - -3 - -3 - 3 - 3 - - 10 - 10 - 8 - 11 - 31 - 7 - 31 - 4 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 81 - 99 - 73 - - 0 - 0 - 0 - 0 - 0 - 20 - 0 - 20 - - - -19 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - HiString 1 - 21 - - - FIFTH - 7 - - TRIANGL - 31 - 6 - 9 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 1 - 2 - - - 3 - 3 - 2.99 - 2.99 - no - no - no - no - 8 - 8 - 10 - 10 - - W2 - W4 - W4 - W1 - -3 - -3 - 3 - 3 - - 20 - 25 - 21 - 23 - 31 - 7 - 31 - 4 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 4 - VOF - V24 - VOF - V12 - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 81 - 99 - 73 - - 0 - 0 - 0 - 0 - 0 - 20 - 0 - 20 - - - -19 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - HiString 2 - 22 - - - FIFTH - 0 - - TRIANGL - 28 - 0 - 0 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 0 - 1 - 0 - - - 19.65 - 2 - 2 - 1 - yes - no - no - no - 31 - 8 - 8 - 8 - - W2 - W1 - W1 - W4 - 0 - 0 - -3 - 3 - - 30 - 26 - 26 - 29 - 18 - 13 - 12 - 0 - 0 - 0 - 0 - 0 - 31 - 31 - 31 - 31 - 9 - 15 - 5 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 50 - 99 - 63 - - 2 - 3 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Kalimba * - 23 - - - FIFTH - 7 - - TRIANGL - 29 - 6 - 10 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 1 - 2 - - - 1.5 - 1.5 - 2.99 - 1.49 - no - no - no - no - 16 - 16 - 10 - 9 - - W2 - W4 - W4 - W1 - -3 - -3 - 3 - 3 - - 8 - 10 - 9 - 11 - 31 - 7 - 31 - 4 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 99 - 73 - - 0 - 0 - 0 - 0 - 0 - 20 - 0 - 20 - - - -19 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - LowString - 24 - - - THIRD - 7 - - TRIANGL - 21 - 0 - 0 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 5 - 2 - - - 1 - 0.5 - 7 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 27 - 31 - 10 - 9 - 21 - 25 - 12 - 12 - 13 - 13 - 4 - 10 - 6 - 22 - 6 - 7 - 12 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 78 - 54 - 82 - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntPluck1 - 25 - - - FIFTH - 7 - - TRIANGL - 21 - 0 - 0 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 6 - 2 - - - 1 - 15 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 22 - 24 - 24 - 24 - 15 - 12 - 12 - 7 - 12 - 12 - 12 - 15 - 22 - 15 - 15 - 25 - 6 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 65 - 99 - 99 - - 1 - 2 - 1 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntPluck2 - 26 - - - SEVENTH - 7 - - TRIANGL - 35 - 0 - 10 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 0 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 29 - 28 - 31 - 17 - 29 - 18 - 31 - 9 - 10 - 0 - 10 - 14 - 17 - 0 - 8 - 15 - 15 - 11 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 99 - 99 - 60 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 9 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Pizz. 1 - 27 - - - SECOND - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 0 - 1 - 1 - - - 1 - 1 - 0.5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W4 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 29 - 19 - 31 - 31 - 16 - 0 - 10 - 0 - 15 - 17 - 22 - 31 - 10 - 15 - 10 - 15 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 74 - 81 - 65 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Pizz. 2 - 28 - - - SECOND - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 1 - 1 - 4 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W4 - W1 - 0 - 3 - -3 - 0 - - 30 - 31 - 31 - 30 - 23 - 31 - 13 - 19 - 11 - 12 - 0 - 0 - 16 - 7 - 0 - 21 - 7 - 10 - 10 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 84 - 91 - 88 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 43 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Pizzicato* - 29 - - - SECOND - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 1 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W4 - W1 - 0 - 3 - 0 - 0 - - 31 - 31 - 31 - 27 - 16 - 31 - 13 - 24 - 0 - 12 - 0 - 10 - 0 - 0 - 0 - 21 - 6 - 7 - 8 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 84 - 91 - 97 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - Pizzicato - 30 - - - FIFTH - 7 - - TRIANGL - 29 - 8 - 10 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 1 - - - 3 - 1.5 - 2.99 - 1.49 - no - no - no - no - 8 - 16 - 10 - 9 - - W4 - W3 - W4 - W4 - -3 - -3 - 3 - 3 - - 9 - 10 - 9 - 11 - 31 - 7 - 31 - 4 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 73 - 99 - 73 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -19 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 4 - - ReverbStrg - 31 - - - FIFTH - 7 - - TRIANGL - 33 - 6 - 12 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 1 - 2 - - - 1.5 - 1.5 - 1.51 - 1.51 - no - no - no - no - 16 - 16 - 14 - 14 - - W2 - W4 - W4 - W2 - 1 - 1 - -2 - -2 - - 9 - 10 - 9 - 11 - 31 - 7 - 31 - 4 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 80 - 99 - 72 - - 0 - 0 - 0 - 0 - 0 - 20 - 0 - 20 - - - -19 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 12 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - StrgPad A - 32 - - - FIFTH - 7 - - TRIANGL - 31 - 6 - 19 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 1 - 2 - - - 1.51 - 1.51 - 1.5 - 1.49 - no - no - no - no - 14 - 14 - 16 - 9 - - W2 - W4 - W4 - W2 - -3 - -3 - 3 - -1 - - 8 - 10 - 9 - 11 - 31 - 7 - 31 - 4 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 78 - 99 - 71 - - 0 - 0 - 0 - 0 - 0 - 20 - 0 - 20 - - - -19 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 17 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - StrgPad B - 33 - - - FIFTH - 7 - - TRIANGL - 28 - 0 - 11 - 0 - off - - - 4 - 2 - off - on - off - on - 0 - 0 - 0 - 2 - 2 - 0 - 2 - 0 - - - 3 - 3 - 2.99 - 2.99 - no - no - no - no - 8 - 8 - 10 - 10 - - W1 - W1 - W1 - W1 - 3 - -3 - -3 - 3 - - 9 - 31 - 9 - 31 - 7 - 0 - 7 - 0 - 14 - 14 - 14 - 14 - 0 - 0 - 0 - 0 - 6 - 4 - 6 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 76 - 99 - 69 - - 2 - 0 - 2 - 0 - 32 - 10 - 0 - 10 - - - -19 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 16 - 0 - 0 - 0 - 0 - 0 - - Stringed * - 34 - - - FIFTH - 4 - - TRIANGL - 33 - 35 - 12 - 0 - off - - - 2 - 0 - off - off - off - off - 3 - 4 - 3 - 2 - 3 - 4 - 3 - 2 - - - 1 - 7 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W3 - W3 - W4 - -1 - -3 - 0 - 0 - - 11 - 10 - 11 - 24 - 7 - 12 - 16 - 3 - 13 - 15 - 15 - 8 - 5 - 7 - 4 - 2 - 5 - 3 - 7 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 57 - 97 - 66 - - 0 - 0 - 0 - 1 - 37 - 99 - 18 - 65 - - - 0 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - StringEns1 - 35 - - - FIFTH - 4 - - TRIANGL - 33 - 35 - 12 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 2 - 8 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W3 - -1 - -3 - 0 - 0 - - 11 - 22 - 11 - 24 - 7 - 12 - 16 - 3 - 13 - 15 - 15 - 8 - 5 - 7 - 4 - 2 - 5 - 3 - 7 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 63 - 97 - 66 - - 0 - 0 - 0 - 1 - 37 - 99 - 18 - 65 - - - 0 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - StringEns1* - 36 - - - FIFTH - 5 - - TRIANGL - 33 - 35 - 12 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 2 - 3 - 2 - - - 2 - 2 - 4 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W7 - W1 - W3 - -1 - -3 - 0 - 0 - - 11 - 22 - 9 - 24 - 8 - 12 - 16 - 1 - 13 - 15 - 15 - 8 - 5 - 7 - 4 - 2 - 6 - 6 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 59 - 96 - 79 - - 0 - 0 - 0 - 1 - 37 - 99 - 18 - 65 - - - -12 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - StringEns2 - 37 - - - FIFTH - 5 - - TRIANGL - 33 - 35 - 12 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 2 - 6 - 4 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W7 - W1 - W1 - -1 - -3 - 0 - 0 - - 11 - 22 - 9 - 24 - 8 - 12 - 16 - 1 - 13 - 15 - 15 - 8 - 5 - 7 - 4 - 2 - 6 - 6 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 59 - 96 - 79 - - 0 - 0 - 0 - 1 - 37 - 99 - 18 - 65 - - - -12 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - StringEns2* - 38 - - - FIFTH - 5 - - SQUARE - 33 - 46 - 30 - 9 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 2 - 3 - 2 - - - 2 - 2 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W2 - W5 - 3 - 3 - 1 - 3 - - 10 - 10 - 15 - 31 - 6 - 6 - 9 - 21 - 5 - 5 - 15 - 14 - 26 - 26 - 7 - 10 - 8 - 8 - 6 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 52 - 99 - 77 - - 1 - 1 - 0 - 1 - 40 - 40 - 30 - 10 - - - 0 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - StringEns3 - 39 - - - FIFTH - 5 - - TRIANGL - 28 - 0 - 15 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 2 - 4 - 1 - - - 4 - 2 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W4 - W3 - W3 - 2 - 2 - 0 - -3 - - 11 - 19 - 11 - 16 - 16 - 9 - 16 - 16 - 14 - 14 - 14 - 14 - 0 - 0 - 0 - 6 - 7 - 4 - 5 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 68 - 99 - 80 - - 0 - 0 - 0 - 0 - 20 - 20 - 20 - 57 - - - 0 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - StringEns4 - 40 - - - FIFTH - 5 - - TRIANGL - 33 - 0 - 15 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 2 - 2 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - 2 - 2 - 0 - -3 - - 15 - 19 - 15 - 16 - 16 - 9 - 16 - 16 - 14 - 14 - 14 - 14 - 0 - 0 - 0 - 6 - 7 - 4 - 5 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 68 - 99 - 80 - - 0 - 0 - 0 - 0 - 20 - 20 - 20 - 57 - - - 0 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - StringEns4* - 41 - - - FIFTH - 4 - - TRIANGL - 33 - 10 - 14 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 2 - 4 - 3 - - - 1 - 1 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W2 - W5 - -1 - 0 - 1 - 3 - - 11 - 11 - 11 - 12 - 11 - 9 - 9 - 10 - 14 - 14 - 12 - 13 - 0 - 0 - 6 - 0 - 5 - 5 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 57 - 94 - 68 - - 0 - 1 - 0 - 0 - 10 - 10 - 12 - 57 - - - 0 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - StringEns5 - 42 - - - FIFTH - 4 - - TRIANGL - 33 - 10 - 14 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 2 - 1 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W2 - W5 - -1 - 0 - 1 - 3 - - 12 - 11 - 15 - 19 - 11 - 9 - 9 - 15 - 14 - 14 - 12 - 13 - 0 - 0 - 6 - 0 - 5 - 5 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 57 - 94 - 68 - - 0 - 1 - 0 - 0 - 10 - 10 - 12 - 57 - - - 0 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - StringEns5* - 43 - - - FIFTH - 5 - - TRIANGL - 33 - 10 - 9 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 3 - 2 - 1 - - - 4 - 6 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W2 - W2 - W5 - -1 - 0 - 1 - 3 - - 11 - 21 - 11 - 21 - 23 - 15 - 9 - 15 - 14 - 13 - 12 - 13 - 0 - 0 - 6 - 0 - 6 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 72 - 98 - 80 - - 0 - 1 - 0 - 0 - 10 - 10 - 12 - 57 - - - -12 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - StringEns6 - 44 - - - FIFTH - 5 - - TRIANGL - 33 - 10 - 9 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 4 - 6 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W2 - W2 - W5 - -1 - 0 - 1 - 3 - - 16 - 21 - 16 - 21 - 23 - 15 - 9 - 15 - 14 - 13 - 12 - 13 - 0 - 0 - 6 - 0 - 6 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 72 - 98 - 80 - - 0 - 1 - 0 - 0 - 10 - 10 - 12 - 57 - - - -12 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - StringEns6* - 45 - - - FIFTH - 4 - - TRIANGL - 33 - 10 - 9 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 3 - 1 - - - 0.5 - 0.5 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W3 - W1 - 2 - 1 - -3 - -3 - - 11 - 21 - 12 - 13 - 23 - 15 - 9 - 15 - 14 - 13 - 12 - 13 - 0 - 0 - 6 - 0 - 5 - 5 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 71 - 97 - 83 - - 0 - 0 - 0 - 0 - 5 - 10 - 6 - 40 - - - 0 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - StringEns7 - 46 - - - FIFTH - 4 - - TRIANGL - 33 - 10 - 9 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 3 - 5 - 1 - - - 2 - 2 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W3 - 2 - 1 - -3 - -3 - - 11 - 13 - 11 - 15 - 23 - 15 - 9 - 4 - 14 - 13 - 12 - 13 - 0 - 0 - 6 - 9 - 5 - 5 - 6 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 68 - 99 - 62 - - 0 - 0 - 0 - 1 - 5 - 10 - 6 - 40 - - - -24 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - StringEns8 - 47 - - - FIFTH - 6 - - TRIANGL - 38 - 32 - 32 - 0 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 3 - - - 1 - 8 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W4 - W1 - W1 - -3 - -3 - -3 - 0 - - 12 - 10 - 15 - 28 - 21 - 2 - 21 - 13 - 14 - 9 - 15 - 14 - 6 - 0 - 6 - 0 - 8 - 7 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 90 - 98 - 88 - - 1 - 1 - 1 - 0 - 0 - 0 - 0 - 10 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - StringLead - 48 - - - THIRD - 7 - - TRIANGL - 33 - 14 - 42 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 6 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -2 - 0 - 1 - - 10 - 12 - 7 - 17 - 31 - 31 - 31 - 11 - 15 - 15 - 15 - 10 - 5 - 8 - 4 - 5 - 6 - 4 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 87 - 53 - 70 - 67 - - 1 - 1 - 1 - 1 - 0 - 34 - 20 - 23 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Strings - 49 - - - THIRD - 7 - - TRIANGL - 33 - 14 - 42 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 3 - 6 - 3 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -2 - 0 - 1 - - 12 - 12 - 14 - 10 - 0 - 0 - 0 - 0 - 15 - 15 - 15 - 15 - 6 - 0 - 0 - 5 - 6 - 4 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 76 - 52 - 70 - 67 - - 1 - 1 - 1 - 1 - 0 - 34 - 20 - 23 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Strings* - 50 - - - FIFTH - 7 - - TRIANGL - 31 - 6 - 10 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 1 - 2 - - - 3 - 3 - 2.99 - 2.99 - no - no - no - no - 8 - 8 - 10 - 10 - - W4 - W1 - W4 - W1 - -3 - -3 - 3 - 3 - - 12 - 31 - 12 - 31 - 31 - 4 - 31 - 4 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 70 - 99 - 70 - - 0 - 0 - 0 - 0 - 30 - 30 - 30 - 30 - - - -19 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Strings 1 - 51 - - - FIFTH - 7 - - TRIANGL - 31 - 0 - 26 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 2 - - - 3 - 6 - 2.99 - 9 - no - no - no - no - 8 - 8 - 10 - 8 - - W3 - W3 - W4 - W2 - -3 - -3 - 3 - 3 - - 10 - 10 - 12 - 20 - 4 - 4 - 5 - 5 - 12 - 9 - 12 - 9 - 1 - 2 - 2 - 0 - 5 - 4 - 5 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 71 - 99 - 61 - - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 20 - - - -19 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Strings 2 - 52 - - - FIFTH - 7 - - TRIANGL - 31 - 6 - 10 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 1 - 2 - - - 3 - 3 - 2.99 - 2.99 - no - no - no - no - 8 - 8 - 10 - 10 - - W8 - W1 - W4 - W1 - -3 - -3 - 3 - 3 - - 18 - 31 - 12 - 31 - 31 - 4 - 31 - 4 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 70 - 99 - 70 - - 0 - 0 - 0 - 0 - 30 - 30 - 30 - 30 - - - -19 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Strings 3 - 53 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 46 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 3 - 2.99 - 3 - 3 - no - no - no - no - 8 - 10 - 8 - 8 - - W4 - W7 - W2 - W4 - 3 - 3 - -3 - -3 - - 11 - 31 - 11 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 86 - 68 - 86 - 70 - - 0 - 0 - 0 - 0 - 30 - 0 - 30 - 0 - - - -19 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Syn.Str 1 - 54 - - - FIFTH - 7 - - TRIANGL - 32 - 0 - 75 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 3 - 2.99 - 3 - 6 - no - no - no - no - 8 - 10 - 8 - 8 - - W5 - W7 - W4 - W8 - 3 - 3 - -3 - -3 - - 12 - 31 - 12 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 83 - 59 - 91 - 49 - - 0 - 0 - 0 - 0 - 30 - 0 - 30 - 0 - - - -19 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Syn.Str 2 - 55 - - - THIRD - 7 - - TRIANGL - 29 - 6 - 15 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 2 - 0 - - - 2 - 2 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W4 - W1 - W1 - 0 - -3 - 3 - 0 - - 26 - 31 - 31 - 31 - 10 - 9 - 0 - 4 - 15 - 15 - 15 - 15 - 0 - 3 - 0 - 0 - 5 - 2 - 11 - 2 - VOF - V12 - V48 - V24 - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 58 - 68 - 68 - - 2 - 0 - 0 - 0 - 5 - 21 - 12 - 15 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SynString - 56 - - - FIFTH - 5 - - TRIANGL - 21 - 0 - 0 - 0 - on - - - 0 - 0 - off - off - off - off - 7 - 3 - 3 - 7 - 5 - 6 - 4 - 2 - - - 1 - 7 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - 0 - 0 - -3 - -1 - - 27 - 27 - 31 - 22 - 9 - 19 - 10 - 13 - 12 - 7 - 12 - 13 - 10 - 0 - 10 - 10 - 7 - 12 - 6 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 81 - 99 - 79 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - T Pluck..1 - 57 - - - THIRD - 6 - - TRIANGL - 21 - 0 - 0 - 0 - on - - - 0 - 0 - off - off - off - off - 7 - 3 - 3 - 7 - 5 - 5 - 6 - 3 - - - 1 - 0.5 - 7 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W3 - W1 - 0 - 0 - -3 - -1 - - 30 - 27 - 31 - 22 - 10 - 19 - 10 - 13 - 12 - 7 - 12 - 13 - 9 - 0 - 10 - 10 - 6 - 12 - 6 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 59 - 79 - 83 - - 2 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - T Pluck..2 - 58 - - - FIFTH - 5 - - TRIANGL - 34 - 33 - 0 - 0 - on - - - 1 - 0 - off - off - off - off - 7 - 3 - 3 - 7 - 5 - 5 - 6 - 3 - - - 0.5 - 10 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W1 - W1 - 0 - -2 - -1 - 3 - - 19 - 21 - 28 - 29 - 7 - 13 - 9 - 15 - 14 - 10 - 10 - 12 - 9 - 31 - 15 - 9 - 5 - 3 - 5 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 77 - 99 - 83 - - 2 - 3 - 1 - 1 - 0 - 18 - 25 - 21 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - T Pluck..3 - 59 - - - FIFTH - 7 - - TRIANGL - 29 - 6 - 16 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 0 - 3 - 0 - - - 1.5 - 1.5 - 2.99 - 1.49 - no - no - no - no - 16 - 16 - 10 - 9 - - W2 - W4 - W4 - W1 - -3 - -3 - 3 - 3 - - 10 - 12 - 11 - 13 - 31 - 8 - 31 - 5 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 73 - 99 - 64 - - 0 - 0 - 0 - 0 - 0 - 20 - 0 - 20 - - - -7 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - WarmString - 60 - - - FIFTH - 7 - - TRIANGL - 41 - 0 - 0 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 3 - - - 2 - 2 - 2 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W1 - W1 - 0 - 0 - 0 - 0 - - 10 - 13 - 6 - 31 - 4 - 4 - 0 - 0 - 15 - 15 - 15 - 15 - 2 - 2 - 0 - 3 - 6 - 4 - 4 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 96 - 61 - 99 - - 1 - 1 - 2 - 0 - 92 - 41 - 76 - 86 - - - -24 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - WindString - 61 - - - FIRST - 5 - - TRIANGL - 20 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 3 - 3 - 3 - - - 1 - 1 - 2 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -3 - -3 - -1 - - 11 - 31 - 31 - 8 - 9 - 2 - 12 - 3 - 11 - 14 - 10 - 11 - 4 - 4 - 2 - 6 - 6 - 3 - 4 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 91 - 78 - 88 - - 0 - 2 - 0 - 0 - 0 - 67 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - phantstrng - 62 - - - - Banjo - 1 - - FOURTH - 7 - - SQUARE - 58 - 0 - 0 - 0 - on - - - 0 - 2 - on - off - off - off - 0 - 0 - 0 - 0 - 1 - 0 - 2 - 1 - - - 3 - 1 - 8 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W3 - W1 - 0 - 3 - -3 - 2 - - 28 - 31 - 31 - 30 - 11 - 18 - 10 - 12 - 9 - 15 - 10 - 12 - 10 - 0 - 9 - 0 - 6 - 1 - 1 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 88 - 78 - 81 - - 2 - 2 - 3 - 2 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 66 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Banjo * - 0 - - - FOURTH - 7 - - TRIANGL - 29 - 0 - 16 - 0 - off - - - 3 - 0 - off - off - off - off - 1 - 0 - 0 - 0 - 3 - 0 - 0 - 0 - - - 3 - 1 - 2 - 9 - no - no - no - no - 8 - 8 - 8 - 8 - - W5 - W4 - W1 - W8 - -3 - 3 - 3 - 2 - - 31 - 31 - 31 - 31 - 14 - 31 - 7 - 11 - 10 - 15 - 15 - 15 - 10 - 0 - 17 - 8 - 6 - 1 - 1 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 83 - 64 - 72 - - 2 - 2 - 2 - 2 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Banjo - 1 - - - THIRD - 5 - - TRIANGL - 6 - 0 - 1 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 6 - 2 - - - 1 - 1 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 3 - 3 - 2 - - 31 - 31 - 31 - 30 - 13 - 2 - 27 - 23 - 9 - 15 - 12 - 12 - 11 - 3 - 8 - 0 - 6 - 1 - 1 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 90 - 66 - 90 - - 2 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Banjo....1 - 2 - - - FIFTH - 5 - - TRIANGL - 6 - 0 - 1 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 4 - 2 - - - 1 - 6 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W4 - W1 - -3 - 3 - 3 - 2 - - 31 - 22 - 31 - 30 - 13 - 9 - 27 - 23 - 9 - 0 - 12 - 12 - 11 - 3 - 8 - 0 - 6 - 5 - 5 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 77 - 62 - 91 - - 2 - 2 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Banjo....2 - 3 - - - THIRD - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 0 - 2 - 1 - - - 3 - 1 - 8 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - -3 - 3 - 3 - 2 - - 31 - 31 - 31 - 30 - 13 - 11 - 27 - 23 - 9 - 15 - 12 - 12 - 11 - 3 - 8 - 0 - 6 - 1 - 1 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 92 - 69 - 95 - - 2 - 3 - 3 - 2 - 0 - 0 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Old Banjo - 4 - - - - BassGuitar - 2 - - THIRD - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 1 - 1 - 3 - - - 0.5 - 0.5 - 0.5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - 0 - -3 - 3 - -3 - - 31 - 31 - 31 - 31 - 31 - 9 - 12 - 13 - 15 - 10 - 11 - 12 - 0 - 0 - 0 - 0 - 12 - 9 - 10 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 83 - 74 - 81 - - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 30 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnalogBass - 0 - - - THIRD - 3 - - TRIANGL - 34 - 53 - 10 - 0 - on - - - 7 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 1 - 6 - 1 - - - 1 - 1 - 5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 21 - 31 - 7 - 15 - 21 - 12 - 13 - 13 - 11 - 10 - 10 - 11 - 8 - 8 - 9 - 3 - 5 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 76 - 54 - 97 - - 2 - 1 - 1 - 2 - 0 - 12 - 46 - 15 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgBass.1 - 1 - - - THIRD - 3 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 5 - 1 - - - 1 - 1 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 28 - 24 - 28 - 15 - 27 - 9 - 27 - 15 - 12 - 13 - 12 - 4 - 17 - 15 - 12 - 9 - 3 - 4 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 74 - 50 - 95 - - 2 - 1 - 1 - 0 - 0 - 12 - 46 - 15 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgBass.2 - 2 - - - THIRD - 1 - - TRIANGL - 38 - 28 - 2 - 80 - off - - - 3 - 1 - off - on - on - off - 0 - 0 - 0 - 0 - 6 - 2 - 5 - 1 - - - 1 - 1 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - -1 - 0 - - 31 - 31 - 31 - 31 - 7 - 21 - 10 - 12 - 15 - 13 - 4 - 12 - 5 - 18 - 10 - 12 - 10 - 5 - 3 - 12 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 87 - 70 - 81 - - 2 - 1 - 1 - 0 - 0 - 12 - 46 - 15 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgBass.3 - 3 - - - THIRD - 3 - - TRIANGL - 38 - 28 - 2 - 80 - off - - - 3 - 1 - off - on - on - off - 0 - 0 - 0 - 0 - 4 - 1 - 5 - 1 - - - 1 - 1 - 2 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - -1 - 0 - - 31 - 31 - 31 - 31 - 7 - 21 - 10 - 12 - 15 - 13 - 4 - 12 - 9 - 18 - 10 - 12 - 10 - 5 - 3 - 12 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 70 - 90 - - 1 - 2 - 2 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgBass.4 - 4 - - - THIRD - 3 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 6 - 2 - - - 0.5 - 0.5 - 9 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 28 - 27 - 30 - 18 - 28 - 12 - 31 - 15 - 9 - 4 - 15 - 6 - 10 - 8 - 8 - 9 - 4 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 70 - 96 - - 0 - 0 - 0 - 0 - 0 - 12 - 46 - 15 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgBass.5 - 6 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 1 - - - 0.5 - 0.5 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 28 - 27 - 30 - 31 - 31 - 31 - 31 - 15 - 15 - 14 - 12 - 6 - 10 - 8 - 8 - 9 - 4 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 76 - 99 - 90 - - 0 - 0 - 0 - 0 - 0 - 12 - 46 - 15 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgBass.6 - 7 - - - FIFTH - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 5 - 1 - - - 1 - 0.5 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -1 - -1 - 3 - 3 - - 31 - 28 - 27 - 30 - 31 - 31 - 31 - 31 - 12 - 12 - 15 - 12 - 9 - 9 - 7 - 8 - 10 - 10 - 9 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 0 - 0 - 0 - 0 - 0 - 12 - 46 - 15 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgBass.7 - 8 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 1 - 6 - 1 - - - 1 - 0.5 - 2 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -1 - -1 - 3 - 3 - - 28 - 28 - 28 - 28 - 7 - 12 - 7 - 7 - 15 - 15 - 15 - 15 - 7 - 8 - 7 - 7 - 9 - 10 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 97 - 99 - 82 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgBass.8 - 9 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 3 - - - 0.5 - 0.5 - 0.5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -1 - -1 - 3 - 3 - - 28 - 28 - 28 - 31 - 31 - 15 - 31 - 18 - 15 - 2 - 15 - 2 - 9 - 31 - 6 - 31 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 94 - 99 - 50 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgBass9 - 10 - - - FIFTH - 6 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 4 - 2 - - - 0.5 - 0.5 - 8 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - 0 - 0 - 0 - 0 - - 29 - 25 - 29 - 29 - 18 - 27 - 12 - 18 - 14 - 12 - 13 - 4 - 6 - 9 - 2 - 7 - 9 - 4 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 66 - 97 - - 0 - 0 - 0 - 3 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 17 - 6 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgCut.BS - 11 - - - SIXTH - 6 - - TRIANGL - 8 - 0 - 11 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 3 - 7 - 3 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W3 - W1 - 0 - 1 - 0 - 0 - - 31 - 31 - 31 - 31 - 6 - 28 - 27 - 8 - 12 - 4 - 15 - 6 - 18 - 15 - 31 - 2 - 7 - 7 - 7 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 95 - 93 - 94 - - 1 - 2 - 1 - 0 - 0 - 25 - 0 - 20 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 17 - 6 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgFunkBS - 12 - - - SIXTH - 4 - - TRIANGL - 8 - 0 - 11 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 5 - 2 - - - 1 - 1 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - -2 - 3 - 2 - 3 - - 28 - 24 - 13 - 21 - 15 - 31 - 31 - 12 - 12 - 15 - 15 - 11 - 7 - 31 - 8 - 1 - 9 - 9 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 97 - 98 - 99 - - 0 - 0 - 1 - 0 - 0 - 25 - 0 - 20 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 17 - 6 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgSplat - 13 - - - SECOND - 7 - - TRIANGL - 28 - 26 - 3 - 19 - off - - - 6 - 1 - on - on - on - on - 0 - 0 - 0 - 7 - 7 - 7 - 6 - 3 - - - 1 - 3 - 0.87 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 3 - 0 - 0 - - 31 - 21 - 16 - 31 - 11 - 11 - 8 - 25 - 14 - 9 - 5 - 0 - 6 - 0 - 2 - 0 - 10 - 10 - 10 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 87 - 42 - 99 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bass 1 - 14 - - - FOURTH - 7 - - TRIANGL - 28 - 26 - 3 - 19 - off - - - 6 - 1 - on - on - on - on - 0 - 0 - 0 - 7 - 7 - 7 - 2 - 3 - - - 1 - 0.5 - 0.5 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 3 - 0 - 0 - - 31 - 21 - 31 - 31 - 11 - 11 - 8 - 25 - 14 - 9 - 5 - 0 - 6 - 0 - 2 - 0 - 10 - 10 - 10 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 89 - 78 - 78 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bass 2 - 15 - - - FOURTH - 7 - - TRIANGL - 28 - 26 - 3 - 19 - off - - - 6 - 1 - on - on - on - on - 0 - 0 - 0 - 7 - 7 - 7 - 2 - 3 - - - 1 - 3 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 3 - 0 - 0 - - 31 - 21 - 31 - 31 - 11 - 11 - 8 - 25 - 14 - 9 - 5 - 0 - 6 - 0 - 2 - 0 - 10 - 10 - 10 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 87 - 78 - 92 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bass 3 - 16 - - - SECOND - 0 - - TRIANGL - 28 - 26 - 3 - 19 - off - - - 6 - 1 - on - on - on - on - 0 - 0 - 0 - 7 - 7 - 7 - 2 - 3 - - - 1 - 3 - 8 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 3 - 0 - 0 - - 31 - 21 - 4 - 31 - 11 - 11 - 8 - 25 - 14 - 9 - 5 - 0 - 6 - 0 - 2 - 0 - 10 - 10 - 10 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 87 - 88 - 92 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bass 4 - 17 - - - FIFTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 3 - 2 - 7 - - - 0.5 - 0.5 - 0.5 - 7 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 7 - 31 - 7 - 15 - 10 - 15 - 10 - 10 - 5 - 0 - 5 - 7 - 6 - 4 - 6 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 71 - 99 - 78 - - 2 - 0 - 2 - 0 - 0 - 0 - 0 - 15 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bass 5 - 18 - - - FIFTH - 4 - - TRIANGL - 38 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 0 - 4 - 0 - - - 1 - 1 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 21 - 31 - 31 - 13 - 22 - 15 - 15 - 10 - 13 - 31 - 31 - 12 - 6 - 15 - 15 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 81 - 99 - 89 - - 3 - 3 - 2 - 3 - 0 - 0 - 99 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bass Pluck - 19 - - - FOURTH - 6 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 0 - 3 - 1 - - - 0.5 - 0.5 - 5 - 9 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 28 - 25 - 27 - 28 - 18 - 28 - 12 - 26 - 14 - 9 - 4 - 4 - 6 - 9 - 2 - 7 - 4 - 4 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 79 - 81 - - 3 - 2 - 2 - 3 - 14 - 0 - 99 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - <<Bass.0>> - 20 - - - FIFTH - 7 - - TRIANGL - 35 - 32 - 0 - 41 - on - - - 2 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 3 - 1 - 3 - 1 - - - 0.5 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 25 - 24 - 21 - 22 - 7 - 31 - 24 - 9 - 0 - 15 - 14 - 0 - 6 - 12 - 6 - 6 - 7 - 6 - 8 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 74 - 99 - 76 - - 2 - 1 - 1 - 2 - 14 - 0 - 99 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - <<Bass.1>> - 21 - - - SECOND - 2 - - TRIANGL - 33 - 19 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 1 - 3 - 1 - - - 1 - 1 - 4 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 25 - 30 - 26 - 25 - 18 - 9 - 9 - 6 - 15 - 0 - 8 - 14 - 6 - 4 - 10 - 2 - 6 - 8 - 8 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 79 - 77 - 74 - - 2 - 2 - 2 - 2 - 99 - 99 - 99 - 99 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - <<Bass.2>> - 22 - - - THIRD - 4 - - TRIANGL - 33 - 19 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 1 - 5 - 1 - - - 1 - 1 - 3 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -3 - -3 - 3 - - 25 - 25 - 24 - 25 - 14 - 14 - 6 - 6 - 15 - 15 - 10 - 14 - 7 - 7 - 8 - 1 - 6 - 6 - 8 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 70 - 65 - 90 - - 2 - 2 - 2 - 2 - 99 - 99 - 99 - 99 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - <<Bass.3>> - 23 - - - THIRD - 5 - - TRIANGL - 99 - 0 - 0 - 15 - off - - - 0 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 1 - 4 - 1 - - - 1 - 4 - 0.5 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 18 - 28 - 12 - 26 - 14 - 9 - 4 - 4 - 6 - 9 - 2 - 7 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 78 - 63 - - 3 - 2 - 2 - 2 - 14 - 0 - 99 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - <<Bass.4>> - 24 - - - FIFTH - 4 - - TRIANGL - 38 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 1 - 3 - 1 - - - 1 - 2 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 25 - 25 - 25 - 21 - 12 - 18 - 15 - 22 - 14 - 12 - 13 - 13 - 4 - 4 - 6 - 6 - 10 - 10 - 9 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 86 - 99 - 95 - - 2 - 2 - 2 - 3 - 14 - 35 - 99 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - <<Bass.5>> - 25 - - - FOURTH - 4 - - TRIANGL - 33 - 19 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 1 - 2 - 1 - - - 1 - 1 - 3 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -3 - -3 - 3 - - 26 - 27 - 30 - 25 - 15 - 13 - 10 - 6 - 14 - 14 - 8 - 14 - 6 - 2 - 12 - 1 - 5 - 5 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 91 - 73 - 69 - - 2 - 2 - 2 - 2 - 99 - 99 - 99 - 99 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - <<Bass.6>> - 26 - - - THIRD - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 1 - 4 - 1 - - - 2 - 1 - 1 - 7 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -2 - 1 - 2 - - 30 - 30 - 29 - 30 - 28 - 27 - 1 - 28 - 12 - 13 - 0 - 12 - 5 - 1 - 1 - 5 - 9 - 9 - 12 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 65 - 85 - 83 - - 2 - 0 - 2 - 3 - 0 - 12 - 46 - 15 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - <<Bass.7>> - 27 - - - FIFTH - 3 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 1 - 3 - 2 - - - 2 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -2 - 1 - 2 - - 30 - 18 - 29 - 30 - 28 - 12 - 1 - 28 - 12 - 10 - 0 - 12 - 5 - 7 - 1 - 10 - 9 - 7 - 12 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 97 - 99 - 99 - - 0 - 0 - 0 - 0 - 0 - 12 - 46 - 15 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - <<Bass.8>> - 28 - - - FOURTH - 3 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 1 - 3 - 1 - - - 1 - 1 - 1 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -2 - 1 - 2 - - 30 - 24 - 29 - 30 - 28 - 23 - 1 - 28 - 12 - 13 - 10 - 12 - 6 - 3 - 3 - 6 - 9 - 9 - 12 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 84 - 77 - 62 - - 2 - 0 - 2 - 2 - 0 - 12 - 46 - 15 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - <<Bass.9>> - 29 - - - FIRST - 5 - - TRIANGL - 35 - 0 - 25 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 2 - - - 1 - 10 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -1 - 1 - 2 - -2 - - 31 - 31 - 31 - 31 - 12 - 18 - 12 - 24 - 15 - 15 - 15 - 15 - 11 - 18 - 2 - 4 - 10 - 8 - 8 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 75 - 84 - 78 - - 1 - 0 - 1 - 3 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bass....FM - 30 - - - THIRD - 7 - - SHOLD - 99 - 0 - 0 - 0 - off - - - 7 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 3 - 3 - 7 - - - 1 - 0.5 - 0.5 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W4 - W5 - 0 - -3 - 3 - -3 - - 31 - 31 - 31 - 31 - 31 - 5 - 6 - 4 - 15 - 14 - 13 - 14 - 2 - 1 - 2 - 7 - 8 - 10 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 81 - 99 - 83 - - 0 - 1 - 1 - 1 - 0 - 63 - 50 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BombBass - 31 - - - THIRD - 3 - - TRIANGL - 33 - 19 - 7 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 1 - 4 - 1 - - - 0.5 - 9 - 6 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 0 - 1 - 0 - 0 - - 31 - 24 - 27 - 28 - 18 - 28 - 12 - 18 - 15 - 9 - 13 - 4 - 6 - 9 - 9 - 7 - 7 - 4 - 7 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 87 - 59 - 86 - - 0 - 3 - 2 - 1 - 0 - 99 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - CutupBass - 32 - - - FOURTH - 7 - - TRIANGL - 28 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 6 - 3 - - - 0.5 - 0.5 - 7 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W2 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 19 - 31 - 9 - 8 - 10 - 1 - 4 - 4 - 4 - 4 - 3 - 3 - 5 - 0 - 9 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 60 - 76 - - 1 - 2 - 3 - 3 - 0 - 0 - 43 - 0 - - - -12 - POLY - 2 - FINGER - 0 - POR - 99 - 0 - 0 - 75 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E.Bass 1 - 33 - - - FIRST - 7 - - TRIANGL - 30 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 3 - 3 - - - 1 - 0.5 - 5 - 15 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W1 - W1 - 0 - 0 - 0 - 0 - - 29 - 30 - 31 - 31 - 12 - 8 - 11 - 15 - 15 - 15 - 15 - 15 - 10 - 9 - 10 - 16 - 9 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 82 - 65 - 67 - - 0 - 0 - 0 - 0 - 40 - 35 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E.Bass 2 - 34 - - - FIRST - 4 - - TRIANGL - 26 - 16 - 20 - 21 - off - - - 4 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 2 - 1 - 0 - 2 - - - 0.5 - 0.5 - 2 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 3 - 3 - 3 - - 25 - 31 - 31 - 6 - 5 - 5 - 5 - 6 - 0 - 14 - 14 - 10 - 8 - 6 - 6 - 7 - 7 - 1 - 1 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 83 - 51 - 86 - - 2 - 2 - 3 - 3 - 0 - 4 - 4 - 6 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E.Bass 3 - 35 - - - THIRD - 7 - - TRIANGL - 28 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 0 - 7 - 3 - - - 1 - 0.5 - 9 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -3 - 3 - 3 - - 31 - 31 - 31 - 31 - 9 - 1 - 9 - 1 - 9 - 0 - 12 - 4 - 0 - 0 - 6 - 0 - 9 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 67 - 70 - 61 - - 0 - 2 - 3 - 3 - 0 - 0 - 27 - 0 - - - -12 - POLY - 4 - FINGER - 0 - POR - 99 - 0 - 0 - 75 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - ElecBass 1 - 36 - - - THIRD - 7 - - TRIANGL - 34 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 0 - 3 - 3 - - - 0.5 - 0.5 - 1 - 13 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W2 - -3 - 3 - 3 - 3 - - 31 - 31 - 31 - 31 - 6 - 6 - 10 - 14 - 2 - 2 - 2 - 2 - 0 - 0 - 0 - 0 - 8 - 7 - 15 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 77 - 82 - 75 - - 0 - 0 - 2 - 2 - 0 - 59 - 59 - 49 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - ElecBass 2 - 37 - - - FOURTH - 7 - - TRIANGL - 30 - 5 - 10 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 5 - - - 1 - 2 - 2 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 18 - 18 - 18 - 13 - 31 - 31 - 31 - 10 - 15 - 15 - 15 - 14 - 0 - 0 - 0 - 7 - 10 - 10 - 10 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 62 - 95 - 84 - - 0 - 0 - 0 - 0 - 1 - 0 - 75 - 77 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Fat Lead.1 - 38 - - - THIRD - 4 - - TRIANGL - 36 - 0 - 4 - 0 - on - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 4 - - - 0.5 - 0.5 - 2 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - 0 - 2 - 0 - 2 - - 22 - 17 - 22 - 11 - 31 - 31 - 4 - 3 - 15 - 15 - 13 - 13 - 0 - 6 - 0 - 1 - 10 - 5 - 10 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 81 - 73 - 83 - - 0 - 1 - 1 - 1 - 39 - 0 - 17 - 39 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Fat Lead.2 - 39 - - - SECOND - 4 - - TRIANGL - 36 - 0 - 4 - 0 - on - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 4 - 5 - 4 - - - 1 - 1 - 2 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W3 - W1 - 0 - 2 - 0 - 2 - - 22 - 17 - 22 - 11 - 31 - 31 - 4 - 3 - 15 - 15 - 13 - 13 - 0 - 6 - 0 - 1 - 10 - 5 - 10 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 86 - 78 - 63 - - 0 - 1 - 1 - 1 - 39 - 0 - 17 - 39 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Fat Lead.3 - 40 - - - FOURTH - 4 - - TRIANGL - 36 - 38 - 52 - 0 - on - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 7 - 5 - - - 0.5 - 0.5 - 0.5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - 0 - 2 - 0 - 2 - - 22 - 17 - 22 - 11 - 31 - 31 - 4 - 3 - 15 - 15 - 13 - 13 - 0 - 6 - 0 - 1 - 10 - 5 - 10 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 99 - 77 - 85 - - 0 - 1 - 1 - 1 - 39 - 0 - 17 - 39 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Fat Lead.4 - 41 - - - FIRST - 7 - - TRIANGL - 30 - 9 - 4 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 0 - 0 - 3 - - - 2 - 1 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 1 - 0 - 0 - - 31 - 31 - 31 - 31 - 28 - 11 - 6 - 2 - 10 - 12 - 1 - 0 - 4 - 0 - 0 - 3 - 9 - 9 - 9 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 78 - 95 - 84 - - 0 - 0 - 0 - 3 - 0 - 0 - 0 - 14 - - - -12 - POLY - 2 - FINGER - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - filtrsweep - 42 - - - THIRD - 2 - - TRIANGL - 33 - 19 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 6 - 1 - - - 1 - 1 - 6 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -1 - 1 - -1 - 1 - - 31 - 31 - 31 - 31 - 18 - 18 - 12 - 6 - 14 - 14 - 14 - 14 - 6 - 6 - 2 - 0 - 9 - 9 - 8 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 82 - 69 - 82 - - 3 - 3 - 2 - 0 - 0 - 0 - 0 - 0 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - FlangeBass - 43 - - - SIXTH - 5 - - TRIANGL - 23 - 33 - 9 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 3 - - - 1.51 - 0.75 - 1.49 - 0.75 - no - no - no - no - 14 - 12 - 9 - 12 - - W1 - W1 - W1 - W1 - -3 - 0 - 3 - -3 - - 17 - 17 - 17 - 10 - 6 - 8 - 6 - 8 - 15 - 15 - 15 - 15 - 3 - 3 - 3 - 2 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 83 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 21 - - - -19 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 49 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Fretless * - 44 - - - THIRD - 7 - - TRIANGL - 33 - 19 - 7 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 1 - 4 - 2 - - - 0.5 - 3 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 3 - 0 - 0 - - 25 - 27 - 30 - 8 - 18 - 13 - 13 - 12 - 15 - 14 - 8 - 0 - 5 - 2 - 12 - 12 - 6 - 8 - 8 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 66 - 74 - 66 - - 2 - 2 - 2 - 1 - 99 - 99 - 99 - 99 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Fretless.1 - 45 - - - THIRD - 5 - - TRIANGL - 33 - 19 - 7 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 3 - 5 - 2 - - - 3 - 1 - 5 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 3 - 0 - 0 - - 25 - 27 - 30 - 31 - 18 - 13 - 13 - 6 - 15 - 14 - 8 - 0 - 5 - 2 - 12 - 0 - 6 - 5 - 6 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 70 - 62 - 64 - - 2 - 2 - 2 - 3 - 99 - 99 - 99 - 0 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Fretless.2 - 46 - - - THIRD - 5 - - SAWUP - 21 - 0 - 11 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 5 - 1 - - - 1 - 1 - 3 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 1 - -2 - 3 - 1 - - 31 - 18 - 24 - 30 - 19 - 31 - 0 - 28 - 12 - 15 - 0 - 12 - 9 - 2 - 0 - 10 - 10 - 7 - 7 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 70 - 71 - 75 - - 0 - 2 - 0 - 0 - 0 - 0 - 0 - 15 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - FunkyBass1 - 47 - - - THIRD - 6 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 2 - 5 - 0 - - - 1 - 1 - 4 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 1 - -2 - -1 - 2 - - 31 - 18 - 18 - 30 - 19 - 31 - 31 - 28 - 12 - 15 - 15 - 12 - 9 - 31 - 12 - 10 - 10 - 7 - 7 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 75 - 64 - 80 - - 0 - 2 - 2 - 0 - 0 - 0 - 0 - 15 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - FunkyBass2 - 48 - - - FIRST - 7 - - TRIANGL - 25 - 8 - 6 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 0 - 1 - 0 - - - 0.5 - 0.5 - 0.5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W7 - 0 - 3 - -3 - 0 - - 17 - 16 - 21 - 7 - 8 - 11 - 11 - 2 - 11 - 12 - 11 - 15 - 0 - 0 - 15 - 0 - 8 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 80 - 81 - 67 - - 0 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 4 - FINGER - 20 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Jaco Bass - 49 - - - SECOND - 1 - - TRIANGL - 25 - 8 - 6 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 0 - 1 - 1 - - - 0.5 - 0.5 - 0.5 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W2 - W1 - 0 - 3 - -3 - 0 - - 15 - 15 - 18 - 31 - 8 - 10 - 11 - 6 - 11 - 12 - 11 - 2 - 0 - 0 - 15 - 5 - 8 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 80 - 81 - 70 - - 0 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FINGER - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - Jaco Bass2 - 50 - - - FOURTH - 7 - - TRIANGL - 28 - 0 - 0 - 0 - off - - - 5 - 1 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 0 - 7 - 3 - - - 1 - 0.5 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W2 - W4 - 0 - -3 - 3 - 3 - - 31 - 31 - 31 - 29 - 9 - 1 - 17 - 10 - 9 - 0 - 13 - 4 - 0 - 0 - 6 - 0 - 9 - 8 - 8 - 8 - VOF - V12 - V12 - V24 - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 74 - 65 - 70 - - 0 - 2 - 3 - 3 - 0 - 0 - 27 - 0 - - - -12 - POLY - 4 - FINGER - 0 - POR - 99 - 0 - 0 - 75 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - JazzWalker - 51 - - - FOURTH - 0 - - TRIANGL - 27 - 0 - 0 - 0 - on - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 0 - 7 - 5 - - - 1 - 0.5 - 9 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - -3 - 0 - 0 - - 31 - 31 - 28 - 31 - 20 - 31 - 31 - 31 - 13 - 15 - 15 - 15 - 10 - 0 - 13 - 19 - 10 - 11 - 15 - 15 - VOF - VOF - V48 - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 68 - 70 - 99 - - 1 - 2 - 2 - 2 - 13 - 0 - 52 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Kai Bass * - 52 - - - SECOND - 7 - - TRIANGL - 25 - 0 - 7 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 1 - 1 - 3 - - - 0.5 - 0.5 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 32 - - W1 - W1 - W5 - W1 - 0 - 0 - -3 - 0 - - 31 - 31 - 31 - 31 - 9 - 9 - 17 - 16 - 0 - 0 - 0 - 3 - 0 - 0 - 0 - 7 - 8 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 74 - 71 - 79 - - 1 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - LatelyBass - 53 - - - THIRD - 7 - - TRIANGL - 28 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 0 - 7 - 3 - - - 1 - 0.5 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W6 - W1 - 0 - -3 - 3 - 3 - - 31 - 31 - 31 - 31 - 9 - 1 - 9 - 1 - 15 - 7 - 15 - 10 - 0 - 0 - 6 - 0 - 9 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 70 - 74 - 67 - - 0 - 2 - 3 - 3 - 0 - 0 - 27 - 0 - - - -12 - MONO - 4 - FINGER - 0 - POR - 99 - 0 - 0 - 75 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - MonophBass - 54 - - - FIFTH - 7 - - TRIANGL - 29 - 0 - 7 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 2 - 0 - 6 - - - 0.5 - 0.5 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 32 - - W2 - W6 - W2 - W8 - 3 - 0 - -3 - 0 - - 31 - 31 - 31 - 15 - 9 - 9 - 16 - 10 - 15 - 13 - 10 - 3 - 0 - 0 - 0 - 7 - 8 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 86 - 96 - 79 - - 1 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - - - -12 - MONO - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - MoogerBass - 55 - - - THIRD - 0 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 2 - 6 - 1 - - - 1 - 5 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 1 - -2 - 0 - 0 - - 28 - 28 - 28 - 28 - 22 - 16 - 16 - 3 - 14 - 0 - 10 - 13 - 4 - 10 - 10 - 10 - 9 - 9 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 72 - 79 - 85 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 46 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntBass.1 - 56 - - - FIFTH - 0 - - SQUARE - 46 - 0 - 17 - 0 - on - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 2 - - - 1 - 5 - 1 - 7 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 1 - -2 - 0 - 0 - - 28 - 28 - 28 - 28 - 19 - 15 - 21 - 15 - 14 - 0 - 10 - 6 - 10 - 10 - 10 - 10 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 65 - 99 - 77 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 46 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntBass.2 - 57 - - - FOURTH - 0 - - TRIANGL - 29 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 3 - 5 - - - 0.5 - 0.5 - 0.5 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - -3 - 0 - 0 - - 15 - 31 - 24 - 23 - 29 - 28 - 21 - 12 - 14 - 13 - 9 - 4 - 4 - 4 - 10 - 9 - 8 - 1 - 4 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 83 - 79 - 88 - - 3 - 3 - 2 - 2 - 20 - 0 - 0 - 24 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 83 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Precision* - 58 - - - SECOND - 7 - - TRIANGL - 25 - 0 - 7 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 1 - 1 - 3 - - - 0.5 - 0.5 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 32 - - W2 - W2 - W4 - W2 - 0 - 0 - -3 - 0 - - 31 - 31 - 31 - 31 - 9 - 9 - 17 - 14 - 15 - 13 - 11 - 3 - 0 - 0 - 0 - 7 - 8 - 8 - 8 - 8 - VOF - VOF - VOF - V48 - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 82 - 85 - 76 - - 1 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - - - -12 - MONO - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - ResoMonoBs - 59 - - - THIRD - 4 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 1 - 4 - 1 - - - 0.5 - 0.5 - 6 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 18 - 18 - 12 - 18 - 14 - 14 - 3 - 4 - 6 - 6 - 2 - 7 - 9 - 9 - 8 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 73 - 88 - 91 - - 3 - 3 - 2 - 3 - 14 - 0 - 99 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Roto Bass - 60 - - - SECOND - 7 - - TRIANGL - 25 - 0 - 9 - 0 - off - - - 5 - 0 - off - off - on - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0.5 - 0.5 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - -3 - 0 - - 31 - 31 - 25 - 31 - 5 - 5 - 9 - 14 - 12 - 12 - 0 - 5 - 5 - 5 - 0 - 5 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 73 - 71 - 65 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SUPER BASS - 61 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 3 - - - 2 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W2 - W1 - 0 - 0 - 1 - -1 - - 25 - 19 - 20 - 18 - 3 - 9 - 2 - 8 - 14 - 12 - 13 - 10 - 15 - 6 - 15 - 8 - 10 - 6 - 9 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 87 - 99 - 83 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Science.BS - 62 - - - FIRST - 0 - - TRIANGL - 28 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 0 - 6 - 7 - - - 1 - 0.5 - 9 - 7.85 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -3 - 3 - 3 - - 31 - 31 - 31 - 31 - 9 - 1 - 9 - 15 - 9 - 0 - 12 - 6 - 0 - 0 - 6 - 10 - 9 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 72 - 75 - 90 - - 0 - 2 - 3 - 3 - 0 - 0 - 27 - 0 - - - -12 - POLY - 4 - FINGER - 0 - POR - 99 - 0 - 0 - 80 - 0 - 60 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SlapBass - 63 - - - FOURTH - 7 - - TRIANGL - 25 - 0 - 9 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 1 - 4 - 1 - - - 1 - 10 - 3 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - -3 - 0 - - 30 - 24 - 30 - 31 - 16 - 12 - 16 - 8 - 12 - 0 - 12 - 8 - 7 - 31 - 7 - 0 - 9 - 9 - 9 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 73 - 76 - 70 - - 1 - 2 - 1 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SlapBass.1 - 64 - - - THIRD - 5 - - TRIANGL - 25 - 0 - 9 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 1 - 3 - 1 - - - 1 - 1 - 1 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - -3 - 0 - - 30 - 22 - 20 - 24 - 16 - 0 - 10 - 28 - 12 - 9 - 15 - 12 - 7 - 0 - 5 - 9 - 9 - 10 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 75 - 82 - 68 - - 1 - 2 - 2 - 1 - 0 - 0 - 0 - 0 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SlapBass.2 - 65 - - - FOURTH - 7 - - TRIANGL - 31 - 0 - 0 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 3 - 3 - - - 1 - 0.5 - 0.5 - 12.11 - no - no - no - no - 8 - 8 - 8 - 48 - - W1 - W8 - W1 - W7 - 3 - 0 - -3 - 3 - - 31 - 31 - 31 - 31 - 19 - 15 - 19 - 15 - 14 - 14 - 11 - 8 - 6 - 5 - 6 - 15 - 8 - 11 - 8 - 14 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 93 - 96 - 75 - - 1 - 1 - 2 - 0 - 0 - 78 - 28 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SqncrBass - 66 - - - FOURTH - 7 - - TRIANGL - 31 - 0 - 0 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 3 - 3 - - - 1 - 0.5 - 0.5 - 12.11 - no - no - no - no - 8 - 8 - 8 - 48 - - W1 - W4 - W2 - W4 - 3 - 0 - -3 - 3 - - 31 - 31 - 31 - 31 - 19 - 15 - 19 - 15 - 15 - 15 - 11 - 8 - 6 - 5 - 6 - 15 - 8 - 11 - 8 - 14 - VOF - V48 - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 97 - 82 - 66 - - 1 - 1 - 2 - 0 - 0 - 57 - 28 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SqncrBass2 - 67 - - - THIRD - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 4 - 1 - 1 - - - 1 - 3 - 7 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W2 - W1 - 0 - 0 - -3 - 2 - - 31 - 31 - 20 - 31 - 30 - 0 - 31 - 3 - 15 - 15 - 11 - 0 - 0 - 18 - 23 - 16 - 7 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 99 - 87 - 73 - - 2 - 1 - 3 - 2 - 0 - 94 - 61 - 52 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Bass 1 - 68 - - - SIXTH - 7 - - TRIANGL - 27 - 66 - 25 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 2 - - - 0.5 - 0.5 - 0.5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W6 - W3 - W2 - -3 - -2 - 3 - 3 - - 31 - 31 - 31 - 29 - 10 - 10 - 10 - 14 - 0 - 0 - 0 - 9 - 0 - 0 - 0 - 0 - 10 - 10 - 10 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 97 - 97 - 81 - - 2 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Bass 2 - 69 - - - FIRST - 0 - - TRIANGL - 31 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 2 - 2 - 2 - - - 0.5 - 0.5 - 0.5 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W6 - W2 - 0 - 0 - 3 - 0 - - 30 - 30 - 31 - 31 - 9 - 4 - 12 - 18 - 0 - 9 - 5 - 7 - 3 - 2 - 3 - 12 - 7 - 7 - 7 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 87 - 85 - 70 - 89 - - 2 - 2 - 2 - 2 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Bass 3 - 70 - - - THIRD - 7 - - TRIANGL - 28 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 5 - 3 - - - 0.5 - 0.5 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W2 - W1 - 0 - 0 - 0 - 0 - - 24 - 26 - 21 - 26 - 9 - 9 - 11 - 11 - 4 - 4 - 4 - 4 - 3 - 3 - 5 - 0 - 9 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 80 - 88 - 78 - - 1 - 2 - 3 - 2 - 0 - 0 - 10 - 0 - - - -12 - POLY - 2 - FINGER - 0 - POR - 99 - 0 - 0 - 75 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Bass 4 - 71 - - - THIRD - 0 - - TRIANGL - 32 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 4 - 5 - 2 - - - 0.5 - 0.5 - 0.5 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W6 - W2 - W6 - W2 - 0 - 0 - 3 - 0 - - 30 - 30 - 31 - 31 - 5 - 6 - 12 - 18 - 9 - 9 - 5 - 11 - 3 - 2 - 3 - 8 - 7 - 7 - 7 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 86 - 70 - 89 - - 2 - 2 - 2 - 2 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Bass 5 - 72 - - - THIRD - 0 - - TRIANGL - 32 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 4 - 5 - 2 - - - 0.5 - 0.5 - 0.5 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W6 - W2 - W6 - W2 - 0 - 0 - 3 - 0 - - 30 - 30 - 31 - 31 - 5 - 6 - 12 - 18 - 9 - 9 - 5 - 11 - 3 - 2 - 3 - 8 - 5 - 4 - 5 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 86 - 70 - 89 - - 2 - 2 - 2 - 2 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Bass 6 - 73 - - - THIRD - 0 - - TRIANGL - 32 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 4 - 5 - 2 - - - 0.5 - 0.5 - 0.5 - 10 - no - no - no - no - 8 - 8 - 8 - 8 - - W6 - W2 - W6 - W2 - 0 - 0 - 3 - 0 - - 30 - 30 - 31 - 31 - 5 - 6 - 12 - 18 - 9 - 9 - 5 - 11 - 3 - 2 - 3 - 8 - 5 - 4 - 5 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 86 - 70 - 70 - - 2 - 2 - 2 - 2 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Bass 7 - 74 - - - FOURTH - 7 - - TRIANGL - 31 - 0 - 0 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 3 - 3 - - - 1 - 0.5 - 0.5 - 10.59 - no - no - no - yes - 8 - 8 - 8 - 92 - - W1 - W1 - W8 - W7 - 3 - 0 - -3 - 3 - - 31 - 31 - 31 - 31 - 19 - 15 - 19 - 15 - 15 - 14 - 13 - 9 - 6 - 5 - 6 - 15 - 8 - 14 - 5 - 14 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 70 - - 0 - 1 - 0 - 2 - 0 - 13 - 28 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SynFunkBas - 75 - - - FOURTH - 7 - - TRIANGL - 31 - 0 - 0 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 3 - 3 - - - 1 - 0.5 - 0.5 - 10.59 - no - no - no - yes - 8 - 8 - 8 - 76 - - W1 - W2 - W4 - W2 - 3 - 0 - -3 - 3 - - 31 - 31 - 31 - 31 - 19 - 15 - 19 - 13 - 15 - 14 - 13 - 6 - 6 - 5 - 6 - 25 - 8 - 7 - 5 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 84 - 60 - - 0 - 1 - 1 - 2 - 0 - 26 - 42 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SynFunkBs2 - 76 - - - THIRD - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 0 - 3 - - - 0.5 - 0.5 - 2 - 16 - no - no - no - no - 8 - 8 - 8 - 12 - - W1 - W1 - W2 - W1 - 0 - 3 - -3 - -3 - - 21 - 21 - 25 - 25 - 2 - 11 - 30 - 30 - 14 - 14 - 14 - 14 - 7 - 9 - 9 - 19 - 6 - 5 - 8 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 74 - 83 - - 1 - 0 - 0 - 0 - 16 - 10 - 23 - 45 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - TeknoBass* - 77 - - - FIRST - 2 - - TRIANGL - 31 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 2 - - - 1 - 1 - 3 - 1 - no - no - no - no - 8 - 8 - 8 - 32 - - W1 - W1 - W1 - W4 - 0 - 0 - 0 - 0 - - 26 - 31 - 28 - 23 - 21 - 17 - 17 - 21 - 15 - 15 - 15 - 11 - 10 - 11 - 11 - 12 - 8 - 4 - 2 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 71 - 75 - 99 - - 1 - 1 - 1 - 1 - 0 - 39 - 49 - 44 - - - -24 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Wood Bass - 78 - - - FIRST - 2 - - TRIANGL - 31 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 2 - - - 1 - 1 - 3 - 1 - no - no - no - no - 8 - 8 - 8 - 32 - - W1 - W1 - W1 - W4 - 0 - 0 - 0 - 0 - - 26 - 31 - 28 - 23 - 21 - 17 - 17 - 21 - 15 - 15 - 15 - 11 - 10 - 11 - 11 - 12 - 5 - 4 - 2 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 71 - 75 - 99 - - 1 - 1 - 1 - 1 - 0 - 39 - 49 - 44 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - WoodBass2 - 79 - - - - Cello - 3 - - THIRD - 5 - - TRIANGL - 26 - 7 - 19 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 2 - 0 - - - 1 - 1 - 5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W2 - W1 - 0 - -2 - 3 - -3 - - 12 - 13 - 18 - 28 - 10 - 10 - 11 - 9 - 15 - 14 - 9 - 14 - 0 - 0 - 0 - 0 - 6 - 6 - 8 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 82 - 73 - 80 - - 1 - 1 - 1 - 0 - 0 - 9 - 44 - 53 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - BowCello - 0 - - - THIRD - 6 - - TRIANGL - 29 - 6 - 15 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 2 - 0 - - - 2 - 2 - 7 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W5 - W1 - W2 - 0 - -3 - 3 - 3 - - 11 - 21 - 17 - 28 - 10 - 9 - 16 - 4 - 15 - 13 - 9 - 14 - 0 - 3 - 0 - 0 - 5 - 4 - 11 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 58 - 81 - 72 - - 2 - 0 - 0 - 0 - 5 - 21 - 12 - 15 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - BoxCello* - 1 - - - THIRD - 6 - - TRIANGL - 29 - 6 - 15 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 2 - 0 - - - 2 - 2 - 7 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W5 - W1 - W2 - 0 - -3 - 3 - 3 - - 11 - 15 - 17 - 28 - 10 - 18 - 16 - 4 - 15 - 13 - 9 - 14 - 0 - 1 - 0 - 0 - 5 - 4 - 11 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 58 - 81 - 72 - - 2 - 0 - 0 - 0 - 5 - 21 - 12 - 15 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - BoxCello2 - 2 - - - FIFTH - 7 - - TRIANGL - 31 - 25 - 21 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 0 - 1 - 0 - - - 6 - 2 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W2 - -1 - 0 - 2 - 0 - - 12 - 16 - 12 - 31 - 5 - 25 - 9 - 0 - 14 - 14 - 13 - 15 - 0 - 0 - 0 - 0 - 6 - 3 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 97 - 99 - 72 - - 2 - 1 - 2 - 1 - 77 - 43 - 0 - 77 - - - -24 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Cello * - 3 - - - THIRD - 7 - - TRIANGL - 31 - 18 - 16 - 0 - off - - - 5 - 0 - off - off - off - on - 0 - 0 - 0 - 0 - 2 - 2 - 5 - 1 - - - 0.5 - 0.5 - 2 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W4 - W4 - 1 - 0 - 1 - 0 - - 14 - 21 - 25 - 22 - 11 - 11 - 8 - 7 - 14 - 14 - 12 - 15 - 0 - 0 - 0 - 0 - 7 - 3 - 8 - 6 - VOF - VOF - VOF - VOF - - - 99 - 86 - 99 - 50 - 50 - 50 - - 99 - 53 - 95 - 76 - - 1 - 1 - 2 - 1 - 0 - 0 - 16 - 0 - - - 0 - POLY - 2 - FINGER - 0 - POR - 99 - 0 - 0 - 40 - 80 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Cello 1 - 4 - - - THIRD - 6 - - TRIANGL - 29 - 22 - 44 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 0 - 1 - 1 - - - 1 - 1 - 5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W3 - 3 - -3 - -3 - 3 - - 10 - 23 - 30 - 29 - 6 - 12 - 14 - 8 - 15 - 15 - 15 - 10 - 0 - 0 - 0 - 0 - 7 - 5 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 66 - 62 - 78 - - 0 - 0 - 0 - 0 - 0 - 0 - 37 - 18 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Cello 2 - 5 - - - THIRD - 6 - - TRIANGL - 29 - 22 - 44 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 0 - 1 - 1 - - - 1 - 1 - 5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W3 - 3 - -3 - -3 - 3 - - 13 - 23 - 30 - 29 - 6 - 12 - 14 - 8 - 15 - 15 - 15 - 13 - 0 - 0 - 0 - 0 - 7 - 5 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 66 - 62 - 78 - - 0 - 0 - 0 - 0 - 0 - 0 - 37 - 18 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Cello 2* - 6 - - - FOURTH - 3 - - TRIANGL - 27 - 27 - 32 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 1 - 4 - 2 - - - 1 - 1 - 3 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -1 - 0 - 0 - 1 - - 12 - 21 - 17 - 16 - 9 - 16 - 21 - 21 - 12 - 12 - 15 - 13 - 4 - 7 - 6 - 10 - 6 - 7 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 93 - 80 - 76 - - 1 - 0 - 1 - 1 - 0 - 25 - 60 - 25 - - - -24 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 4 - - Cello....1 - 7 - - - THIRD - 6 - - TRIANGL - 28 - 46 - 30 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 1 - 5 - 1 - - - 0.5 - 0.5 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W5 - W2 - 1 - -1 - 1 - -1 - - 11 - 30 - 20 - 19 - 3 - 4 - 31 - 9 - 2 - 8 - 3 - 14 - 31 - 16 - 11 - 4 - 6 - 5 - 5 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 73 - 99 - 83 - - 1 - 1 - 1 - 2 - 16 - 82 - 82 - 2 - - - 0 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Cello....2 - 8 - - - - DoubleBass - 4 - - FIFTH - 7 - - TRIANGL - 30 - 23 - 15 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 1 - 1 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - -3 - 3 - 3 - -3 - - 13 - 30 - 15 - 27 - 8 - 5 - 9 - 21 - 14 - 14 - 15 - 13 - 0 - 0 - 0 - 0 - 5 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 86 - - 1 - 1 - 0 - 1 - 0 - 51 - 0 - 19 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - ArcoBass * - 0 - - - THIRD - 4 - - TRIANGL - 28 - 6 - 4 - 6 - on - - - 4 - 3 - off - off - on - off - 0 - 0 - 0 - 0 - 0 - 2 - 2 - 2 - - - 0.5 - 2 - 4 - 0.5 - no - no - no - no - 16 - 16 - 8 - 112 - - W2 - W6 - W4 - W1 - -2 - -1 - 3 - 1 - - 16 - 11 - 3 - 9 - 5 - 5 - 8 - 9 - 13 - 15 - 8 - 10 - 3 - 4 - 3 - 3 - 6 - 3 - 5 - 5 - VOF - V48 - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 74 - 90 - 99 - - 0 - 0 - 1 - 0 - 0 - 0 - 56 - 34 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BassBeast - 1 - - - FIFTH - 2 - - TRIANGL - 38 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 1 - 6 - 1 - - - 0.5 - 0.5 - 0.5 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 21 - 31 - 21 - 13 - 22 - 13 - 22 - 10 - 13 - 10 - 13 - 12 - 6 - 12 - 6 - 8 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 81 - 99 - 64 - - 2 - 3 - 2 - 3 - 99 - 0 - 99 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BassPluck2 - 2 - - - THIRD - 6 - - TRIANGL - 26 - 8 - 13 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 2 - 0 - - - 1 - 3 - 8.97 - 1 - no - no - no - no - 8 - 8 - 11 - 8 - - W1 - W1 - W1 - W2 - 0 - -3 - 3 - 0 - - 10 - 13 - 18 - 28 - 10 - 5 - 7 - 2 - 15 - 14 - 9 - 14 - 0 - 0 - 0 - 0 - 5 - 6 - 6 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 86 - 71 - 78 - - 1 - 1 - 1 - 0 - 0 - 99 - 99 - 99 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - DoubleBass - 3 - - - - Guitar - 5 - - FIFTH - 1 - - TRIANGL - 34 - 33 - 0 - 0 - off - - - 3 - 1 - on - on - on - off - 0 - 0 - 0 - 0 - 6 - 3 - 5 - 2 - - - 2 - 4 - 2 - 11 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - -1 - -3 - 1 - - 28 - 13 - 22 - 27 - 7 - 15 - 31 - 15 - 12 - 12 - 15 - 12 - 6 - 9 - 7 - 9 - 6 - 2 - 6 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 60 - 88 - 79 - - 1 - 1 - 1 - 3 - 0 - 0 - 10 - 57 - - - -12 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - 12 String1 - 0 - - - FIFTH - 2 - - TRIANGL - 35 - 70 - 0 - 1 - off - - - 3 - 2 - on - on - on - on - 0 - 0 - 0 - 0 - 4 - 2 - 5 - 2 - - - 1 - 1 - 1 - 12 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W1 - 3 - -1 - -3 - 1 - - 28 - 26 - 27 - 27 - 7 - 4 - 9 - 9 - 14 - 11 - 12 - 12 - 3 - 1 - 6 - 4 - 7 - 13 - 14 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 83 - 78 - 81 - - 2 - 3 - 2 - 3 - 0 - 0 - 10 - 43 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - 12 String2 - 1 - - - FIFTH - 5 - - TRIANGL - 30 - 23 - 0 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 3 - - - 3 - 3 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - -1 - 2 - 0 - -1 - - 31 - 25 - 25 - 25 - 21 - 9 - 12 - 6 - 13 - 6 - 6 - 6 - 7 - 7 - 7 - 7 - 9 - 9 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 97 - 99 - 88 - - 0 - 1 - 0 - 1 - 0 - 12 - 46 - 15 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - 5th Lead.1 - 2 - - - FIFTH - 5 - - TRIANGL - 30 - 23 - 0 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 3 - - - 3 - 3 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W2 - W1 - -1 - 2 - 0 - -1 - - 31 - 31 - 31 - 31 - 9 - 9 - 31 - 19 - 12 - 12 - 15 - 12 - 9 - 9 - 0 - 0 - 9 - 9 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 81 - 99 - 76 - - 0 - 0 - 0 - 1 - 0 - 0 - 64 - 32 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - 5th Lead.2 - 3 - - - SECOND - 6 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 5 - 5 - 3 - - - 2 - 1 - 3 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 27 - 31 - 31 - 23 - 21 - 12 - 8 - 5 - 14 - 15 - 15 - 14 - 6 - 8 - 17 - 4 - 6 - 5 - 6 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 66 - 64 - 69 - - 2 - 0 - 0 - 2 - 35 - 67 - 0 - 35 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AC Guitar1 - 4 - - - FIRST - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 3 - 4 - 2 - - - 1 - 1 - 3 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 31 - 21 - 14 - 14 - 15 - 15 - 14 - 6 - 8 - 17 - 4 - 10 - 5 - 6 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 66 - 53 - 75 - - 1 - 0 - 0 - 2 - 0 - 67 - 0 - 35 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AC Guitar2 - 5 - - - FIFTH - 4 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 4 - 3 - - - 2 - 3 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 31 - 26 - 14 - 15 - 15 - 13 - 15 - 8 - 0 - 6 - 0 - 14 - 11 - 13 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 87 - 81 - 99 - 76 - - 1 - 2 - 0 - 3 - 0 - 67 - 0 - 35 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AC Guitar3 - 6 - - - FIFTH - 6 - - TRIANGL - 34 - 51 - 0 - 1 - off - - - 3 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 1 - 5 - 1 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 28 - 26 - 29 - 27 - 4 - 21 - 10 - 15 - 15 - 15 - 15 - 15 - 4 - 6 - 9 - 12 - 14 - 11 - 6 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 79 - 99 - 83 - - 1 - 2 - 2 - 2 - 0 - 43 - 0 - 35 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AC Guitar4 - 7 - - - FIRST - 7 - - TRIANGL - 31 - 0 - 3 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 1 - 0 - 4 - - - 1 - 3 - 3 - 9 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W4 - W4 - 0 - -3 - 3 - 0 - - 31 - 28 - 31 - 31 - 18 - 6 - 10 - 9 - 15 - 7 - 6 - 12 - 8 - 0 - 0 - 0 - 8 - 4 - 2 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 67 - 69 - 72 - - 1 - 0 - 1 - 1 - 0 - 55 - 61 - 39 - - - -12 - POLY - 3 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 1 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AllThatJaz - 8 - - - THIRD - 7 - - TRIANGL - 30 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 3 - - - 1 - 3 - 10 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W5 - W3 - W5 - W1 - 1 - -1 - 0 - -1 - - 27 - 28 - 31 - 31 - 12 - 10 - 11 - 31 - 10 - 10 - 11 - 10 - 8 - 7 - 7 - 6 - 9 - 7 - 7 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 61 - 69 - 75 - - 1 - 1 - 1 - 1 - 0 - 40 - 40 - 40 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - A.Guitar - 9 - - - THIRD - 7 - - TRIANGL - 35 - 28 - 8 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 0 - 1 - 1 - - - 1 - 1 - 0.5 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W3 - W7 - W1 - -3 - -1 - 1 - 3 - - 24 - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 5 - 3 - 4 - 4 - 11 - 3 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 85 - 86 - 83 - 70 - - 0 - 1 - 0 - 2 - 0 - 8 - 8 - 12 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E.Guitar - 10 - - - THIRD - 7 - - TRIANGL - 35 - 28 - 8 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 0 - 1 - 1 - - - 1 - 1 - 0.5 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W3 - W7 - W1 - -3 - -1 - 1 - 3 - - 24 - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 5 - 3 - 4 - 4 - 11 - 3 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 85 - 86 - 83 - 70 - - 0 - 1 - 0 - 2 - 0 - 8 - 8 - 12 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E.Guitar* - 11 - - - SIXTH - 6 - - TRIANGL - 37 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 6 - - - 1 - 1 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W1 - 0 - 0 - 0 - 3 - - 31 - 31 - 31 - 31 - 22 - 22 - 22 - 15 - 14 - 14 - 14 - 13 - 0 - 0 - 0 - 9 - 5 - 5 - 8 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 87 - - 0 - 0 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 4 - - Echo Lead - 12 - - - THIRD - 7 - - TRIANGL - 30 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 3 - - - 1 - 3 - 10 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W8 - W1 - 1 - -1 - 0 - -1 - - 26 - 26 - 31 - 31 - 12 - 9 - 11 - 31 - 10 - 10 - 11 - 15 - 6 - 7 - 4 - 5 - 8 - 7 - 7 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 73 - 69 - 79 - - 1 - 1 - 1 - 1 - 0 - 40 - 40 - 40 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - F.Guitar - 13 - - - THIRD - 7 - - TRIANGL - 30 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 3 - - - 1 - 4 - 10 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W8 - W1 - 1 - -1 - 0 - -1 - - 26 - 26 - 31 - 31 - 12 - 9 - 11 - 31 - 13 - 13 - 11 - 15 - 6 - 7 - 4 - 5 - 8 - 7 - 7 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 73 - 69 - 79 - - 1 - 1 - 1 - 1 - 0 - 40 - 40 - 40 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - F.Guitar* - 14 - - - SECOND - 6 - - TRIANGL - 30 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 6 - 2 - - - 1 - 1 - 3 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W2 - W4 - 0 - 0 - 0 - 0 - - 23 - 31 - 23 - 24 - 19 - 18 - 15 - 11 - 14 - 15 - 9 - 10 - 9 - 0 - 14 - 10 - 8 - 5 - 6 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 64 - 82 - 82 - - 1 - 1 - 1 - 1 - 0 - 7 - 17 - 40 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Flamenco - 15 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1.5 - 1.5 - 1 - 1 - no - no - no - no - 16 - 16 - 8 - 8 - - W1 - W8 - W1 - W1 - -3 - 3 - 3 - -3 - - 27 - 31 - 27 - 31 - 30 - 10 - 31 - 8 - 15 - 11 - 15 - 12 - 0 - 0 - 0 - 0 - 9 - 2 - 9 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 84 - 88 - 99 - 74 - - 0 - 0 - 0 - 0 - 17 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Funkfifth* - 16 - - - THIRD - 7 - - TRIANGL - 20 - 0 - 0 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 3 - 3 - - - 1 - 0.5 - 3 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W4 - 0 - 0 - 3 - -3 - - 31 - 31 - 31 - 31 - 15 - 12 - 25 - 25 - 7 - 5 - 5 - 3 - 17 - 5 - 6 - 8 - 9 - 11 - 11 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 82 - 99 - 99 - - 0 - 1 - 2 - 3 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 7 - - Funky Pick - 17 - - - FIFTH - 5 - - TRIANGL - 35 - 0 - 0 - 1 - off - - - 0 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 6 - 4 - 5 - 3 - - - 1 - 1 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 3 - -3 - 3 - -3 - - 29 - 28 - 31 - 31 - 10 - 10 - 12 - 5 - 13 - 12 - 13 - 13 - 6 - 4 - 2 - 6 - 7 - 3 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 88 - 98 - 99 - - 2 - 2 - 2 - 1 - 21 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - FuzzyLead - 18 - - - THIRD - 6 - - TRIANGL - 25 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 1 - 1 - 3 - - - 1 - 3 - 10 - 2 - no - no - no - no - 8 - 8 - 14 - 8 - - W1 - W4 - W3 - W1 - 1 - -1 - -3 - -1 - - 31 - 26 - 26 - 31 - 11 - 11 - 11 - 31 - 11 - 7 - 7 - 10 - 11 - 4 - 4 - 11 - 6 - 5 - 5 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 67 - 50 - 55 - - 1 - 1 - 1 - 1 - 30 - 60 - 0 - 99 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Guitar - 19 - - - FOURTH - 7 - - TRIANGL - 20 - 0 - 0 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 3 - 3 - - - 1 - 0.5 - 0.5 - 15 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - -3 - -3 - 3 - - 31 - 31 - 31 - 31 - 19 - 15 - 18 - 14 - 14 - 15 - 14 - 15 - 7 - 4 - 6 - 14 - 8 - 15 - 12 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 91 - 85 - 72 - - 1 - 0 - 2 - 0 - 6 - 37 - 28 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Guitar #1 - 20 - - - FIFTH - 0 - - TRIANGL - 34 - 33 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 7 - 3 - 3 - 7 - 7 - 7 - 4 - 4 - - - 1 - 12 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W2 - W1 - 0 - 0 - 0 - 0 - - 28 - 28 - 28 - 28 - 7 - 21 - 4 - 4 - 11 - 12 - 12 - 0 - 7 - 6 - 0 - 12 - 8 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 82 - 99 - 75 - - 1 - 2 - 1 - 1 - 0 - 0 - 30 - 47 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - HardHabits - 21 - - - THIRD - 6 - - TRIANGL - 31 - 0 - 3 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 2 - 2 - 2 - - - 1 - 3 - 3 - 11 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W3 - W2 - 0 - 0 - 3 - 0 - - 19 - 19 - 19 - 31 - 18 - 6 - 10 - 9 - 15 - 0 - 0 - 0 - 8 - 0 - 0 - 0 - 8 - 8 - 9 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 59 - 69 - 56 - - 1 - 0 - 1 - 1 - 0 - 55 - 61 - 39 - - - -12 - POLY - 3 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 1 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - HawaiiGitr - 22 - - - FIRST - 6 - - TRIANGL - 32 - 39 - 6 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0.5 - 0.5 - 0.5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W5 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 17 - 31 - 31 - 12 - 6 - 15 - 15 - 13 - 10 - 0 - 0 - 0 - 8 - 15 - 15 - 15 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 80 - 78 - 77 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 47 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - HeavyLead - 23 - - - THIRD - 7 - - TRIANGL - 31 - 22 - 5 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 1 - - - 1 - 4 - 3 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W2 - W1 - 0 - -1 - 2 - 3 - - 31 - 31 - 21 - 31 - 15 - 3 - 5 - 8 - 15 - 15 - 15 - 15 - 0 - 0 - 4 - 0 - 8 - 2 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 76 - 91 - 88 - - 0 - 0 - 0 - 0 - 0 - 27 - 27 - 32 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - HeavyMetal - 24 - - - FIFTH - 6 - - TRIANGL - 41 - 0 - 0 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 4 - - - 1 - 1 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - 0 - 3 - 3 - 3 - - 24 - 18 - 20 - 27 - 31 - 12 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 6 - 0 - 0 - 13 - 9 - 9 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 86 - 90 - 98 - 71 - - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - HollowLead - 25 - - - FIFTH - 0 - - TRIANGL - 25 - 0 - 1 - 3 - off - - - 1 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 3 - - - 1 - 3 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W1 - 0 - 0 - 0 - 0 - - 22 - 27 - 24 - 25 - 9 - 9 - 9 - 9 - 9 - 11 - 13 - 11 - 7 - 7 - 7 - 7 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 91 - 99 - 95 - - 0 - 1 - 3 - 2 - 10 - 99 - 99 - 85 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Jazz Guit1 - 26 - - - FIFTH - 0 - - TRIANGL - 35 - 0 - 5 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 5 - 3 - - - 1 - 2 - 1 - 16.96 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 0 - 0 - -3 - 0 - - 22 - 28 - 23 - 31 - 26 - 7 - 26 - 17 - 14 - 14 - 13 - 0 - 9 - 12 - 7 - 31 - 9 - 9 - 7 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 74 - 81 - 96 - - 1 - 1 - 0 - 0 - 0 - 0 - 79 - 46 - - - -12 - POLY - 3 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Jazz Guit2 - 27 - - - FIFTH - 0 - - TRIANGL - 35 - 0 - 5 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 3 - 4 - 4 - - - 1 - 2 - 1 - 14 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W1 - 0 - 0 - -3 - 0 - - 22 - 27 - 24 - 25 - 25 - 17 - 25 - 25 - 14 - 12 - 13 - 13 - 9 - 12 - 7 - 8 - 9 - 9 - 7 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 72 - 81 - 94 - - 1 - 1 - 0 - 3 - 0 - 0 - 79 - 46 - - - -12 - POLY - 3 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Jazz Guit3 - 28 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 1 - 4 - off - - - 3 - 2 - on - on - on - on - 0 - 0 - 0 - 0 - 6 - 5 - 4 - 4 - - - 1 - 3 - 3 - 14 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 22 - 27 - 24 - 31 - 9 - 9 - 9 - 18 - 9 - 11 - 13 - 0 - 7 - 7 - 7 - 31 - 7 - 7 - 7 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 92 - 99 - 91 - - 0 - 1 - 3 - 0 - 10 - 73 - 45 - 99 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Jazz Guit4 - 29 - - - FIFTH - 7 - - TRIANGL - 45 - 0 - 0 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 3 - - - 1 - 5 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W5 - W1 - W1 - 0 - 0 - -1 - 0 - - 27 - 27 - 27 - 27 - 24 - 10 - 24 - 10 - 15 - 12 - 15 - 15 - 6 - 4 - 6 - 4 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 75 - 98 - 83 - - 2 - 2 - 2 - 2 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - JonesLead - 30 - - - FIFTH - 7 - - TRIANGL - 15 - 29 - 35 - 61 - off - - - 2 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 6 - 6 - 5 - 4 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - 3 - -3 - -3 - -3 - - 14 - 13 - 31 - 21 - 3 - 1 - 21 - 15 - 14 - 12 - 14 - 14 - 2 - 6 - 7 - 7 - 6 - 8 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 88 - 99 - 82 - - 1 - 2 - 1 - 2 - 0 - 25 - 0 - 25 - - - -12 - POLY - 4 - FINGER - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - KickLead - 31 - - - FIFTH - 7 - - TRIANGL - 28 - 0 - 22 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 0 - 1 - 2 - - - 1 - 1 - 1 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W6 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 17 - 22 - 16 - 20 - 14 - 14 - 14 - 14 - 9 - 10 - 9 - 31 - 8 - 8 - 9 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 82 - 99 - 78 - - 3 - 3 - 3 - 1 - 0 - 30 - 0 - 10 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Mute Gtr - 32 - - - FIFTH - 5 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 4 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W5 - W5 - W1 - 3 - -2 - -3 - -3 - - 15 - 15 - 31 - 21 - 21 - 4 - 21 - 13 - 12 - 12 - 15 - 15 - 6 - 17 - 8 - 9 - 8 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 95 - 99 - 97 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - NastyLead1 - 33 - - - FIFTH - 5 - - TRIANGL - 38 - 0 - 3 - 0 - on - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 4 - - - 5 - 1 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - -2 - -3 - -3 - - 15 - 15 - 31 - 21 - 22 - 14 - 21 - 13 - 14 - 7 - 15 - 15 - 6 - 5 - 8 - 9 - 8 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 98 - 99 - 98 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - NastyLead2 - 34 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 27 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 1 - - - 1 - 4 - 4 - 10 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W2 - W1 - 0 - 1 - 0 - 0 - - 21 - 25 - 29 - 28 - 3 - 30 - 10 - 10 - 15 - 9 - 3 - 9 - 6 - 9 - 4 - 4 - 9 - 9 - 12 - 12 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 81 - 93 - 72 - - 1 - 3 - 3 - 1 - 10 - 0 - 0 - 99 - - - -24 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Nuln Guit3 - 37 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 27 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 2 - 4 - 2 - - - 1 - 1 - 7 - 9 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 0 - 0 - 0 - 0 - - 24 - 20 - 21 - 28 - 4 - 21 - 10 - 15 - 14 - 15 - 15 - 11 - 4 - 3 - 9 - 12 - 6 - 7 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 74 - 67 - 74 - - 1 - 2 - 0 - 2 - 0 - 39 - 0 - 35 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Nyln Guit1 - 35 - - - SECOND - 4 - - TRIANGL - 35 - 0 - 27 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 5 - 5 - 2 - - - 1 - 25.95 - 1 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 0 - 1 - 0 - 0 - - 24 - 28 - 31 - 28 - 4 - 30 - 25 - 15 - 4 - 4 - 4 - 5 - 3 - 3 - 3 - 12 - 7 - 7 - 7 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 66 - 96 - 79 - - 1 - 2 - 3 - 2 - 0 - 0 - 0 - 35 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Nyln Guit2 - 36 - - - FOURTH - 7 - - TRIANGL - 31 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 2 - 4 - 3 - - - 1.5 - 1.51 - 4.5 - 4.5 - no - no - no - no - 16 - 14 - 16 - 16 - - W1 - W1 - W1 - W1 - -1 - -2 - 3 - 0 - - 21 - 28 - 27 - 31 - 19 - 31 - 5 - 13 - 14 - 15 - 10 - 11 - 8 - 3 - 7 - 8 - 5 - 5 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 54 - 76 - 77 - - 1 - 1 - 2 - 2 - 17 - 44 - 41 - 47 - - - -7 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Nylon * - 38 - - - FIRST - 5 - - TRIANGL - 31 - 0 - 3 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 2 - 2 - 2 - - - 1 - 3 - 3 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 3 - 0 - - 31 - 28 - 31 - 31 - 18 - 6 - 10 - 9 - 15 - 0 - 0 - 0 - 8 - 0 - 0 - 0 - 8 - 8 - 9 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 71 - 77 - 81 - - 1 - 0 - 1 - 1 - 0 - 55 - 61 - 39 - - - -12 - POLY - 3 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 1 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - NylonGuit - 39 - - - FIFTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 5 - 2 - - - 2 - 0.5 - 10 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 2 - 0 - 0 - 0 - - 27 - 27 - 27 - 27 - 18 - 12 - 18 - 12 - 13 - 13 - 13 - 13 - 7 - 7 - 7 - 7 - 10 - 10 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 79 - 91 - 80 - - 2 - 3 - 2 - 3 - 0 - 99 - 0 - 99 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntGuitar - 40 - - - SEVENTH - 6 - - TRIANGL - 34 - 0 - 0 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 1 - 2 - - - 1 - 3 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - -1 - -2 - 2 - 3 - - 24 - 28 - 31 - 19 - 12 - 9 - 9 - 15 - 15 - 14 - 15 - 14 - 9 - 10 - 9 - 9 - 7 - 8 - 8 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 89 - 99 - 81 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 57 - - - 0 - POLY - 3 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Ped Stl..1 - 41 - - - SEVENTH - 6 - - TRIANGL - 34 - 0 - 0 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 2 - 5 - 3 - - - 1 - 2 - 1 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W1 - W1 - -1 - -2 - 2 - 3 - - 14 - 28 - 31 - 19 - 12 - 9 - 9 - 15 - 15 - 14 - 15 - 14 - 7 - 10 - 9 - 9 - 8 - 8 - 8 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 69 - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 57 - - - 0 - POLY - 3 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Ped Stl..2 - 42 - - - SIXTH - 7 - - TRIANGL - 34 - 0 - 0 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 3 - 3 - 2 - - - 1 - 2 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -1 - -2 - 2 - 3 - - 14 - 28 - 31 - 19 - 12 - 9 - 9 - 15 - 15 - 14 - 15 - 14 - 7 - 10 - 9 - 9 - 8 - 8 - 8 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 60 - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 57 - - - 0 - POLY - 3 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Ped Stl..3 - 43 - - - FOURTH - 0 - - TRIANGL - 29 - 22 - 9 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 2 - 2 - 2 - - - 1 - 1 - 3 - 12 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W4 - W1 - W5 - 0 - 1 - 0 - 0 - - 27 - 31 - 27 - 31 - 9 - 16 - 6 - 16 - 13 - 14 - 13 - 0 - 6 - 2 - 5 - 0 - 11 - 10 - 11 - 12 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 93 - 90 - 60 - - 1 - 1 - 1 - 1 - 0 - 55 - 61 - 39 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 25 - 0 - 10 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - PedalSteel - 44 - - - SECOND - 2 - - TRIANGL - 35 - 53 - 0 - 16 - off - - - 4 - 1 - on - off - off - on - 0 - 0 - 0 - 0 - 5 - 6 - 6 - 4 - - - 1 - 0.5 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W1 - W2 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 26 - 31 - 8 - 31 - 13 - 15 - 12 - 15 - 11 - 0 - 0 - 0 - 0 - 13 - 13 - 13 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 64 - 83 - 85 - - 0 - 1 - 3 - 3 - 0 - 5 - 13 - 6 - - - 0 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - PercLead.1 - 45 - - - SIXTH - 4 - - TRIANGL - 35 - 53 - 0 - 16 - off - - - 4 - 1 - on - off - off - on - 0 - 0 - 0 - 0 - 4 - 4 - 6 - 6 - - - 1 - 3 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W3 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 26 - 31 - 8 - 31 - 13 - 15 - 12 - 15 - 11 - 0 - 0 - 0 - 0 - 13 - 13 - 13 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 87 - 94 - 82 - 99 - - 0 - 1 - 3 - 3 - 0 - 5 - 13 - 6 - - - 0 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - PercLead.2 - 46 - - - FOURTH - 7 - - TRIANGL - 29 - 0 - 0 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 3 - 3 - - - 1 - 0.5 - 0.5 - 15 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W2 - W4 - 3 - -3 - -3 - 3 - - 31 - 22 - 28 - 26 - 19 - 15 - 18 - 14 - 14 - 15 - 14 - 15 - 7 - 4 - 6 - 14 - 8 - 15 - 12 - 15 - VOF - VOF - VOF - V48 - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 96 - 90 - 66 - - 1 - 0 - 1 - 0 - 6 - 32 - 20 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - PhasedGuit - 47 - - - THIRD - 0 - - TRIANGL - 30 - 10 - 9 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 2 - 2 - 3 - - - 1 - 3 - 3 - 13 - no - no - no - yes - 8 - 8 - 8 - 32 - - W1 - W1 - W1 - W1 - 1 - -3 - 2 - 0 - - 29 - 29 - 29 - 26 - 10 - 8 - 13 - 30 - 10 - 10 - 12 - 0 - 12 - 31 - 8 - 31 - 5 - 5 - 2 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 67 - 83 - 90 - - 0 - 1 - 2 - 0 - 0 - 33 - 24 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Piknylon * - 48 - - - THIRD - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 5 - 3 - - - 1 - 0.5 - 9 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W2 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 18 - 12 - 13 - 7 - 14 - 15 - 4 - 0 - 6 - 6 - 3 - 0 - 9 - 9 - 9 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 77 - 81 - 92 - - 1 - 2 - 1 - 2 - 14 - 75 - 70 - 46 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Power Lead - 49 - - - THIRD - 7 - - TRIANGL - 30 - 22 - 2 - 50 - off - - - 4 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 1 - - - 1 - 0.5 - 3 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W6 - W6 - W1 - 0 - -1 - 2 - 3 - - 23 - 28 - 21 - 26 - 15 - 3 - 5 - 8 - 15 - 10 - 10 - 7 - 0 - 0 - 4 - 0 - 8 - 2 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 80 - 76 - 70 - 82 - - 0 - 0 - 0 - 0 - 0 - 27 - 27 - 32 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - PowerChord - 50 - - - FIFTH - 1 - - TRIANGL - 0 - 2 - 0 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 1 - 5 - 1 - - - 4 - 4 - 4 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W3 - W1 - W1 - 0 - 3 - 0 - 0 - - 18 - 22 - 21 - 19 - 9 - 2 - 9 - 31 - 13 - 13 - 13 - 15 - 9 - 6 - 9 - 0 - 8 - 3 - 12 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 92 - 99 - 72 - - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 92 - - - -24 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - RecLead - 51 - - - FOURTH - 0 - - TRIANGL - 35 - 32 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 2 - - - 1 - 9 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W1 - W1 - W1 - 2 - 1 - 0 - 3 - - 28 - 28 - 28 - 28 - 5 - 10 - 7 - 9 - 11 - 11 - 14 - 14 - 2 - 2 - 1 - 3 - 10 - 12 - 7 - 13 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 65 - 93 - 84 - - 1 - 3 - 3 - 1 - 10 - 0 - 0 - 99 - - - -24 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Rock Guit1 - 52 - - - FOURTH - 3 - - TRIANGL - 35 - 1 - 10 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 2 - - - 2 - 2 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W2 - 0 - -1 - 0 - 0 - - 18 - 18 - 18 - 27 - 31 - 31 - 31 - 3 - 15 - 15 - 15 - 14 - 0 - 0 - 0 - 0 - 10 - 10 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 70 - 96 - 65 - - 0 - 0 - 0 - 0 - 1 - 0 - 69 - 19 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Rock Guit2 - 53 - - - SECOND - 5 - - TRIANGL - 35 - 32 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 3 - - - 1 - 1 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 2 - 1 - 0 - 3 - - 28 - 28 - 28 - 28 - 7 - 31 - 9 - 15 - 11 - 15 - 15 - 14 - 7 - 6 - 3 - 1 - 9 - 15 - 15 - 12 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 86 - 84 - 78 - 78 - - 1 - 1 - 0 - 3 - 10 - 0 - 0 - 7 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Rock Guit3 - 54 - - - FIFTH - 5 - - TRIANGL - 35 - 32 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 3 - - - 1 - 0.5 - 1 - 9 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 2 - 1 - 0 - 3 - - 28 - 28 - 28 - 28 - 7 - 31 - 9 - 15 - 11 - 15 - 15 - 14 - 7 - 6 - 3 - 10 - 9 - 15 - 15 - 12 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 91 - 78 - 65 - - 1 - 1 - 0 - 2 - 10 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Rock Guit4 - 55 - - - FIFTH - 5 - - TRIANGL - 35 - 32 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 3 - - - 1 - 2 - 3 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W3 - 2 - 1 - -1 - 0 - - 28 - 28 - 28 - 21 - 7 - 31 - 9 - 15 - 11 - 15 - 12 - 12 - 7 - 6 - 7 - 6 - 9 - 15 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 85 - 95 - 87 - - 1 - 1 - 1 - 2 - 10 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Rock Guit5 - 56 - - - FIFTH - 4 - - TRIANGL - 35 - 32 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 2 - - - 1 - 0.5 - 3 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 2 - 1 - -1 - 0 - - 24 - 16 - 16 - 16 - 4 - 21 - 31 - 31 - 11 - 13 - 15 - 15 - 3 - 4 - 4 - 4 - 9 - 15 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 86 - 99 - 80 - - 2 - 1 - 1 - 2 - 10 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Rock Guit6 - 57 - - - THIRD - 7 - - TRIANGL - 31 - 22 - 5 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 1 - - - 1 - 4 - 14 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W2 - W1 - 0 - -1 - 2 - 3 - - 30 - 31 - 31 - 31 - 15 - 3 - 5 - 8 - 15 - 15 - 15 - 15 - 0 - 0 - 4 - 0 - 9 - 2 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 72 - 60 - 78 - - 0 - 0 - 0 - 0 - 0 - 27 - 27 - 32 - - - 0 - MONO - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - StadiumSol - 58 - - - FOURTH - 7 - - TRIANGL - 32 - 20 - 10 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 0 - 0 - 0 - - - 1 - 1 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W4 - W7 - -3 - 3 - 3 - 3 - - 24 - 24 - 22 - 23 - 5 - 14 - 0 - 15 - 10 - 12 - 15 - 12 - 1 - 0 - 0 - 0 - 10 - 10 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 63 - 83 - 53 - - 0 - 0 - 0 - 0 - 0 - 0 - 5 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 70 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Solo 1 - 59 - - - SIXTH - 7 - - TRIANGL - 38 - 40 - 20 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 0 - - - 1 - 2 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W6 - W5 - W3 - 3 - -3 - 3 - 3 - - 31 - 27 - 27 - 31 - 4 - 10 - 4 - 25 - 14 - 12 - 10 - 11 - 0 - 0 - 0 - 0 - 12 - 12 - 12 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 73 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 75 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Solo 2 - 60 - - - THIRD - 7 - - TRIANGL - 32 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 1 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W4 - W4 - 0 - 0 - 0 - 0 - - 22 - 31 - 31 - 31 - 31 - 10 - 11 - 10 - 15 - 11 - 11 - 10 - 0 - 0 - 0 - 0 - 10 - 7 - 5 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 45 - 77 - 79 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 7 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Solo 3 - 61 - - - THIRD - 7 - - TRIANGL - 32 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 1 - - - 1 - 2 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W4 - W4 - 0 - 0 - 0 - 0 - - 23 - 31 - 31 - 31 - 31 - 10 - 11 - 10 - 15 - 11 - 11 - 10 - 0 - 0 - 0 - 0 - 10 - 7 - 5 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 53 - 69 - 77 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 7 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Solo 4 - 62 - - - THIRD - 7 - - TRIANGL - 34 - 17 - 14 - 30 - off - - - 5 - 3 - off - on - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 3 - 0.5 - 2.99 - 0.5 - no - no - no - no - 8 - 8 - 10 - 8 - - W1 - W5 - W1 - W8 - 3 - 0 - -3 - 0 - - 16 - 31 - 31 - 19 - 31 - 20 - 17 - 18 - 15 - 8 - 12 - 13 - 0 - 0 - 0 - 0 - 11 - 5 - 6 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 92 - 83 - 81 - - 1 - 0 - 0 - 1 - 0 - 36 - 44 - 34 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sync Lead - 63 - - - THIRD - 6 - - TRIANGL - 30 - 9 - 2 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 2 - 4 - - - 5 - 1 - 19.03 - 16 - no - no - no - no - 8 - 80 - 10 - 12 - - W1 - W6 - W5 - W6 - 0 - -3 - -3 - 3 - - 31 - 31 - 31 - 31 - 9 - 5 - 15 - 26 - 13 - 0 - 10 - 1 - 7 - 0 - 6 - 0 - 9 - 8 - 9 - 3 - VOF - V48 - V48 - V48 - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 80 - 62 - 82 - - 1 - 2 - 2 - 2 - 0 - 0 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 25 - 0 - 16 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - TwangGuitr - 64 - - - FOURTH - 7 - - TRIANGL - 20 - 0 - 0 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 3 - 3 - - - 1 - 2.48 - 0.5 - 12 - no - no - no - no - 8 - 15 - 8 - 8 - - W1 - W4 - W1 - W1 - 3 - 3 - -3 - 3 - - 31 - 31 - 31 - 31 - 19 - 31 - 15 - 13 - 14 - 11 - 15 - 8 - 7 - 5 - 6 - 8 - 9 - 11 - 11 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 66 - - 1 - 1 - 2 - 0 - 0 - 54 - 19 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - TwelveStrg - 65 - - - FOURTH - 6 - - TRIANGL - 20 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 5 - - - 1 - 0.5 - 0.5 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -3 - -3 - -1 - - 22 - 31 - 31 - 31 - 4 - 2 - 18 - 10 - 12 - 14 - 14 - 2 - 8 - 3 - 6 - 6 - 8 - 11 - 8 - 11 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 95 - 95 - 95 - - 0 - 2 - 0 - 0 - 0 - 67 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - slowtacky - 66 - - - FOURTH - 6 - - TRIANGL - 20 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 5 - - - 1 - 0.5 - 0.5 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -3 - -3 - -1 - - 22 - 31 - 31 - 31 - 4 - 2 - 18 - 10 - 12 - 14 - 14 - 2 - 8 - 3 - 6 - 6 - 6 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 95 - 95 - 95 - - 0 - 2 - 0 - 0 - 0 - 67 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - slowtacky+ - 67 - - - - Harp - 6 - - FIFTH - 5 - - TRIANGL - 34 - 33 - 0 - 0 - on - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 4 - 4 - - - 1 - 2 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W3 - 2 - -1 - -2 - 1 - - 17 - 28 - 28 - 27 - 31 - 15 - 10 - 15 - 12 - 0 - 10 - 11 - 4 - 2 - 9 - 9 - 3 - 1 - 6 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 90 - 99 - 95 - - 3 - 0 - 0 - 0 - 0 - 45 - 29 - 39 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 1 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Dbl Harp.1 - 0 - - - FIRST - 7 - - TRIANGL - 27 - 41 - 1 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 4 - 5 - - - 1 - 4 - 2 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W1 - W2 - 2 - -1 - -2 - 1 - - 24 - 31 - 28 - 28 - 18 - 18 - 10 - 27 - 15 - 15 - 0 - 0 - 9 - 12 - 7 - 7 - 5 - 4 - 5 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 83 - 76 - 93 - - 1 - 1 - 0 - 1 - 0 - 90 - 0 - 99 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 1 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Dbl Harp.2 - 1 - - - FIFTH - 6 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 3 - 3 - 2 - - - 1 - 3 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W5 - W1 - W4 - 3 - -3 - -3 - 3 - - 27 - 31 - 30 - 31 - 8 - 18 - 8 - 9 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 4 - 5 - 4 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 77 - 99 - 80 - - 2 - 2 - 2 - 1 - 16 - 0 - 11 - 7 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 98 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Harp * - 2 - - - THIRD - 7 - - TRIANGL - 27 - 0 - 0 - 0 - off - - - 5 - 0 - on - off - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 3 - - - 1.5 - 1.49 - 6 - 6.28 - no - no - no - yes - 16 - 9 - 8 - 8 - - W1 - W3 - W1 - W1 - -3 - 3 - -3 - 1 - - 31 - 31 - 24 - 16 - 17 - 14 - 19 - 19 - 15 - 9 - 12 - 10 - 7 - 8 - 13 - 15 - 4 - 7 - 9 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 66 - 60 - 59 - - 2 - 1 - 1 - 2 - 0 - 0 - 0 - 0 - - - 5 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Harp - 3 - - - FIFTH - 0 - - TRIANGL - 27 - 21 - 10 - 1 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 4 - 3 - 4 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W1 - W4 - 3 - 3 - -3 - -3 - - 31 - 23 - 31 - 23 - 12 - 14 - 12 - 14 - 14 - 14 - 14 - 14 - 7 - 10 - 7 - 10 - 5 - 3 - 5 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 86 - 99 - 86 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Harp 1 - 4 - - - THIRD - 7 - - TRIANGL - 20 - 0 - 6 - 8 - off - - - 4 - 2 - on - on - on - on - 0 - 0 - 0 - 0 - 3 - 1 - 2 - 2 - - - 1 - 2 - 7 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W3 - W1 - -3 - 3 - 3 - -3 - - 25 - 28 - 31 - 23 - 15 - 19 - 19 - 11 - 14 - 0 - 0 - 6 - 11 - 0 - 0 - 11 - 5 - 1 - 1 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 73 - 67 - 59 - - 1 - 0 - 0 - 0 - 0 - 10 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 85 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Harp 2 - 5 - - - FOURTH - 7 - - TRIANGL - 27 - 0 - 2 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 2 - 5 - 2 - - - 1 - 2 - 5 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W5 - W1 - 3 - 0 - 0 - 1 - - 25 - 31 - 31 - 7 - 7 - 9 - 19 - 5 - 0 - 0 - 0 - 14 - 0 - 5 - 7 - 10 - 4 - 3 - 6 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 83 - 75 - 86 - - 1 - 1 - 0 - 1 - 29 - 82 - 54 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 1 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Harp.....1 - 6 - - - FIRST - 3 - - TRIANGL - 34 - 33 - 0 - 0 - on - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 4 - 4 - 3 - - - 1 - 1 - 3 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W3 - W5 - 2 - -1 - -2 - 1 - - 28 - 28 - 28 - 27 - 9 - 13 - 10 - 15 - 10 - 10 - 10 - 11 - 13 - 13 - 10 - 9 - 4 - 3 - 4 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 77 - 71 - 83 - - 1 - 1 - 1 - 3 - 0 - 45 - 50 - 45 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 1 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Harp.....2 - 7 - - - SIXTH - 4 - - TRIANGL - 27 - 35 - 11 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 4 - 4 - 1 - - - 1 - 1 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W2 - W2 - -1 - -3 - 2 - 0 - - 19 - 26 - 28 - 28 - 6 - 24 - 31 - 16 - 15 - 15 - 15 - 0 - 0 - 6 - 31 - 6 - 6 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 91 - 76 - 90 - - 0 - 0 - 1 - 1 - 0 - 90 - 0 - 99 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 1 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Harp....FM - 8 - - - - Koto - 7 - - THIRD - 7 - - TRIANGL - 32 - 1 - 20 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 1 - 0 - 1 - - - 2 - 8 - 23.55 - 2 - no - no - yes - no - 8 - 8 - 48 - 8 - - W1 - W1 - W6 - W1 - 3 - -3 - 0 - -3 - - 22 - 25 - 31 - 22 - 13 - 14 - 18 - 2 - 2 - 0 - 7 - 6 - 6 - 1 - 16 - 0 - 6 - 4 - 6 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 67 - 84 - 79 - - 1 - 0 - 0 - 0 - 30 - 32 - 0 - 9 - - - -12 - POLY - 2 - FULL - 2 - POR - 99 - 0 - 0 - 99 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - Fuzzy Koto - 0 - - - THIRD - 0 - - TRIANGL - 26 - 8 - 29 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 1 - 1 - 2 - - - 1 - 1 - 4 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 3 - -3 - 0 - - 26 - 28 - 28 - 29 - 20 - 4 - 7 - 21 - 13 - 11 - 13 - 0 - 8 - 3 - 9 - 0 - 4 - 3 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 79 - 83 - 86 - - 2 - 3 - 3 - 2 - 0 - 13 - 35 - 15 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 54 - 0 - 0 - 0 - 0 - 0 - 0 - - Koto * - 1 - - - FIRST - 0 - - TRIANGL - 30 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 1 - 1 - 3 - - - 2 - 1 - 3 - 7 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 25 - 31 - 31 - 31 - 31 - 31 - 31 - 18 - 15 - 15 - 15 - 11 - 10 - 8 - 6 - 12 - 6 - 1 - 4 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 71 - 75 - 87 - - 1 - 1 - 1 - 1 - 0 - 11 - 37 - 28 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Koto - 2 - - - FIFTH - 3 - - TRIANGL - 31 - 0 - 0 - 0 - off - - - 6 - 0 - on - off - off - off - 0 - 0 - 0 - 0 - 6 - 2 - 5 - 2 - - - 0.5 - 1 - 1 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - -3 - 3 - 3 - - 31 - 27 - 28 - 31 - 17 - 31 - 13 - 10 - 15 - 13 - 12 - 12 - 8 - 29 - 5 - 9 - 5 - 5 - 5 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 99 - 99 - 82 - - 2 - 2 - 2 - 2 - 0 - 0 - 25 - 17 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Koto.....1 - 3 - - - FIFTH - 3 - - TRIANGL - 30 - 0 - 17 - 20 - on - - - 2 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 1 - - - 1 - 3 - 1 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 27 - 28 - 31 - 17 - 31 - 13 - 10 - 15 - 13 - 12 - 12 - 8 - 29 - 5 - 9 - 5 - 5 - 5 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 99 - 99 - 71 - - 2 - 2 - 2 - 2 - 0 - 0 - 25 - 17 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Koto.....2 - 4 - - - FIFTH - 3 - - TRIANGL - 30 - 0 - 17 - 20 - on - - - 2 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 7 - 3 - 5 - 2 - - - 1 - 4 - 1 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 28 - 31 - 28 - 31 - 13 - 10 - 13 - 10 - 12 - 12 - 12 - 12 - 5 - 9 - 5 - 9 - 5 - 7 - 5 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 74 - 99 - 71 - - 2 - 2 - 2 - 2 - 25 - 17 - 25 - 17 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Koto.....3 - 5 - - - - Lute - 8 - - FIFTH - 6 - - TRIANGL - 52 - 0 - 0 - 10 - on - - - 0 - 1 - on - on - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 4 - 4 - - - 1 - 0.5 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 1 - 1 - 0 - - 24 - 12 - 25 - 31 - 7 - 7 - 7 - 7 - 14 - 7 - 7 - 8 - 9 - 31 - 31 - 4 - 5 - 4 - 4 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 62 - 99 - 82 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntLute.1 - 0 - - - FIFTH - 5 - - TRIANGL - 52 - 0 - 0 - 10 - on - - - 0 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 6 - 3 - 4 - 2 - - - 1 - 0.5 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -1 - 1 - 0 - - 21 - 31 - 12 - 24 - 12 - 12 - 12 - 3 - 12 - 8 - 7 - 15 - 9 - 31 - 31 - 0 - 5 - 5 - 4 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 70 - 99 - 89 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntLute.2 - 1 - - - - Mandolin - 9 - - FIFTH - 6 - - TRIANGL - 44 - 99 - 4 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 4 - - - 1 - 3 - 1 - 15 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W4 - W1 - W1 - 1 - 0 - -1 - 0 - - 22 - 31 - 23 - 31 - 12 - 9 - 12 - 25 - 11 - 11 - 0 - 12 - 9 - 6 - 9 - 13 - 7 - 2 - 7 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 69 - 99 - 98 - - 3 - 1 - 1 - 3 - 0 - 0 - 0 - 2 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Mandolin.1 - 0 - - - FIFTH - 7 - - SAWUP - 70 - 16 - 1 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 2 - - - 1 - 3 - 1 - 15 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W5 - 1 - 0 - -1 - 0 - - 22 - 31 - 31 - 31 - 12 - 12 - 13 - 24 - 11 - 11 - 15 - 12 - 9 - 6 - 7 - 13 - 5 - 4 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 55 - 95 - 63 - - 3 - 1 - 1 - 3 - 0 - 0 - 0 - 2 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Mandolin.2 - 1 - - - - Sitar - 10 - - FOURTH - 0 - - TRIANGL - 29 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 3 - 0 - - - 1 - 7 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 0 - -2 - -3 - 0 - - 31 - 30 - 17 - 31 - 24 - 12 - 21 - 31 - 15 - 15 - 15 - 15 - 6 - 11 - 0 - 0 - 4 - 1 - 2 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 91 - 0 - - 1 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 40 - 0 - 0 - 13 - 0 - 0 - 0 - 51 - 0 - 0 - 0 - 0 - 0 - 0 - - Sitar * - 0 - - - FOURTH - 7 - - TRIANGL - 33 - 0 - 5 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - - - 2 - 2 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - -3 - 3 - 3 - 0 - - 31 - 31 - 31 - 23 - 5 - 6 - 6 - 14 - 7 - 5 - 7 - 14 - 8 - 3 - 4 - 9 - 1 - 1 - 1 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 75 - 94 - 71 - - 3 - 2 - 2 - 3 - 0 - 0 - 0 - 2 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sitar - 1 - - - FIFTH - 0 - - TRIANGL - 28 - 0 - 0 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 6 - 3 - - - 19.78 - 1 - 1 - 7 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - -1 - - 31 - 31 - 31 - 31 - 24 - 12 - 6 - 7 - 14 - 14 - 14 - 13 - 9 - 9 - 6 - 6 - 4 - 1 - 4 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 73 - 88 - 91 - 81 - - 1 - 1 - 2 - 1 - 0 - 39 - 17 - 82 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sitar....1 - 2 - - - FOURTH - 2 - - TRIANGL - 33 - 0 - 5 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 5 - 1 - - - 0.5 - 9 - 1 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 3 - 3 - 0 - - 31 - 31 - 31 - 23 - 5 - 6 - 6 - 14 - 7 - 5 - 7 - 14 - 8 - 3 - 4 - 9 - 1 - 3 - 2 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 59 - 82 - 67 - - 3 - 2 - 2 - 2 - 0 - 0 - 0 - 2 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sitar....2 - 3 - - - THIRD - 3 - - TRIANGL - 44 - 99 - 4 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 5 - 2 - - - 0.5 - 9 - 6 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -1 - 1 - 1 - - 31 - 27 - 15 - 29 - 18 - 28 - 12 - 18 - 15 - 8 - 14 - 5 - 6 - 10 - 10 - 7 - 5 - 4 - 2 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 91 - 82 - 67 - - 1 - 0 - 3 - 1 - 0 - 0 - 0 - 2 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sitar....3 - 4 - - - FOURTH - 2 - - TRIANGL - 33 - 0 - 5 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 2 - 5 - 3 - - - 0.5 - 9 - 1 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 3 - 3 - 0 - - 31 - 27 - 15 - 29 - 18 - 29 - 12 - 18 - 15 - 9 - 12 - 4 - 5 - 9 - 9 - 7 - 5 - 3 - 5 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 59 - 82 - 67 - - 0 - 0 - 3 - 1 - 0 - 0 - 0 - 2 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sitar.Vib - 5 - - - THIRD - 7 - - TRIANGL - 23 - 0 - 3 - 0 - off - - - 5 - 2 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 0 - 1 - 0 - - - 5 - 0.5 - 1.37 - 22.49 - no - no - no - no - 8 - 8 - 14 - 8 - - W1 - W1 - W8 - W2 - 0 - 0 - 0 - 0 - - 30 - 29 - 30 - 30 - 31 - 15 - 15 - 18 - 15 - 15 - 15 - 9 - 12 - 2 - 31 - 31 - 4 - 1 - 2 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 91 - 87 - 65 - - 0 - 0 - 0 - 0 - 0 - 0 - 59 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Sitar - 6 - - - - Viola - 11 - - FIFTH - 6 - - TRIANGL - 34 - 35 - 11 - 0 - on - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 4 - 6 - 1 - - - 2 - 2 - 6 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W3 - W3 - W5 - 0 - 0 - 1 - 2 - - 13 - 15 - 11 - 25 - 6 - 7 - 7 - 6 - 13 - 14 - 15 - 15 - 6 - 0 - 6 - 0 - 8 - 6 - 7 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 78 - 87 - 76 - - 0 - 1 - 1 - 2 - 0 - 50 - 10 - 10 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Viola 5th - 0 - - - FIFTH - 6 - - TRIANGL - 34 - 35 - 11 - 0 - on - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 1 - - - 1 - 4 - 3 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W2 - W1 - W1 - 0 - 0 - 1 - 2 - - 13 - 16 - 10 - 29 - 6 - 7 - 7 - 6 - 13 - 14 - 15 - 15 - 6 - 0 - 6 - 0 - 8 - 6 - 7 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 78 - 96 - 84 - - 0 - 1 - 1 - 2 - 0 - 50 - 10 - 10 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Viola 5th* - 1 - - - FIFTH - 7 - - TRIANGL - 32 - 56 - 50 - 0 - on - - - 2 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 1 - - - 2 - 8 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W5 - W1 - W1 - 1 - 1 - 0 - 2 - - 15 - 27 - 13 - 21 - 6 - 13 - 6 - 6 - 13 - 13 - 15 - 14 - 9 - 7 - 1 - 3 - 9 - 7 - 7 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 67 - 96 - 76 - - 0 - 0 - 0 - 1 - 0 - 10 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Viola....1 - 2 - - - SIXTH - 6 - - TRIANGL - 30 - 46 - 38 - 0 - off - - - 3 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 3 - 5 - 6 - 2 - - - 1 - 2 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W5 - W2 - 1 - 1 - 0 - 0 - - 13 - 14 - 12 - 28 - 6 - 9 - 7 - 4 - 13 - 3 - 4 - 13 - 6 - 13 - 5 - 6 - 5 - 7 - 6 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 79 - 92 - 78 - - 0 - 2 - 0 - 0 - 0 - 10 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - Viola....2 - 3 - - - FIFTH - 6 - - TRIANGL - 28 - 46 - 30 - 0 - off - - - 3 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 1 - 1 - 0 - 2 - - - 1 - 4 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W2 - W1 - 1 - 1 - 0 - 0 - - 15 - 14 - 15 - 31 - 6 - 9 - 21 - 4 - 13 - 3 - 13 - 13 - 6 - 13 - 7 - 6 - 5 - 7 - 6 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 79 - 99 - 83 - - 0 - 2 - 0 - 0 - 0 - 10 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - Viola....2* - 4 - - - SIXTH - 7 - - TRIANGL - 35 - 15 - 11 - 0 - on - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 6 - 3 - - - 1 - 0.5 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W2 - W1 - 0 - 0 - 0 - 0 - - 15 - 15 - 14 - 27 - 7 - 7 - 9 - 6 - 7 - 7 - 7 - 15 - 9 - 9 - 16 - 2 - 7 - 7 - 13 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 92 - 74 - - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - ViolaSynth - 5 - - - - Violin - 12 - - THIRD - 7 - - TRIANGL - 30 - 6 - 6 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 3 - 1 - - - 2 - 4 - 18.84 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W6 - W1 - W1 - 0 - 0 - 0 - 1 - - 11 - 25 - 28 - 27 - 10 - 11 - 17 - 5 - 15 - 15 - 7 - 14 - 0 - 6 - 16 - 0 - 6 - 6 - 13 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 59 - 75 - 78 - - 2 - 0 - 0 - 0 - 2 - 73 - 0 - 12 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SoloViolin - 0 - - - FIRST - 0 - - TRIANGL - 32 - 0 - 14 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 0 - 2 - 5 - - - 2 - 2 - 8 - 10.38 - no - no - no - yes - 8 - 8 - 8 - 64 - - W1 - W1 - W1 - W1 - -1 - 0 - -3 - 2 - - 14 - 18 - 31 - 31 - 5 - 9 - 14 - 13 - 14 - 15 - 10 - 15 - 5 - 2 - 7 - 15 - 9 - 6 - 3 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 81 - 77 - 49 - - 1 - 1 - 1 - 0 - 0 - 16 - 20 - 42 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 49 - 0 - 0 - 0 - 0 - 0 - 0 - - Sradiv. * - 1 - - - THIRD - 7 - - TRIANGL - 32 - 10 - 8 - 0 - off - - - 6 - 0 - off - off - off - on - 0 - 0 - 0 - 0 - 2 - 2 - 5 - 1 - - - 2 - 1 - 3 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W4 - W1 - 0 - 0 - 1 - 0 - - 14 - 21 - 25 - 22 - 14 - 8 - 8 - 7 - 10 - 11 - 12 - 14 - 0 - 0 - 0 - 0 - 8 - 3 - 8 - 6 - VOF - VOF - VOF - VOF - - - 99 - 98 - 99 - 50 - 50 - 50 - - 96 - 58 - 95 - 78 - - 1 - 1 - 2 - 1 - 0 - 0 - 16 - 0 - - - 0 - POLY - 2 - FINGER - 0 - POR - 99 - 0 - 0 - 10 - 80 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violin 1 - 2 - - - FIFTH - 7 - - TRIANGL - 31 - 19 - 61 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 0 - - - 3 - 1 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 0 - 0 - 0 - 0 - - 12 - 15 - 10 - 31 - 9 - 10 - 4 - 2 - 10 - 10 - 15 - 14 - 0 - 0 - 0 - 0 - 8 - 4 - 7 - 4 - VOF - VOF - VOF - VOF - - - 99 - 84 - 99 - 50 - 50 - 50 - - 88 - 98 - 92 - 69 - - 1 - 1 - 1 - 1 - 8 - 0 - 9 - 15 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violin 2 - 3 - - - FIFTH - 7 - - TRIANGL - 31 - 19 - 61 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 0 - - - 4 - 1 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 0 - 0 - 0 - 0 - - 12 - 15 - 13 - 31 - 9 - 10 - 4 - 2 - 13 - 13 - 15 - 14 - 0 - 0 - 0 - 0 - 8 - 4 - 7 - 4 - VOF - VOF - VOF - VOF - - - 99 - 84 - 99 - 50 - 50 - 50 - - 88 - 98 - 92 - 69 - - 1 - 1 - 1 - 1 - 8 - 0 - 9 - 15 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violin 2* - 4 - - - FIFTH - 5 - - TRIANGL - 30 - 20 - 24 - 0 - on - - - 3 - 1 - on - on - on - on - 7 - 7 - 0 - 0 - 7 - 4 - 5 - 2 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W1 - W4 - W1 - 3 - 1 - 2 - -3 - - 12 - 12 - 11 - 11 - 0 - 0 - 3 - 6 - 14 - 14 - 14 - 15 - 0 - 0 - 6 - 3 - 7 - 7 - 5 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 75 - 97 - 78 - - 0 - 0 - 1 - 2 - 0 - 0 - 10 - 10 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violin...1 - 5 - - - FIFTH - 5 - - TRIANGL - 28 - 0 - 24 - 0 - on - - - 3 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 0 - 3 - 0 - 0 - - - 2 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 0 - 2 - 0 - 3 - - 15 - 21 - 14 - 18 - 0 - 0 - 5 - 6 - 14 - 15 - 14 - 15 - 0 - 0 - 6 - 3 - 6 - 6 - 5 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 99 - 76 - - 0 - 0 - 1 - 2 - 0 - 10 - 10 - 10 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violin...1* - 6 - - - FIFTH - 4 - - TRIANGL - 28 - 21 - 14 - 0 - off - - - 4 - 0 - off - off - off - off - 7 - 7 - 6 - 5 - 7 - 5 - 4 - 0 - - - 1 - 3 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W3 - -2 - 1 - 0 - 2 - - 10 - 11 - 10 - 21 - 12 - 13 - 8 - 3 - 15 - 14 - 15 - 14 - 3 - 0 - 3 - 0 - 6 - 3 - 7 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 73 - 99 - 80 - - 1 - 2 - 1 - 0 - 19 - 0 - 19 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 21 - 39 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violin...2 - 7 - - - FIFTH - 5 - - TRIANGL - 37 - 44 - 14 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 0 - - - 0.5 - 8 - 2 - 2 - yes - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W1 - 0 - 1 - -3 - 3 - - 10 - 15 - 12 - 15 - 1 - 2 - 4 - 5 - 15 - 14 - 15 - 14 - 3 - 0 - 3 - 0 - 6 - 3 - 7 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 59 - 99 - 80 - - 1 - 2 - 1 - 0 - 19 - 0 - 19 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 21 - 39 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violin...2* - 8 - - - FIFTH - 5 - - TRIANGL - 31 - 28 - 19 - 18 - on - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 7 - 3 - 1 - - - 1 - 1 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W3 - W2 - W3 - 0 - 1 - -1 - 2 - - 12 - 13 - 11 - 14 - 3 - 8 - 8 - 6 - 15 - 8 - 6 - 10 - 3 - 5 - 8 - 7 - 4 - 2 - 4 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 68 - 96 - 78 - - 1 - 3 - 1 - 2 - 10 - 20 - 10 - 20 - - - 0 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violin...3 - 9 - - - FIFTH - 4 - - TRIANGL - 35 - 0 - 7 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 1 - 0 - 2 - - - 2 - 8 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W6 - W1 - W1 - 0 - 1 - -1 - 2 - - 16 - 31 - 13 - 31 - 5 - 15 - 6 - 4 - 14 - 13 - 13 - 14 - 3 - 8 - 3 - 2 - 8 - 2 - 2 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 66 - 96 - 92 - - 1 - 0 - 1 - 0 - 10 - 20 - 10 - 20 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - Violin...3* - 10 - - - FIFTH - 5 - - TRIANGL - 31 - 25 - 46 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 7 - 2 - - - 1 - 2 - 1 - 1 - no - no - no - no - 96 - 32 - 8 - 8 - - W6 - W2 - W1 - W3 - -1 - 2 - 0 - -3 - - 10 - 10 - 8 - 18 - 6 - 4 - 4 - 4 - 14 - 13 - 6 - 7 - 6 - 16 - 9 - 5 - 7 - 5 - 5 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 55 - 99 - 88 - - 1 - 1 - 2 - 1 - 10 - 20 - 0 - 42 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violin...4 - 11 - - - FIFTH - 5 - - TRIANGL - 35 - 0 - 11 - 0 - on - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 1 - - - 1 - 8 - 2 - 2 - no - no - no - no - 96 - 32 - 8 - 8 - - W2 - W2 - W1 - W1 - -1 - 2 - 0 - -3 - - 13 - 16 - 12 - 17 - 6 - 4 - 7 - 0 - 14 - 13 - 15 - 14 - 6 - 16 - 6 - 0 - 7 - 5 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 55 - 99 - 83 - - 1 - 1 - 2 - 1 - 10 - 20 - 0 - 42 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 3 - - Violin...4* - 12 - - - FIFTH - 5 - - TRIANGL - 34 - 39 - 52 - 50 - on - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 4 - 4 - 5 - - - 2 - 2 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W2 - W2 - W1 - 0 - 1 - 1 - -3 - - 12 - 17 - 10 - 16 - 7 - 12 - 4 - 5 - 15 - 10 - 15 - 15 - 4 - 7 - 4 - 4 - 7 - 6 - 7 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 80 - 99 - 80 - - 2 - 2 - 2 - 0 - 0 - 20 - 0 - 20 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violin...5 - 13 - - - FIFTH - 6 - - TRIANGL - 36 - 39 - 0 - 0 - on - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 2 - 1 - 2 - - - 6 - 2 - 6 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - 0 - 1 - 1 - -3 - - 12 - 31 - 12 - 31 - 4 - 13 - 4 - 5 - 15 - 15 - 15 - 15 - 4 - 7 - 4 - 4 - 7 - 6 - 7 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 80 - 99 - 83 - - 2 - 2 - 2 - 0 - 0 - 20 - 0 - 20 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violin...5* - 14 - - - FIFTH - 5 - - TRIANGL - 26 - 39 - 25 - 25 - on - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 4 - 4 - - - 2 - 2 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W4 - W4 - 3 - 1 - -1 - -3 - - 10 - 17 - 10 - 18 - 10 - 13 - 11 - 5 - 15 - 15 - 11 - 15 - 3 - 5 - 4 - 4 - 7 - 6 - 7 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 83 - 99 - 83 - - 2 - 2 - 2 - 0 - 0 - 20 - 0 - 20 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violin...6 - 15 - - - FIFTH - 6 - - TRIANGL - 36 - 39 - 0 - 0 - on - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 2 - - - 4 - 6 - 6 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W4 - W1 - 0 - 1 - 1 - -3 - - 12 - 31 - 12 - 31 - 4 - 13 - 4 - 5 - 15 - 15 - 15 - 15 - 4 - 7 - 4 - 4 - 7 - 6 - 7 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 83 - 99 - 83 - - 2 - 2 - 2 - 0 - 0 - 20 - 0 - 20 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violin...6* - 16 - - - FIFTH - 5 - - TRIANGL - 36 - 39 - 0 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 4 - 1 - - - 2 - 2 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W4 - W4 - 1 - -1 - 1 - 0 - - 10 - 14 - 12 - 31 - 8 - 4 - 7 - 0 - 10 - 8 - 15 - 14 - 9 - 4 - 6 - 0 - 8 - 5 - 7 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 98 - 80 - - 0 - 1 - 1 - 1 - 10 - 20 - 0 - 42 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violin...7 - 17 - - - FIFTH - 4 - - TRIANGL - 35 - 39 - 0 - 0 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 0 - 1 - - - 2 - 2 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W4 - W3 - -1 - 0 - 2 - 3 - - 10 - 21 - 12 - 20 - 5 - 7 - 6 - 5 - 7 - 5 - 10 - 7 - 10 - 7 - 8 - 4 - 8 - 5 - 7 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 81 - 99 - 82 - - 0 - 0 - 1 - 1 - 10 - 20 - 10 - 42 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violin...8 - 18 - - - FIFTH - 4 - - TRIANGL - 35 - 39 - 0 - 0 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 0 - 1 - - - 2 - 8 - 4 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -1 - 0 - 0 - 3 - - 15 - 31 - 12 - 31 - 5 - 13 - 6 - 5 - 12 - 14 - 14 - 15 - 6 - 16 - 6 - 4 - 8 - 6 - 8 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 81 - 99 - 91 - - 0 - 0 - 1 - 1 - 10 - 20 - 10 - 42 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violin...8* - 19 - - - FIFTH - 5 - - TRIANGL - 29 - 23 - 64 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 3 - 0 - 2 - - - 2 - 4 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W3 - W1 - W4 - 1 - 2 - 1 - 3 - - 12 - 31 - 12 - 31 - 6 - 12 - 6 - 5 - 14 - 14 - 14 - 15 - 6 - 12 - 6 - 0 - 8 - 10 - 8 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 73 - 96 - 87 - - 0 - 0 - 0 - 1 - 10 - 20 - 10 - 50 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violin...9 - 20 - - - FIFTH - 5 - - TRIANGL - 36 - 39 - 0 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 0 - 2 - - - 8 - 6 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W4 - 1 - 2 - 1 - 3 - - 12 - 31 - 12 - 31 - 6 - 12 - 6 - 5 - 14 - 14 - 14 - 15 - 6 - 12 - 6 - 0 - 8 - 10 - 8 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 91 - 74 - 96 - 94 - - 0 - 0 - 0 - 1 - 10 - 20 - 10 - 50 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violin...9* - 21 - - - FIFTH - 7 - - TRIANGL - 27 - 8 - 31 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 1 - 6 - 1 - - - 2 - 2 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W1 - W1 - 0 - 2 - 0 - 1 - - 11 - 17 - 11 - 18 - 5 - 2 - 9 - 3 - 6 - 8 - 15 - 12 - 6 - 25 - 6 - 0 - 8 - 5 - 6 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 87 - 81 - 80 - - 1 - 1 - 1 - 1 - 10 - 20 - 0 - 42 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - Violin..10 - 22 - - - FIFTH - 7 - - TRIANGL - 32 - 8 - 12 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 1 - - - 2 - 2 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 2 - 0 - 1 - - 14 - 16 - 10 - 10 - 5 - 2 - 9 - 3 - 6 - 8 - 15 - 12 - 6 - 25 - 6 - 0 - 8 - 5 - 6 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 87 - 95 - 80 - - 1 - 1 - 1 - 1 - 10 - 20 - 0 - 42 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - Violin..10* - 23 - - - FIFTH - 7 - - TRIANGL - 32 - 44 - 5 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 6 - 0 - 1 - - - 2 - 4 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W5 - W1 - W1 - 1 - 2 - -1 - 2 - - 11 - 14 - 10 - 24 - 5 - 6 - 6 - 5 - 13 - 1 - 14 - 14 - 0 - 0 - 6 - 0 - 8 - 5 - 7 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 50 - 97 - 79 - - 0 - 0 - 1 - 1 - 10 - 20 - 0 - 50 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violin..11 - 24 - - - FIFTH - 5 - - TRIANGL - 33 - 39 - 56 - 2 - on - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 2 - 4 - 2 - - - 2 - 2 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W5 - W6 - W2 - W3 - 2 - 0 - 1 - 0 - - 15 - 22 - 10 - 17 - 8 - 10 - 6 - 5 - 14 - 14 - 14 - 14 - 2 - 6 - 5 - 4 - 8 - 8 - 9 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 65 - 99 - 74 - - 0 - 0 - 1 - 1 - 10 - 10 - 0 - 50 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - Violin..12 - 26 - - - FIFTH - 5 - - TRIANGL - 36 - 39 - 0 - 0 - on - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 2 - 0 - 2 - - - 2 - 2 - 6 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W1 - W1 - W1 - 2 - 0 - 1 - 0 - - 16 - 24 - 15 - 31 - 8 - 10 - 6 - 5 - 14 - 14 - 14 - 14 - 2 - 6 - 5 - 4 - 8 - 8 - 9 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 77 - 99 - 82 - - 0 - 0 - 1 - 1 - 10 - 10 - 0 - 50 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - Violin..12* - 27 - - - THIRD - 7 - - TRIANGL - 33 - 39 - 7 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 3 - 3 - 2 - - - 2 - 2 - 8 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W6 - W1 - W1 - -2 - 2 - 0 - 2 - - 11 - 22 - 17 - 22 - 13 - 7 - 17 - 6 - 15 - 15 - 7 - 14 - 0 - 8 - 14 - 2 - 6 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 76 - 60 - 66 - - 2 - 1 - 1 - 1 - 2 - 73 - 0 - 12 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violin..13 - 28 - - - THIRD - 4 - - TRIANGL - 33 - 39 - 7 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 1 - - - 2 - 4 - 10 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W6 - W1 - W1 - 0 - 0 - 0 - 1 - - 12 - 22 - 26 - 29 - 13 - 7 - 17 - 6 - 15 - 15 - 7 - 14 - 0 - 8 - 14 - 2 - 6 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 76 - 91 - 83 - - 2 - 1 - 1 - 1 - 2 - 73 - 0 - 12 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violin..13* - 29 - - - FIFTH - 3 - - TRIANGL - 35 - 39 - 5 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 1 - 4 - 1 - - - 2 - 2 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W7 - 0 - 1 - -1 - 2 - - 11 - 19 - 13 - 15 - 5 - 13 - 6 - 6 - 12 - 14 - 14 - 14 - 6 - 16 - 3 - 4 - 8 - 7 - 7 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 77 - 83 - 88 - - 0 - 0 - 1 - 0 - 10 - 20 - 10 - 1 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - Violin..14 - 30 - - - FIFTH - 5 - - TRIANGL - 35 - 39 - 5 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 1 - - - 2 - 2 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W5 - 0 - 1 - -1 - 2 - - 15 - 31 - 14 - 31 - 5 - 13 - 6 - 6 - 12 - 14 - 14 - 14 - 6 - 16 - 3 - 4 - 8 - 7 - 7 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 74 - 99 - 89 - - 0 - 0 - 1 - 0 - 10 - 20 - 10 - 1 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - Violin..14* - 31 - - - FIFTH - 5 - - TRIANGL - 33 - 18 - 15 - 0 - on - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 4 - 4 - 1 - - - 4 - 8 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W3 - W1 - W3 - 0 - 1 - -1 - 3 - - 11 - 18 - 13 - 26 - 4 - 17 - 6 - 6 - 13 - 14 - 14 - 14 - 5 - 16 - 3 - 4 - 7 - 6 - 7 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 78 - 96 - 78 - - 0 - 0 - 1 - 0 - 10 - 20 - 10 - 1 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - Violin..15 - 32 - - - FIFTH - 5 - - TRIANGL - 35 - 0 - 9 - 0 - on - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 0 - 1 - - - 4 - 8 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W1 - W1 - W1 - 0 - 1 - -1 - 3 - - 16 - 29 - 14 - 31 - 4 - 17 - 6 - 6 - 13 - 14 - 14 - 14 - 5 - 16 - 3 - 4 - 7 - 6 - 7 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 78 - 96 - 78 - - 0 - 0 - 1 - 0 - 10 - 20 - 10 - 1 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - Violin..15* - 33 - - - THIRD - 5 - - TRIANGL - 33 - 39 - 7 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 5 - 1 - - - 2 - 10.5 - 2 - 2 - no - yes - no - no - 8 - 40 - 8 - 8 - - W1 - W1 - W1 - W1 - 1 - 3 - 0 - 1 - - 11 - 22 - 26 - 28 - 10 - 7 - 17 - 6 - 14 - 15 - 7 - 14 - 3 - 8 - 14 - 2 - 5 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 86 - 46 - 70 - 84 - - 1 - 0 - 0 - 0 - 0 - 73 - 0 - 12 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violin..16 - 34 - - - FIFTH - 4 - - TRIANGL - 44 - 10 - 8 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 1 - 5 - 1 - - - 2 - 2 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W4 - W2 - W2 - 0 - 3 - 0 - 3 - - 12 - 13 - 10 - 24 - 4 - 5 - 8 - 6 - 15 - 14 - 15 - 14 - 3 - 0 - 3 - 0 - 7 - 3 - 7 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 68 - 91 - 72 - - 1 - 1 - 1 - 1 - 19 - 0 - 19 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 21 - 39 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violin..17 - 35 - - - FIFTH - 4 - - TRIANGL - 44 - 10 - 8 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 1 - - - 2 - 3 - 4 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W4 - W1 - W2 - 0 - 3 - 0 - 3 - - 12 - 13 - 10 - 24 - 4 - 5 - 4 - 6 - 15 - 14 - 15 - 14 - 3 - 0 - 3 - 0 - 7 - 3 - 7 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 68 - 91 - 72 - - 1 - 1 - 1 - 1 - 19 - 0 - 19 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 21 - 39 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violin..17* - 36 - - - FIFTH - 6 - - SQUARE - 32 - 26 - 27 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 1 - 4 - 4 - - - 2 - 2 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W2 - W2 - 1 - 0 - 0 - 1 - - 14 - 25 - 13 - 29 - 6 - 15 - 7 - 0 - 14 - 13 - 15 - 14 - 6 - 16 - 6 - 0 - 8 - 6 - 7 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 78 - 94 - 79 - - 0 - 1 - 1 - 1 - 10 - 10 - 0 - 42 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violin..18 - 37 - - - FIFTH - 6 - - TRIANGL - 35 - 0 - 11 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 0 - 1 - - - 2 - 2 - 4 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W2 - W2 - 1 - 0 - 0 - 1 - - 16 - 31 - 13 - 31 - 6 - 15 - 7 - 0 - 14 - 13 - 15 - 14 - 6 - 16 - 6 - 0 - 8 - 6 - 7 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 78 - 94 - 79 - - 0 - 1 - 1 - 1 - 10 - 10 - 0 - 42 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violin..18* - 38 - - - THIRD - 2 - - SQUARE - 33 - 39 - 33 - 0 - on - - - 2 - 0 - off - off - off - off - 1 - 0 - 0 - 0 - 4 - 3 - 4 - 2 - - - 2 - 2 - 6 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W3 - W4 - 0 - 1 - 0 - 1 - - 12 - 24 - 15 - 21 - 5 - 3 - 6 - 6 - 12 - 8 - 15 - 14 - 6 - 7 - 6 - 5 - 8 - 6 - 9 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 81 - 71 - 81 - - 0 - 0 - 1 - 2 - 10 - 20 - 10 - 30 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - Violin..19 - 39 - - - THIRD - 2 - - TRIANGL - 36 - 39 - 1 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 0 - 2 - - - 2 - 2 - 6 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W2 - W1 - 0 - 1 - 0 - 1 - - 15 - 31 - 15 - 31 - 5 - 13 - 6 - 6 - 12 - 14 - 15 - 14 - 6 - 16 - 6 - 5 - 8 - 6 - 9 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 81 - 71 - 81 - - 0 - 0 - 1 - 2 - 10 - 20 - 10 - 30 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - Violin..19* - 40 - - - FIRST - 5 - - TRIANGL - 32 - 25 - 46 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 4 - 2 - - - 2 - 2 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W3 - W4 - W5 - -1 - 0 - 3 - -3 - - 11 - 22 - 15 - 27 - 3 - 8 - 8 - 0 - 15 - 13 - 11 - 14 - 2 - 5 - 16 - 0 - 8 - 7 - 7 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 73 - 77 - 68 - - 1 - 1 - 1 - 0 - 19 - 25 - 1 - 66 - - - -12 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - VIOLINS - 41 - - - FIRST - 5 - - TRIANGL - 35 - 0 - 11 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 4 - 0 - - - 2 - 2 - 8 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W5 - W1 - -1 - 0 - 3 - -3 - - 15 - 30 - 31 - 31 - 3 - 8 - 15 - 0 - 15 - 13 - 14 - 14 - 2 - 5 - 16 - 0 - 8 - 7 - 7 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 81 - 83 - 73 - 71 - - 1 - 1 - 1 - 0 - 19 - 25 - 1 - 66 - - - -12 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - VIOLINS * - 42 - - - FIFTH - 5 - - TRIANGL - 30 - 24 - 59 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 2 - 4 - 1 - - - 2 - 4 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W5 - W2 - W2 - 0 - 1 - -1 - -2 - - 11 - 18 - 11 - 19 - 9 - 15 - 7 - 0 - 6 - 6 - 6 - 6 - 0 - 6 - 6 - 0 - 5 - 6 - 6 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 64 - 99 - 76 - - 0 - 0 - 0 - 0 - 40 - 9 - 20 - 60 - - - -12 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violins..1 - 43 - - - FIFTH - 5 - - TRIANGL - 33 - 10 - 15 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 2 - 8 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W5 - W2 - W2 - 0 - 1 - -1 - -2 - - 18 - 15 - 12 - 16 - 9 - 15 - 7 - 0 - 6 - 6 - 6 - 6 - 0 - 6 - 6 - 0 - 5 - 6 - 6 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 64 - 99 - 76 - - 0 - 0 - 0 - 0 - 40 - 9 - 20 - 60 - - - -24 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violins..1* - 44 - - - FIFTH - 5 - - TRIANGL - 32 - 44 - 20 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 3 - 2 - - - 2 - 4 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W5 - W2 - W2 - 1 - 1 - 1 - 2 - - 11 - 19 - 11 - 16 - 7 - 12 - 6 - 6 - 13 - 13 - 14 - 13 - 0 - 12 - 6 - 0 - 7 - 5 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 69 - 93 - 78 - - 0 - 0 - 0 - 0 - 30 - 50 - 20 - 33 - - - -12 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violins..2 - 45 - - - FIFTH - 5 - - TRIANGL - 32 - 44 - 20 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 2 - 8 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W3 - W2 - W3 - 1 - 1 - 1 - 2 - - 14 - 19 - 15 - 16 - 7 - 12 - 6 - 6 - 13 - 13 - 14 - 13 - 0 - 12 - 6 - 0 - 7 - 5 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 69 - 93 - 78 - - 0 - 0 - 0 - 0 - 30 - 50 - 20 - 33 - - - -12 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violins..2* - 46 - - - FIFTH - 5 - - TRIANGL - 30 - 39 - 52 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 2 - 5 - 1 - - - 2 - 4 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W5 - W3 - W1 - 1 - 1 - 0 - 2 - - 11 - 18 - 11 - 18 - 7 - 12 - 6 - 6 - 13 - 13 - 14 - 13 - 0 - 12 - 6 - 0 - 7 - 5 - 6 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 67 - 89 - 70 - - 0 - 0 - 0 - 0 - 30 - 50 - 40 - 33 - - - -12 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violins..3 - 47 - - - FIFTH - 5 - - TRIANGL - 35 - 39 - 12 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 2 - 6 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W5 - W5 - W3 - W1 - 1 - 1 - 0 - 2 - - 16 - 31 - 12 - 24 - 7 - 12 - 6 - 6 - 13 - 13 - 14 - 13 - 0 - 12 - 6 - 0 - 7 - 5 - 6 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 67 - 89 - 70 - - 0 - 0 - 0 - 0 - 30 - 50 - 40 - 33 - - - -12 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Violins..3* - 48 - - - FIFTH - 5 - - TRIANGL - 31 - 28 - 37 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 2 - 4 - 1 - - - 2 - 8 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W4 - W1 - W5 - -3 - 2 - -2 - 2 - - 11 - 15 - 10 - 21 - 5 - 12 - 6 - 7 - 14 - 12 - 14 - 14 - 1 - 12 - 0 - 5 - 7 - 4 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 82 - 87 - 91 - 80 - - 0 - 0 - 0 - 0 - 17 - 51 - 20 - 65 - - - -12 - POLY - 3 - FULL - 1 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - Violins..4 - 49 - - - FIFTH - 5 - - TRIANGL - 37 - 20 - 15 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 2 - 0 - 1 - - - 2 - 8 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W4 - W1 - W4 - -3 - 2 - -2 - 2 - - 13 - 15 - 10 - 15 - 5 - 12 - 6 - 4 - 14 - 12 - 14 - 14 - 1 - 12 - 0 - 0 - 7 - 4 - 6 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 82 - 87 - 91 - 87 - - 0 - 0 - 0 - 0 - 17 - 51 - 20 - 65 - - - -12 - POLY - 3 - FULL - 1 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - Violins..4* - 50 - - - - Other - 13 - - THIRD - 4 - - TRIANGL - 33 - 19 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 2 - 5 - 1 - - - 1 - 3 - 9 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 5 - 12 - 12 - 6 - 14 - 14 - 14 - 14 - 6 - 6 - 2 - 0 - 9 - 9 - 8 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 86 - 65 - 63 - - 2 - 3 - 1 - 0 - 0 - 0 - 0 - 0 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - 8 Stringer - 0 - - - SIXTH - 1 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 4 - 3 - - - 4 - 6 - 2 - 12 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 1 - 1 - -1 - -1 - - 13 - 28 - 28 - 28 - 28 - 15 - 10 - 15 - 12 - 12 - 12 - 12 - 6 - 9 - 6 - 9 - 6 - 6 - 4 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 76 - 89 - 99 - - 2 - 1 - 1 - 3 - 0 - 0 - 0 - 46 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntInst.1 - 1 - - - SIXTH - 6 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 3 - 5 - 3 - - - 1 - 1 - 4 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 1 - -2 - 3 - 0 - - 28 - 28 - 28 - 28 - 13 - 9 - 9 - 24 - 13 - 13 - 13 - 13 - 15 - 9 - 9 - 21 - 5 - 4 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 85 - 83 - 87 - - 1 - 1 - 1 - 3 - 0 - 0 - 0 - 46 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntInst.2 - 2 - - - SIXTH - 4 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 5 - 4 - - - 1 - 1 - 1 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 1 - 0 - 3 - 0 - - 28 - 28 - 28 - 28 - 31 - 28 - 9 - 9 - 15 - 15 - 12 - 12 - 9 - 9 - 3 - 3 - 5 - 4 - 6 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 82 - 83 - 58 - - 2 - 1 - 2 - 3 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntInst.3 - 3 - - - THIRD - 1 - - TRIANGL - 31 - 0 - 0 - 0 - on - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 6 - 3 - - - 1 - 1 - 7 - 4.71 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 27 - 31 - 10 - 10 - 19 - 27 - 13 - 14 - 7 - 13 - 6 - 10 - 6 - 22 - 6 - 7 - 12 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 62 - 71 - 99 - - 1 - 1 - 1 - 2 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntInst.4 - 4 - - - FIFTH - 3 - - TRIANGL - 21 - 33 - 17 - 39 - off - - - 2 - 1 - off - off - on - off - 0 - 0 - 0 - 0 - 6 - 3 - 6 - 4 - - - 1 - 2 - 6 - 10 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - -1 - -3 - -3 - - 31 - 16 - 31 - 16 - 21 - 12 - 21 - 12 - 13 - 12 - 13 - 12 - 6 - 3 - 6 - 9 - 5 - 9 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 62 - 99 - 61 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntInst.5 - 5 - - - FIFTH - 3 - - TRIANGL - 35 - 60 - 64 - 96 - on - - - 1 - 1 - off - on - off - off - 0 - 0 - 0 - 0 - 7 - 4 - 5 - 4 - - - 2 - 4 - 2 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - -1 - -3 - -3 - - 28 - 15 - 28 - 15 - 5 - 15 - 5 - 16 - 13 - 10 - 13 - 10 - 3 - 13 - 3 - 13 - 7 - 3 - 7 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 60 - 71 - 59 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntInst.6 - 6 - - - SIXTH - 4 - - TRIANGL - 35 - 90 - 1 - 2 - off - - - 4 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 3 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - -1 - -3 - -3 - - 16 - 19 - 21 - 31 - 5 - 12 - 18 - 9 - 14 - 15 - 15 - 13 - 6 - 18 - 31 - 4 - 9 - 9 - 9 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 60 - 99 - 76 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntInst.7 - 7 - - - THIRD - 7 - - TRIANGL - 31 - 0 - 0 - 0 - on - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 5 - 3 - - - 2 - 1 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 28 - 28 - 27 - 31 - 25 - 30 - 21 - 31 - 8 - 8 - 8 - 8 - 9 - 0 - 9 - 9 - 5 - 7 - 4 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 84 - 93 - 99 - - 1 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntInst.8 - 8 - - - FIFTH - 5 - - TRIANGL - 25 - 46 - 66 - 15 - on - - - 3 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 7 - 4 - 5 - 3 - - - 2 - 1 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -2 - 0 - 2 - - 28 - 28 - 31 - 31 - 19 - 9 - 9 - 22 - 11 - 11 - 14 - 11 - 9 - 6 - 4 - 9 - 6 - 3 - 15 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 84 - 90 - 99 - - 1 - 2 - 2 - 2 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntInst.9 - 9 - - - THIRD - 3 - - TRIANGL - 25 - 46 - 66 - 15 - on - - - 3 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 6 - 4 - 4 - 1 - - - 1 - 4 - 0.5 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 28 - 15 - 13 - 24 - 18 - 15 - 12 - 22 - 14 - 11 - 13 - 11 - 7 - 13 - 7 - 24 - 7 - 6 - 4 - 12 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 60 - 72 - 71 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntInst10 - 10 - - - FIFTH - 5 - - TRIANGL - 40 - 0 - 0 - 63 - off - - - 2 - 1 - off - on - on - off - 0 - 0 - 0 - 0 - 5 - 2 - 4 - 2 - - - 1 - 2 - 1 - 9 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 0 - -3 - 0 - - 28 - 28 - 31 - 31 - 10 - 12 - 6 - 24 - 10 - 10 - 15 - 6 - 9 - 31 - 15 - 15 - 9 - 9 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 79 - 92 - 99 - - 1 - 2 - 1 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntInst11 - 11 - - - FOURTH - 3 - - TRIANGL - 24 - 2 - 32 - 0 - on - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 4 - 2 - 4 - - - 2 - 5 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W4 - W8 - W3 - 0 - 0 - 0 - 0 - - 23 - 23 - 24 - 26 - 15 - 18 - 6 - 14 - 10 - 12 - 14 - 6 - 9 - 18 - 0 - 15 - 6 - 7 - 4 - 6 - VOF - VOF - VOF - VOF - - - 99 - 97 - 99 - 50 - 50 - 50 - - 99 - 89 - 64 - 84 - - 2 - 2 - 2 - 2 - 0 - 10 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Syamisen - 12 - - - FIRST - 6 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 1 - 1 - 1 - - - 1 - 1 - 2 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W4 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 24 - 31 - 12 - 11 - 15 - 15 - 10 - 13 - 6 - 0 - 3 - 6 - 8 - 3 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 81 - 54 - 87 - - 0 - 0 - 0 - 1 - 0 - 34 - 20 - 30 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Zither - 13 - - - - - KEYBOARDS - 3 - - Clavichord - 0 - - THIRD - 7 - - TRIANGL - 35 - 0 - 8 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 5 - 4 - 3 - - - 0.5 - 0.5 - 0.5 - 12 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W5 - W2 - W1 - 2 - -2 - 1 - 2 - - 30 - 30 - 29 - 30 - 28 - 27 - 1 - 28 - 12 - 13 - 0 - 12 - 0 - 0 - 0 - 0 - 9 - 9 - 12 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 86 - 83 - 75 - - 2 - 0 - 2 - 2 - 0 - 12 - 46 - 15 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Clav Lead - 0 - - - THIRD - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 3 - - - 1 - 0.5 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W2 - W1 - -3 - 0 - 3 - -1 - - 25 - 26 - 31 - 26 - 15 - 15 - 10 - 15 - 12 - 13 - 0 - 12 - 5 - 4 - 4 - 4 - 9 - 9 - 12 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 88 - 91 - - 2 - 2 - 1 - 1 - 0 - 12 - 46 - 15 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Clav Perc - 1 - - - THIRD - 7 - - TRIANGL - 35 - 26 - 15 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 4 - 3 - - - 4 - 0.5 - 0.5 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - 0 - 0 - 0 - 3 - - 30 - 30 - 30 - 30 - 21 - 4 - 3 - 28 - 12 - 13 - 0 - 12 - 5 - 4 - 4 - 4 - 9 - 9 - 12 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 95 - 85 - 94 - - 2 - 0 - 2 - 2 - 0 - 12 - 46 - 15 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Clav Synth - 2 - - - FIRST - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 4 - 4 - 1 - - - 1 - 0.5 - 0.5 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W2 - 0 - 0 - 0 - 0 - - 28 - 31 - 31 - 31 - 20 - 12 - 16 - 11 - 14 - 15 - 15 - 9 - 8 - 8 - 5 - 8 - 12 - 5 - 6 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 92 - 82 - 66 - - 1 - 0 - 2 - 1 - 0 - 0 - 94 - 16 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Clav.....1 - 3 - - - FOURTH - 3 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 3 - 4 - 1 - - - 0.5 - 0.5 - 7 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W3 - W1 - 0 - -2 - 1 - 2 - - 30 - 30 - 29 - 30 - 28 - 27 - 1 - 28 - 12 - 13 - 0 - 12 - 5 - 1 - 1 - 5 - 9 - 9 - 12 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 95 - 81 - 67 - - 2 - 0 - 2 - 2 - 0 - 12 - 46 - 15 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Clav.....2 - 4 - - - THIRD - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 3 - 3 - 1 - - - 2 - 1 - 10 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W2 - 0 - 1 - 1 - 2 - - 24 - 23 - 29 - 30 - 27 - 26 - 1 - 28 - 12 - 13 - 0 - 12 - 5 - 1 - 1 - 5 - 7 - 1 - 1 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 84 - 68 - 84 - - 2 - 0 - 1 - 2 - 2 - 9 - 50 - 32 - - - 0 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Clav.....3 - 5 - - - THIRD - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 4 - 3 - 1 - - - 2 - 0.5 - 10 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -2 - -1 - 3 - 2 - - 25 - 23 - 29 - 30 - 27 - 9 - 1 - 21 - 14 - 0 - 0 - 0 - 6 - 15 - 11 - 10 - 9 - 1 - 1 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 83 - 62 - 97 - - 1 - 0 - 2 - 2 - 2 - 9 - 50 - 32 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Clav.....4 - 6 - - - FIFTH - 7 - - TRIANGL - 30 - 0 - 0 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 3 - 3 - 1 - - - 2 - 0.5 - 0.5 - 7 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W3 - W1 - -2 - -1 - 0 - 2 - - 25 - 25 - 28 - 28 - 25 - 25 - 16 - 16 - 14 - 14 - 12 - 12 - 6 - 6 - 7 - 7 - 9 - 9 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 87 - 99 - 81 - - 1 - 1 - 3 - 3 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Clav.....5 - 7 - - - FIFTH - 7 - - TRIANGL - 30 - 0 - 0 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 3 - 3 - 1 - - - 2 - 0.5 - 4 - 20.76 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - -2 - -1 - 0 - 2 - - 25 - 25 - 28 - 28 - 25 - 25 - 5 - 16 - 14 - 14 - 12 - 12 - 6 - 6 - 7 - 7 - 9 - 9 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 90 - 93 - 78 - - 1 - 1 - 3 - 3 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Clav.....6 - 8 - - - THIRD - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 4 - 0 - - - 0.5 - 0.5 - 2 - 12 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W5 - W1 - W1 - -2 - -1 - 3 - 2 - - 25 - 23 - 29 - 28 - 27 - 9 - 1 - 1 - 14 - 0 - 0 - 7 - 6 - 15 - 11 - 2 - 9 - 1 - 1 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 83 - 57 - 53 - - 1 - 0 - 2 - 1 - 2 - 9 - 50 - 53 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Clav.....7 - 9 - - - THIRD - 3 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 1 - - - 2 - 0.5 - 0.5 - 7 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - 0 - -2 - 1 - 2 - - 30 - 30 - 29 - 30 - 28 - 27 - 1 - 28 - 12 - 13 - 0 - 12 - 5 - 1 - 1 - 5 - 9 - 9 - 12 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 83 - 89 - 76 - - 2 - 0 - 2 - 2 - 0 - 12 - 46 - 15 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Clav.....8 - 10 - - - FIFTH - 3 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 4 - 3 - - - 1 - 1 - 1 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W5 - W5 - W1 - 0 - -2 - 1 - 2 - - 30 - 30 - 29 - 30 - 28 - 27 - 1 - 28 - 12 - 13 - 0 - 12 - 5 - 1 - 1 - 5 - 9 - 9 - 12 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 98 - 82 - - 2 - 0 - 2 - 2 - 0 - 12 - 46 - 15 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Clav.....9 - 11 - - - THIRD - 7 - - TRIANGL - 28 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 2 - 3 - 4 - - - 2 - 0.5 - 5 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W5 - W3 - -1 - -2 - 3 - -3 - - 31 - 31 - 31 - 31 - 0 - 12 - 6 - 1 - 15 - 10 - 14 - 0 - 10 - 1 - 1 - 0 - 15 - 1 - 1 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 88 - 84 - 79 - 77 - - 1 - 1 - 1 - 2 - 0 - 0 - 35 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Clavi - 12 - - - FIRST - 6 - - TRIANGL - 27 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 3 - 4 - - - 1 - 0.5 - 5 - 15 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 20 - 9 - 18 - 11 - 14 - 15 - 15 - 9 - 8 - 8 - 5 - 8 - 12 - 5 - 6 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 73 - 70 - 66 - - 1 - 0 - 0 - 2 - 0 - 0 - 16 - 16 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - EZ Clav - 13 - - - FOURTH - 6 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 4 - 2 - 1 - - - 3 - 0.5 - 4 - 12 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -2 - 1 - 2 - - 30 - 30 - 29 - 30 - 28 - 27 - 1 - 28 - 12 - 13 - 0 - 12 - 5 - 1 - 1 - 5 - 9 - 9 - 12 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 97 - 77 - 86 - - 2 - 0 - 2 - 2 - 0 - 12 - 46 - 15 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Fuzz Clavi - 14 - - - THIRD - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 4 - 2 - 0 - - - 2 - 1 - 10 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W4 - W4 - 0 - -3 - 3 - 3 - - 27 - 29 - 29 - 29 - 10 - 7 - 9 - 6 - 14 - 14 - 14 - 14 - 7 - 9 - 6 - 6 - 10 - 7 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 77 - 80 - 82 - - 1 - 0 - 2 - 1 - 0 - 0 - 16 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Klavinet * - 15 - - - THIRD - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 4 - 2 - - - 2 - 1 - 1 - 14 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 1 - 1 - 2 - - 24 - 23 - 29 - 30 - 27 - 26 - 1 - 28 - 12 - 13 - 0 - 12 - 5 - 1 - 1 - 5 - 7 - 1 - 1 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 75 - 57 - 78 - - 2 - 0 - 1 - 2 - 2 - 9 - 50 - 32 - - - 0 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Ornt Clav - 16 - - - FOURTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 7 - 7 - 13 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 7 - 18 - 13 - 16 - 8 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 6 - 4 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 67 - 69 - 76 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Rimbaclav - 17 - - - THIRD - 7 - - TRIANGL - 85 - 0 - 57 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 0 - 0 - 0 - - - 1 - 9 - 13 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 27 - 16 - 28 - 19 - 14 - 2 - 11 - 24 - 12 - 12 - 12 - 12 - 16 - 1 - 4 - 20 - 10 - 10 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 92 - 65 - 97 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SplashClav - 18 - - - FIFTH - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 0 - 0 - 2 - - - 8 - 5 - 1 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W4 - W5 - 3 - 3 - -3 - 0 - - 31 - 31 - 23 - 26 - 9 - 12 - 6 - 9 - 0 - 0 - 13 - 15 - 15 - 6 - 5 - 7 - 6 - 2 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 87 - 99 - 81 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 4 - - Synclav. * - 19 - - - THIRD - 0 - - TRIANGL - 28 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 3 - 4 - - - 2 - 0.5 - 5 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W2 - W8 - 0 - 1 - -1 - 0 - - 31 - 31 - 31 - 31 - 7 - 8 - 6 - 11 - 13 - 14 - 15 - 9 - 8 - 7 - 4 - 7 - 12 - 5 - 6 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 88 - 70 - 73 - - 1 - 1 - 1 - 2 - 0 - 0 - 35 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Thin Clav - 20 - - - - Harpsichord - 1 - - FIFTH - 3 - - TRIANGL - 31 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 4 - 0.5 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W1 - W1 - W5 - 1 - 2 - 3 - -2 - - 23 - 15 - 23 - 26 - 8 - 16 - 8 - 19 - 12 - 13 - 12 - 13 - 6 - 0 - 6 - 0 - 5 - 1 - 4 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 88 - 93 - 76 - 91 - - 2 - 3 - 2 - 2 - 0 - 0 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Harpschrd1 - 0 - - - FIFTH - 3 - - TRIANGL - 31 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 4 - 0.5 - 0.5 - 1.49 - no - no - no - no - 8 - 8 - 8 - 9 - - W4 - W1 - W1 - W5 - 1 - 2 - 3 - -2 - - 23 - 15 - 23 - 26 - 8 - 16 - 8 - 19 - 12 - 13 - 12 - 13 - 6 - 0 - 6 - 0 - 5 - 1 - 4 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 88 - 93 - 76 - 91 - - 2 - 3 - 2 - 2 - 0 - 0 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Harpschrd2 - 1 - - - FIFTH - 3 - - TRIANGL - 31 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 3 - 0.5 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W1 - W1 - W5 - 1 - 2 - 3 - -2 - - 23 - 15 - 23 - 26 - 8 - 16 - 8 - 19 - 12 - 10 - 12 - 10 - 6 - 0 - 6 - 0 - 7 - 1 - 7 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 88 - 93 - 76 - 91 - - 2 - 3 - 2 - 2 - 0 - 0 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Harpschrd3 - 2 - - - FIFTH - 3 - - TRIANGL - 31 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 4 - 0.5 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W1 - W1 - W5 - 1 - 2 - 3 - -2 - - 23 - 15 - 23 - 26 - 8 - 16 - 8 - 19 - 12 - 13 - 12 - 13 - 6 - 0 - 6 - 0 - 7 - 1 - 7 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 88 - 93 - 76 - 91 - - 2 - 3 - 2 - 2 - 0 - 0 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Harpschrd4 - 3 - - - THIRD - 6 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 6 - 0 - - - 4 - 1 - 4 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W1 - W3 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 26 - 25 - 31 - 29 - 13 - 13 - 13 - 12 - 1 - 3 - 5 - 1 - 7 - 4 - 9 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 91 - 63 - 87 - - 3 - 0 - 2 - 3 - 0 - 0 - 0 - 41 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Hrpsicord1 - 4 - - - FIFTH - 1 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 0 - 5 - 0 - - - 4 - 0.5 - 0.5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -1 - 1 - -2 - 1 - - 28 - 28 - 23 - 29 - 24 - 24 - 8 - 17 - 13 - 13 - 12 - 13 - 5 - 0 - 5 - 0 - 6 - 1 - 6 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 91 - 96 - 91 - - 2 - 1 - 2 - 3 - 0 - 0 - 0 - 0 - - - 12 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Hrpsicord2 - 5 - - - THIRD - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 2 - 5 - 2 - - - 4 - 1 - 6 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 28 - 23 - 28 - 29 - 13 - 13 - 13 - 13 - 1 - 3 - 5 - 1 - 5 - 1 - 9 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 87 - 66 - 90 - - 3 - 0 - 1 - 3 - 0 - 0 - 0 - 15 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Hrpsicord3 - 6 - - - THIRD - 6 - - TRIANGL - 28 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 1 - 1 - 0 - - - 4 - 1 - 8 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W1 - W2 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 30 - 19 - 31 - 29 - 13 - 15 - 15 - 12 - 6 - 1 - 1 - 0 - 7 - 1 - 9 - 1 - VOF - V12 - V12 - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 76 - 77 - 84 - - 2 - 0 - 2 - 3 - 0 - 0 - 33 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - LiteHarpsi - 7 - - - FIFTH - 3 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 4 - 0.5 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 1 - 2 - 3 - -2 - - 23 - 15 - 23 - 26 - 8 - 16 - 8 - 19 - 12 - 13 - 12 - 13 - 6 - 0 - 6 - 0 - 5 - 1 - 5 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 86 - 93 - 94 - 91 - - 2 - 3 - 2 - 2 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - RichHarpsi - 8 - - - - Organ - 2 - - EIGHTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 2 - 4 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 0 - 1 - 3 - - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 15 - 15 - 15 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 90 - 90 - 90 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - 16 8 4 2 F - 0 - - - SEVENTH - 7 - - TRIANGL - 35 - 0 - 39 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 2 - 4 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 0 - 0 - 0 - 0 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 10 - 10 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 94 - 63 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 27 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 99 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - <6 Tease> - 1 - - - FIFTH - 0 - - TRIANGL - 28 - 21 - 7 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1.5 - 1.5 - 1.49 - 1.49 - no - no - no - no - 16 - 16 - 9 - 9 - - W1 - W1 - W1 - W1 - -2 - -2 - 3 - 3 - - 30 - 31 - 30 - 31 - 1 - 28 - 1 - 27 - 13 - 13 - 13 - 13 - 0 - 0 - 0 - 0 - 15 - 15 - 15 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 87 - 95 - 87 - - 0 - 0 - 0 - 0 - 10 - 9 - 10 - 9 - - - -19 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnalogOrgn - 2 - - - EIGHTH - 0 - - TRIANGL - 40 - 0 - 10 - 44 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 4 - 3 - - - 0.5 - 2 - 4 - 14 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W3 - W1 - W1 - 1 - 1 - 1 - 1 - - 31 - 31 - 31 - 31 - 6 - 19 - 24 - 15 - 15 - 15 - 15 - 15 - 6 - 6 - 6 - 6 - 13 - 13 - 13 - 13 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 98 - 85 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - B3 Organ.1 - 3 - - - FIFTH - 0 - - TRIANGL - 40 - 0 - 10 - 44 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 4 - 5 - 2 - - - 2 - 4 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W3 - W1 - 1 - 1 - 1 - 1 - - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 22 - 15 - 15 - 15 - 15 - 7 - 31 - 2 - 5 - 13 - 13 - 13 - 13 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 62 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - B3 Organ.2 - 4 - - - SEVENTH - 0 - - TRIANGL - 33 - 0 - 0 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 4 - 3 - 2 - - - 1 - 2 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W4 - W1 - W1 - 1 - 1 - 1 - 1 - - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 16 - 15 - 15 - 15 - 15 - 3 - 4 - 3 - 4 - 13 - 13 - 13 - 13 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 82 - - 0 - 0 - 2 - 0 - 0 - 0 - 10 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - B3 Organ.3 - 5 - - - FIFTH - 7 - - TRIANGL - 29 - 0 - 0 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 2 - 0 - 1 - - - 0.5 - 0.5 - 2 - 10 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W8 - W4 - W1 - 3 - -3 - -3 - 0 - - 12 - 24 - 15 - 22 - 0 - 0 - 0 - 0 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 5 - 5 - 8 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 97 - 99 - 71 - - 2 - 2 - 2 - 0 - 0 - 91 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Big Church - 6 - - - SEVENTH - 7 - - TRIANGL - 12 - 15 - 0 - 0 - off - - - 3 - 2 - on - on - on - on - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 2 - - - 1 - 4 - 2 - 10 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - -3 - 3 - -3 - 3 - - 11 - 16 - 16 - 22 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 5 - 8 - 7 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 96 - 99 - 71 - - 2 - 1 - 1 - 1 - 20 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 0 - 27 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - ChurchOrg* - 7 - - - EIGHTH - 0 - - TRIANGL - 35 - 1 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 7 - 5 - 3 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W2 - 0 - 0 - 0 - 0 - - 14 - 16 - 23 - 18 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 6 - 6 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 32 - 67 - 90 - 89 - - 0 - 0 - 0 - 0 - 25 - 25 - 25 - 25 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - ClosedFlut - 8 - - - EIGHTH - 0 - - SQUARE - 35 - 1 - 6 - 0 - on - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W5 - W7 - W1 - 0 - 0 - 0 - 0 - - 14 - 16 - 23 - 18 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 6 - 6 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 90 - 90 - 88 - - 0 - 0 - 0 - 0 - 25 - 25 - 25 - 25 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Cornopean - 9 - - - FOURTH - 7 - - TRIANGL - 35 - 0 - 1 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 3 - 4 - 2 - 0 - 3 - 7 - - - 1.49 - 2.25 - 1.5 - 1.51 - no - no - no - no - 9 - 12 - 16 - 14 - - W2 - W1 - W8 - W3 - -3 - -3 - 3 - -1 - - 18 - 16 - 21 - 31 - 27 - 27 - 10 - 10 - 14 - 6 - 15 - 15 - 0 - 0 - 0 - 0 - 11 - 8 - 8 - 8 - VOF - V48 - V48 - V24 - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 81 - 82 - 66 - - 0 - 2 - 3 - 3 - 0 - 15 - 27 - 0 - - - -7 - POLY - 2 - FINGER - 0 - POR - 99 - 0 - 0 - 50 - 0 - 5 - 0 - 50 - 60 - 0 - 0 - 0 - 0 - 0 - - DistortOrg - 10 - - - EIGHTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 1 - 2 - on - on - on - on - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0.5 - 3 - 4 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 23 - 23 - 23 - 23 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 9 - 9 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 99 - 81 - 90 - - 0 - 0 - 0 - 0 - 20 - 30 - 40 - 50 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 48 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Drawbar1 * - 11 - - - EIGHTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 1 - 2 - on - on - on - on - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 2 - 5 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 23 - 23 - 23 - 23 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 9 - 9 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 83 - 81 - 75 - - 0 - 0 - 0 - 0 - 10 - 25 - 44 - 47 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 48 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Drawbar2 * - 12 - - - FIFTH - 6 - - TRIANGL - 20 - 0 - 1 - 2 - off - - - 4 - 3 - off - on - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 5 - - - 1 - 0.5 - 0.5 - 14.1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W8 - -3 - 3 - 3 - -3 - - 31 - 31 - 31 - 31 - 18 - 15 - 18 - 14 - 15 - 15 - 13 - 9 - 6 - 5 - 6 - 15 - 8 - 7 - 8 - 14 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 90 - 99 - 73 - - 0 - 0 - 0 - 1 - 0 - 24 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Dyno * - 13 - - - FIFTH - 7 - - TRIANGL - 24 - 3 - 16 - 12 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 3 - 2 - 3 - - - 1 - 4 - 24.11 - 12.11 - no - no - yes - yes - 8 - 8 - 31 - 48 - - W1 - W1 - W1 - W8 - 0 - -3 - 3 - 3 - - 31 - 22 - 31 - 31 - 4 - 7 - 19 - 28 - 14 - 11 - 8 - 10 - 3 - 3 - 8 - 4 - 7 - 7 - 6 - 7 - VOF - VOF - VOF - V48 - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 82 - 92 - 78 - - 2 - 2 - 1 - 3 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 4 - - DynoWurlie - 14 - - - SEVENTH - 6 - - TRIANGL - 35 - 14 - 22 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 5 - 5 - 5 - - - 0.5 - 2 - 3 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W1 - W1 - W3 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 21 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 3 - 3 - 3 - 3 - 15 - 15 - 15 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 91 - 90 - 89 - 73 - - 0 - 0 - 0 - 0 - 25 - 20 - 80 - 38 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Organ..1 - 15 - - - SIXTH - 6 - - TRIANGL - 28 - 0 - 25 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 5 - - - 4 - 4 - 4 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W3 - W1 - W1 - -1 - 1 - -2 - -1 - - 31 - 31 - 31 - 21 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 3 - 3 - 3 - 3 - 15 - 15 - 15 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 90 - 89 - 42 - - 0 - 0 - 0 - 0 - 25 - 20 - 80 - 38 - - - -24 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Organ..2 - 16 - - - SEVENTH - 0 - - TRIANGL - 35 - 0 - 14 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 6 - - - 1 - 4 - 1 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W4 - W1 - -1 - 1 - -2 - -1 - - 31 - 31 - 31 - 24 - 31 - 31 - 31 - 22 - 15 - 15 - 15 - 15 - 2 - 3 - 31 - 3 - 12 - 12 - 12 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 92 - 99 - 76 - - 0 - 0 - 0 - 0 - 25 - 20 - 0 - 0 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Organ..3 - 17 - - - SEVENTH - 0 - - TRIANGL - 14 - 0 - 71 - 78 - on - - - 1 - 1 - off - off - off - on - 0 - 0 - 0 - 0 - 5 - 3 - 6 - 4 - - - 0.5 - 3 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W3 - W1 - W1 - 3 - -3 - 3 - 0 - - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 22 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 12 - 12 - 12 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 92 - 80 - 85 - - 0 - 0 - 0 - 0 - 25 - 20 - 0 - 0 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Organ..4 - 18 - - - EIGHTH - 0 - - TRIANGL - 14 - 0 - 71 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 6 - 5 - - - 0.5 - 2 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W4 - W1 - W1 - 3 - -3 - 0 - 3 - - 23 - 27 - 31 - 30 - 31 - 31 - 31 - 22 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 12 - 12 - 12 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 86 - 87 - 90 - - 0 - 0 - 0 - 1 - 25 - 20 - 0 - 0 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Organ..5 - 19 - - - SIXTH - 0 - - TRIANGL - 0 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 4 - - - 0.5 - 2 - 4 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 28 - 31 - 27 - 31 - 31 - 31 - 18 - 31 - 15 - 15 - 15 - 15 - 0 - 7 - 31 - 0 - 12 - 12 - 12 - 12 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 92 - 80 - 65 - - 0 - 0 - 0 - 1 - 25 - 20 - 0 - 0 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Organ..6 - 20 - - - EIGHTH - 0 - - TRIANGL - 33 - 0 - 13 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 6 - 3 - - - 1 - 1 - 2 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W3 - W1 - W1 - 3 - 2 - 3 - -3 - - 28 - 31 - 27 - 31 - 31 - 24 - 18 - 31 - 15 - 15 - 15 - 15 - 6 - 21 - 6 - 3 - 12 - 10 - 12 - 13 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 81 - - 0 - 0 - 0 - 1 - 25 - 20 - 0 - 0 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Organ..7 - 21 - - - EIGHTH - 0 - - TRIANGL - 39 - 0 - 13 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 4 - 5 - - - 0.5 - 1 - 1 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W1 - W3 - W1 - 0 - 0 - 0 - 0 - - 28 - 31 - 27 - 31 - 31 - 24 - 18 - 31 - 15 - 15 - 15 - 15 - 6 - 21 - 6 - 3 - 12 - 10 - 12 - 13 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 0 - 0 - 0 - 1 - 25 - 20 - 0 - 99 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Organ..8 - 22 - - - FIRST - 0 - - TRIANGL - 35 - 0 - 6 - 0 - on - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 3 - - - 1 - 1 - 3 - 7 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 12 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 9 - 10 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 71 - 20 - 65 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Organ..9 - 23 - - - SIXTH - 5 - - TRIANGL - 46 - 0 - 34 - 0 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 3 - - - 1 - 2 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W3 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 1 - 4 - 3 - 4 - 13 - 12 - 13 - 13 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 70 - - 0 - 0 - 0 - 0 - 0 - 0 - 99 - 99 - - - -12 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Organ.10 - 24 - - - FOURTH - 0 - - TRIANGL - 35 - 0 - 6 - 0 - on - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 5 - 3 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W3 - 1 - -1 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 12 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 9 - 10 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 65 - 53 - 77 - - 0 - 0 - 0 - 0 - 1 - 16 - 0 - 99 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Organ.11 - 25 - - - FIFTH - 0 - - TRIANGL - 29 - 0 - 13 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 4 - - - 1 - 0.5 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W5 - W1 - 1 - 0 - 0 - 0 - - 25 - 4 - 27 - 31 - 21 - 21 - 18 - 31 - 15 - 15 - 15 - 15 - 10 - 3 - 6 - 3 - 9 - 7 - 12 - 13 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 99 - 99 - 68 - - 0 - 0 - 0 - 1 - 25 - 20 - 0 - 99 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Organ.12 - 26 - - - THIRD - 0 - - TRIANGL - 35 - 0 - 6 - 0 - on - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 4 - - - 1 - 0.5 - 3 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 0 - 0 - 0 - 0 - - 26 - 31 - 26 - 31 - 31 - 31 - 31 - 12 - 15 - 15 - 15 - 15 - 2 - 0 - 2 - 0 - 9 - 10 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 71 - 42 - 45 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Organ.13 - 27 - - - EIGHTH - 3 - - TRIANGL - 32 - 0 - 3 - 0 - off - - - 5 - 2 - on - on - on - on - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0.5 - 1 - 1.49 - 3 - no - no - no - no - 8 - 8 - 9 - 8 - - W1 - W1 - W1 - W1 - -3 - 3 - -3 - 3 - - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 11 - 15 - 15 - 15 - 8 - 0 - 0 - 0 - 1 - 14 - 14 - 14 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 95 - 99 - 95 - - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 24 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E.Organ 1 - 28 - - - SEVENTH - 4 - - TRIANGL - 35 - 0 - 1 - 42 - off - - - 4 - 0 - off - off - off - on - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 3 - 2 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 3 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 31 - 9 - 10 - 15 - 15 - 15 - 10 - 0 - 0 - 0 - 0 - 12 - 12 - 12 - 11 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 95 - 93 - 67 - - 0 - 0 - 0 - 0 - 0 - 26 - 8 - 32 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E.Organ 2 - 29 - - - EIGHTH - 5 - - TRIANGL - 33 - 0 - 0 - 21 - off - - - 4 - 2 - on - on - on - on - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 1 - 2 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W1 - W2 - W1 - 3 - -3 - 2 - -2 - - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 20 - 10 - 10 - 10 - 10 - 0 - 0 - 0 - 0 - 15 - 15 - 15 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 92 - 99 - 94 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E.Organ 3 - 30 - - - EIGHTH - 7 - - TRIANGL - 35 - 0 - 25 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 2 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W5 - W2 - W1 - 3 - 3 - -3 - -3 - - 23 - 21 - 24 - 20 - 1 - 0 - 1 - 0 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 6 - 6 - 7 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 86 - 92 - 85 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 27 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 99 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E.Organ 4 - 31 - - - EIGHTH - 7 - - TRIANGL - 35 - 0 - 18 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 2 - 4 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W6 - W6 - W5 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 0 - 0 - 0 - 0 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 11 - 11 - 11 - 11 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 90 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 27 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 99 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Farcheeza - 32 - - - EIGHTH - 5 - - TRIANGL - 37 - 0 - 3 - 11 - off - - - 3 - 2 - on - on - on - on - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0.75 - 1.5 - 2.25 - 4.49 - no - no - no - no - 12 - 16 - 12 - 11 - - W1 - W1 - W1 - W1 - 0 - 3 - -3 - 0 - - 28 - 28 - 28 - 31 - 6 - 25 - 16 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 0 - 12 - 11 - 12 - 12 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 97 - - 0 - 0 - 0 - 0 - 20 - 20 - 21 - 28 - - - -7 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 11 - 64 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Hammond * - 33 - - - SECOND - 0 - - TRIANGL - 35 - 14 - 16 - 16 - on - - - 4 - 1 - on - off - on - off - 7 - 4 - 3 - 4 - 4 - 6 - 5 - 2 - - - 1 - 4 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W1 - 0 - 0 - 0 - 0 - - 22 - 31 - 4 - 2 - 31 - 8 - 31 - 4 - 15 - 12 - 15 - 5 - 0 - 0 - 0 - 16 - 13 - 13 - 13 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 61 - 70 - 82 - - 0 - 0 - 3 - 2 - 0 - 18 - 13 - 0 - - - 0 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Hammond..1 - 34 - - - FOURTH - 0 - - SQUARE - 37 - 0 - 7 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 6 - 3 - - - 2 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W1 - W3 - 0 - -1 - -1 - 0 - - 27 - 31 - 31 - 27 - 30 - 26 - 31 - 31 - 15 - 12 - 15 - 11 - 0 - 0 - 0 - 0 - 9 - 13 - 13 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 91 - 70 - 70 - 74 - - 0 - 3 - 2 - 0 - 99 - 82 - 25 - 25 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 1 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Hammond..2 - 35 - - - SIXTH - 1 - - TRIANGL - 14 - 0 - 20 - 24 - off - - - 3 - 2 - on - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 3 - - - 1 - 2 - 3 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 1 - -2 - 2 - 0 - - 31 - 31 - 25 - 31 - 31 - 31 - 31 - 14 - 14 - 14 - 15 - 6 - 0 - 4 - 0 - 5 - 7 - 7 - 7 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 91 - 78 - 71 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Hammond..3 - 36 - - - EIGHTH - 7 - - TRIANGL - 35 - 0 - 35 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 3 - - - 1 - 1 - 8 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W5 - W1 - 0 - 0 - 0 - 0 - - 28 - 31 - 31 - 31 - 6 - 5 - 8 - 5 - 7 - 11 - 12 - 13 - 4 - 0 - 0 - 1 - 4 - 5 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 71 - 92 - 83 - - 2 - 2 - 3 - 2 - 0 - 45 - 67 - 45 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Hammond..4 - 37 - - - FIFTH - 1 - - TRIANGL - 29 - 0 - 71 - 85 - off - - - 3 - 1 - off - on - off - on - 0 - 0 - 0 - 0 - 4 - 5 - 5 - 5 - - - 2 - 1 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 30 - 29 - 26 - 10 - 18 - 12 - 23 - 0 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 16 - 15 - 15 - 15 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 64 - 86 - 50 - - 1 - 0 - 1 - 0 - 16 - 1 - 81 - 0 - - - -12 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Hammond..5 - 38 - - - FOURTH - 1 - - TRIANGL - 31 - 0 - 15 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 3 - - - 1 - 1 - 3 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W4 - 0 - -1 - -1 - 0 - - 27 - 31 - 31 - 27 - 30 - 26 - 31 - 31 - 15 - 12 - 15 - 11 - 0 - 0 - 0 - 0 - 9 - 13 - 13 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 80 - 67 - 84 - - 0 - 1 - 3 - 2 - 99 - 82 - 25 - 25 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 1 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Hammond..6 - 39 - - - FIFTH - 0 - - TRIANGL - 33 - 0 - 21 - 35 - off - - - 2 - 1 - off - on - off - on - 0 - 0 - 0 - 0 - 5 - 5 - 4 - 5 - - - 1 - 2 - 4 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 30 - 29 - 26 - 23 - 18 - 12 - 23 - 13 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 16 - 15 - 15 - 15 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 64 - 85 - 70 - - 1 - 0 - 1 - 0 - 16 - 1 - 81 - 0 - - - -12 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Hammond..7 - 40 - - - SEVENTH - 0 - - TRIANGL - 36 - 15 - 53 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 5 - 6 - 4 - - - 0.5 - 0.5 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - 0 - -3 - 3 - -3 - - 18 - 18 - 18 - 31 - 21 - 21 - 21 - 22 - 15 - 15 - 15 - 15 - 4 - 4 - 4 - 4 - 10 - 10 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 88 - - 1 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - HamondLead - 41 - - - EIGHTH - 5 - - TRIANGL - 48 - 0 - 52 - 99 - off - - - 1 - 1 - off - on - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 3 - 3 - - - 1 - 2 - 2 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W5 - W1 - W1 - -1 - -2 - 2 - 2 - - 28 - 27 - 28 - 28 - 24 - 24 - 24 - 9 - 15 - 15 - 15 - 15 - 7 - 16 - 7 - 7 - 15 - 15 - 15 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 0 - 0 - 0 - 0 - 0 - 0 - 10 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Hmnd LS f1 - 42 - - - EIGHTH - 0 - - TRIANGL - 27 - 0 - 15 - 99 - off - - - 3 - 1 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 4 - 3 - - - 0.5 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W4 - W1 - W1 - -1 - -2 - 2 - 2 - - 28 - 27 - 28 - 28 - 24 - 7 - 24 - 24 - 15 - 15 - 15 - 15 - 7 - 7 - 7 - 7 - 13 - 13 - 13 - 13 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 96 - 95 - 99 - - 0 - 0 - 0 - 0 - 0 - 0 - 10 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Hmnd LS f2 - 43 - - - EIGHTH - 4 - - TRIANGL - 48 - 0 - 14 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 5 - - - 1 - 2 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W4 - W3 - -1 - -2 - 2 - 2 - - 28 - 27 - 28 - 28 - 24 - 7 - 24 - 7 - 15 - 15 - 15 - 15 - 7 - 7 - 7 - 1 - 13 - 13 - 13 - 13 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 95 - 95 - 92 - - 0 - 0 - 0 - 0 - 0 - 0 - 10 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Hmnd LS s1 - 44 - - - SIXTH - 0 - - TRIANGL - 0 - 1 - 4 - 0 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W8 - W7 - W1 - 0 - 0 - 0 - 0 - - 14 - 16 - 23 - 18 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 6 - 6 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 90 - 90 - 88 - - 0 - 0 - 0 - 0 - 25 - 25 - 25 - 25 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Hornopean - 45 - - - EIGHTH - 3 - - TRIANGL - 35 - 0 - 2 - 0 - off - - - 4 - 3 - on - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 1 - 6 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - -3 - 3 - 3 - - 31 - 31 - 31 - 31 - 31 - 31 - 18 - 10 - 15 - 15 - 15 - 15 - 0 - 0 - 14 - 0 - 10 - 10 - 10 - 11 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 79 - 91 - 88 - 82 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Jazz Organ - 46 - - - EIGHTH - 3 - - TRIANGL - 34 - 0 - 5 - 23 - off - - - 6 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1.5 - 3 - 9 - 18.05 - no - no - no - no - 16 - 8 - 8 - 15 - - W1 - W2 - W1 - W1 - 3 - -3 - 3 - 0 - - 27 - 27 - 27 - 27 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 7 - 11 - 11 - 11 - 12 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 99 - 86 - 89 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 66 - - - -19 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 0 - 55 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Leslie * - 47 - - - EIGHTH - 3 - - TRIANGL - 39 - 0 - 20 - 28 - off - - - 3 - 1 - on - on - on - on - 7 - 7 - 7 - 7 - 6 - 7 - 7 - 5 - - - 1 - 2 - 3 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - -3 - 3 - 3 - - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 10 - 15 - 15 - 15 - 0 - 1 - 1 - 1 - 1 - 10 - 10 - 10 - 11 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 95 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Organ 1 - 48 - - - FIFTH - 0 - - TRIANGL - 0 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 1 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W5 - W2 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 9 - 9 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 70 - 90 - 64 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Organ 2 - 49 - - - FIFTH - 0 - - TRIANGL - 0 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 1 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W5 - W2 - W2 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 9 - 9 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 70 - 90 - 80 - - 0 - 0 - 0 - 0 - 0 - 54 - 0 - 78 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Organ 3 - 50 - - - SEVENTH - 5 - - SAWUP - 99 - 33 - 0 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 2 - 5 - 3 - - - 1 - 1 - 1 - 23.55 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 3 - 0 - - 29 - 29 - 29 - 24 - 7 - 7 - 7 - 24 - 11 - 11 - 11 - 0 - 7 - 7 - 7 - 6 - 8 - 8 - 8 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 99 - 99 - 79 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Ornt Organ - 51 - - - EIGHTH - 5 - - TRIANGL - 33 - 25 - 29 - 0 - off - - - 5 - 0 - off - off - off - off - 1 - 1 - 1 - 1 - 5 - 5 - 5 - 5 - - - 1 - 2 - 3 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W3 - W1 - 0 - 0 - 0 - 0 - - 26 - 26 - 26 - 26 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 6 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - P Organ..1 - 52 - - - FIFTH - 6 - - TRIANGL - 33 - 25 - 29 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 5 - 4 - - - 0.5 - 1 - 1 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W3 - W3 - W1 - 0 - 0 - 0 - 0 - - 26 - 26 - 26 - 26 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 6 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 80 - 99 - 69 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - P Organ..2 - 53 - - - FIFTH - 6 - - TRIANGL - 33 - 25 - 29 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 3 - - - 2 - 1 - 2 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W3 - W4 - 0 - 0 - 0 - 0 - - 26 - 26 - 16 - 20 - 31 - 31 - 7 - 31 - 15 - 15 - 15 - 14 - 0 - 0 - 7 - 19 - 6 - 6 - 9 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 68 - 99 - 67 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - P Organ..3 - 54 - - - FIFTH - 0 - - TRIANGL - 35 - 65 - 0 - 0 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 6 - 5 - - - 1 - 1 - 4 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W2 - W7 - 0 - 0 - 0 - 0 - - 21 - 22 - 13 - 21 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 7 - 7 - 6 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 79 - 99 - 80 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - P Organ..4 - 55 - - - FIFTH - 0 - - TRIANGL - 35 - 65 - 0 - 0 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 2 - - - 2 - 1 - 2 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W2 - W1 - W5 - 1 - -1 - 0 - 0 - - 24 - 29 - 19 - 31 - 7 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 6 - 5 - 7 - 5 - 10 - 8 - 7 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 90 - 99 - 76 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - P Organ..5 - 56 - - - SEVENTH - 5 - - TRIANGL - 35 - 65 - 0 - 0 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 5 - - - 1 - 2 - 2 - 10 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W1 - W1 - W2 - 1 - -1 - 0 - 0 - - 22 - 18 - 18 - 22 - 3 - 3 - 7 - 6 - 15 - 15 - 15 - 15 - 4 - 3 - 4 - 3 - 10 - 8 - 7 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 76 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - P Organ..6 - 57 - - - FIFTH - 0 - - TRIANGL - 35 - 65 - 0 - 0 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 6 - 5 - - - 0.5 - 0.5 - 2 - 10 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W1 - 1 - -1 - 0 - 0 - - 13 - 31 - 18 - 22 - 5 - 5 - 5 - 7 - 15 - 15 - 15 - 15 - 4 - 3 - 4 - 3 - 10 - 9 - 8 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 84 - 99 - 74 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - P Organ..7 - 58 - - - FIFTH - 4 - - TRIANGL - 33 - 25 - 22 - 35 - off - - - 4 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 5 - 6 - - - 0.5 - 0.5 - 2 - 14 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W2 - W2 - 1 - 1 - 0 - 0 - - 16 - 26 - 19 - 26 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 6 - 6 - 10 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 91 - 99 - 76 - - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - P Organ..8 - 59 - - - FIFTH - 5 - - TRIANGL - 35 - 65 - 0 - 0 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 5 - 6 - - - 1 - 2 - 4 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W3 - W1 - W1 - 1 - -1 - 0 - 0 - - 16 - 18 - 18 - 22 - 3 - 3 - 7 - 6 - 15 - 15 - 15 - 15 - 4 - 3 - 4 - 3 - 10 - 8 - 9 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 87 - 99 - 68 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - P Organ..9 - 60 - - - SEVENTH - 0 - - TRIANGL - 35 - 0 - 0 - 56 - off - - - 1 - 1 - off - off - off - on - 0 - 0 - 0 - 0 - 5 - 5 - 6 - 6 - - - 1 - 2 - 2 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W7 - W1 - -2 - 3 - 3 - 3 - - 21 - 16 - 24 - 25 - 0 - 0 - 0 - 0 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 10 - 10 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 78 - - 0 - 0 - 0 - 0 - 0 - 99 - 0 - 62 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - P Organ.10 - 61 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 3 - - - 0.5 - 0.5 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W8 - W1 - W1 - 3 - -3 - -3 - -1 - - 14 - 24 - 15 - 22 - 0 - 0 - 0 - 0 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 5 - 5 - 8 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 71 - - 2 - 0 - 2 - 0 - 0 - 91 - 0 - 0 - - - -12 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - P Organ.11 - 62 - - - FIFTH - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 3 - 3 - - - 0.5 - 1 - 2 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 1 - -1 - -1 - 2 - - 13 - 27 - 18 - 22 - 7 - 7 - 7 - 7 - 15 - 15 - 15 - 15 - 7 - 1 - 1 - 1 - 5 - 7 - 9 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 79 - 97 - 86 - - 2 - 0 - 2 - 0 - 0 - 91 - 0 - 0 - - - -12 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - P Organ.12 - 63 - - - FIFTH - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 3 - - - 0.5 - 1 - 2 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - 1 - -1 - -1 - 2 - - 13 - 31 - 18 - 21 - 7 - 7 - 7 - 7 - 15 - 3 - 15 - 15 - 0 - 0 - 1 - 0 - 5 - 7 - 9 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 82 - 95 - 79 - - 0 - 0 - 0 - 0 - 0 - 91 - 46 - 67 - - - -12 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - P Organ.13 - 64 - - - FIFTH - 5 - - TRIANGL - 35 - 0 - 22 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 4 - 4 - - - 0.5 - 0.5 - 1 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W6 - W1 - W1 - 1 - -1 - -1 - 2 - - 17 - 21 - 18 - 21 - 3 - 4 - 7 - 7 - 15 - 15 - 15 - 15 - 0 - 0 - 1 - 0 - 6 - 8 - 8 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 87 - 98 - 89 - - 0 - 0 - 0 - 0 - 0 - 21 - 46 - 67 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - P Organ.14 - 65 - - - FIFTH - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 3 - - - 0.5 - 1 - 2 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W4 - W3 - W4 - 0 - -1 - -1 - 1 - - 15 - 18 - 15 - 19 - 4 - 4 - 4 - 4 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 6 - 8 - 8 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 92 - 99 - 88 - - 0 - 1 - 0 - 1 - 0 - 91 - 46 - 67 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - P Organ.15 - 66 - - - SEVENTH - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 6 - 4 - - - 0.5 - 1 - 4 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -1 - -1 - 1 - - 15 - 18 - 15 - 19 - 4 - 4 - 4 - 4 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 6 - 8 - 8 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 77 - 99 - 71 - - 0 - 1 - 0 - 1 - 0 - 91 - 46 - 67 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - P Organ.16 - 67 - - - SECOND - 5 - - TRIANGL - 33 - 25 - 29 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 7 - 6 - - - 1 - 2 - 3 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W5 - W1 - 0 - 0 - 0 - 0 - - 26 - 26 - 26 - 26 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 6 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 69 - 80 - 81 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - P Organ.17 - 68 - - - SEVENTH - 2 - - TRIANGL - 70 - 0 - 0 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 3 - 5 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W3 - W1 - W3 - -3 - 3 - 0 - 0 - - 19 - 10 - 20 - 30 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 10 - 10 - 10 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 76 - 76 - 90 - 76 - - 1 - 1 - 1 - 1 - 25 - 25 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - P.Organ 1 - 69 - - - EIGHTH - 6 - - TRIANGL - 35 - 1 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0.5 - 2 - 3 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W5 - W4 - W3 - W3 - -3 - 2 - 3 - 0 - - 14 - 16 - 23 - 18 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 8 - 8 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 96 - 95 - 94 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - P.Organ 2 - 70 - - - SEVENTH - 2 - - TRIANGL - 70 - 0 - 0 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 3 - 5 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W3 - W1 - W3 - -3 - 3 - 0 - 0 - - 19 - 10 - 20 - 30 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 5 - 6 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 76 - 76 - 90 - 76 - - 1 - 1 - 1 - 1 - 25 - 25 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - P.Organ 1* - 71 - - - EIGHTH - 6 - - TRIANGL - 35 - 1 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0.5 - 2 - 4 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W5 - W4 - W3 - W3 - -3 - 2 - 3 - 0 - - 14 - 16 - 23 - 18 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 6 - 6 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 96 - 95 - 94 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - P.Organ 2* - 72 - - - EIGHTH - 6 - - TRIANGL - 35 - 1 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0.5 - 2 - 3 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W6 - W5 - W1 - W4 - -3 - 2 - 3 - 0 - - 14 - 16 - 23 - 18 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 5 - 5 - 7 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 96 - 95 - 94 - - 2 - 2 - 1 - 0 - 0 - 9 - 64 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - P.Organ 3 - 73 - - - EIGHTH - 5 - - TRIANGL - 35 - 1 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0.5 - 1 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W5 - W2 - W3 - W2 - -3 - 0 - 3 - 0 - - 14 - 16 - 23 - 18 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 6 - 6 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 85 - 99 - 85 - 84 - - 0 - 0 - 0 - 0 - 0 - 99 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - P.Organ 4 - 74 - - - EIGHTH - 6 - - TRIANGL - 35 - 1 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0.5 - 1 - 2 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W5 - W5 - W5 - W1 - -3 - 2 - 3 - 0 - - 14 - 16 - 23 - 18 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 6 - 6 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 96 - 95 - 94 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - P.Organ 5 - 75 - - - EIGHTH - 3 - - TRIANGL - 32 - 0 - 3 - 0 - off - - - 5 - 2 - on - on - on - on - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0.5 - 1 - 1.49 - 3 - no - no - no - no - 8 - 8 - 9 - 8 - - W1 - W1 - W1 - W1 - -3 - -3 - 3 - 3 - - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 11 - 15 - 15 - 15 - 8 - 0 - 0 - 0 - 1 - 10 - 10 - 10 - 11 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 95 - 99 - 95 - - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 24 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - PercOrgan - 76 - - - EIGHTH - 0 - - TRIANGL - 30 - 0 - 0 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0.5 - 4 - 1 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W6 - W8 - W5 - W8 - 0 - 0 - 0 - 0 - - 23 - 17 - 23 - 22 - 0 - 0 - 0 - 0 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 10 - 10 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - Pipe Organ - 77 - - - FIRST - 7 - - TRIANGL - 20 - 0 - 0 - 14 - off - - - 3 - 3 - on - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1.5 - 1.49 - 1.5 - 7.49 - no - no - no - no - 16 - 9 - 16 - 13 - - W2 - W4 - W2 - W3 - 0 - 1 - 3 - 0 - - 13 - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 9 - 5 - 5 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 80 - 35 - 77 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 30 - - - -7 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 10 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - PumpOrgan - 78 - - - FIFTH - 0 - - TRIANGL - 25 - 6 - 4 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 3 - 1 - 3 - - - 1.5 - 1.5 - 1.49 - 1.49 - no - no - no - no - 16 - 16 - 9 - 9 - - W1 - W1 - W1 - W1 - -1 - 0 - 3 - 2 - - 12 - 14 - 11 - 13 - 31 - 3 - 31 - 3 - 15 - 14 - 15 - 14 - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 78 - 99 - 78 - - 0 - 0 - 0 - 0 - 0 - 35 - 0 - 35 - - - -19 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 15 - 0 - 12 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - RevrbOrgan - 79 - - - EIGHTH - 0 - - TRIANGL - 30 - 0 - 0 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0.5 - 4 - 1 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -2 - 3 - 3 - 3 - - 23 - 17 - 23 - 22 - 0 - 0 - 0 - 0 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 10 - 10 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 87 - 88 - 75 - - 0 - 0 - 0 - 0 - 0 - 99 - 0 - 62 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Small Pipe - 80 - - - SEVENTH - 0 - - TRIANGL - 30 - 10 - 17 - 26 - off - - - 5 - 3 - off - on - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 3 - 2 - - - 1 - 2 - 3 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W5 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 20 - 20 - 18 - 15 - 14 - 6 - 10 - 0 - 0 - 0 - 0 - 8 - 9 - 9 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 99 - 80 - - 1 - 2 - 0 - 1 - 0 - 0 - 0 - 20 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 35 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Organ 1 - 81 - - - SEVENTH - 0 - - TRIANGL - 30 - 13 - 17 - 26 - off - - - 5 - 3 - off - on - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 3 - 2 - - - 1 - 2 - 4 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W5 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 20 - 20 - 18 - 15 - 14 - 6 - 13 - 0 - 0 - 0 - 0 - 8 - 9 - 9 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 99 - 80 - - 1 - 2 - 0 - 1 - 0 - 0 - 0 - 20 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 35 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Organ 1* - 82 - - - THIRD - 7 - - TRIANGL - 35 - 0 - 39 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 2 - 3 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W3 - W5 - W1 - 1 - -1 - 1 - 0 - - 31 - 30 - 31 - 27 - 6 - 28 - 0 - 0 - 15 - 1 - 11 - 15 - 0 - 0 - 0 - 0 - 9 - 4 - 10 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 83 - 68 - 73 - 36 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 27 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 99 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Organ 2 - 83 - - - EIGHTH - 6 - - TRIANGL - 35 - 1 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0.5 - 2 - 4 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W5 - W4 - W3 - W3 - -3 - 2 - 3 - 0 - - 14 - 16 - 23 - 18 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 6 - 6 - 7 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 96 - 95 - 94 - - 0 - 0 - 0 - 0 - 60 - 50 - 50 - 60 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Tocc Organ - 84 - - - FOURTH - 0 - - TRIANGL - 29 - 21 - 5 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 7 - 7 - 7 - - - 1.5 - 5.99 - 1.49 - 6.05 - no - no - no - no - 16 - 12 - 9 - 16 - - W1 - W1 - W2 - W1 - -2 - 1 - 3 - -3 - - 28 - 28 - 25 - 30 - 31 - 8 - 8 - 7 - 14 - 13 - 13 - 13 - 0 - 0 - 0 - 0 - 10 - 15 - 15 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 73 - 93 - 43 - - 1 - 0 - 0 - 0 - 0 - 65 - 65 - 50 - - - -19 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 35 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - VelocOrgan - 85 - - - FIFTH - 6 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 6 - 0 - 6 - - - 1 - 0.5 - 0.5 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 0 - 3 - -3 - - 29 - 29 - 29 - 27 - 6 - 7 - 6 - 7 - 14 - 14 - 14 - 14 - 6 - 6 - 6 - 6 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 84 - 99 - 74 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 18 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Wirlitzer* - 86 - - - - Piano - 3 - - FIFTH - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 4 - 6 - 6 - - - 1 - 1 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W1 - 0 - 0 - 0 - 0 - - 22 - 22 - 27 - 27 - 9 - 9 - 6 - 3 - 13 - 13 - 4 - 4 - 6 - 6 - 1 - 2 - 6 - 6 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 77 - 99 - 88 - - 1 - 1 - 1 - 2 - 0 - 0 - 99 - 99 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AC Piano.1 - 0 - - - THIRD - 4 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 4 - - - 1 - 1 - 5 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 0 - 0 - 0 - 0 - - 21 - 20 - 20 - 18 - 7 - 5 - 2 - 5 - 12 - 13 - 13 - 4 - 6 - 4 - 2 - 2 - 6 - 6 - 6 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 80 - 61 - 59 - - 1 - 3 - 1 - 2 - 0 - 0 - 0 - 99 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AC Piano.2 - 1 - - - THIRD - 3 - - TRIANGL - 35 - 10 - 0 - 6 - off - - - 5 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 6 - 6 - 5 - 5 - - - 1 - 1 - 5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -1 - 2 - -2 - 2 - - 24 - 20 - 18 - 21 - 6 - 6 - 6 - 1 - 9 - 9 - 0 - 0 - 5 - 5 - 11 - 1 - 5 - 4 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 83 - 68 - 73 - - 1 - 1 - 1 - 1 - 1 - 66 - 66 - 27 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AC Piano.3 - 2 - - - FIFTH - 5 - - TRIANGL - 25 - 0 - 0 - 0 - off - - - 6 - 1 - on - off - on - on - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 4 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W1 - W1 - -3 - 3 - -2 - 2 - - 25 - 25 - 24 - 21 - 9 - 9 - 6 - 1 - 15 - 15 - 9 - 0 - 9 - 9 - 5 - 1 - 5 - 5 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 83 - 98 - 76 - - 0 - 0 - 1 - 1 - 1 - 1 - 22 - 50 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AC Piano.4 - 3 - - - FOURTH - 0 - - TRIANGL - 0 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 4 - - - 1 - 0.5 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 3 - -3 - -3 - - 26 - 25 - 24 - 25 - 5 - 31 - 9 - 7 - 10 - 15 - 0 - 0 - 6 - 0 - 0 - 0 - 5 - 6 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 75 - 67 - 73 - - 1 - 0 - 0 - 1 - 1 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AC Piano.5 - 4 - - - THIRD - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 5 - - - 1 - 3 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 28 - 31 - 31 - 31 - 30 - 5 - 4 - 8 - 15 - 15 - 14 - 13 - 6 - 1 - 2 - 3 - 6 - 5 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 76 - 71 - 73 - - 2 - 0 - 1 - 0 - 0 - 99 - 99 - 45 - - - -12 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AC Piano.6 - 5 - - - THIRD - 7 - - TRIANGL - 33 - 60 - 10 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 6 - 4 - - - 1 - 1 - 3 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 2 - -1 - 1 - - 24 - 20 - 20 - 22 - 8 - 6 - 7 - 8 - 9 - 9 - 0 - 0 - 6 - 7 - 0 - 0 - 5 - 4 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 72 - 54 - 58 - - 1 - 2 - 0 - 1 - 15 - 35 - 0 - 0 - - - 0 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AC Piano.7 - 6 - - - FIFTH - 4 - - TRIANGL - 25 - 0 - 0 - 0 - off - - - 6 - 1 - on - off - on - on - 6 - 3 - 0 - 0 - 5 - 5 - 5 - 3 - - - 1 - 1 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 3 - 0 - -2 - - 24 - 22 - 24 - 22 - 7 - 9 - 7 - 9 - 13 - 14 - 13 - 14 - 5 - 1 - 5 - 1 - 5 - 3 - 5 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 93 - 99 - 79 - - 1 - 2 - 1 - 2 - 0 - 50 - 0 - 50 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AC Piano.8 - 7 - - - FOURTH - 4 - - TRIANGL - 25 - 0 - 0 - 0 - off - - - 6 - 1 - on - off - on - on - 0 - 0 - 0 - 0 - 5 - 5 - 3 - 5 - - - 1 - 3 - 1 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W1 - W3 - 0 - 1 - -1 - 0 - - 28 - 28 - 28 - 28 - 9 - 9 - 9 - 9 - 13 - 13 - 13 - 13 - 7 - 7 - 7 - 7 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 74 - 75 - 58 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AC Piano.9 - 8 - - - THIRD - 6 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 4 - - - 1 - 0.5 - 7 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - -3 - 2 - - 20 - 22 - 24 - 24 - 8 - 1 - 5 - 1 - 12 - 12 - 0 - 0 - 1 - 1 - 1 - 1 - 6 - 4 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 82 - 69 - 75 - - 2 - 1 - 2 - 1 - 0 - 66 - 99 - 52 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AC Piano10 - 9 - - - THIRD - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 4 - - - 1 - 3 - 5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W2 - W1 - 0 - -2 - 1 - 2 - - 28 - 31 - 31 - 31 - 30 - 4 - 5 - 8 - 15 - 14 - 13 - 13 - 4 - 2 - 4 - 3 - 6 - 5 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 74 - 80 - 73 - - 2 - 0 - 0 - 1 - 0 - 99 - 99 - 0 - - - -12 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AC Piano11 - 10 - - - FOURTH - 3 - - TRIANGL - 25 - 0 - 0 - 0 - off - - - 6 - 1 - on - off - on - on - 0 - 0 - 0 - 0 - 6 - 4 - 5 - 5 - - - 1 - 1 - 1 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 28 - 27 - 28 - 24 - 7 - 5 - 6 - 12 - 9 - 7 - 12 - 6 - 7 - 6 - 6 - 9 - 7 - 9 - 7 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 65 - 78 - 70 - - 1 - 2 - 1 - 0 - 0 - 39 - 17 - 82 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AC Piano12 - 11 - - - THIRD - 5 - - TRIANGL - 0 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 4 - - - 1 - 1 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W3 - 0 - 1 - 0 - 0 - - 26 - 25 - 24 - 25 - 9 - 9 - 9 - 9 - 13 - 13 - 13 - 13 - 9 - 0 - 0 - 0 - 7 - 6 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 73 - 76 - 70 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AC Piano13 - 12 - - - THIRD - 5 - - TRIANGL - 0 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 2 - - - 1 - 5 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W1 - 0 - 1 - 0 - 0 - - 27 - 27 - 27 - 27 - 9 - 9 - 9 - 9 - 13 - 13 - 13 - 13 - 6 - 6 - 6 - 6 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 70 - 76 - 56 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AC Piano14 - 13 - - - THIRD - 5 - - TRIANGL - 0 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 7 - 5 - - - 1 - 1 - 4 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -1 - 1 - 3 - - 21 - 19 - 19 - 28 - 7 - 4 - 4 - 6 - 12 - 13 - 13 - 14 - 6 - 4 - 4 - 0 - 6 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 67 - 62 - 47 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AC Piano15 - 14 - - - THIRD - 5 - - TRIANGL - 0 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 4 - - - 1 - 1 - 9 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 1 - -1 - 0 - 1 - - 21 - 19 - 19 - 24 - 7 - 4 - 4 - 13 - 12 - 13 - 13 - 13 - 6 - 3 - 4 - 5 - 6 - 6 - 6 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 78 - 45 - 76 - - 1 - 1 - 1 - 1 - 0 - 19 - 43 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AC Piano16 - 15 - - - FIRST - 5 - - TRIANGL - 0 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 6 - 5 - - - 1 - 1 - 1 - 7 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W4 - W1 - 0 - 0 - 1 - -1 - - 23 - 31 - 31 - 28 - 7 - 12 - 12 - 24 - 13 - 13 - 13 - 10 - 6 - 1 - 1 - 5 - 8 - 4 - 4 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 78 - 80 - 71 - - 1 - 1 - 1 - 1 - 0 - 19 - 19 - 1 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AC Piano17 - 16 - - - THIRD - 0 - - TRIANGL - 0 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 6 - 2 - - - 1 - 1 - 5 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 1 - -1 - 1 - 2 - - 25 - 25 - 25 - 31 - 7 - 6 - 8 - 9 - 9 - 10 - 9 - 12 - 5 - 21 - 5 - 5 - 5 - 9 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 65 - 70 - 81 - - 1 - 1 - 1 - 1 - 0 - 19 - 0 - 1 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AC Piano18 - 17 - - - THIRD - 4 - - TRIANGL - 0 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 6 - 5 - 5 - - - 1 - 1 - 1 - 7 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -1 - 1 - -1 - 2 - - 25 - 25 - 25 - 31 - 9 - 6 - 6 - 10 - 13 - 10 - 10 - 12 - 6 - 6 - 6 - 9 - 7 - 9 - 9 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 80 - 78 - 67 - - 1 - 0 - 0 - 0 - 0 - 19 - 19 - 1 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AC Piano19 - 18 - - - THIRD - 5 - - TRIANGL - 0 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 5 - - - 1 - 3 - 5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 1 - 0 - 0 - - 25 - 25 - 25 - 25 - 9 - 9 - 9 - 9 - 13 - 13 - 13 - 13 - 6 - 9 - 9 - 9 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 75 - 65 - 61 - - 1 - 0 - 0 - 1 - 1 - 1 - 1 - 1 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AC Piano20 - 19 - - - THIRD - 3 - - TRIANGL - 35 - 10 - 0 - 6 - off - - - 5 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 4 - 5 - 5 - 5 - - - 1 - 6 - 4 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -1 - 2 - -2 - 2 - - 24 - 20 - 18 - 21 - 6 - 6 - 6 - 1 - 9 - 9 - 0 - 0 - 5 - 5 - 11 - 1 - 5 - 4 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 72 - 75 - 71 - - 1 - 1 - 1 - 1 - 10 - 66 - 66 - 27 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AC Piano21 - 20 - - - THIRD - 3 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 3 - 1 - - - 1 - 1 - 5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W3 - -3 - 1 - -2 - 1 - - 28 - 30 - 30 - 30 - 10 - 12 - 9 - 16 - 14 - 14 - 14 - 14 - 6 - 6 - 7 - 6 - 7 - 3 - 6 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 76 - 79 - 68 - - 1 - 1 - 1 - 1 - 0 - 43 - 17 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BabyGrand* - 21 - - - FIFTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 3 - on - off - on - off - 0 - 0 - 0 - 0 - 3 - 5 - 5 - 2 - - - 1 - 1 - 1 - 10.57 - no - no - no - no - 8 - 8 - 8 - 16 - - W1 - W2 - W1 - W2 - -3 - 3 - 3 - 0 - - 23 - 23 - 24 - 20 - 6 - 6 - 7 - 15 - 15 - 15 - 3 - 2 - 6 - 6 - 13 - 24 - 7 - 10 - 10 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 87 - 99 - 56 - - 1 - 1 - 0 - 0 - 0 - 12 - 14 - 17 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 0 - 25 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bad Road * - 22 - - - FIFTH - 0 - - TRIANGL - 23 - 0 - 8 - 12 - off - - - 3 - 2 - on - off - on - off - 0 - 0 - 0 - 0 - 3 - 5 - 2 - 2 - - - 0.75 - 1.49 - 1.5 - 2.99 - no - no - no - no - 12 - 9 - 16 - 10 - - W1 - W1 - W1 - W4 - -3 - 3 - 0 - 2 - - 28 - 28 - 28 - 31 - 9 - 9 - 9 - 9 - 0 - 0 - 0 - 0 - 31 - 31 - 31 - 31 - 4 - 4 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 87 - 99 - 88 - - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - - - -7 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bel/Piano* - 23 - - - FIFTH - 7 - - TRIANGL - 24 - 82 - 0 - 81 - off - - - 2 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 3 - - - 1 - 2 - 2 - 15 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W2 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 9 - 27 - 9 - 27 - 15 - 15 - 15 - 10 - 12 - 10 - 7 - 10 - 4 - 6 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 81 - 99 - 99 - - 0 - 0 - 0 - 2 - 0 - 0 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BellPiano1 - 24 - - - SEVENTH - 7 - - TRIANGL - 24 - 82 - 0 - 81 - off - - - 2 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 7 - 4 - 5 - 4 - - - 2 - 8 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W2 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 9 - 27 - 9 - 27 - 15 - 15 - 15 - 10 - 12 - 10 - 7 - 10 - 4 - 6 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 99 - 99 - 99 - - 0 - 0 - 0 - 2 - 0 - 0 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BellPiano2 - 25 - - - THIRD - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 3 - 3 - 1 - - - 1 - 4 - 7 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W2 - W1 - 0 - 0 - -3 - 2 - - 31 - 31 - 24 - 29 - 8 - 7 - 5 - 4 - 13 - 12 - 0 - 0 - 3 - 3 - 3 - 12 - 4 - 4 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 77 - 78 - 77 - - 2 - 1 - 3 - 1 - 0 - 94 - 61 - 52 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BritePiano - 26 - - - THIRD - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 4 - 1 - 1 - - - 1 - 4 - 7 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W2 - W2 - 0 - 0 - -3 - 2 - - 31 - 31 - 24 - 29 - 8 - 7 - 5 - 4 - 13 - 12 - 0 - 0 - 3 - 3 - 3 - 12 - 6 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 77 - 71 - 79 - - 2 - 2 - 3 - 1 - 0 - 94 - 61 - 52 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Buz'dPiano - 27 - - - THIRD - 7 - - TRIANGL - 29 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 4 - 2 - 2 - - - 1 - 4 - 7 - 7 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W2 - W8 - 0 - 0 - -3 - 2 - - 31 - 31 - 24 - 29 - 8 - 7 - 5 - 21 - 13 - 12 - 0 - 0 - 3 - 3 - 3 - 12 - 6 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 71 - 74 - 73 - - 2 - 1 - 3 - 2 - 0 - 27 - 16 - 33 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - ChibyPiano - 28 - - - FIFTH - 6 - - TRIANGL - 20 - 0 - 1 - 2 - off - - - 2 - 1 - off - on - off - off - 0 - 0 - 0 - 0 - 2 - 3 - 3 - 3 - - - 1 - 0.5 - 1 - 14 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W8 - 3 - -3 - -3 - 3 - - 28 - 31 - 31 - 30 - 4 - 0 - 18 - 14 - 10 - 10 - 13 - 9 - 0 - 0 - 6 - 15 - 7 - 7 - 8 - 14 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 83 - 83 - - 2 - 1 - 0 - 1 - 0 - 48 - 0 - 0 - - - 0 - POLY - 2 - FINGER - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 7 - - ChorusMeEP - 29 - - - FIFTH - 0 - - TRIANGL - 26 - 18 - 0 - 0 - off - - - 4 - 2 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 3 - - - 1.49 - 1.49 - 1.5 - 1.5 - no - no - no - no - 9 - 65 - 16 - 104 - - W6 - W5 - W6 - W5 - 3 - 3 - -3 - -3 - - 31 - 31 - 31 - 31 - 25 - 31 - 25 - 31 - 15 - 11 - 15 - 11 - 5 - 8 - 5 - 8 - 6 - 8 - 6 - 8 - VOF - V48 - VOF - V48 - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 79 - 99 - 79 - - 2 - 2 - 2 - 2 - 0 - 99 - 0 - 99 - - - -19 - POLY - 2 - FULL - 0 - POR - 98 - 0 - 0 - 50 - 0 - 37 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - CrsPopPno - 30 - - - FIFTH - 3 - - TRIANGL - 22 - 0 - 4 - 10 - off - - - 4 - 3 - on - on - on - on - 0 - 0 - 0 - 0 - 2 - 3 - 3 - 4 - - - 1 - 1 - 1 - 15 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - -3 - 0 - 3 - - 30 - 30 - 27 - 31 - 7 - 6 - 7 - 15 - 0 - 0 - 7 - 7 - 0 - 0 - 10 - 0 - 9 - 6 - 9 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 89 - 79 - 73 - - 0 - 0 - 0 - 0 - 20 - 16 - 20 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - DX7 EP - 31 - - - THIRD - 6 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 3 - 4 - 3 - - - 1 - 0.5 - 5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - -3 - 2 - - 20 - 22 - 24 - 24 - 8 - 1 - 5 - 1 - 12 - 12 - 0 - 0 - 1 - 1 - 1 - 1 - 5 - 5 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 91 - 54 - 71 - - 2 - 2 - 1 - 1 - 1 - 70 - 74 - 21 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Deep Grd - 32 - - - FIFTH - 0 - - TRIANGL - 29 - 17 - 5 - 0 - off - - - 4 - 3 - off - on - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 4 - 4 - - - 8 - 16.97 - 0.5 - 6 - no - no - no - yes - 8 - 77 - 8 - 96 - - W5 - W3 - W7 - W8 - -3 - 0 - 0 - 0 - - 31 - 31 - 22 - 31 - 9 - 6 - 23 - 12 - 15 - 14 - 13 - 12 - 9 - 1 - 8 - 12 - 5 - 5 - 4 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 73 - 85 - 99 - 78 - - 1 - 1 - 1 - 2 - 0 - 0 - 0 - 28 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 51 - 30 - 51 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - DirtoyPno - 33 - - - FIFTH - 6 - - TRIANGL - 20 - 0 - 1 - 2 - off - - - 4 - 3 - off - on - off - off - 0 - 0 - 0 - 0 - 2 - 3 - 3 - 3 - - - 1 - 0.5 - 1 - 15 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W8 - 3 - -3 - -3 - 3 - - 31 - 31 - 31 - 31 - 18 - 15 - 18 - 14 - 15 - 15 - 13 - 9 - 6 - 5 - 6 - 15 - 8 - 7 - 8 - 14 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 90 - 99 - 67 - - 0 - 0 - 0 - 1 - 0 - 22 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - DynomiteEP - 34 - - - FIFTH - 5 - - TRIANGL - 25 - 0 - 3 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 6 - 4 - 2 - - - 1 - 3 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 0 - -3 - 0 - - 25 - 31 - 25 - 31 - 5 - 8 - 7 - 9 - 0 - 0 - 0 - 0 - 21 - 0 - 0 - 0 - 8 - 7 - 15 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 78 - 95 - 83 - - 2 - 0 - 1 - 1 - 0 - 0 - 0 - 40 - - - -12 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Piano..1 - 35 - - - FIFTH - 5 - - TRIANGL - 20 - 0 - 5 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 6 - 3 - - - 1 - 9 - 1 - 7 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W2 - 3 - -1 - -3 - 1 - - 27 - 31 - 31 - 31 - 6 - 7 - 6 - 12 - 0 - 0 - 0 - 0 - 10 - 10 - 0 - 18 - 6 - 6 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 61 - 95 - 78 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - -12 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Piano..2 - 36 - - - FIFTH - 6 - - TRIANGL - 20 - 0 - 3 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 4 - 4 - 5 - - - 1 - 2 - 2 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W1 - W3 - 0 - 0 - 0 - 0 - - 29 - 26 - 31 - 29 - 8 - 8 - 11 - 9 - 15 - 12 - 15 - 15 - 6 - 2 - 9 - 3 - 8 - 5 - 6 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 85 - 93 - 89 - - 1 - 1 - 2 - 0 - 1 - 41 - 0 - 99 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Piano..3 - 37 - - - FIFTH - 5 - - TRIANGL - 20 - 0 - 3 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 6 - 4 - - - 2 - 3 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W3 - W3 - 0 - 0 - 0 - 0 - - 29 - 26 - 31 - 29 - 8 - 8 - 11 - 9 - 15 - 12 - 15 - 15 - 6 - 2 - 9 - 3 - 6 - 3 - 4 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 87 - 91 - 86 - - 1 - 1 - 2 - 0 - 1 - 41 - 0 - 99 - - - -12 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Piano..4 - 38 - - - FIFTH - 1 - - TRIANGL - 15 - 0 - 0 - 32 - off - - - 6 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 4 - - - 0.5 - 3 - 0.5 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W2 - -1 - 3 - -3 - 0 - - 29 - 25 - 31 - 28 - 8 - 7 - 8 - 9 - 15 - 0 - 0 - 14 - 1 - 4 - 5 - 5 - 6 - 9 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 75 - 96 - 74 - - 0 - 0 - 0 - 2 - 25 - 0 - 25 - 99 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Piano..5 - 39 - - - FIFTH - 5 - - TRIANGL - 34 - 33 - 0 - 0 - off - - - 3 - 1 - on - on - on - off - 0 - 0 - 0 - 0 - 6 - 6 - 5 - 4 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - 3 - -1 - -3 - 3 - - 28 - 28 - 28 - 28 - 7 - 15 - 6 - 9 - 12 - 12 - 13 - 13 - 7 - 6 - 6 - 6 - 11 - 12 - 15 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 93 - 96 - 86 - - 0 - 3 - 0 - 1 - 11 - 35 - 30 - 57 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Piano..6 - 40 - - - FIFTH - 4 - - TRIANGL - 23 - 0 - 0 - 39 - off - - - 0 - 2 - off - off - on - off - 0 - 0 - 0 - 0 - 6 - 4 - 6 - 4 - - - 1 - 3 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W4 - W2 - W1 - 1 - 2 - -2 - 2 - - 31 - 24 - 31 - 27 - 10 - 12 - 6 - 15 - 15 - 12 - 15 - 15 - 6 - 13 - 6 - 7 - 7 - 7 - 6 - 12 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 77 - 99 - 85 - - 1 - 1 - 1 - 1 - 1 - 48 - 0 - 99 - - - -12 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Piano..7 - 41 - - - SIXTH - 1 - - TRIANGL - 31 - 0 - 0 - 32 - off - - - 0 - 2 - off - off - on - off - 0 - 0 - 0 - 0 - 6 - 4 - 6 - 4 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W4 - 0 - 1 - 0 - 0 - - 31 - 31 - 31 - 31 - 4 - 10 - 6 - 10 - 9 - 10 - 7 - 7 - 15 - 7 - 13 - 7 - 6 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 91 - - 1 - 1 - 1 - 0 - 10 - 12 - 14 - 24 - - - -12 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Piano..8 - 42 - - - FIFTH - 5 - - TRIANGL - 99 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 4 - 5 - 6 - - - 1 - 1 - 1 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W3 - W1 - W1 - 2 - 3 - 0 - 1 - - 28 - 31 - 24 - 28 - 15 - 15 - 9 - 6 - 15 - 15 - 14 - 14 - 6 - 6 - 6 - 6 - 6 - 3 - 6 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 76 - 99 - 70 - - 0 - 1 - 0 - 0 - 10 - 40 - 0 - 99 - - - -12 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Piano..9 - 43 - - - FIFTH - 5 - - TRIANGL - 99 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 6 - 4 - - - 1 - 11 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 2 - 3 - 0 - 1 - - 28 - 24 - 24 - 31 - 15 - 22 - 9 - 19 - 15 - 14 - 14 - 13 - 6 - 13 - 6 - 9 - 6 - 8 - 7 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 60 - 99 - 88 - - 0 - 0 - 0 - 0 - 10 - 40 - 0 - 30 - - - -12 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Piano.10 - 44 - - - FIFTH - 7 - - TRIANGL - 99 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 6 - 5 - 5 - - - 1 - 14 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 28 - 27 - 22 - 22 - 15 - 25 - 9 - 6 - 15 - 13 - 14 - 11 - 4 - 6 - 6 - 3 - 6 - 6 - 6 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 81 - 97 - 79 - - 0 - 3 - 0 - 3 - 10 - 99 - 0 - 75 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Piano.11 - 45 - - - FIFTH - 4 - - TRIANGL - 0 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 5 - - - 0.5 - 2 - 1 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W3 - 0 - 0 - 2 - 1 - - 28 - 28 - 27 - 27 - 15 - 24 - 20 - 1 - 15 - 10 - 14 - 3 - 6 - 6 - 9 - 9 - 6 - 2 - 4 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 99 - 90 - 82 - - 0 - 2 - 0 - 3 - 10 - 99 - 0 - 75 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Piano.12 - 46 - - - FIFTH - 7 - - TRIANGL - 34 - 0 - 0 - 26 - off - - - 0 - 2 - off - on - on - on - 0 - 0 - 0 - 0 - 5 - 5 - 4 - 6 - - - 1 - 12 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - -1 - -3 - 3 - - 28 - 30 - 28 - 22 - 7 - 22 - 6 - 7 - 12 - 11 - 13 - 13 - 7 - 10 - 6 - 3 - 11 - 5 - 15 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 88 - 92 - 82 - - 0 - 1 - 1 - 3 - 11 - 99 - 30 - 99 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Piano.13 - 47 - - - FIFTH - 1 - - TRIANGL - 34 - 0 - 0 - 26 - off - - - 0 - 2 - off - on - on - on - 0 - 0 - 0 - 0 - 6 - 6 - 4 - 4 - - - 1 - 14 - 1 - 10 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 27 - 30 - 24 - 24 - 9 - 9 - 9 - 9 - 9 - 11 - 13 - 11 - 7 - 7 - 7 - 7 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 90 - 97 - 65 - - 1 - 2 - 0 - 1 - 10 - 99 - 0 - 44 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Piano.14 - 48 - - - THIRD - 6 - - TRIANGL - 34 - 0 - 0 - 26 - off - - - 0 - 2 - off - on - on - on - 0 - 0 - 0 - 0 - 6 - 5 - 4 - 5 - - - 1 - 10 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 0 - 0 - 0 - 0 - - 27 - 30 - 31 - 24 - 9 - 9 - 24 - 9 - 9 - 11 - 13 - 11 - 7 - 7 - 7 - 7 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 71 - 79 - 57 - - 0 - 2 - 3 - 2 - 10 - 99 - 99 - 85 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Piano.15 - 49 - - - FIRST - 6 - - TRIANGL - 34 - 0 - 0 - 39 - on - - - 0 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 4 - 4 - - - 1 - 2 - 2 - 7 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W3 - W2 - 0 - 0 - 0 - 0 - - 27 - 30 - 31 - 26 - 7 - 9 - 9 - 17 - 11 - 11 - 13 - 11 - 7 - 7 - 7 - 7 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 53 - 50 - 52 - - 0 - 2 - 2 - 2 - 10 - 99 - 99 - 85 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Piano.16 - 50 - - - FIFTH - 5 - - TRIANGL - 34 - 33 - 0 - 0 - off - - - 3 - 1 - on - on - on - off - 0 - 0 - 0 - 0 - 5 - 6 - 6 - 6 - - - 1 - 1 - 1 - 7 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 2 - -2 - -2 - 2 - - 28 - 28 - 28 - 31 - 4 - 15 - 6 - 6 - 2 - 12 - 13 - 13 - 4 - 6 - 6 - 6 - 11 - 12 - 15 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 90 - 99 - 87 - - 0 - 1 - 0 - 2 - 11 - 35 - 30 - 20 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Piano.17 - 51 - - - FIFTH - 1 - - TRIANGL - 34 - 33 - 0 - 0 - off - - - 3 - 1 - on - on - on - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 4 - - - 1 - 1 - 2 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W2 - W1 - W1 - 2 - -2 - -2 - 2 - - 25 - 22 - 24 - 22 - 7 - 15 - 6 - 6 - 12 - 12 - 13 - 11 - 7 - 6 - 6 - 4 - 11 - 12 - 15 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 68 - 99 - 80 - - 0 - 0 - 0 - 3 - 11 - 45 - 30 - 20 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Piano.18 - 52 - - - FIFTH - 0 - - TRIANGL - 34 - 33 - 0 - 0 - off - - - 3 - 1 - on - on - on - off - 0 - 0 - 0 - 0 - 6 - 6 - 6 - 4 - - - 0.5 - 1 - 1 - 14 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W1 - W4 - 0 - 2 - 2 - 2 - - 31 - 24 - 31 - 31 - 12 - 9 - 9 - 12 - 15 - 15 - 15 - 15 - 6 - 6 - 6 - 6 - 7 - 10 - 9 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 88 - 99 - 55 - - 0 - 2 - 0 - 2 - 11 - 36 - 30 - 50 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Piano.19 - 53 - - - SEVENTH - 1 - - TRIANGL - 34 - 33 - 0 - 0 - off - - - 3 - 1 - on - on - on - off - 0 - 0 - 0 - 0 - 6 - 4 - 5 - 7 - - - 1 - 1 - 2 - 10 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W2 - W1 - 0 - 2 - 2 - 2 - - 31 - 24 - 31 - 31 - 12 - 9 - 9 - 12 - 15 - 15 - 15 - 15 - 6 - 6 - 6 - 6 - 7 - 10 - 9 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 81 - 95 - 57 - - 0 - 2 - 0 - 2 - 11 - 36 - 30 - 50 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Piano.20 - 54 - - - FIFTH - 4 - - TRIANGL - 24 - 0 - 4 - 0 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 1 - - - 1 - 1 - 1 - 14 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W2 - -3 - 0 - -3 - 0 - - 31 - 31 - 31 - 31 - 8 - 8 - 8 - 8 - 0 - 0 - 0 - 0 - 17 - 0 - 0 - 0 - 7 - 7 - 10 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 89 - 96 - 59 - - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 13 - - - -12 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Piano.21 - 55 - - - FIFTH - 3 - - TRIANGL - 27 - 0 - 4 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 1 - 4 - 1 - - - 1 - 1 - 2 - 7 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - -3 - 0 - -3 - 0 - - 31 - 31 - 31 - 31 - 8 - 8 - 17 - 18 - 1 - 0 - 0 - 0 - 21 - 0 - 0 - 0 - 8 - 7 - 15 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 90 - 99 - 70 - - 1 - 1 - 0 - 1 - 0 - 45 - 0 - 13 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E Piano.22 - 56 - - - FOURTH - 0 - - TRIANGL - 16 - 0 - 8 - 25 - off - - - 5 - 2 - on - on - on - on - 0 - 0 - 0 - 0 - 3 - 2 - 4 - 6 - - - 1 - 13 - 1 - 16.96 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W3 - 3 - -1 - 1 - -3 - - 29 - 29 - 29 - 31 - 12 - 11 - 4 - 31 - 14 - 14 - 14 - 15 - 4 - 18 - 1 - 17 - 8 - 6 - 6 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 42 - 69 - 67 - - 2 - 2 - 1 - 2 - 20 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E.Piano 1 - 57 - - - THIRD - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 1 - 2 - 6 - - - 0.5 - 0.5 - 1 - 4.71 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W2 - 0 - 0 - 0 - 0 - - 24 - 31 - 31 - 31 - 31 - 31 - 10 - 19 - 15 - 15 - 12 - 4 - 9 - 0 - 8 - 10 - 9 - 7 - 7 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 73 - 49 - 73 - - 0 - 0 - 0 - 0 - 6 - 11 - 12 - 0 - - - 12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E.Piano 2 - 58 - - - SECOND - 3 - - TRIANGL - 30 - 0 - 6 - 2 - off - - - 4 - 0 - on - on - on - on - 0 - 0 - 0 - 0 - 2 - 3 - 5 - 2 - - - 1 - 1 - 8 - 7 - no - no - no - no - 8 - 8 - 8 - 48 - - W1 - W2 - W1 - W1 - 0 - 3 - -3 - 1 - - 25 - 28 - 27 - 22 - 7 - 14 - 19 - 29 - 5 - 15 - 15 - 12 - 4 - 3 - 1 - 18 - 5 - 3 - 1 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 79 - 57 - 66 - - 2 - 2 - 2 - 0 - 10 - 20 - 77 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - E. Piano 3 - 59 - - - FIFTH - 0 - - TRIANGL - 21 - 0 - 10 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 3 - 2 - 3 - - - 1.5 - 15.5 - 1.51 - 1.5 - no - no - no - no - 16 - 16 - 14 - 16 - - W1 - W1 - W1 - W2 - 0 - 0 - -3 - 3 - - 31 - 31 - 31 - 31 - 7 - 15 - 30 - 8 - 11 - 11 - 14 - 14 - 7 - 10 - 6 - 6 - 10 - 11 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 66 - 99 - 80 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 20 - - - -19 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - El.Piano * - 60 - - - THIRD - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 2 - 2 - 2 - - - 1 - 3 - 5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -3 - 2 - 3 - - 28 - 31 - 31 - 31 - 30 - 4 - 5 - 8 - 15 - 14 - 13 - 13 - 6 - 2 - 4 - 3 - 6 - 5 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 82 - 66 - 68 - - 2 - 0 - 0 - 1 - 0 - 99 - 99 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Elec Grand - 61 - - - THIRD - 0 - - TRIANGL - 30 - 0 - 6 - 2 - off - - - 4 - 0 - on - on - on - on - 0 - 0 - 0 - 0 - 2 - 3 - 5 - 2 - - - 1 - 1 - 8 - 11 - no - no - no - no - 8 - 8 - 8 - 48 - - W1 - W2 - W1 - W6 - 0 - 3 - -3 - 1 - - 25 - 28 - 27 - 22 - 7 - 31 - 19 - 13 - 5 - 15 - 15 - 0 - 4 - 3 - 1 - 18 - 6 - 5 - 2 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 81 - 59 - 37 - - 2 - 2 - 3 - 0 - 13 - 20 - 99 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - ElecPiano4 - 62 - - - FIFTH - 7 - - TRIANGL - 23 - 0 - 0 - 29 - off - - - 3 - 2 - on - on - on - on - 0 - 0 - 0 - 0 - 2 - 0 - 2 - 1 - - - 2.99 - 1 - 1 - 15 - no - no - no - no - 10 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - -3 - 0 - 3 - - 30 - 15 - 27 - 31 - 7 - 6 - 7 - 15 - 0 - 0 - 7 - 7 - 0 - 0 - 10 - 0 - 8 - 5 - 8 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 62 - 99 - 71 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - ElecPiano5 - 63 - - - FIFTH - 7 - - TRIANGL - 23 - 0 - 0 - 29 - off - - - 3 - 2 - on - on - on - on - 0 - 0 - 0 - 0 - 2 - 0 - 2 - 1 - - - 0.98 - 12 - 0.97 - 15 - no - no - no - no - 10 - 8 - 9 - 8 - - W1 - W1 - W1 - W1 - 3 - 3 - -3 - -3 - - 27 - 31 - 27 - 31 - 7 - 15 - 7 - 15 - 7 - 7 - 7 - 7 - 10 - 0 - 10 - 0 - 8 - 9 - 8 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 55 - 99 - 82 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - ElecPiano6 - 64 - - - SEVENTH - 6 - - TRIANGL - 30 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 1 - 2 - - - 1 - 1 - 3 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W8 - W4 - 0 - 0 - 0 - 0 - - 27 - 26 - 23 - 24 - 19 - 18 - 15 - 11 - 14 - 15 - 9 - 13 - 9 - 0 - 14 - 10 - 6 - 10 - 5 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 78 - 78 - 74 - - 1 - 1 - 1 - 1 - 0 - 7 - 17 - 40 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - Electracou - 65 - - - FIFTH - 0 - - TRIANGL - 20 - 8 - 2 - 27 - off - - - 6 - 2 - on - off - on - off - 0 - 0 - 0 - 0 - 3 - 3 - 4 - 4 - - - 1 - 1 - 1 - 14 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 3 - 3 - -3 - - 24 - 31 - 31 - 31 - 4 - 4 - 13 - 6 - 13 - 13 - 12 - 12 - 3 - 3 - 8 - 4 - 6 - 4 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 84 - 99 - 54 - - 2 - 2 - 1 - 2 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - ElectroPno - 66 - - - THIRD - 7 - - TRIANGL - 31 - 8 - 32 - 2 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 2 - 2 - 7 - - - 1 - 2.99 - 9 - 1 - no - no - no - no - 8 - 10 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 3 - 2 - -3 - - 23 - 22 - 31 - 31 - 4 - 4 - 16 - 14 - 15 - 13 - 10 - 9 - 1 - 2 - 3 - 4 - 5 - 3 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 76 - 74 - 76 - - 2 - 2 - 2 - 0 - 0 - 99 - 99 - 41 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - FadePiano - 67 - - - THIRD - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 4 - 2 - 1 - - - 1 - 4 - 9 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W4 - W1 - 0 - 0 - -3 - 2 - - 26 - 22 - 24 - 29 - 6 - 7 - 5 - 1 - 11 - 11 - 0 - 0 - 3 - 3 - 3 - 4 - 6 - 4 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 82 - 71 - 72 - - 2 - 2 - 3 - 3 - 0 - 76 - 65 - 26 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - FingersGo! - 68 - - - FIRST - 0 - - TRIANGL - 20 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 2 - 4 - 7 - - - 1 - 2 - 3 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 3 - - 31 - 31 - 31 - 31 - 31 - 17 - 2 - 14 - 10 - 10 - 14 - 9 - 8 - 3 - 5 - 15 - 8 - 11 - 8 - 14 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 83 - 99 - 87 - - 0 - 2 - 0 - 0 - 0 - 67 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - FlatFlange - 69 - - - THIRD - 3 - - TRIANGL - 27 - 50 - 2 - 0 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 7 - 7 - 4 - - - 1 - 1 - 14 - 6.92 - no - no - no - yes - 8 - 8 - 8 - 8 - - W7 - W6 - W5 - W8 - -3 - 3 - 2 - 3 - - 31 - 31 - 31 - 31 - 7 - 11 - 9 - 17 - 13 - 15 - 10 - 0 - 4 - 0 - 4 - 11 - 10 - 11 - 9 - 15 - VOF - V12 - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 81 - 71 - 99 - - 0 - 0 - 0 - 2 - 0 - 88 - 95 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 22 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Fuzz Piano - 70 - - - SECOND - 6 - - TRIANGL - 20 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 3 - 3 - 3 - - - 1 - 2 - 3 - 12 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 3 - - 31 - 31 - 31 - 31 - 18 - 17 - 9 - 14 - 10 - 14 - 14 - 9 - 8 - 3 - 5 - 15 - 8 - 11 - 8 - 14 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 81 - 89 - 75 - - 0 - 2 - 0 - 0 - 0 - 67 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - FuzzPiano - 71 - - - FOURTH - 0 - - TRIANGL - 29 - 0 - 3 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 6 - 5 - - - 0.5 - 1.51 - 1.49 - 11.01 - no - no - no - yes - 8 - 14 - 9 - 21 - - W1 - W6 - W6 - W1 - 0 - 3 - -3 - 0 - - 31 - 31 - 31 - 31 - 31 - 9 - 4 - 21 - 15 - 12 - 12 - 11 - 10 - 4 - 9 - 31 - 6 - 4 - 4 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 71 - 71 - 83 - - 1 - 2 - 2 - 0 - 0 - 15 - 15 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 30 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - GaragePno - 72 - - - FIFTH - 5 - - SHOLD - 38 - 86 - 0 - 18 - on - - - 1 - 1 - off - off - on - off - 0 - 0 - 0 - 0 - 6 - 5 - 3 - 3 - - - 14 - 12 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 1 - 3 - 0 - -1 - - 12 - 31 - 12 - 31 - 15 - 31 - 9 - 31 - 7 - 15 - 15 - 15 - 8 - 0 - 5 - 0 - 7 - 15 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 88 - 66 - 99 - 75 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - GlassPiano - 73 - - - THIRD - 7 - - TRIANGL - 31 - 0 - 4 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 2 - 2 - 3 - - - 1 - 2.99 - 9 - 1 - no - no - no - no - 8 - 10 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 3 - 2 - -3 - - 23 - 22 - 31 - 31 - 22 - 3 - 7 - 7 - 14 - 12 - 10 - 14 - 6 - 2 - 3 - 1 - 4 - 4 - 4 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 76 - 74 - 76 - - 2 - 2 - 2 - 1 - 0 - 99 - 99 - 43 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Grand 2 - 74 - - - THIRD - 7 - - TRIANGL - 31 - 0 - 4 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 2 - 2 - 3 - - - 1 - 2.99 - 9 - 1 - no - no - no - no - 8 - 10 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 3 - 2 - -3 - - 23 - 22 - 31 - 31 - 22 - 3 - 7 - 7 - 14 - 12 - 10 - 14 - 6 - 2 - 3 - 1 - 4 - 4 - 4 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 76 - 74 - 76 - - 2 - 2 - 2 - 1 - 0 - 70 - 70 - 33 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Grand 3 - 75 - - - THIRD - 7 - - TRIANGL - 31 - 0 - 4 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 2 - 2 - 3 - - - 1 - 2.99 - 9 - 1 - no - no - no - no - 8 - 10 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 3 - 2 - -3 - - 23 - 22 - 31 - 31 - 22 - 3 - 7 - 7 - 14 - 12 - 10 - 14 - 6 - 2 - 3 - 1 - 4 - 4 - 4 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 76 - 74 - 76 - - 2 - 2 - 2 - 1 - 0 - 99 - 99 - 43 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Grand Low - 76 - - - THIRD - 7 - - TRIANGL - 31 - 0 - 4 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 2 - 2 - 3 - - - 1 - 2.99 - 9 - 1 - no - no - no - no - 8 - 10 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 3 - 2 - -3 - - 23 - 22 - 31 - 31 - 22 - 3 - 7 - 7 - 14 - 12 - 10 - 14 - 6 - 2 - 3 - 1 - 8 - 6 - 7 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 76 - 74 - 76 - - 2 - 2 - 2 - 1 - 0 - 99 - 99 - 43 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Grand PF - 77 - - - THIRD - 7 - - TRIANGL - 31 - 0 - 4 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 2 - 2 - 3 - - - 1 - 2.99 - 9 - 1 - no - no - no - no - 8 - 10 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 3 - 2 - -3 - - 23 - 22 - 31 - 31 - 6 - 3 - 7 - 7 - 14 - 12 - 10 - 14 - 3 - 2 - 3 - 1 - 4 - 4 - 4 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 76 - 74 - 76 - - 2 - 2 - 2 - 1 - 0 - 99 - 99 - 43 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - GrandLow2 - 78 - - - THIRD - 7 - - TRIANGL - 31 - 0 - 4 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 2 - 2 - 3 - - - 1.5 - 4.49 - 13.5 - 1.5 - no - no - no - no - 16 - 11 - 16 - 16 - - W1 - W1 - W1 - W1 - 3 - 3 - 2 - -3 - - 23 - 22 - 31 - 31 - 22 - 3 - 7 - 7 - 14 - 12 - 10 - 14 - 6 - 2 - 3 - 1 - 4 - 4 - 4 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 76 - 74 - 76 - - 2 - 2 - 2 - 1 - 0 - 99 - 99 - 43 - - - -19 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - GrandLow3 - 79 - - - THIRD - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 4 - 1 - 1 - - - 1 - 4 - 7 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W2 - W1 - 0 - 0 - -3 - 2 - - 31 - 31 - 24 - 29 - 8 - 7 - 5 - 4 - 13 - 12 - 0 - 0 - 3 - 3 - 3 - 12 - 6 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 77 - 74 - 77 - - 2 - 1 - 3 - 1 - 0 - 94 - 61 - 52 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - GrandPiano - 80 - - - FIFTH - 6 - - TRIANGL - 20 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 3 - 3 - 3 - - - 1 - 2 - 3 - 12 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 3 - - 31 - 31 - 31 - 31 - 18 - 17 - 18 - 14 - 10 - 14 - 14 - 9 - 8 - 3 - 5 - 15 - 8 - 11 - 8 - 14 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 81 - 89 - 75 - - 0 - 2 - 0 - 0 - 0 - 67 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - HappyPiano - 81 - - - THIRD - 4 - - TRIANGL - 32 - 0 - 0 - 0 - on - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 4 - 2 - 2 - - - 1 - 10 - 7 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W6 - W2 - W7 - 0 - 0 - 0 - 0 - - 31 - 31 - 20 - 31 - 30 - 0 - 31 - 3 - 15 - 15 - 11 - 0 - 0 - 12 - 31 - 25 - 7 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 61 - 67 - - 2 - 1 - 3 - 2 - 0 - 37 - 33 - 19 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 14 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - HarpsPiano - 82 - - - FIFTH - 7 - - TRIANGL - 28 - 29 - 16 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 3 - 3 - 3 - - - 0.5 - 1 - 2 - 10 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 3 - - 31 - 31 - 31 - 31 - 18 - 9 - 9 - 27 - 10 - 0 - 14 - 10 - 8 - 0 - 5 - 15 - 8 - 11 - 8 - 14 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 77 - 89 - 78 - - 0 - 2 - 0 - 0 - 0 - 67 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Hi-LowBell - 83 - - - FIFTH - 0 - - TRIANGL - 28 - 20 - 6 - 84 - off - - - 6 - 1 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 3 - 2 - 3 - - - 1 - 1 - 1 - 12 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 3 - - 31 - 31 - 31 - 31 - 18 - 14 - 18 - 10 - 10 - 14 - 14 - 9 - 5 - 3 - 6 - 0 - 8 - 11 - 8 - 14 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 85 - 75 - 88 - - 0 - 2 - 0 - 0 - 0 - 67 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - High&Long$ - 84 - - - FIRST - 4 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 2 - 3 - 2 - - - 1.51 - 1.49 - 10.49 - 7.22 - no - no - no - no - 14 - 9 - 19 - 10 - - W1 - W1 - W1 - W5 - -3 - 3 - 2 - 3 - - 20 - 22 - 24 - 24 - 8 - 3 - 27 - 1 - 12 - 12 - 13 - 0 - 1 - 1 - 4 - 1 - 5 - 4 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 78 - 61 - 48 - - 2 - 2 - 1 - 1 - 0 - 58 - 0 - 0 - - - -7 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - HonkeyTonk - 85 - - - THIRD - 0 - - TRIANGL - 25 - 0 - 0 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 5 - 2 - 2 - - - 1 - 3 - 5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -3 - 2 - 3 - - 22 - 31 - 31 - 31 - 30 - 4 - 5 - 8 - 15 - 14 - 13 - 13 - 6 - 2 - 4 - 3 - 6 - 5 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 71 - 72 - 72 - - 2 - 1 - 1 - 2 - 0 - 66 - 81 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - Ivory * - 86 - - - THIRD - 7 - - TRIANGL - 31 - 0 - 4 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 2 - 1 - 3 - - - 1 - 2.99 - 8 - 1 - no - no - no - no - 8 - 10 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 3 - 2 - -3 - - 23 - 22 - 31 - 31 - 22 - 3 - 7 - 7 - 14 - 12 - 10 - 14 - 6 - 2 - 3 - 1 - 8 - 6 - 7 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 89 - 77 - 53 - - 2 - 2 - 2 - 1 - 0 - 75 - 91 - 43 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - JazzyPiano - 87 - - - SECOND - 6 - - TRIANGL - 20 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 3 - 3 - 3 - - - 1 - 2 - 3 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 3 - - 31 - 31 - 31 - 31 - 18 - 17 - 9 - 14 - 10 - 14 - 14 - 9 - 8 - 3 - 5 - 15 - 8 - 11 - 8 - 14 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 81 - 89 - 98 - - 0 - 2 - 0 - 0 - 0 - 67 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - MetalWhip - 88 - - - FIFTH - 6 - - TRIANGL - 20 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 2 - 3 - 3 - - - 1 - 1 - 1 - 15 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 3 - - 31 - 31 - 31 - 31 - 18 - 15 - 18 - 14 - 14 - 14 - 14 - 9 - 6 - 5 - 6 - 15 - 8 - 11 - 8 - 14 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 90 - 96 - 41 - - 1 - 1 - 0 - 0 - 0 - 78 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - NewElectro - 89 - - - FIFTH - 6 - - TRIANGL - 20 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 2 - 4 - 6 - - - 1 - 1 - 1 - 12 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 3 - - 31 - 31 - 31 - 31 - 18 - 14 - 18 - 14 - 10 - 14 - 14 - 9 - 8 - 3 - 6 - 15 - 8 - 11 - 8 - 14 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 85 - 78 - 75 - - 0 - 2 - 0 - 0 - 0 - 67 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - NewElectro* - 90 - - - THIRD - 6 - - TRIANGL - 25 - 0 - 0 - 0 - off - - - 5 - 3 - on - off - off - on - 0 - 0 - 0 - 0 - 3 - 4 - 5 - 1 - - - 1 - 2 - 0.78 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W6 - W3 - W4 - -2 - 0 - 0 - 2 - - 26 - 25 - 31 - 25 - 31 - 10 - 19 - 18 - 15 - 12 - 3 - 10 - 5 - 10 - 0 - 5 - 9 - 9 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 69 - 86 - 84 - - 1 - 2 - 0 - 0 - 0 - 37 - 0 - 37 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 9 - 15 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Old Rose - 91 - - - FIFTH - 7 - - TRIANGL - 28 - 29 - 16 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - - - 1 - 1 - 2 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 3 - - 31 - 31 - 31 - 31 - 18 - 9 - 9 - 27 - 10 - 0 - 14 - 10 - 8 - 0 - 5 - 15 - 8 - 11 - 8 - 14 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 77 - 89 - 78 - - 0 - 2 - 0 - 0 - 0 - 67 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrganPiano - 92 - - - FIFTH - 5 - - TRIANGL - 30 - 23 - 0 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 5 - 2 - - - 24.22 - 4 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -1 - 0 - 1 - 2 - - 30 - 25 - 30 - 22 - 21 - 9 - 22 - 9 - 13 - 6 - 15 - 10 - 8 - 4 - 2 - 0 - 5 - 7 - 6 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 59 - 99 - 71 - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Ornt Piano - 93 - - - SECOND - 0 - - TRIANGL - 28 - 8 - 4 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 0 - 0 - 7 - - - 0.5 - 0.5 - 0.5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W2 - W1 - 2 - -2 - -3 - 2 - - 19 - 19 - 29 - 29 - 5 - 6 - 8 - 8 - 3 - 10 - 10 - 6 - 7 - 7 - 7 - 7 - 6 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 59 - 87 - 67 - - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 87 - - - 12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - PetalPiano - 94 - - - FOURTH - 6 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 3 - 0 - - - 1 - 1 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 3 - -3 - 3 - - 19 - 21 - 22 - 29 - 29 - 3 - 15 - 23 - 10 - 14 - 15 - 10 - 1 - 0 - 0 - 2 - 3 - 7 - 2 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 78 - 86 - 71 - - 3 - 2 - 2 - 2 - 12 - 53 - 79 - 82 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - PhaseGrand - 95 - - - THIRD - 0 - - TRIANGL - 32 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 4 - 5 - 2 - - - 1 - 2.99 - 9 - 1 - no - no - no - no - 8 - 10 - 8 - 8 - - W2 - W1 - W1 - W1 - 0 - 0 - 3 - 0 - - 30 - 30 - 31 - 31 - 5 - 6 - 12 - 18 - 9 - 9 - 5 - 11 - 3 - 2 - 3 - 8 - 5 - 4 - 5 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 86 - 70 - 78 - - 2 - 2 - 2 - 1 - 0 - 34 - 39 - 57 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - PianGuitar - 96 - - - THIRD - 1 - - TRIANGL - 31 - 0 - 4 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 2 - 2 - 3 - - - 1.31 - 3.87 - 11.72 - 1.31 - no - no - no - no - 13 - 20 - 13 - 13 - - W1 - W1 - W1 - W1 - 3 - 3 - 2 - -3 - - 23 - 22 - 31 - 31 - 22 - 3 - 7 - 7 - 14 - 12 - 10 - 14 - 6 - 2 - 3 - 1 - 4 - 4 - 4 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 51 - 50 - 50 - - 99 - 76 - 74 - 76 - - 2 - 2 - 2 - 1 - 25 - 99 - 99 - 43 - - - -5 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Rag Piano - 97 - - - FOURTH - 7 - - TRIANGL - 23 - 0 - 0 - 17 - off - - - 5 - 3 - off - on - off - off - 0 - 0 - 0 - 0 - 3 - 3 - 3 - 4 - - - 1 - 1 - 2 - 2.18 - no - no - no - no - 8 - 8 - 8 - 11 - - W1 - W1 - W4 - W1 - 0 - 3 - -3 - 0 - - 31 - 31 - 31 - 31 - 9 - 31 - 6 - 13 - 14 - 15 - 13 - 12 - 2 - 0 - 7 - 16 - 7 - 9 - 10 - 13 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 66 - 87 - 39 - - 2 - 2 - 2 - 2 - 0 - 36 - 23 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Reed Piano - 98 - - - THIRD - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 4 - 1 - 1 - - - 1 - 4 - 7 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - -3 - 2 - - 26 - 22 - 24 - 29 - 7 - 1 - 4 - 1 - 13 - 12 - 0 - 0 - 3 - 3 - 3 - 4 - 6 - 4 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 78 - 68 - 72 - - 2 - 2 - 3 - 1 - 0 - 99 - 86 - 26 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SkoolPiano - 99 - - - FIFTH - 5 - - TRIANGL - 25 - 0 - 0 - 81 - off - - - 6 - 1 - on - on - on - off - 0 - 0 - 0 - 0 - 5 - 5 - 4 - 5 - - - 1 - 14.1 - 1 - 21.2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W1 - 0 - 0 - 0 - 0 - - 21 - 27 - 22 - 21 - 9 - 25 - 6 - 6 - 0 - 11 - 13 - 13 - 4 - 3 - 4 - 2 - 7 - 8 - 12 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 99 - 98 - 58 - - 2 - 2 - 1 - 2 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SpacePiano - 100 - - - FIFTH - 6 - - TRIANGL - 20 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 3 - 3 - 3 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - -3 - 3 - - 31 - 31 - 31 - 31 - 18 - 14 - 18 - 31 - 10 - 14 - 14 - 15 - 8 - 3 - 6 - 0 - 8 - 11 - 8 - 14 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 88 - 92 - - 0 - 2 - 0 - 0 - 0 - 67 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SquareFlat - 101 - - - THIRD - 7 - - TRIANGL - 31 - 8 - 32 - 2 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 2 - 2 - 7 - - - 1 - 2.99 - 9 - 1 - no - no - no - no - 8 - 10 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 3 - 2 - -3 - - 23 - 22 - 31 - 31 - 4 - 4 - 16 - 14 - 15 - 13 - 10 - 9 - 0 - 1 - 2 - 3 - 5 - 3 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 76 - 74 - 76 - - 2 - 2 - 2 - 0 - 0 - 99 - 99 - 41 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sus Piano - 102 - - - THIRD - 2 - - TRIANGL - 29 - 19 - 0 - 0 - on - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 2 - 2 - 3 - - - 1 - 1 - 5 - 1.41 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - -3 - 3 - 2 - 3 - - 31 - 31 - 31 - 31 - 9 - 11 - 9 - 17 - 12 - 15 - 14 - 0 - 7 - 4 - 4 - 11 - 7 - 4 - 9 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 69 - 65 - - 1 - 2 - 2 - 2 - 0 - 85 - 63 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 22 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Thump Pno - 103 - - - FIFTH - 2 - - TRIANGL - 26 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 5 - 2 - - - 2 - 7.67 - 5.5 - 3.43 - no - no - no - no - 8 - 15 - 16 - 15 - - W1 - W1 - W1 - W1 - 3 - 3 - -3 - -3 - - 29 - 31 - 29 - 31 - 16 - 14 - 16 - 15 - 10 - 10 - 14 - 12 - 10 - 10 - 14 - 10 - 8 - 9 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 79 - 84 - 80 - - 1 - 0 - 1 - 0 - 0 - 26 - 0 - 39 - - - 12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Toy Piano - 104 - - - FIFTH - 2 - - TRIANGL - 26 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 5 - 2 - - - 2 - 7.67 - 5.5 - 3.43 - no - no - no - no - 8 - 15 - 16 - 15 - - W1 - W1 - W1 - W1 - 3 - 3 - -3 - -3 - - 29 - 31 - 29 - 31 - 16 - 14 - 16 - 15 - 13 - 13 - 14 - 12 - 13 - 10 - 14 - 13 - 8 - 9 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 79 - 84 - 80 - - 1 - 0 - 1 - 0 - 0 - 26 - 0 - 39 - - - 12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Toy Piano* - 105 - - - FOURTH - 0 - - TRIANGL - 25 - 25 - 60 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 3 - 1 - 2 - - - 1.49 - 3 - 0.75 - 4.64 - no - no - no - yes - 9 - 8 - 12 - 19 - - W1 - W1 - W2 - W8 - 0 - 1 - 0 - 0 - - 22 - 23 - 27 - 31 - 8 - 11 - 10 - 20 - 0 - 0 - 0 - 0 - 10 - 10 - 16 - 10 - 6 - 11 - 1 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 78 - 80 - 94 - - 2 - 3 - 1 - 3 - 31 - 88 - 94 - 0 - - - -19 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Upright * - 106 - - - THIRD - 3 - - TRIANGL - 30 - 0 - 6 - 2 - off - - - 4 - 0 - on - on - on - on - 0 - 0 - 0 - 0 - 2 - 3 - 5 - 2 - - - 1 - 1 - 8 - 1.94 - no - no - no - yes - 8 - 8 - 8 - 50 - - W1 - W2 - W1 - W1 - 0 - 3 - -3 - 1 - - 25 - 28 - 27 - 22 - 7 - 14 - 19 - 29 - 5 - 15 - 15 - 12 - 4 - 3 - 1 - 18 - 6 - 5 - 2 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 79 - 57 - 66 - - 2 - 2 - 3 - 0 - 10 - 20 - 99 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Upright - 107 - - - THIRD - 7 - - TRIANGL - 27 - 15 - 10 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 3 - 2 - 2 - - - 0.5 - 0.5 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 3 - -3 - -3 - - 31 - 31 - 31 - 7 - 14 - 8 - 28 - 1 - 13 - 13 - 14 - 13 - 5 - 5 - 3 - 0 - 6 - 7 - 7 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 80 - 76 - - 1 - 1 - 2 - 2 - 0 - 0 - 19 - 22 - - - -12 - POLY - 4 - FINGER - 0 - POR - 99 - 0 - 0 - 75 - 0 - 18 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - UprightBas - 108 - - - THIRD - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 3 - 4 - - - 1 - 1 - 5 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -3 - 2 - -2 - - 19 - 19 - 19 - 19 - 2 - 2 - 2 - 2 - 12 - 12 - 12 - 12 - 1 - 1 - 1 - 1 - 4 - 4 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 89 - 74 - 65 - - 3 - 2 - 3 - 3 - 0 - 69 - 72 - 72 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Uprt piano - 109 - - - THIRD - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 4 - 2 - 1 - - - 1 - 4 - 11 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W3 - W1 - 0 - 0 - -3 - 2 - - 26 - 23 - 25 - 31 - 6 - 7 - 5 - 0 - 11 - 11 - 10 - 9 - 3 - 3 - 3 - 4 - 6 - 4 - 3 - 3 - VOF - VOF - V24 - V48 - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 69 - 70 - 74 - - 2 - 2 - 3 - 3 - 0 - 10 - 65 - 26 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - WiredPiano - 110 - - - FIFTH - 6 - - TRIANGL - 25 - 0 - 7 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 4 - 4 - 4 - - - 0.5 - 1 - 0.5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - -3 - 0 - - 31 - 31 - 31 - 31 - 9 - 5 - 9 - 12 - 0 - 15 - 0 - 3 - 0 - 7 - 0 - 7 - 8 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 80 - 99 - 77 - - 1 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - - - 12 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Wood Piano - 111 - - - FOURTH - 6 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 3 - 0 - - - 1 - 1 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 3 - -3 - 3 - - 19 - 21 - 22 - 29 - 29 - 3 - 15 - 23 - 10 - 14 - 15 - 10 - 1 - 0 - 0 - 2 - 3 - 7 - 2 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 78 - 86 - 78 - - 3 - 2 - 2 - 2 - 12 - 53 - 79 - 7 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - britegrand - 112 - - - FIFTH - 2 - - TRIANGL - 28 - 29 - 7 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 3 - 3 - 3 - - - 1 - 1 - 3 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 3 - - 31 - 31 - 31 - 31 - 18 - 1 - 3 - 17 - 10 - 0 - 15 - 10 - 8 - 0 - 5 - 15 - 8 - 11 - 8 - 14 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 90 - 90 - 82 - - 0 - 2 - 0 - 0 - 0 - 67 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - callipiano - 113 - - - FIRST - 2 - - TRIANGL - 28 - 29 - 16 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 4 - 4 - 4 - - - 1 - 1 - 0.5 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 3 - - 31 - 31 - 31 - 31 - 18 - 1 - 5 - 17 - 10 - 0 - 14 - 10 - 8 - 0 - 5 - 15 - 8 - 11 - 8 - 14 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 90 - 90 - 82 - - 0 - 2 - 0 - 0 - 0 - 67 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - flatfunk - 114 - - - FIFTH - 7 - - TRIANGL - 28 - 29 - 16 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 3 - 3 - 3 - - - 1 - 1 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 3 - - 31 - 31 - 31 - 31 - 18 - 9 - 9 - 5 - 10 - 0 - 14 - 10 - 8 - 0 - 5 - 0 - 8 - 11 - 8 - 14 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 77 - 92 - 89 - - 0 - 2 - 0 - 0 - 0 - 67 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - fuzzbass - 115 - - - FIFTH - 7 - - TRIANGL - 28 - 29 - 6 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 3 - 3 - 3 - - - 0.5 - 1 - 2 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 3 - - 31 - 31 - 31 - 31 - 18 - 9 - 9 - 14 - 10 - 0 - 14 - 12 - 8 - 0 - 5 - 1 - 8 - 11 - 8 - 14 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 77 - 89 - 90 - - 0 - 2 - 0 - 0 - 0 - 67 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - metlmarimb - 116 - - - FIRST - 7 - - TRIANGL - 30 - 9 - 4 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 0 - 0 - 3 - - - 2 - 1 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 1 - 0 - 0 - - 31 - 31 - 31 - 31 - 28 - 11 - 6 - 2 - 10 - 12 - 1 - 0 - 4 - 0 - 0 - 3 - 9 - 9 - 9 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 60 - 75 - 84 - - 0 - 0 - 0 - 3 - 0 - 0 - 0 - 14 - - - -12 - POLY - 2 - FINGER - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - mildfilter - 117 - - - FIFTH - 7 - - TRIANGL - 28 - 29 - 16 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 7 - 1 - 7 - - - 1 - 1 - 2 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 3 - - 31 - 31 - 31 - 31 - 18 - 9 - 9 - 7 - 10 - 0 - 14 - 10 - 8 - 0 - 5 - 0 - 8 - 11 - 8 - 14 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 77 - 89 - 98 - - 0 - 2 - 0 - 0 - 0 - 67 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - phaseharp - 118 - - - FIFTH - 7 - - TRIANGL - 28 - 29 - 16 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 3 - 3 - 3 - - - 1 - 1 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 3 - - 31 - 31 - 31 - 19 - 18 - 9 - 9 - 16 - 10 - 0 - 14 - 10 - 8 - 0 - 5 - 0 - 8 - 11 - 8 - 14 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 77 - 89 - 84 - - 0 - 2 - 0 - 0 - 0 - 67 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - pizzapiano - 119 - - - FIFTH - 7 - - TRIANGL - 28 - 29 - 16 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 3 - 3 - 3 - - - 1 - 3 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 3 - - 31 - 25 - 31 - 6 - 18 - 2 - 9 - 5 - 10 - 0 - 14 - 10 - 8 - 0 - 5 - 0 - 8 - 11 - 8 - 14 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 87 - 89 - 82 - - 0 - 2 - 0 - 0 - 0 - 67 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - stringback - 120 - - - - Rhodes - 4 - - FIRST - 7 - - TRIANGL - 20 - 0 - 0 - 16 - off - - - 6 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 5 - 1 - - - 1 - 1 - 2 - 25.95 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 0 - 0 - 0 - 3 - - 31 - 31 - 31 - 31 - 18 - 18 - 18 - 31 - 14 - 14 - 14 - 15 - 6 - 5 - 6 - 15 - 8 - 7 - 8 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 88 - 74 - 43 - - 1 - 1 - 1 - 0 - 0 - 78 - 82 - 0 - - - -12 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Rhodes...1 - 0 - - - FIFTH - 0 - - TRIANGL - 34 - 33 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 1 - 5 - 1 - - - 1 - 14 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 28 - 28 - 28 - 28 - 7 - 9 - 4 - 4 - 11 - 12 - 12 - 12 - 7 - 6 - 0 - 0 - 8 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 55 - 96 - 87 - - 0 - 1 - 2 - 3 - 0 - 78 - 82 - 0 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Rhodes...2 - 1 - - - FIFTH - 6 - - TRIANGL - 20 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 2 - - - 1 - 16.96 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 28 - 28 - 28 - 28 - 31 - 21 - 4 - 4 - 11 - 12 - 12 - 12 - 7 - 12 - 0 - 0 - 4 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 99 - 95 - 71 - - 1 - 1 - 0 - 0 - 0 - 78 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Rhodes...3 - 2 - - - SEVENTH - 6 - - TRIANGL - 20 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 5 - 3 - - - 2 - 16.96 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - 0 - 0 - 0 - 0 - - 28 - 28 - 28 - 28 - 31 - 21 - 4 - 4 - 11 - 12 - 12 - 12 - 7 - 12 - 0 - 0 - 4 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 88 - 90 - 72 - - 1 - 1 - 0 - 0 - 0 - 78 - 0 - 0 - - - -12 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Rhodes...4 - 3 - - - FIFTH - 6 - - TRIANGL - 19 - 0 - 0 - 36 - off - - - 6 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 5 - 4 - 3 - - - 1 - 14 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 0 - -3 - 3 - - 28 - 28 - 28 - 28 - 7 - 9 - 6 - 9 - 11 - 10 - 12 - 5 - 7 - 5 - 6 - 6 - 7 - 11 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 97 - 95 - 82 - - 1 - 1 - 1 - 1 - 0 - 78 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Rhodes...5 - 4 - - - SEVENTH - 4 - - TRIANGL - 19 - 0 - 0 - 36 - off - - - 6 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 3 - - - 1 - 12 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 15 - 13 - 6 - 3 - 13 - 13 - 13 - 13 - 9 - 10 - 8 - 3 - 7 - 6 - 7 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 85 - 90 - 81 - - 1 - 1 - 0 - 3 - 0 - 78 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Rhodes...6 - 5 - - - SEVENTH - 7 - - TRIANGL - 20 - 10 - 0 - 57 - on - - - 0 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 4 - 2 - 4 - 1 - - - 1 - 0.5 - 4 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 1 - 3 - 3 - - 25 - 25 - 25 - 25 - 7 - 10 - 7 - 10 - 7 - 2 - 7 - 1 - 9 - 9 - 9 - 9 - 5 - 5 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 61 - - 1 - 1 - 1 - 2 - 19 - 0 - 19 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 21 - 39 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Rhodes...7 - 6 - - - SEVENTH - 7 - - TRIANGL - 20 - 10 - 0 - 57 - on - - - 0 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 2 - - - 1 - 12 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 1 - 3 - 3 - - 28 - 28 - 28 - 28 - 15 - 15 - 6 - 9 - 11 - 11 - 13 - 13 - 9 - 10 - 6 - 0 - 7 - 5 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 95 - 91 - 76 - - 0 - 2 - 0 - 3 - 19 - 92 - 19 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 21 - 39 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Rhodes...8 - 7 - - - SEVENTH - 0 - - TRIANGL - 25 - 33 - 0 - 44 - off - - - 0 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 6 - 3 - 6 - 1 - - - 1 - 14 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 28 - 28 - 28 - 28 - 7 - 9 - 4 - 4 - 11 - 12 - 12 - 12 - 7 - 6 - 0 - 0 - 8 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 66 - 99 - 84 - - 0 - 1 - 2 - 3 - 0 - 78 - 82 - 0 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Rhodes...9 - 8 - - - EIGHTH - 0 - - TRIANGL - 25 - 33 - 0 - 44 - off - - - 0 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 4 - 2 - - - 1 - 12 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W3 - 0 - 0 - 0 - 0 - - 28 - 28 - 28 - 28 - 7 - 9 - 4 - 4 - 11 - 12 - 12 - 12 - 7 - 6 - 0 - 0 - 8 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 87 - 99 - 91 - - 0 - 3 - 2 - 3 - 0 - 78 - 82 - 0 - - - 0 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Rhodes..10 - 9 - - - FIFTH - 7 - - TRIANGL - 34 - 33 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 4 - 3 - - - 1 - 8 - 1 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 3 - - 31 - 31 - 31 - 31 - 18 - 18 - 18 - 31 - 14 - 14 - 14 - 15 - 6 - 5 - 6 - 15 - 8 - 11 - 8 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 69 - 69 - 52 - - 0 - 0 - 0 - 1 - 0 - 78 - 82 - 0 - - - -12 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Rhodes..11 - 10 - - - EIGHTH - 6 - - TRIANGL - 19 - 0 - 0 - 36 - off - - - 6 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 6 - 5 - 4 - 4 - - - 1 - 12 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - -3 - 3 - - 26 - 26 - 26 - 26 - 31 - 21 - 4 - 4 - 11 - 12 - 12 - 12 - 7 - 12 - 0 - 0 - 4 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 98 - 99 - 89 - - 1 - 1 - 0 - 0 - 0 - 78 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Rhodes..12 - 11 - - - FOURTH - 0 - - TRIANGL - 19 - 0 - 0 - 36 - off - - - 6 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 6 - 5 - 4 - - - 1 - 10 - 1 - 11 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 15 - 13 - 6 - 3 - 13 - 13 - 13 - 13 - 5 - 7 - 4 - 2 - 7 - 6 - 7 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 69 - 54 - 61 - - 0 - 2 - 0 - 3 - 0 - 50 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Rhodes..13 - 12 - - - FIFTH - 0 - - TRIANGL - 20 - 22 - 7 - 12 - off - - - 4 - 2 - off - off - on - on - 0 - 0 - 0 - 0 - 7 - 1 - 6 - 7 - - - 5.49 - 14.91 - 0.5 - 0.5 - no - yes - no - no - 16 - 72 - 8 - 8 - - W5 - W6 - W1 - W4 - -3 - 0 - 0 - 3 - - 31 - 31 - 31 - 31 - 21 - 24 - 25 - 9 - 13 - 12 - 15 - 10 - 10 - 2 - 4 - 8 - 5 - 6 - 5 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 87 - 89 - 99 - 99 - - 2 - 1 - 2 - 0 - 7 - 0 - 4 - 43 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 51 - 47 - 39 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - RatRhodes - 13 - - - - Synthesizer1 - 5 - - FIFTH - 6 - - TRIANGL - 42 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 4 - - - 1 - 5 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -1 - 1 - 2 - 0 - - 6 - 6 - 18 - 5 - 6 - 3 - 1 - 6 - 11 - 13 - 14 - 10 - 9 - 12 - 6 - 7 - 6 - 6 - 6 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 68 - 99 - 82 - - 0 - 1 - 0 - 1 - 0 - 0 - 0 - 35 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgSynt.1 - 0 - - - FIFTH - 7 - - TRIANGL - 42 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 6 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W3 - 0 - 3 - 0 - 0 - - 31 - 15 - 31 - 31 - 18 - 3 - 31 - 2 - 14 - 14 - 15 - 4 - 1 - 3 - 0 - 7 - 9 - 8 - 15 - 12 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 95 - 95 - 86 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 92 - - - -24 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgSynt.2 - 1 - - - FIFTH - 6 - - TRIANGL - 42 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 7 - 3 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W2 - W3 - W2 - 0 - 3 - 0 - 0 - - 31 - 15 - 31 - 31 - 18 - 3 - 31 - 2 - 14 - 14 - 15 - 4 - 1 - 3 - 0 - 7 - 9 - 8 - 15 - 12 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 99 - 99 - 89 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 92 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgSynt.3 - 2 - - - FIFTH - 7 - - TRIANGL - 42 - 0 - 0 - 0 - on - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 4 - - - 1 - 2 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W2 - -3 - -3 - 2 - 2 - - 27 - 18 - 31 - 18 - 9 - 4 - 18 - 9 - 10 - 12 - 14 - 10 - 12 - 3 - 7 - 7 - 9 - 9 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 84 - 81 - 99 - 81 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 92 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgSynt.4 - 3 - - - FIFTH - 6 - - TRIANGL - 35 - 0 - 2 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 6 - 5 - 4 - - - 1 - 3 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W3 - W1 - 0 - 0 - 1 - -1 - - 30 - 30 - 31 - 27 - 9 - 4 - 9 - 15 - 14 - 9 - 14 - 13 - 7 - 6 - 7 - 15 - 10 - 12 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 77 - 97 - 82 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgSynt.5 - 4 - - - FIFTH - 5 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 5 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W3 - W3 - W1 - -2 - 2 - 0 - 0 - - 31 - 31 - 31 - 31 - 9 - 15 - 31 - 2 - 9 - 15 - 15 - 4 - 1 - 3 - 0 - 7 - 9 - 8 - 15 - 12 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 84 - 99 - 83 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 92 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgSynt.6 - 5 - - - FIFTH - 5 - - TRIANGL - 32 - 0 - 0 - 71 - off - - - 3 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 5 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W3 - W1 - -3 - 3 - -3 - -3 - - 31 - 31 - 24 - 31 - 21 - 10 - 7 - 6 - 14 - 7 - 5 - 5 - 6 - 6 - 4 - 3 - 8 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 82 - 99 - 93 - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 92 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgSynt.7 - 6 - - - FIFTH - 5 - - TRIANGL - 32 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 6 - 6 - 4 - - - 2 - 1 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - 0 - 0 - 3 - 3 - - 31 - 18 - 31 - 18 - 22 - 12 - 22 - 12 - 13 - 10 - 13 - 7 - 0 - 7 - 0 - 7 - 9 - 9 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 91 - 86 - 88 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgSynt.8 - 7 - - - FIFTH - 5 - - TRIANGL - 38 - 33 - 17 - 0 - off - - - 2 - 0 - on - off - off - off - 0 - 0 - 0 - 0 - 7 - 4 - 5 - 3 - - - 1 - 1 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W3 - W2 - W5 - 3 - -1 - 3 - 3 - - 31 - 15 - 31 - 15 - 21 - 12 - 21 - 12 - 13 - 12 - 13 - 12 - 5 - 9 - 5 - 9 - 5 - 4 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 89 - 86 - 90 - - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgSynt.9 - 8 - - - FIFTH - 7 - - TRIANGL - 38 - 33 - 32 - 0 - off - - - 5 - 0 - on - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 5 - 3 - - - 1 - 5 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W2 - W1 - 3 - -1 - -3 - -3 - - 31 - 15 - 15 - 15 - 21 - 4 - 21 - 13 - 13 - 12 - 14 - 6 - 6 - 18 - 6 - 18 - 5 - 9 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 74 - 99 - 82 - - 1 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgSynt10 - 9 - - - FIFTH - 7 - - TRIANGL - 38 - 28 - 32 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 6 - 4 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W5 - W1 - W1 - 3 - -1 - -3 - -3 - - 16 - 16 - 17 - 19 - 21 - 13 - 6 - 3 - 14 - 6 - 14 - 6 - 6 - 18 - 6 - 18 - 8 - 7 - 8 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 86 - 99 - 80 - - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgSynt11 - 10 - - - FIFTH - 5 - - TRIANGL - 38 - 33 - 32 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 7 - 4 - - - 1 - 4 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 1 - -1 - -3 - -3 - - 25 - 7 - 16 - 16 - 4 - 4 - 5 - 3 - 15 - 13 - 14 - 6 - 3 - 4 - 6 - 18 - 7 - 7 - 8 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 86 - 99 - 87 - - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgSynt12 - 11 - - - SIXTH - 5 - - TRIANGL - 37 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 4 - 3 - - - 0.5 - 0.5 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W2 - W1 - -1 - -1 - 1 - 0 - - 31 - 31 - 31 - 31 - 22 - 12 - 12 - 9 - 15 - 11 - 11 - 15 - 2 - 6 - 5 - 6 - 10 - 10 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 99 - 99 - 89 - - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgSynt13 - 12 - - - FIFTH - 5 - - TRIANGL - 28 - 0 - 5 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 3 - - - 1 - 4 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - 2 - 2 - -2 - -2 - - 31 - 31 - 31 - 31 - 6 - 6 - 7 - 6 - 9 - 9 - 7 - 7 - 0 - 0 - 0 - 0 - 4 - 4 - 7 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 84 - 99 - 88 - - 1 - 1 - 1 - 1 - 0 - 19 - 11 - 27 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgSynt14 - 13 - - - FIFTH - 5 - - TRIANGL - 28 - 0 - 5 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 4 - 3 - - - 0.5 - 1 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - -2 - -2 - -2 - -2 - - 31 - 31 - 31 - 31 - 21 - 21 - 21 - 9 - 15 - 15 - 15 - 3 - 6 - 6 - 6 - 1 - 9 - 9 - 9 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 87 - 99 - 99 - - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 27 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AnlgSynt15 - 14 - - - SIXTH - 5 - - TRIANGL - 33 - 0 - 56 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 3 - - - 2 - 4 - 6 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 28 - 31 - 31 - 31 - 6 - 3 - 8 - 8 - 7 - 6 - 12 - 9 - 4 - 0 - 0 - 1 - 4 - 5 - 4 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 89 - 99 - 85 - - 1 - 1 - 1 - 0 - 0 - 45 - 67 - 0 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Ariesynth1 - 15 - - - THIRD - 7 - - TRIANGL - 33 - 0 - 56 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 5 - 5 - 3 - - - 1 - 0.5 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W2 - W1 - 0 - 0 - 0 - 0 - - 28 - 31 - 31 - 31 - 6 - 3 - 8 - 8 - 7 - 6 - 12 - 9 - 4 - 0 - 0 - 1 - 5 - 5 - 4 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 82 - 85 - 83 - - 1 - 2 - 1 - 0 - 0 - 45 - 67 - 0 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Ariesynth2 - 16 - - - THIRD - 7 - - TRIANGL - 33 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 26 - 31 - 31 - 31 - 12 - 7 - 4 - 13 - 14 - 12 - 13 - 13 - 0 - 0 - 0 - 8 - 8 - 4 - 2 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 66 - 66 - 76 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - MONO - 2 - FINGER - 31 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - A.R.P. * - 17 - - - SIXTH - 5 - - TRIANGL - 20 - 0 - 54 - 0 - on - - - 2 - 0 - off - off - off - off - 1 - 0 - 0 - 0 - 5 - 5 - 4 - 4 - - - 1 - 5 - 4 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W1 - 1 - -1 - 2 - -2 - - 16 - 31 - 31 - 29 - 31 - 13 - 13 - 22 - 15 - 0 - 0 - 14 - 0 - 16 - 16 - 0 - 11 - 5 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 63 - 58 - 98 - - 0 - 2 - 2 - 0 - 0 - 14 - 12 - 10 - - - 0 - POLY - 4 - FULL - 1 - POR - 99 - 0 - 0 - 25 - 51 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - ARP 2500 - 18 - - - SIXTH - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 4 - 0 - off - off - off - off - 7 - 4 - 3 - 0 - 5 - 5 - 5 - 5 - - - 2 - 3 - 3 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W2 - W1 - 0 - 0 - 1 - 1 - - 16 - 16 - 16 - 22 - 5 - 5 - 5 - 8 - 3 - 3 - 3 - 3 - 5 - 6 - 5 - 2 - 8 - 8 - 8 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 96 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 5 - FULL - 1 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - ARP 2600.1 - 19 - - - EIGHTH - 7 - - TRIANGL - 20 - 0 - 54 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 3 - - - 1 - 5 - 6 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W6 - 1 - -1 - 2 - -2 - - 16 - 31 - 31 - 29 - 31 - 13 - 13 - 22 - 15 - 0 - 0 - 14 - 0 - 16 - 16 - 0 - 11 - 5 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 60 - 53 - 99 - - 0 - 2 - 2 - 0 - 0 - 14 - 12 - 10 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 25 - 51 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - ARP 2600.2 - 20 - - - FIFTH - 5 - - TRIANGL - 34 - 0 - 11 - 0 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 6 - 4 - - - 1 - 1 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W2 - 2 - -2 - 2 - -2 - - 24 - 24 - 24 - 24 - 8 - 8 - 8 - 8 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 92 - 97 - 92 - - 2 - 2 - 2 - 2 - 20 - 20 - 20 - 20 - - - -12 - MONO - 7 - FINGER - 1 - POR - 99 - 0 - 0 - 99 - 99 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - ARP Axxe.1 - 21 - - - FIFTH - 4 - - TRIANGL - 26 - 0 - 0 - 0 - on - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 5 - 5 - - - 1 - 2 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W4 - W1 - 3 - -2 - 3 - 0 - - 15 - 21 - 24 - 25 - 4 - 18 - 7 - 5 - 13 - 13 - 13 - 9 - 3 - 3 - 5 - 2 - 7 - 4 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 84 - 99 - 89 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - MONO - 6 - FINGER - 2 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - ARP Axxe.2 - 22 - - - SIXTH - 6 - - TRIANGL - 35 - 8 - 16 - 6 - off - - - 5 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 6 - 5 - 6 - 4 - - - 2 - 4 - 8 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - 0 - 1 - 1 - -1 - - 11 - 13 - 12 - 31 - 31 - 7 - 31 - 19 - 15 - 6 - 15 - 14 - 6 - 14 - 0 - 0 - 8 - 6 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 78 - - 0 - 0 - 0 - 0 - 10 - 14 - 82 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - ARP Omni.1 - 23 - - - FIFTH - 2 - - TRIANGL - 34 - 5 - 12 - 0 - on - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 3 - 5 - 5 - - - 2 - 2 - 2 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - -2 - 2 - -3 - 3 - - 10 - 11 - 10 - 11 - 31 - 3 - 31 - 3 - 15 - 4 - 15 - 4 - 0 - 30 - 1 - 30 - 5 - 5 - 8 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 91 - 75 - 87 - 80 - - 0 - 1 - 1 - 0 - 37 - 35 - 21 - 86 - - - -12 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - ARP Omni.2 - 24 - - - THIRD - 7 - - TRIANGL - 31 - 0 - 4 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 1 - 0 - - - 1 - 2 - 9 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W7 - W5 - W1 - W1 - 0 - 0 - 1 - 0 - - 17 - 17 - 25 - 25 - 19 - 1 - 4 - 5 - 15 - 12 - 10 - 3 - 5 - 5 - 5 - 1 - 4 - 4 - 5 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 66 - 72 - 72 - - 2 - 1 - 1 - 1 - 0 - 60 - 32 - 44 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Axel F - 25 - - - FIFTH - 6 - - TRIANGL - 38 - 33 - 32 - 71 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 4 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 3 - -1 - -3 - -3 - - 21 - 21 - 19 - 21 - 21 - 4 - 21 - 13 - 13 - 12 - 14 - 14 - 6 - 20 - 3 - 2 - 6 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 95 - 99 - 88 - - 1 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Axel F...1 - 26 - - - FIFTH - 5 - - TRIANGL - 38 - 33 - 32 - 43 - off - - - 1 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 6 - 3 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W3 - W4 - W2 - 3 - -1 - -3 - -3 - - 21 - 21 - 21 - 24 - 21 - 4 - 21 - 21 - 13 - 12 - 14 - 14 - 6 - 20 - 3 - 2 - 6 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 95 - 99 - 90 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - -12 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Axel F...2 - 27 - - - FIRST - 0 - - SHOLD - 99 - 0 - 23 - 99 - off - - - 7 - 3 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - - - 1 - 3 - 6 - 23.55 - no - no - no - yes - 8 - 8 - 8 - 16 - - W5 - W1 - W1 - W5 - 0 - -3 - 3 - -3 - - 20 - 20 - 31 - 31 - 27 - 31 - 11 - 21 - 15 - 13 - 0 - 0 - 11 - 0 - 0 - 0 - 7 - 1 - 1 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 74 - 70 - 67 - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BadSample* - 28 - - - THIRD - 7 - - TRIANGL - 35 - 0 - 5 - 48 - off - - - 6 - 0 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 6 - 6 - 5 - - - 2 - 0.5 - 8 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - 1 - -1 - 1 - -1 - - 16 - 13 - 28 - 5 - 5 - 8 - 0 - 9 - 15 - 13 - 15 - 13 - 0 - 1 - 0 - 0 - 5 - 5 - 4 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 84 - 78 - 47 - 84 - - 1 - 1 - 0 - 1 - 0 - 0 - 0 - 32 - - - -24 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Beta.....1 - 29 - - - FOURTH - 5 - - TRIANGL - 35 - 0 - 5 - 48 - off - - - 6 - 0 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 3 - - - 2 - 1 - 4 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - 1 - -1 - 1 - -1 - - 16 - 13 - 28 - 9 - 4 - 3 - 0 - 9 - 7 - 7 - 15 - 13 - 0 - 0 - 0 - 0 - 5 - 5 - 4 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 86 - 86 - 69 - 88 - - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 32 - - - -24 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Beta.....2 - 30 - - - THIRD - 0 - - TRIANGL - 26 - 22 - 3 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 4 - 2 - - - 4 - 6 - 12 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W4 - W4 - W3 - 0 - 1 - -2 - -3 - - 31 - 31 - 31 - 31 - 16 - 25 - 5 - 0 - 14 - 12 - 0 - 0 - 8 - 8 - 0 - 14 - 7 - 10 - 2 - 5 - VOF - V24 - V48 - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 92 - 82 - 84 - - 1 - 1 - 2 - 2 - 0 - 0 - 94 - 24 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 40 - 0 - 30 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BigWash - 31 - - - FIFTH - 4 - - TRIANGL - 26 - 0 - 0 - 0 - on - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 3 - 3 - - - 1 - 4 - 1 - 14 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 3 - -2 - 3 - 0 - - 15 - 21 - 24 - 31 - 4 - 22 - 25 - 15 - 13 - 13 - 13 - 9 - 3 - 3 - 7 - 31 - 7 - 4 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 99 - 68 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Chroma...1 - 32 - - - FIFTH - 5 - - TRIANGL - 33 - 23 - 2 - 13 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 6 - 2 - - - 1 - 5 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - 0 - 0 - 0 - 1 - - 31 - 31 - 19 - 31 - 9 - 19 - 21 - 19 - 12 - 7 - 13 - 10 - 11 - 31 - 6 - 0 - 6 - 1 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 89 - 92 - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Chroma...2 - 33 - - - FIFTH - 6 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 4 - 4 - - - 1 - 14 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 21 - 27 - 10 - 10 - 6 - 6 - 13 - 7 - 15 - 15 - 0 - 0 - 3 - 3 - 9 - 9 - 9 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 65 - 92 - 84 - - 1 - 3 - 2 - 2 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Chroma...3 - 34 - - - SIXTH - 0 - - SHOLD - 44 - 0 - 99 - 99 - off - - - 3 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 3 - - - 1 - 4 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 3 - -3 - -3 - - 15 - 16 - 16 - 16 - 3 - 9 - 9 - 9 - 15 - 15 - 15 - 15 - 1 - 4 - 4 - 4 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 72 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - 12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Crazy 6502 - 35 - - - SECOND - 7 - - TRIANGL - 29 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 1 - 2 - - - 1 - 1 - 10 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - -3 - 3 - -3 - - 31 - 31 - 31 - 31 - 31 - 17 - 19 - 12 - 15 - 13 - 13 - 12 - 8 - 2 - 14 - 5 - 6 - 5 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 69 - 63 - 83 - - 2 - 0 - 0 - 1 - 0 - 30 - 50 - 23 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - DigiAnnie - 36 - - - FIFTH - 6 - - TRIANGL - 0 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 6 - 5 - - - 0.5 - 4 - 0.5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W4 - W1 - W1 - 0 - 0 - 3 - 3 - - 18 - 23 - 25 - 13 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 1 - 0 - 0 - 1 - 2 - 3 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 73 - 99 - 88 - - 3 - 0 - 2 - 3 - 20 - 10 - 8 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - <> DS 1 <> - 37 - - - FIFTH - 6 - - TRIANGL - 32 - 0 - 10 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 4 - 4 - 4 - - - 5 - 1 - 0.5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 3 - 3 - - 18 - 23 - 25 - 13 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 1 - 0 - 0 - 1 - 2 - 3 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 59 - 99 - 79 - - 3 - 0 - 2 - 3 - 20 - 10 - 8 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - < DS 11 > - 38 - - - FIFTH - 7 - - TRIANGL - 25 - 0 - 12 - 0 - on - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 6 - 4 - 5 - - - 1 - 1 - 0.5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W3 - W1 - 0 - -3 - 0 - 3 - - 19 - 15 - 19 - 21 - 5 - 7 - 7 - 0 - 14 - 11 - 14 - 7 - 0 - 1 - 0 - 1 - 6 - 5 - 6 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 82 - 96 - 86 - - 1 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - EML Synth1 - 39 - - - FIFTH - 7 - - TRIANGL - 25 - 0 - 12 - 0 - on - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 5 - 3 - - - 2 - 2 - 0.5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 0 - -3 - 0 - 3 - - 19 - 15 - 19 - 21 - 5 - 7 - 7 - 0 - 14 - 11 - 14 - 7 - 0 - 1 - 0 - 1 - 6 - 5 - 6 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 91 - 96 - 84 - - 1 - 2 - 0 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - EML Synth2 - 40 - - - SEVENTH - 7 - - TRIANGL - 35 - 48 - 0 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 3 - 7 - 2 - - - 2 - 1 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - -2 - 2 - -1 - -2 - - 15 - 15 - 21 - 21 - 0 - 0 - 9 - 9 - 13 - 13 - 13 - 13 - 3 - 3 - 7 - 7 - 6 - 6 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 90 - - 1 - 0 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Explorer.1 - 41 - - - EIGHTH - 6 - - TRIANGL - 23 - 0 - 11 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 5 - - - 1 - 2 - 0.5 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W3 - W1 - 0 - -3 - 3 - -2 - - 19 - 15 - 21 - 21 - 0 - 0 - 9 - 9 - 13 - 13 - 13 - 13 - 3 - 3 - 7 - 7 - 6 - 6 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 82 - 65 - 99 - - 1 - 0 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Explorer.2 - 42 - - - SEVENTH - 7 - - TRIANGL - 23 - 0 - 11 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 4 - 2 - - - 4 - 2 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - -3 - -1 - 2 - 1 - - 15 - 15 - 21 - 21 - 0 - 0 - 9 - 9 - 13 - 13 - 13 - 13 - 4 - 4 - 7 - 7 - 6 - 6 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 81 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Explorer.3 - 43 - - - FIFTH - 0 - - TRIANGL - 33 - 21 - 3 - 5 - on - - - 5 - 3 - on - on - on - on - 0 - 0 - 0 - 0 - 3 - 4 - 3 - 4 - - - 1.5 - 3 - 1.5 - 3 - no - no - no - no - 16 - 8 - 16 - 8 - - W3 - W5 - W3 - W5 - 0 - 0 - -2 - -2 - - 17 - 17 - 17 - 15 - 5 - 12 - 5 - 12 - 15 - 13 - 15 - 13 - 0 - 0 - 0 - 0 - 9 - 10 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 80 - 99 - 80 - - 1 - 0 - 0 - 1 - 0 - 32 - 0 - 32 - - - -7 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 30 - 85 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - FMMelodica - 44 - - - THIRD - 6 - - TRIANGL - 33 - 29 - 14 - 26 - on - - - 5 - 1 - off - on - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 4 - 3 - - - 2 - 2 - 4 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 0 - 0 - 0 - 3 - - 16 - 8 - 6 - 9 - 6 - 31 - 31 - 6 - 14 - 15 - 15 - 14 - 0 - 0 - 0 - 0 - 5 - 2 - 4 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 71 - 60 - 92 - - 1 - 2 - 0 - 0 - 0 - 0 - 78 - 20 - - - -12 - POLY - 8 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Gamma....1 - 45 - - - THIRD - 5 - - TRIANGL - 33 - 29 - 14 - 26 - on - - - 5 - 1 - off - on - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 5 - - - 1 - 2 - 5 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W3 - 0 - 0 - 0 - 3 - - 16 - 12 - 10 - 9 - 6 - 31 - 31 - 6 - 14 - 15 - 15 - 14 - 0 - 0 - 0 - 0 - 5 - 2 - 4 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 59 - 76 - 82 - - 1 - 2 - 0 - 0 - 0 - 0 - 78 - 20 - - - -12 - POLY - 8 - FULL - 1 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Gamma....2 - 46 - - - FIFTH - 5 - - TRIANGL - 38 - 33 - 8 - 71 - off - - - 2 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 3 - - - 8 - 8 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W2 - W2 - -3 - -3 - 3 - 1 - - 11 - 12 - 21 - 13 - 21 - 4 - 4 - 3 - 15 - 12 - 14 - 14 - 12 - 7 - 2 - 9 - 6 - 6 - 5 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 66 - 99 - 82 - - 1 - 1 - 0 - 2 - 0 - 0 - 0 - 10 - - - -24 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - GleeSynth - 47 - - - THIRD - 6 - - TRIANGL - 29 - 8 - 0 - 0 - on - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 2 - 0 - - - 1.5 - 3 - 10.48 - 1.49 - no - no - no - no - 16 - 8 - 9 - 9 - - W5 - W6 - W8 - W6 - 0 - -1 - -2 - 3 - - 21 - 27 - 24 - 17 - 10 - 5 - 7 - 0 - 15 - 14 - 14 - 12 - 0 - 0 - 0 - 0 - 11 - 10 - 8 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 79 - 67 - 68 - - 1 - 1 - 1 - 0 - 0 - 0 - 59 - 0 - - - -19 - POLY - 4 - FULL - 1 - POR - 99 - 0 - 0 - 65 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - HardSync - 48 - - - SIXTH - 6 - - TRIANGL - 34 - 0 - 20 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 4 - 5 - 4 - - - 0.5 - 1 - 4 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 0 - -1 - 1 - 0 - - 8 - 8 - 7 - 8 - 31 - 14 - 4 - 31 - 15 - 1 - 7 - 15 - 1 - 0 - 12 - 0 - 5 - 5 - 6 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 99 - 97 - 88 - - 2 - 0 - 1 - 0 - 0 - 0 - 60 - 99 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Helix....1 - 49 - - - FIFTH - 5 - - TRIANGL - 34 - 0 - 20 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 6 - 5 - 5 - - - 1 - 0.5 - 4 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W2 - W1 - 0 - -1 - 1 - 0 - - 8 - 8 - 7 - 8 - 31 - 7 - 4 - 31 - 15 - 8 - 7 - 15 - 1 - 0 - 12 - 0 - 5 - 5 - 6 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 83 - 97 - 95 - - 2 - 0 - 1 - 0 - 0 - 0 - 60 - 99 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Helix....2 - 50 - - - FIFTH - 5 - - TRIANGL - 27 - 0 - 60 - 99 - off - - - 2 - 1 - off - off - on - on - 0 - 0 - 0 - 0 - 6 - 3 - 5 - 2 - - - 1 - 2 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 16 - 15 - 15 - 24 - 0 - 0 - 0 - 23 - 13 - 13 - 13 - 14 - 3 - 3 - 3 - 27 - 5 - 5 - 5 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 46 - 99 - 57 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 1 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - \ ISAO \ - 51 - - - FIFTH - 7 - - TRIANGL - 33 - 0 - 56 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 5 - 4 - - - 1 - 0.5 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - 0 - 0 - 0 - 0 - - 24 - 24 - 20 - 23 - 8 - 9 - 8 - 5 - 7 - 11 - 12 - 8 - 4 - 0 - 0 - 1 - 4 - 5 - 3 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 96 - 99 - 81 - - 2 - 2 - 3 - 0 - 0 - 45 - 67 - 0 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - JP 4.....1 - 52 - - - FIFTH - 7 - - TRIANGL - 37 - 73 - 15 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 5 - 7 - 3 - - - 0.5 - 4 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W3 - W1 - 2 - 0 - -3 - 3 - - 22 - 22 - 22 - 22 - 21 - 10 - 9 - 8 - 13 - 13 - 15 - 15 - 1 - 10 - 1 - 3 - 6 - 5 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 89 - 84 - 99 - 84 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - JP 4.....2 - 53 - - - FIFTH - 7 - - TRIANGL - 32 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 1 - 2 - 2 - - - 1.49 - 1.49 - 1.51 - 1.51 - no - no - no - no - 9 - 9 - 14 - 14 - - W2 - W4 - W6 - W1 - 3 - -2 - -2 - -1 - - 22 - 31 - 21 - 6 - 14 - 14 - 14 - 10 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 5 - 7 - 3 - 7 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 80 - 99 - 78 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -19 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - Juno Juice - 54 - - - FIFTH - 7 - - TRIANGL - 32 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 1 - 2 - 1 - - - 1.49 - 1.49 - 1.51 - 1.51 - no - no - no - no - 9 - 9 - 14 - 14 - - W2 - W4 - W6 - W3 - 3 - -2 - -2 - -1 - - 22 - 31 - 21 - 31 - 14 - 14 - 14 - 10 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 7 - 3 - 7 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 80 - 99 - 74 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -19 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - Juno Who? - 55 - - - SECOND - 0 - - TRIANGL - 30 - 12 - 15 - 5 - off - - - 5 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 4 - 4 - 7.94 - 11.93 - no - no - no - no - 8 - 8 - 9 - 23 - - W1 - W1 - W1 - W1 - 1 - 2 - 3 - -1 - - 12 - 31 - 31 - 31 - 10 - 0 - 0 - 0 - 14 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 5 - 4 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 65 - 65 - 61 - - 1 - 0 - 0 - 0 - 0 - 25 - 59 - 53 - - - -24 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Jupiter * - 56 - - - FIFTH - 7 - - TRIANGL - 41 - 0 - 5 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 1 - 6 - 2 - - - 1 - 0.5 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W4 - W4 - W1 - 0 - 3 - 3 - 3 - - 24 - 23 - 20 - 27 - 31 - 12 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 6 - 4 - 4 - 13 - 9 - 9 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 86 - 90 - 99 - 79 - - 0 - 2 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - \ Kitaro.1 - 57 - - - FIFTH - 4 - - TRIANGL - 31 - 28 - 20 - 0 - on - - - 3 - 0 - off - off - off - off - 7 - 3 - 3 - 7 - 6 - 5 - 5 - 4 - - - 1 - 1 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 1 - -1 - 1 - -1 - - 31 - 8 - 31 - 31 - 15 - 4 - 15 - 15 - 15 - 15 - 15 - 15 - 9 - 3 - 9 - 9 - 9 - 9 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 99 - 82 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - \ Kitaro.2 - 58 - - - FOURTH - 4 - - TRIANGL - 33 - 29 - 14 - 26 - on - - - 5 - 1 - off - on - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 4 - - - 2 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -1 - 1 - 2 - - 10 - 10 - 10 - 15 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 2 - 2 - 2 - 7 - 5 - 2 - 4 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 67 - 85 - 53 - - 3 - 0 - 1 - 0 - 0 - 0 - 78 - 71 - - - -12 - POLY - 8 - FULL - 10 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Korg 770.1 - 59 - - - SIXTH - 7 - - TRIANGL - 33 - 29 - 14 - 26 - on - - - 5 - 1 - off - on - off - off - 0 - 0 - 0 - 0 - 4 - 6 - 5 - 3 - - - 2 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -1 - 1 - 2 - - 15 - 15 - 15 - 15 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 7 - 8 - 8 - 8 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 98 - 99 - 72 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 71 - - - -12 - MONO - 6 - FINGER - 2 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Korg 770.2 - 60 - - - FOURTH - 7 - - TRIANGL - 30 - 5 - 10 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 5 - 5 - 3 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 18 - 18 - 18 - 13 - 31 - 31 - 31 - 10 - 15 - 15 - 15 - 14 - 0 - 0 - 0 - 7 - 10 - 10 - 10 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 57 - 56 - 79 - - 0 - 0 - 0 - 0 - 1 - 0 - 75 - 77 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Korg 770.3 - 61 - - - FIFTH - 0 - - TRIANGL - 35 - 47 - 25 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 7 - 6 - 4 - - - 1 - 6 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W3 - W1 - -3 - 1 - 3 - -2 - - 31 - 31 - 9 - 11 - 17 - 14 - 6 - 6 - 15 - 9 - 15 - 15 - 8 - 5 - 0 - 4 - 5 - 5 - 5 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 74 - 95 - 65 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Lambda...1 - 62 - - - FIFTH - 6 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 6 - 3 - - - 0.5 - 1 - 1 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W2 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 11 - 11 - 4 - 11 - 12 - 12 - 15 - 12 - 13 - 13 - 9 - 10 - 9 - 9 - 8 - 8 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 84 - 95 - 69 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Lambda...2 - 63 - - - FIFTH - 0 - - TRIANGL - 35 - 47 - 25 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 5 - - - 1 - 6 - 4 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W3 - W5 - -1 - 3 - 0 - -3 - - 31 - 31 - 7 - 7 - 20 - 20 - 16 - 16 - 15 - 9 - 15 - 15 - 8 - 5 - 3 - 3 - 5 - 5 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 77 - 92 - 71 - - 0 - 2 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Lambda...3 - 64 - - - FIFTH - 0 - - TRIANGL - 35 - 47 - 25 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 3 - 6 - 3 - - - 2 - 4 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W3 - W1 - -1 - 3 - 0 - -3 - - 31 - 31 - 7 - 7 - 20 - 20 - 16 - 16 - 15 - 9 - 15 - 15 - 8 - 5 - 3 - 3 - 4 - 4 - 14 - 13 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 77 - 92 - 76 - - 0 - 2 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Lambda...4 - 65 - - - FIFTH - 4 - - TRIANGL - 33 - 35 - 15 - 0 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 7 - 3 - - - 1 - 1 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W3 - W3 - 0 - 3 - 0 - -3 - - 24 - 24 - 5 - 5 - 6 - 6 - 16 - 3 - 9 - 9 - 15 - 8 - 9 - 9 - 3 - 3 - 5 - 5 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 81 - 99 - 85 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Lambda...5 - 66 - - - FIFTH - 6 - - TRIANGL - 35 - 21 - 5 - 99 - off - - - 2 - 1 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 3 - - - 3 - 3 - 3 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W1 - W1 - 0 - 0 - 0 - 0 - - 15 - 7 - 31 - 31 - 13 - 13 - 3 - 31 - 15 - 15 - 12 - 15 - 5 - 4 - 3 - 0 - 15 - 10 - 9 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 89 - 98 - 84 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - LeadSynth1 - 67 - - - FIFTH - 5 - - TRIANGL - 35 - 21 - 5 - 99 - off - - - 2 - 1 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 4 - - - 1 - 1 - 2 - 13 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W6 - W3 - W1 - 0 - 0 - 0 - 0 - - 24 - 27 - 31 - 18 - 9 - 10 - 3 - 21 - 14 - 14 - 12 - 14 - 6 - 9 - 10 - 6 - 10 - 15 - 9 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 92 - 98 - 75 - - 0 - 1 - 2 - 1 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - LeadSynth2 - 68 - - - FIFTH - 5 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 3 - - - 1 - 0.5 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - 2 - 1 - 0 - 3 - - 31 - 31 - 31 - 31 - 31 - 31 - 4 - 3 - 15 - 15 - 15 - 15 - 0 - 10 - 0 - 7 - 15 - 15 - 15 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 91 - 95 - 69 - - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - LeadSynth3 - 69 - - - FIFTH - 5 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 5 - 3 - - - 1 - 0.5 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 2 - 1 - 0 - 3 - - 22 - 28 - 31 - 31 - 31 - 31 - 4 - 3 - 15 - 15 - 15 - 15 - 0 - 3 - 0 - 7 - 15 - 15 - 15 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 91 - 95 - 90 - - 0 - 1 - 0 - 0 - 0 - 44 - 0 - 46 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - LeadSynth4 - 70 - - - FIFTH - 5 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 6 - 3 - - - 4 - 1 - 1 - 11 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - -1 - 1 - 0 - 3 - - 24 - 27 - 24 - 22 - 9 - 9 - 9 - 21 - 14 - 13 - 14 - 14 - 6 - 9 - 4 - 6 - 10 - 15 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 99 - 99 - 74 - - 2 - 1 - 0 - 0 - 1 - 58 - 0 - 42 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - LeadSynth5 - 71 - - - FIFTH - 5 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 5 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 21 - 24 - 21 - 25 - 6 - 16 - 31 - 9 - 12 - 11 - 0 - 7 - 6 - 6 - 28 - 3 - 10 - 7 - 15 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 98 - - 0 - 1 - 0 - 0 - 1 - 58 - 0 - 42 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - LeadSynth6 - 72 - - - FIFTH - 3 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 5 - 3 - - - 1 - 1 - 1 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W4 - W1 - W1 - 0 - 0 - 2 - -1 - - 31 - 24 - 24 - 24 - 6 - 11 - 31 - 15 - 12 - 11 - 15 - 9 - 6 - 9 - 0 - 7 - 10 - 7 - 15 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 87 - - 0 - 0 - 0 - 0 - 1 - 50 - 0 - 66 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - LeadSynth7 - 73 - - - SIXTH - 5 - - TRIANGL - 37 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 4 - 3 - - - 1 - 1 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W7 - W3 - W1 - W3 - 0 - 0 - 0 - 3 - - 31 - 31 - 31 - 30 - 22 - 22 - 22 - 7 - 14 - 14 - 14 - 15 - 0 - 0 - 0 - 5 - 8 - 8 - 8 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 86 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 66 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - LeadSynth8 - 74 - - - FIFTH - 6 - - TRIANGL - 34 - 14 - 19 - 8 - off - - - 5 - 1 - off - on - off - on - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 4 - - - 2 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W2 - W2 - 3 - 3 - -3 - -3 - - 12 - 5 - 12 - 5 - 31 - 7 - 31 - 7 - 15 - 14 - 15 - 14 - 0 - 0 - 0 - 0 - 7 - 5 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 82 - 99 - 76 - - 0 - 0 - 0 - 0 - 10 - 14 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Luna.....1 - 75 - - - FIFTH - 5 - - TRIANGL - 34 - 0 - 15 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 5 - 4 - - - 0.5 - 6 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W2 - 3 - 3 - -3 - -3 - - 12 - 12 - 12 - 8 - 31 - 3 - 31 - 7 - 15 - 8 - 15 - 14 - 0 - 0 - 0 - 0 - 7 - 5 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 64 - 96 - 81 - - 0 - 0 - 0 - 0 - 10 - 14 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Luna.....2 - 76 - - - FIFTH - 6 - - TRIANGL - 34 - 14 - 19 - 8 - off - - - 5 - 1 - off - on - off - on - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 4 - - - 3 - 3 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 3 - 3 - -3 - -3 - - 12 - 12 - 5 - 5 - 31 - 7 - 31 - 7 - 15 - 14 - 15 - 14 - 0 - 0 - 0 - 0 - 7 - 5 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 75 - 82 - 99 - 75 - - 0 - 0 - 0 - 0 - 10 - 14 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Luna.....3 - 77 - - - FIRST - 6 - - TRIANGL - 30 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 1 - 1 - 1 - - - 1 - 1 - 2 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W2 - 0 - -1 - 0 - 1 - - 16 - 31 - 31 - 16 - 31 - 4 - 11 - 6 - 15 - 15 - 15 - 14 - 0 - 0 - 0 - 0 - 10 - 5 - 10 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 81 - 53 - 80 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Lyrisyn - 78 - - - SIXTH - 6 - - TRIANGL - 34 - 0 - 20 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 0.5 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -1 - 1 - 3 - - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 99 - 97 - 83 - - 0 - 0 - 0 - 0 - 0 - 0 - 60 - 99 - - - -12 - MONO - 6 - FINGER - 1 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - MaxiKorg.1 - 79 - - - FIFTH - 6 - - TRIANGL - 30 - 0 - 14 - 53 - on - - - 5 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 4 - 3 - - - 2 - 1 - 2 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -1 - 1 - 3 - - 21 - 23 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 8 - 7 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 75 - 97 - 84 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 6 - FINGER - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - MaxiKorg.2 - 80 - - - SECOND - 4 - - TRIANGL - 36 - 0 - 4 - 0 - on - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 6 - 5 - - - 2 - 1 - 2 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 2 - 1 - -2 - 2 - - 23 - 20 - 21 - 20 - 5 - 5 - 4 - 3 - 2 - 15 - 13 - 13 - 0 - 1 - 0 - 1 - 10 - 5 - 10 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 86 - 80 - 75 - - 0 - 1 - 1 - 1 - 39 - 0 - 17 - 39 - - - -12 - MONO - 2 - FINGER - 17 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - MicroMoog1 - 81 - - - FIRST - 7 - - TRIANGL - 36 - 0 - 4 - 0 - on - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 4 - 5 - 2 - - - 2 - 0.5 - 2 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W2 - W1 - W1 - 0 - 0 - 0 - 0 - - 23 - 20 - 21 - 20 - 2 - 2 - 1 - 1 - 2 - 15 - 13 - 13 - 0 - 1 - 0 - 1 - 5 - 5 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 78 - 88 - 77 - - 0 - 0 - 0 - 0 - 39 - 0 - 17 - 39 - - - -12 - MONO - 2 - FULL - 17 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - MicroMoog2 - 82 - - - THIRD - 7 - - TRIANGL - 33 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1.5 - 1.5 - 1.5 - 1.5 - no - no - no - no - 16 - 16 - 16 - 16 - - W1 - W1 - W1 - W1 - 0 - -3 - 0 - 3 - - 15 - 15 - 11 - 14 - 12 - 13 - 4 - 9 - 14 - 11 - 13 - 13 - 0 - 0 - 0 - 0 - 7 - 1 - 1 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 69 - 68 - 77 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -7 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - MiniMoog * - 83 - - - FIFTH - 5 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 6 - 1 - - - 1 - 1 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W2 - W1 - 0 - 1 - 1 - -1 - - 28 - 31 - 31 - 27 - 16 - 10 - 9 - 27 - 14 - 14 - 15 - 15 - 4 - 3 - 4 - 6 - 12 - 15 - 15 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 65 - 98 - 92 - - 1 - 1 - 2 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - MiniMoog.1 - 84 - - - FIFTH - 6 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 7 - 6 - - - 1 - 2 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 1 - 3 - 0 - 1 - - 31 - 28 - 28 - 27 - 9 - 27 - 16 - 10 - 15 - 15 - 15 - 14 - 9 - 6 - 4 - 3 - 15 - 15 - 12 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 92 - 98 - 88 - - 2 - 1 - 1 - 2 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - MiniMoog.2 - 85 - - - FIFTH - 5 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 3 - - - 1 - 0.5 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W3 - 1 - 3 - 0 - 1 - - 28 - 27 - 28 - 27 - 16 - 10 - 16 - 10 - 15 - 7 - 15 - 14 - 4 - 3 - 4 - 3 - 12 - 15 - 12 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 96 - 98 - 94 - - 1 - 0 - 1 - 2 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 4 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - MiniMoog.3 - 86 - - - FOURTH - 0 - - TRIANGL - 30 - 0 - 10 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 0 - 7 - 1 - - - 2 - 2 - 6 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W8 - W4 - W3 - 0 - -3 - 3 - 0 - - 16 - 31 - 17 - 19 - 10 - 0 - 8 - 8 - 15 - 15 - 15 - 15 - 8 - 0 - 3 - 0 - 6 - 4 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 77 - 91 - 69 - - 1 - 0 - 2 - 1 - 0 - 48 - 38 - 69 - - - -24 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Mirage * - 87 - - - THIRD - 7 - - TRIANGL - 33 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 1.51 - 1 - 1.49 - no - no - no - no - 8 - 14 - 8 - 9 - - W1 - W1 - W1 - W2 - 0 - -3 - 3 - 3 - - 23 - 31 - 31 - 31 - 12 - 24 - 4 - 9 - 14 - 12 - 13 - 12 - 0 - 0 - 0 - 0 - 8 - 4 - 2 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 80 - 72 - 78 - - 0 - 0 - 0 - 0 - 25 - 15 - 35 - 0 - - - -12 - MONO - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - MoogBass * - 88 - - - FOURTH - 6 - - TRIANGL - 34 - 0 - 15 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 7 - 4 - - - 0.5 - 6 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W3 - W1 - W1 - 3 - 3 - -3 - -3 - - 31 - 31 - 31 - 26 - 31 - 3 - 31 - 7 - 15 - 8 - 15 - 14 - 0 - 0 - 0 - 0 - 7 - 5 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 66 - 86 - 86 - - 0 - 0 - 0 - 0 - 10 - 14 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - MultiMoog1 - 89 - - - THIRD - 6 - - TRIANGL - 34 - 14 - 19 - 8 - off - - - 5 - 1 - off - on - off - on - 0 - 0 - 0 - 0 - 6 - 6 - 4 - 5 - - - 3 - 3 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W4 - W1 - W1 - 3 - 3 - -3 - -3 - - 31 - 31 - 31 - 31 - 31 - 7 - 31 - 7 - 15 - 14 - 15 - 14 - 0 - 0 - 0 - 0 - 7 - 5 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 68 - 84 - 83 - - 0 - 0 - 0 - 0 - 10 - 14 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - MultiMoog2 - 90 - - - FIFTH - 7 - - TRIANGL - 32 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 1 - 2 - 0 - - - 1.49 - 1.49 - 1.51 - 1.51 - no - no - no - no - 9 - 9 - 14 - 14 - - W2 - W4 - W5 - W6 - 3 - -2 - 1 - -1 - - 19 - 15 - 29 - 22 - 14 - 14 - 14 - 10 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 7 - 3 - 7 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 95 - 99 - 68 - - 0 - 0 - 0 - 0 - 0 - 66 - 0 - 41 - - - -19 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - No!NotJump - 91 - - - THIRD - 5 - - TRIANGL - 0 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 4 - - - 1 - 1 - 2 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W1 - W1 - W4 - 0 - 0 - 3 - 3 - - 18 - 23 - 25 - 13 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 1 - 0 - 0 - 1 - 2 - 3 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 91 - 69 - 88 - 86 - - 3 - 0 - 2 - 3 - 20 - 10 - 8 - 0 - - - -12 - MONO - 7 - FULL - 1 - POR - 99 - 0 - 0 - 99 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - <> OB 1 <> - 92 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 5 - 2 - off - off - off - on - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1.5 - 1.5 - 1.51 - 1.51 - no - no - no - no - 16 - 16 - 14 - 14 - - W1 - W1 - W1 - W1 - 0 - 0 - 3 - 3 - - 12 - 18 - 17 - 19 - 31 - 8 - 31 - 8 - 15 - 14 - 15 - 14 - 0 - 0 - 0 - 0 - 7 - 3 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 77 - 99 - 73 - - 1 - 0 - 1 - 0 - 0 - 0 - 10 - 12 - - - -19 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 99 - 0 - 0 - 0 - 0 - 0 - - OB-8 * - 93 - - - FIFTH - 5 - - TRIANGL - 0 - 0 - 19 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 4 - - - 1 - 0.5 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W1 - 0 - -1 - 1 - 3 - - 31 - 29 - 31 - 31 - 12 - 12 - 12 - 0 - 14 - 14 - 14 - 15 - 4 - 4 - 4 - 0 - 15 - 15 - 15 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 94 - 99 - 92 - - 0 - 0 - 0 - 2 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Oberheim.1 - 94 - - - FIFTH - 5 - - TRIANGL - 35 - 0 - 19 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 3 - - - 0.5 - 0.5 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -3 - 0 - 3 - - 17 - 18 - 11 - 11 - 11 - 9 - 12 - 2 - 15 - 15 - 14 - 14 - 3 - 4 - 4 - 4 - 6 - 4 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 76 - 99 - 88 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 5 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Oberheim.2 - 95 - - - FIFTH - 7 - - TRIANGL - 23 - 0 - 32 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 3 - - - 0.5 - 0.5 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 3 - 3 - 3 - -3 - - 10 - 12 - 10 - 13 - 31 - 12 - 12 - 12 - 15 - 14 - 14 - 14 - 0 - 4 - 4 - 4 - 5 - 4 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 82 - 99 - 87 - - 0 - 0 - 0 - 0 - 0 - 5 - 0 - 5 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Oberheim.3 - 96 - - - - Synthesizer2 - 6 - - FIFTH - 5 - - TRIANGL - 30 - 0 - 10 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 4 - 4 - - - 0.5 - 0.5 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W3 - W2 - W1 - 0 - 1 - -1 - 2 - - 25 - 25 - 31 - 22 - 6 - 3 - 22 - 31 - 6 - 0 - 13 - 15 - 6 - 1 - 3 - 4 - 9 - 9 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 83 - 99 - 92 - - 1 - 0 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Odyssey..1 - 0 - - - FIFTH - 5 - - TRIANGL - 0 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 7 - 3 - 3 - 7 - 6 - 5 - 5 - 3 - - - 0.5 - 0.5 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W2 - 0 - 0 - -3 - -3 - - 31 - 27 - 31 - 31 - 4 - 19 - 5 - 2 - 15 - 10 - 15 - 15 - 3 - 1 - 6 - 1 - 12 - 13 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 91 - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Odyssey..2 - 1 - - - FIFTH - 5 - - TRIANGL - 29 - 0 - 0 - 0 - off - - - 4 - 0 - off - off - off - off - 7 - 3 - 3 - 7 - 5 - 5 - 5 - 5 - - - 0.5 - 0.5 - 0.5 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W3 - W3 - W3 - 1 - 2 - 0 - 2 - - 31 - 31 - 27 - 27 - 0 - 9 - 2 - 5 - 15 - 0 - 14 - 14 - 0 - 0 - 4 - 4 - 7 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 93 - 99 - 86 - - 1 - 0 - 1 - 1 - 0 - 0 - 30 - 30 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Odyssey..3 - 2 - - - FIFTH - 3 - - TRIANGL - 37 - 0 - 75 - 0 - on - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 7 - 4 - - - 2 - 0.5 - 2 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - -1 - 0 - - 18 - 16 - 18 - 16 - 13 - 31 - 13 - 31 - 14 - 15 - 14 - 15 - 9 - 0 - 9 - 0 - 10 - 10 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 98 - 85 - - 1 - 1 - 1 - 1 - 21 - 0 - 21 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OhB1Kanobe - 3 - - - THIRD - 7 - - TRIANGL - 33 - 0 - 56 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 6 - 3 - - - 1 - 2 - 5 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W1 - 0 - 0 - 0 - 0 - - 28 - 31 - 31 - 8 - 6 - 5 - 8 - 9 - 7 - 11 - 12 - 8 - 4 - 0 - 0 - 16 - 4 - 5 - 3 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 78 - 71 - 82 - - 2 - 2 - 3 - 0 - 0 - 45 - 67 - 0 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Omega....1 - 4 - - - SIXTH - 2 - - TRIANGL - 70 - 40 - 10 - 26 - off - - - 5 - 1 - off - on - off - off - 0 - 0 - 0 - 0 - 6 - 6 - 5 - 4 - - - 1 - 2 - 4 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - 3 - -2 - -1 - 1 - - 31 - 31 - 24 - 31 - 31 - 31 - 4 - 3 - 15 - 15 - 10 - 9 - 0 - 13 - 28 - 0 - 10 - 10 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 99 - 99 - 90 - - 0 - 0 - 0 - 1 - 0 - 57 - 99 - 55 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 25 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Omega....2 - 5 - - - FOURTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 0 - 7 - 0 - - - 1 - 0.5 - 9 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 2 - -3 - -3 - - 28 - 13 - 11 - 14 - 20 - 31 - 6 - 7 - 14 - 15 - 14 - 13 - 8 - 0 - 3 - 0 - 13 - 6 - 15 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 87 - 70 - 92 - - 0 - 2 - 2 - 1 - 0 - 22 - 14 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - PCM Duck * - 6 - - - FOURTH - 7 - - TRIANGL - 35 - 15 - 14 - 0 - on - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 1 - 5 - 4 - 5 - 2 - - - 2 - 1 - 3 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W3 - 2 - 0 - 0 - -1 - - 20 - 18 - 3 - 6 - 5 - 31 - 6 - 2 - 3 - 15 - 3 - 12 - 18 - 0 - 22 - 7 - 3 - 3 - 3 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 97 - 90 - 70 - - 1 - 2 - 2 - 1 - 0 - 99 - 99 - 31 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - PianoSynth - 7 - - - SIXTH - 7 - - TRIANGL - 31 - 14 - 0 - 0 - off - - - 4 - 1 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 4 - 3 - 6 - - - 1.5 - 1.51 - 1.49 - 3 - no - no - no - no - 120 - 14 - 9 - 64 - - W5 - W6 - W4 - W4 - 0 - -3 - 3 - 3 - - 26 - 16 - 11 - 31 - 31 - 31 - 31 - 20 - 15 - 15 - 15 - 6 - 0 - 2 - 0 - 2 - 5 - 5 - 8 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 99 - 99 - 81 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - -7 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 18 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - PlkAnalog - 8 - - - SIXTH - 6 - - TRIANGL - 31 - 11 - 17 - 27 - off - - - 2 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 4 - - - 2 - 2 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W5 - W1 - 0 - 0 - -2 - 0 - - 18 - 31 - 18 - 19 - 18 - 3 - 16 - 7 - 14 - 0 - 14 - 7 - 12 - 12 - 12 - 3 - 6 - 6 - 6 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 96 - 97 - 90 - - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Poly 61 - 9 - - - FIFTH - 6 - - TRIANGL - 34 - 14 - 19 - 8 - off - - - 5 - 1 - off - on - off - on - 0 - 0 - 0 - 0 - 6 - 4 - 4 - 4 - - - 2 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 3 - -3 - -3 - - 12 - 8 - 14 - 10 - 31 - 7 - 31 - 7 - 15 - 14 - 15 - 14 - 0 - 0 - 0 - 0 - 7 - 5 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 81 - 99 - 86 - - 0 - 0 - 0 - 0 - 10 - 14 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - PolyFusion - 10 - - - FIFTH - 5 - - TRIANGL - 31 - 11 - 17 - 27 - off - - - 2 - 1 - on - on - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 5 - - - 2 - 8 - 4 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W3 - W1 - W3 - 0 - 0 - -2 - 0 - - 18 - 31 - 16 - 31 - 3 - 10 - 3 - 3 - 15 - 0 - 14 - 1 - 1 - 12 - 3 - 2 - 6 - 6 - 6 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 80 - 99 - 89 - - 1 - 2 - 0 - 1 - 0 - 0 - 0 - 10 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - PolyMoog.1 - 11 - - - SIXTH - 6 - - TRIANGL - 34 - 0 - 20 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 3 - - - 1 - 2 - 4 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W2 - W3 - -1 - 1 - -1 - 3 - - 14 - 14 - 10 - 12 - 31 - 31 - 4 - 31 - 15 - 15 - 7 - 15 - 1 - 1 - 12 - 0 - 5 - 5 - 6 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 89 - - 1 - 1 - 2 - 1 - 0 - 0 - 60 - 99 - - - -24 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - PolyMoog.2 - 12 - - - THIRD - 0 - - TRIANGL - 41 - 0 - 31 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 0 - 0 - 3 - - - 1 - 0.5 - 25.02 - 2.48 - no - no - no - no - 8 - 8 - 23 - 15 - - W1 - W1 - W4 - W1 - 0 - 2 - 3 - -1 - - 31 - 18 - 29 - 31 - 10 - 4 - 16 - 10 - 15 - 13 - 13 - 15 - 0 - 2 - 6 - 5 - 7 - 4 - 1 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 89 - 47 - 76 - - 0 - 0 - 0 - 0 - 9 - 8 - 12 - 34 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - P.P.G * - 13 - - - FIFTH - 6 - - TRIANGL - 31 - 0 - 6 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1.49 - 1.51 - 1.51 - 1.51 - no - no - no - no - 9 - 14 - 14 - 14 - - W1 - W1 - W1 - W1 - -3 - 2 - 3 - -3 - - 28 - 31 - 27 - 18 - 22 - 11 - 22 - 10 - 13 - 10 - 13 - 11 - 0 - 0 - 0 - 0 - 6 - 1 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 74 - 99 - 79 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -19 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Prophet * - 14 - - - FOURTH - 5 - - TRIANGL - 34 - 33 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 5 - 4 - - - 1 - 1 - 7 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - 0 - 3 - 0 - -3 - - 23 - 19 - 22 - 19 - 7 - 7 - 7 - 3 - 12 - 12 - 12 - 6 - 4 - 4 - 4 - 4 - 10 - 10 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 70 - 34 - 75 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FINGER - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Prophet..1 - 15 - - - FIFTH - 6 - - TRIANGL - 35 - 0 - 18 - 0 - on - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 6 - 5 - 4 - - - 1 - 4 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W2 - 2 - 0 - 0 - -3 - - 27 - 27 - 27 - 27 - 3 - 12 - 6 - 3 - 13 - 15 - 13 - 15 - 3 - 15 - 4 - 2 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 73 - 99 - 78 - - 2 - 0 - 1 - 0 - 0 - 25 - 0 - 0 - - - 0 - POLY - 4 - FINGER - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Prophet..2 - 16 - - - FIFTH - 7 - - TRIANGL - 38 - 29 - 35 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 6 - 6 - 5 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W3 - W1 - W1 - 2 - 0 - 0 - -3 - - 16 - 14 - 16 - 16 - 3 - 4 - 3 - 4 - 14 - 12 - 14 - 12 - 4 - 18 - 6 - 18 - 8 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 76 - 99 - 79 - - 1 - 0 - 1 - 0 - 0 - 25 - 0 - 25 - - - 0 - POLY - 4 - FINGER - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Prophet..3 - 17 - - - FOURTH - 4 - - TRIANGL - 33 - 29 - 14 - 26 - on - - - 5 - 1 - off - on - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 4 - - - 2 - 2 - 0.5 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W3 - W3 - W1 - 0 - -1 - 1 - 2 - - 7 - 8 - 7 - 8 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 2 - 2 - 2 - 7 - 5 - 2 - 4 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 83 - 74 - 84 - - 3 - 0 - 1 - 0 - 0 - 0 - 78 - 71 - - - -12 - POLY - 8 - FULL - 10 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - PS 3100..1 - 18 - - - SECOND - 4 - - TRIANGL - 33 - 29 - 14 - 26 - on - - - 5 - 1 - off - on - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 4 - - - 1 - 1 - 4 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - -2 - 1 - -1 - 3 - - 7 - 7 - 13 - 13 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 2 - 2 - 2 - 7 - 5 - 2 - 4 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 78 - 72 - 83 - - 3 - 0 - 1 - 0 - 0 - 0 - 78 - 71 - - - -12 - POLY - 8 - FULL - 15 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - PS 3100..2 - 19 - - - FOURTH - 4 - - TRIANGL - 33 - 29 - 14 - 26 - on - - - 5 - 1 - off - on - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 6 - 3 - - - 2 - 2 - 0.5 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W1 - 0 - -1 - 1 - 2 - - 12 - 12 - 11 - 13 - 6 - 8 - 7 - 7 - 15 - 15 - 15 - 15 - 2 - 1 - 1 - 1 - 5 - 2 - 4 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 80 - 79 - 84 - - 1 - 0 - 1 - 0 - 0 - 0 - 78 - 71 - - - -12 - POLY - 8 - FULL - 10 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - PS 3300..1 - 20 - - - SECOND - 4 - - TRIANGL - 33 - 29 - 14 - 26 - on - - - 5 - 1 - off - on - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 4 - 3 - - - 0.5 - 1 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W4 - W1 - W1 - -2 - 1 - -1 - 3 - - 7 - 15 - 7 - 13 - 4 - 5 - 6 - 5 - 13 - 15 - 15 - 13 - 1 - 0 - 1 - 1 - 5 - 2 - 4 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 74 - 78 - 77 - - 1 - 0 - 0 - 0 - 0 - 0 - 78 - 71 - - - -12 - POLY - 8 - FULL - 15 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - PS 3300..2 - 21 - - - FIFTH - 5 - - TRIANGL - 23 - 0 - 14 - 0 - on - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 5 - - - 0.5 - 2 - 0.5 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - 0 - -3 - 3 - 3 - - 19 - 21 - 19 - 15 - 12 - 9 - 31 - 7 - 15 - 15 - 15 - 15 - 7 - 4 - 0 - 3 - 6 - 4 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 74 - 95 - 60 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Quadra...1 - 22 - - - FIFTH - 6 - - TRIANGL - 23 - 0 - 11 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 4 - 4 - - - 2 - 0.5 - 0.5 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W2 - W1 - 3 - 3 - 0 - -3 - - 19 - 15 - 19 - 21 - 31 - 7 - 12 - 9 - 15 - 14 - 15 - 15 - 0 - 2 - 7 - 4 - 6 - 5 - 6 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 80 - 95 - 76 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Quadra...2 - 23 - - - THIRD - 5 - - TRIANGL - 0 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 3 - - - 1 - 1 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - 0 - 0 - 3 - 3 - - 18 - 23 - 25 - 13 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 1 - 0 - 0 - 1 - 2 - 3 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 91 - 67 - 85 - 81 - - 3 - 0 - 2 - 3 - 20 - 10 - 8 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - ResoSynth1 - 24 - - - FIFTH - 7 - - TRIANGL - 0 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 4 - 3 - - - 1 - 1 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 3 - 3 - - 18 - 23 - 25 - 13 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 1 - 0 - 0 - 1 - 2 - 3 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 65 - 99 - 80 - - 3 - 0 - 2 - 3 - 20 - 10 - 8 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - ResoSynth2 - 25 - - - FIFTH - 4 - - TRIANGL - 32 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 6 - 4 - - - 1 - 1 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 0 - 0 - 0 - 0 - - 27 - 24 - 25 - 27 - 8 - 7 - 7 - 9 - 14 - 13 - 12 - 13 - 4 - 3 - 3 - 3 - 8 - 8 - 8 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 89 - 98 - 78 - - 1 - 1 - 2 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - RMI......1 - 26 - - - FIFTH - 4 - - TRIANGL - 32 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 6 - 3 - - - 0.5 - 2 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 27 - 24 - 25 - 27 - 8 - 7 - 7 - 9 - 14 - 13 - 12 - 13 - 4 - 3 - 3 - 3 - 8 - 8 - 8 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 82 - 98 - 81 - - 1 - 2 - 2 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - RMI......2 - 27 - - - FIFTH - 5 - - TRIANGL - 2 - 0 - 10 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 1 - 0 - 1 - 5 - 3 - 5 - 4 - - - 1 - 5 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W2 - W1 - 2 - -2 - 2 - -2 - - 18 - 23 - 25 - 16 - 31 - 31 - 31 - 8 - 15 - 15 - 15 - 7 - 0 - 1 - 0 - 0 - 4 - 4 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 62 - 97 - 87 - - 3 - 0 - 2 - 1 - 20 - 10 - 8 - 0 - - - -12 - MONO - 7 - FINGER - 5 - POR - 99 - 0 - 0 - 99 - 99 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SH 7.....1 - 28 - - - FIFTH - 5 - - TRIANGL - 2 - 0 - 10 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 4 - 4 - 5 - - - 1 - 0.5 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - 2 - -2 - 2 - -2 - - 18 - 23 - 25 - 16 - 31 - 31 - 31 - 8 - 15 - 15 - 15 - 7 - 0 - 1 - 0 - 0 - 5 - 5 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 92 - 97 - 87 - - 2 - 2 - 2 - 2 - 20 - 10 - 8 - 0 - - - -12 - MONO - 7 - FINGER - 1 - POR - 99 - 0 - 0 - 99 - 99 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SH 7.....2 - 29 - - - FIFTH - 7 - - TRIANGL - 33 - 0 - 56 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 6 - 4 - 4 - - - 1 - 1 - 4 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W1 - 1 - 0 - 0 - 0 - - 28 - 31 - 31 - 31 - 6 - 5 - 8 - 9 - 7 - 11 - 12 - 8 - 4 - 0 - 0 - 16 - 4 - 5 - 3 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 90 - 85 - 78 - - 2 - 2 - 3 - 0 - 0 - 45 - 67 - 0 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sigma....1 - 30 - - - FIFTH - 6 - - TRIANGL - 37 - 73 - 15 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 7 - 6 - 3 - - - 6 - 25.95 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - 2 - 0 - -3 - 3 - - 22 - 22 - 22 - 22 - 21 - 10 - 9 - 8 - 13 - 13 - 15 - 15 - 1 - 10 - 1 - 3 - 6 - 5 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 89 - 75 - 99 - 87 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -24 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sigma....2 - 31 - - - FIFTH - 5 - - TRIANGL - 33 - 0 - 56 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 4 - 3 - - - 2 - 6 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 0 - 0 - 0 - 0 - - 28 - 31 - 31 - 31 - 6 - 3 - 8 - 9 - 7 - 6 - 12 - 8 - 4 - 0 - 0 - 16 - 4 - 5 - 3 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 65 - 85 - 90 - - 2 - 2 - 3 - 0 - 0 - 45 - 67 - 0 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sigma....3 - 32 - - - SIXTH - 0 - - TRIANGL - 31 - 6 - 9 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 7 - 1 - 2 - 1 - 2 - - - 3 - 6 - 2.99 - 5.99 - no - no - no - no - 8 - 8 - 10 - 12 - - W2 - W4 - W4 - W6 - -3 - -3 - 3 - 3 - - 31 - 24 - 27 - 31 - 10 - 8 - 16 - 8 - 10 - 11 - 11 - 9 - 0 - 0 - 0 - 0 - 6 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 84 - 99 - 39 - - 0 - 0 - 0 - 0 - 35 - 99 - 0 - 0 - - - -19 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Soft Synth - 33 - - - SIXTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 3 - - - 3 - 15 - 2.99 - 2.99 - no - no - no - no - 8 - 8 - 10 - 10 - - W1 - W1 - W1 - W1 - 2 - 2 - -3 - -3 - - 15 - 31 - 15 - 31 - 31 - 15 - 31 - 15 - 15 - 12 - 15 - 13 - 6 - 6 - 6 - 0 - 5 - 4 - 5 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 92 - 99 - 84 - - 0 - 1 - 0 - 0 - 0 - 24 - 0 - 0 - - - -19 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Softsynth* - 34 - - - SECOND - 0 - - TRIANGL - 30 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 2 - 3 - - - 0.5 - 0.5 - 0.62 - 2 - no - no - no - no - 8 - 8 - 10 - 8 - - W1 - W2 - W8 - W1 - 1 - -1 - 0 - -1 - - 26 - 31 - 31 - 31 - 1 - 29 - 29 - 31 - 13 - 12 - 12 - 14 - 1 - 7 - 12 - 5 - 5 - 4 - 4 - 3 - VOF - VOF - VOF - VOF - - - 99 - 82 - 99 - 50 - 50 - 50 - - 98 - 80 - 65 - 80 - - 1 - 1 - 1 - 1 - 0 - 17 - 40 - 40 - - - 12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SoloSynth - 35 - - - FIFTH - 4 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 3 - - - 1 - 1 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - -1 - 1 - 1 - 0 - - 22 - 22 - 22 - 18 - 9 - 12 - 15 - 9 - 15 - 14 - 14 - 14 - 6 - 6 - 6 - 6 - 7 - 5 - 7 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 81 - 98 - 96 - - 1 - 1 - 1 - 2 - 0 - 3 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SpiralSynt - 36 - - - SIXTH - 6 - - TRIANGL - 37 - 0 - 0 - 0 - off - - - 2 - 0 - off - off - off - off - 7 - 3 - 3 - 7 - 5 - 5 - 5 - 3 - - - 0.5 - 0.5 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - 0 - 0 - 0 - 2 - - 31 - 31 - 31 - 31 - 22 - 22 - 22 - 6 - 13 - 13 - 13 - 11 - 0 - 0 - 0 - 0 - 10 - 10 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 70 - 99 - 91 - - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sweeper - 37 - - - FIFTH - 6 - - TRIANGL - 31 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 1 - 4 - - - 1 - 1 - 2 - 3.18 - no - no - no - no - 8 - 8 - 8 - 11 - - W1 - W5 - W1 - W1 - -3 - -1 - 3 - 1 - - 14 - 5 - 17 - 15 - 7 - 3 - 17 - 17 - 13 - 13 - 9 - 9 - 0 - 0 - 0 - 13 - 4 - 1 - 7 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 80 - 91 - 78 - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - SweepSynt* - 38 - - - FIRST - 0 - - TRIANGL - 32 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 1 - 2 - 0 - - - 6 - 6 - 1.5 - 2 - no - no - no - no - 8 - 8 - 16 - 8 - - W2 - W4 - W6 - W6 - 3 - -2 - 1 - -1 - - 17 - 13 - 27 - 20 - 13 - 13 - 13 - 9 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 7 - 3 - 7 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 45 - 51 - 18 - - 0 - 0 - 0 - 0 - 0 - 66 - 0 - 41 - - - -19 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - SweetSynth - 39 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 46 - 0 - off - - - 4 - 0 - off - off - off - off - 1 - 5 - 1 - 5 - 0 - 0 - 0 - 0 - - - 3 - 2.99 - 3 - 3 - no - no - no - no - 8 - 10 - 8 - 8 - - W4 - W7 - W2 - W4 - 3 - 3 - -3 - -3 - - 11 - 31 - 11 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 86 - 68 - 86 - 70 - - 0 - 0 - 0 - 0 - 30 - 0 - 30 - 0 - - - -19 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.AftrTch - 40 - - - SIXTH - 7 - - TRIANGL - 31 - 6 - 9 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 1 - 2 - - - 3 - 6 - 2.99 - 5.99 - no - no - no - no - 8 - 8 - 10 - 12 - - W2 - W4 - W4 - W6 - -3 - -3 - 3 - 3 - - 31 - 24 - 27 - 31 - 10 - 8 - 16 - 8 - 10 - 11 - 11 - 9 - 0 - 0 - 0 - 0 - 4 - 4 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 81 - 96 - 73 - - 0 - 0 - 0 - 0 - 0 - 20 - 0 - 20 - - - -19 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Decay 1 - 41 - - - FOURTH - 7 - - TRIANGL - 28 - 8 - 2 - 27 - off - - - 5 - 1 - on - off - on - off - 0 - 0 - 0 - 0 - 3 - 4 - 3 - 2 - - - 1.49 - 1.49 - 1.5 - 20.31 - no - no - no - no - 9 - 9 - 16 - 23 - - W1 - W1 - W2 - W8 - -2 - 3 - 3 - -2 - - 31 - 31 - 31 - 31 - 7 - 17 - 11 - 12 - 14 - 14 - 12 - 12 - 4 - 1 - 7 - 8 - 8 - 4 - 10 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 78 - 87 - 62 - - 2 - 2 - 1 - 2 - 0 - 26 - 0 - 34 - - - -7 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Decay 2 - 42 - - - SECOND - 5 - - TRIANGL - 0 - 2 - 0 - 3 - off - - - 5 - 0 - on - on - on - on - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 1 - - - 7.85 - 1.41 - 20.76 - 19.03 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 25 - 21 - 31 - 31 - 22 - 28 - 31 - 8 - 11 - 11 - 14 - 5 - 0 - 6 - 0 - 2 - 1 - 1 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 95 - 88 - 98 - - 2 - 1 - 2 - 0 - 0 - 0 - 0 - 0 - - - -6 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Synballs - 43 - - - FIFTH - 6 - - TRIANGL - 38 - 33 - 9 - 0 - on - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 4 - - - 1 - 1 - 1 - 15 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W3 - W1 - 0 - 0 - 0 - 0 - - 13 - 23 - 22 - 22 - 9 - 15 - 19 - 22 - 13 - 13 - 13 - 13 - 6 - 0 - 7 - 7 - 6 - 6 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 87 - 99 - 75 - - 1 - 0 - 2 - 1 - 0 - 0 - 1 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Synth....1 - 44 - - - FIFTH - 3 - - TRIANGL - 38 - 35 - 6 - 27 - on - - - 3 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 6 - 4 - 5 - 2 - - - 2 - 2 - 1 - 11 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W1 - -3 - -3 - -1 - -1 - - 31 - 31 - 12 - 31 - 10 - 15 - 10 - 10 - 13 - 13 - 13 - 13 - 6 - 0 - 7 - 9 - 5 - 6 - 4 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 78 - 99 - 80 - - 1 - 1 - 2 - 0 - 0 - 0 - 1 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Synth....2 - 45 - - - FIFTH - 4 - - TRIANGL - 36 - 50 - 19 - 2 - off - - - 3 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 3 - - - 1 - 1 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W3 - W1 - 0 - -3 - 0 - 3 - - 31 - 13 - 31 - 13 - 29 - 10 - 29 - 10 - 14 - 14 - 14 - 14 - 7 - 7 - 7 - 7 - 9 - 9 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 82 - 99 - 89 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Synth....3 - 46 - - - THIRD - 4 - - TRIANGL - 40 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 6 - 5 - - - 1 - 1 - 1 - 25.95 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -3 - 0 - 0 - - 31 - 31 - 24 - 31 - 6 - 6 - 16 - 31 - 14 - 14 - 12 - 15 - 7 - 7 - 15 - 15 - 15 - 15 - 14 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 77 - 83 - 80 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Synth....4 - 47 - - - FIFTH - 6 - - TRIANGL - 38 - 33 - 32 - 42 - off - - - 1 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 3 - - - 1 - 1 - 4 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - 3 - -1 - 3 - 0 - - 14 - 27 - 31 - 31 - 3 - 3 - 21 - 20 - 9 - 14 - 0 - 0 - 6 - 6 - 7 - 8 - 8 - 8 - 15 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 76 - 95 - 99 - - 1 - 0 - 0 - 2 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Synth....5 - 48 - - - FIFTH - 6 - - TRIANGL - 38 - 0 - 0 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 4 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W4 - W1 - 0 - 0 - 0 - 0 - - 31 - 30 - 31 - 16 - 22 - 12 - 22 - 12 - 13 - 10 - 13 - 10 - 7 - 7 - 0 - 7 - 7 - 7 - 15 - 12 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 85 - 99 - 85 - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Synth....6 - 49 - - - FIFTH - 5 - - TRIANGL - 37 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 4 - 4 - - - 1 - 0.5 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W2 - W1 - -1 - -1 - 1 - 2 - - 31 - 31 - 31 - 31 - 12 - 12 - 12 - 13 - 14 - 14 - 14 - 4 - 9 - 9 - 9 - 9 - 6 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 91 - 99 - 94 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Synth....7 - 50 - - - FIFTH - 6 - - TRIANGL - 32 - 5 - 25 - 15 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 1 - 1 - 1 - - - 2.55 - 2.55 - 2.56 - 2.56 - no - no - no - no - 21 - 21 - 17 - 17 - - W1 - W1 - W1 - W1 - -3 - -3 - 3 - 3 - - 11 - 3 - 16 - 18 - 10 - 13 - 8 - 8 - 14 - 15 - 13 - 12 - 0 - 0 - 0 - 0 - 4 - 1 - 4 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 73 - 99 - 82 - - 1 - 3 - 1 - 0 - 0 - 0 - 0 - 0 - - - -16 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Synthish * - 51 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 3 - - - 2 - 0.5 - 2 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - -3 - -3 - 3 - 3 - - 15 - 31 - 15 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 5 - 3 - 4 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 94 - 93 - 81 - - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SynthRise1 - 52 - - - FIFTH - 6 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 6 - 5 - - - 2 - 0.5 - 2 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W5 - W3 - W3 - -3 - -3 - 3 - 3 - - 15 - 31 - 15 - 15 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 13 - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 88 - 97 - 95 - 95 - - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SynthRise2 - 53 - - - EIGHTH - 7 - - TRIANGL - 34 - 0 - 15 - 0 - on - - - 3 - 1 - on - on - off - off - 0 - 0 - 0 - 0 - 3 - 1 - 2 - 2 - - - 1.51 - 1.49 - 1.49 - 1.51 - no - no - no - no - 14 - 9 - 9 - 14 - - W6 - W6 - W2 - W2 - -1 - 1 - -3 - 3 - - 14 - 11 - 17 - 17 - 8 - 8 - 7 - 17 - 15 - 15 - 15 - 15 - 4 - 7 - 8 - 6 - 5 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 98 - 98 - 98 - - 0 - 0 - 0 - 0 - 20 - 22 - 29 - 29 - - - -19 - POLY - 2 - FULL - 3 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SynthyPad1 - 54 - - - FIFTH - 6 - - TRIANGL - 34 - 0 - 6 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 5 - - - 0.5 - 0.5 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W2 - W1 - 0 - 3 - 0 - 3 - - 22 - 22 - 22 - 22 - 9 - 9 - 9 - 9 - 14 - 14 - 14 - 14 - 4 - 4 - 4 - 4 - 9 - 9 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 90 - 92 - 84 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - System 15 - 55 - - - FIFTH - 2 - - TRIANGL - 23 - 0 - 11 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 4 - - - 1 - 0.5 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W2 - 3 - 1 - 0 - -2 - - 19 - 11 - 14 - 7 - 2 - 7 - 3 - 1 - 15 - 15 - 15 - 12 - 0 - 0 - 1 - 0 - 4 - 4 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 80 - 99 - 95 - - 0 - 0 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - System35.1 - 56 - - - FIFTH - 7 - - TRIANGL - 23 - 0 - 11 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 4 - 4 - - - 2 - 2 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 0 - 0 - -2 - - 10 - 21 - 18 - 21 - 4 - 4 - 4 - 4 - 13 - 13 - 13 - 13 - 3 - 3 - 3 - 3 - 8 - 8 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 76 - 98 - 80 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - System35.2 - 57 - - - FIFTH - 6 - - TRIANGL - 23 - 0 - 11 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 2 - - - 0.5 - 0.5 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W5 - W5 - W1 - W1 - 3 - 3 - 0 - -2 - - 19 - 21 - 19 - 15 - 3 - 4 - 12 - 1 - 15 - 15 - 15 - 12 - 1 - 0 - 2 - 0 - 6 - 7 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 78 - 99 - 81 - - 2 - 0 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - System35.3 - 58 - - - FIFTH - 5 - - TRIANGL - 23 - 0 - 11 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 6 - 3 - - - 1 - 0.5 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W2 - W1 - 0 - 3 - 0 - -3 - - 19 - 21 - 19 - 9 - 12 - 3 - 31 - 9 - 14 - 5 - 15 - 15 - 0 - 0 - 0 - 0 - 6 - 6 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 96 - 99 - 91 - - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - System55.1 - 59 - - - FIFTH - 6 - - TRIANGL - 23 - 0 - 11 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 4 - 2 - - - 0.5 - 2 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - -1 - 3 - -1 - 3 - - 19 - 21 - 19 - 9 - 12 - 3 - 31 - 9 - 14 - 5 - 15 - 15 - 0 - 0 - 0 - 0 - 6 - 6 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 88 - 99 - 92 - - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - System55.2 - 60 - - - FOURTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 0 - - - 1 - 0.5 - 12 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W1 - W1 - W3 - 0 - 0 - 0 - 0 - - 30 - 31 - 7 - 10 - 13 - 31 - 8 - 7 - 13 - 15 - 0 - 0 - 5 - 2 - 4 - 7 - 4 - 3 - 3 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 86 - 69 - 73 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Tamboura * - 61 - - - SIXTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 3 - 5 - 1 - - - 1 - 1 - 1.41 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 25 - 29 - 31 - 31 - 24 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 3 - 2 - 2 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 95 - 69 - 80 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Tamboura.1 - 62 - - - SIXTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 2 - - - 1 - 0.5 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 25 - 29 - 31 - 31 - 24 - 17 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 7 - 4 - 4 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 91 - 99 - 69 - 84 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Tamboura.2 - 63 - - - FIFTH - 5 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 2 - 3 - 2 - - - 1 - 0.5 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 25 - 29 - 31 - 31 - 24 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 3 - 3 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 91 - 67 - 91 - 71 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Tamboura.3 - 64 - - - THIRD - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 2 - 0 - - - 0.5 - 0.5 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 2 - -2 - 3 - - 18 - 31 - 31 - 6 - 6 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 3 - 1 - 1 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 72 - 88 - 90 - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 8 - - - 12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Time X * - 65 - - - SIXTH - 0 - - TRIANGL - 31 - 6 - 9 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 7 - 1 - 2 - 1 - 2 - - - 6 - 9 - 2.99 - 5.99 - no - no - no - no - 8 - 8 - 10 - 12 - - W2 - W4 - W4 - W6 - -3 - -3 - 3 - 3 - - 23 - 16 - 19 - 23 - 6 - 4 - 12 - 4 - 10 - 11 - 11 - 9 - 0 - 0 - 0 - 0 - 6 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 84 - 99 - 30 - - 0 - 0 - 0 - 0 - 35 - 99 - 0 - 0 - - - -19 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - TrdrpSynth - 66 - - - FIFTH - 2 - - TRIANGL - 32 - 0 - 28 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 0 - 2 - 0 - - - 1.51 - 0.75 - 1.5 - 0.75 - no - no - no - no - 14 - 12 - 16 - 12 - - W1 - W1 - W1 - W5 - 0 - 3 - -3 - -3 - - 21 - 23 - 21 - 23 - 7 - 5 - 7 - 9 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 4 - 3 - 4 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 92 - 99 - 91 - - 1 - 1 - 1 - 1 - 6 - 0 - 7 - 25 - - - -7 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Voyage * - 67 - - - FIFTH - 6 - - SHOLD - 38 - 0 - 2 - 0 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 4 - 4 - - - 2 - 2 - 1 - 7 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W4 - W2 - W1 - 3 - -2 - 0 - 0 - - 9 - 30 - 10 - 10 - 16 - 15 - 9 - 9 - 15 - 13 - 14 - 14 - 3 - 0 - 7 - 7 - 4 - 5 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 77 - 98 - 71 - - 1 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Walt/Wendy - 68 - - - FIFTH - 6 - - TRIANGL - 37 - 41 - 38 - 99 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 6 - 4 - - - 2 - 1 - 3 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W2 - 0 - 0 - -3 - 0 - - 16 - 16 - 16 - 18 - 0 - 0 - 0 - 28 - 13 - 13 - 13 - 14 - 3 - 3 - 3 - 21 - 8 - 8 - 9 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 88 - 95 - 82 - - 1 - 1 - 1 - 2 - 0 - 0 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Wapper...1 - 69 - - - FIFTH - 5 - - TRIANGL - 37 - 42 - 38 - 99 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 5 - - - 1 - 5 - 1 - 14 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W2 - W4 - 0 - 0 - -3 - 0 - - 16 - 16 - 16 - 18 - 0 - 0 - 0 - 28 - 13 - 13 - 13 - 14 - 3 - 3 - 3 - 10 - 8 - 8 - 9 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 62 - 95 - 73 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Wapper...2 - 70 - - - FIFTH - 6 - - TRIANGL - 32 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 1 - 2 - 1 - - - 1.49 - 1.49 - 1.51 - 1.51 - no - no - no - no - 9 - 9 - 14 - 14 - - W1 - W6 - W1 - W3 - 3 - -3 - -3 - 3 - - 22 - 31 - 18 - 31 - 14 - 14 - 14 - 6 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 7 - 3 - 7 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 80 - 99 - 79 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -19 - MONO - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - WarmSquare - 71 - - - FIFTH - 4 - - TRIANGL - 35 - 0 - 5 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 3 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 18 - 16 - 18 - 14 - 9 - 7 - 7 - 10 - 14 - 0 - 12 - 12 - 4 - 6 - 6 - 6 - 7 - 10 - 9 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 81 - 99 - 83 - - 0 - 0 - 2 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Wendy : - 72 - - - FIFTH - 6 - - TRIANGL - 43 - 0 - 11 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 6 - 4 - - - 2 - 2 - 2 - 10 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 0 - 0 - -1 - 3 - - 8 - 8 - 14 - 12 - 0 - 0 - 9 - 9 - 15 - 15 - 15 - 15 - 0 - 0 - 4 - 4 - 5 - 4 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 68 - 98 - 49 - - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Wendy C - 73 - - - SIXTH - 3 - - SHOLD - 46 - 58 - 69 - 99 - on - - - 7 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 7 - 3 - 5 - 3 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 15 - 15 - 15 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 88 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Whos Upset - 74 - - - FIFTH - 7 - - TRIANGL - 33 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 3 - - - 1.5 - 1.5 - 1.51 - 1.51 - no - no - no - no - 16 - 16 - 14 - 14 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 11 - 14 - 21 - 18 - 31 - 8 - 14 - 8 - 15 - 15 - 15 - 13 - 0 - 0 - 0 - 0 - 6 - 1 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 67 - 99 - 82 - - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - - - -19 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - X-Pander * - 75 - - - FOURTH - 6 - - TRIANGL - 32 - 0 - 20 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 0 - 7 - 0 - - - 2 - 2 - 27.57 - 27.57 - no - no - no - no - 8 - 8 - 23 - 23 - - W1 - W1 - W1 - W1 - 3 - -3 - 3 - 2 - - 15 - 31 - 17 - 19 - 4 - 0 - 7 - 8 - 15 - 15 - 0 - 15 - 9 - 0 - 18 - 0 - 6 - 4 - 2 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 72 - 74 - 70 - - 1 - 0 - 3 - 3 - 0 - 0 - 0 - 0 - - - -24 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Xuereb * - 76 - - - - - VOICES - 4 - - Breath - 0 - - SEVENTH - 7 - - TRIANGL - 29 - 6 - 15 - 0 - on - - - 4 - 2 - off - off - off - on - 0 - 0 - 0 - 0 - 3 - 0 - 0 - 0 - - - 1.51 - 1.5 - 1.49 - 22.49 - no - no - no - no - 14 - 16 - 9 - 96 - - W5 - W4 - W1 - W4 - -3 - 3 - 3 - -3 - - 14 - 11 - 15 - 31 - 8 - 8 - 5 - 0 - 15 - 15 - 15 - 15 - 4 - 7 - 3 - 0 - 5 - 7 - 7 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 59 - 99 - - 0 - 0 - 0 - 0 - 0 - 5 - 8 - 0 - - - -7 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BadBreath1 - 0 - - - SEVENTH - 7 - - TRIANGL - 29 - 6 - 15 - 41 - on - - - 4 - 3 - off - off - off - on - 0 - 0 - 0 - 0 - 4 - 3 - 3 - 1 - - - 1.58 - 1.57 - 1.58 - 22.49 - no - no - no - yes - 18 - 8 - 10 - 96 - - W5 - W4 - W5 - W4 - -3 - 3 - -2 - -3 - - 15 - 12 - 16 - 31 - 8 - 9 - 7 - 0 - 15 - 15 - 15 - 15 - 4 - 4 - 3 - 0 - 5 - 7 - 6 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 77 - 99 - - 0 - 0 - 0 - 0 - 51 - 62 - 12 - 0 - - - -7 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BadBreath2 - 1 - - - SEVENTH - 7 - - TRIANGL - 29 - 6 - 15 - 0 - on - - - 4 - 2 - off - off - off - on - 0 - 0 - 0 - 0 - 3 - 0 - 0 - 0 - - - 1.51 - 1.5 - 1.49 - 22.49 - no - no - no - no - 14 - 16 - 9 - 96 - - W5 - W4 - W8 - W2 - -3 - 3 - 3 - -3 - - 10 - 10 - 10 - 31 - 8 - 8 - 5 - 0 - 15 - 15 - 15 - 15 - 4 - 7 - 3 - 0 - 5 - 7 - 7 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 50 - 99 - - 0 - 0 - 0 - 0 - 25 - 21 - 19 - 0 - - - -7 - POLY - 0 - FULL - 2 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 3 - - BadBreath3 - 2 - - - FIFTH - 7 - - SHOLD - 99 - 0 - 47 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - - - 1.5 - 22.49 - 1.49 - 23.55 - no - no - no - no - 16 - 80 - 9 - 64 - - W2 - W6 - W2 - W4 - -3 - 0 - 3 - 0 - - 13 - 13 - 13 - 13 - 31 - 7 - 31 - 11 - 15 - 12 - 15 - 12 - 0 - 0 - 0 - 0 - 5 - 1 - 5 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 31 - 99 - 44 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -7 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BreathOrgn - 3 - - - SEVENTH - 7 - - TRIANGL - 29 - 6 - 15 - 0 - on - - - 4 - 2 - off - off - off - on - 0 - 0 - 0 - 0 - 3 - 0 - 0 - 0 - - - 2 - 2 - 2.06 - 22.49 - no - no - no - no - 8 - 8 - 9 - 96 - - W5 - W2 - W8 - W4 - -3 - 3 - 3 - -3 - - 16 - 11 - 15 - 31 - 4 - 8 - 5 - 0 - 15 - 15 - 15 - 15 - 4 - 7 - 3 - 0 - 9 - 6 - 6 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 43 - 99 - - 0 - 0 - 0 - 0 - 0 - 5 - 8 - 0 - - - -12 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BreathyEns - 4 - - - - Choir - 1 - - FIFTH - 0 - - TRIANGL - 30 - 31 - 63 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 0 - 0 - - - 11.13 - 1 - 2 - 1 - yes - no - no - no - 71 - 8 - 8 - 8 - - W1 - W3 - W1 - W1 - -3 - 3 - -3 - 3 - - 9 - 31 - 11 - 31 - 25 - 25 - 31 - 25 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 7 - 1 - 6 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 77 - 77 - 99 - 70 - - 0 - 0 - 0 - 0 - 23 - 74 - 0 - 8 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - ChoiChoir* - 0 - - - THIRD - 1 - - TRIANGL - 32 - 33 - 53 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 7 - 7 - 0 - - - 1 - 2 - 2 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - -3 - 1 - -2 - 0 - - 8 - 12 - 12 - 12 - 8 - 3 - 6 - 11 - 13 - 15 - 15 - 13 - 9 - 9 - 0 - 12 - 7 - 9 - 9 - 12 - VOF - V48 - VOF - V24 - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 50 - 69 - 55 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - Choir....1 - 1 - - - FIFTH - 1 - - TRIANGL - 32 - 33 - 53 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 5 - 3 - - - 1 - 2 - 2 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 0 - 0 - 0 - - 12 - 12 - 12 - 12 - 8 - 31 - 6 - 8 - 13 - 15 - 15 - 13 - 9 - 9 - 0 - 12 - 7 - 9 - 9 - 12 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 53 - 99 - 53 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Choir....2 - 2 - - - FIFTH - 0 - - TRIANGL - 31 - 35 - 33 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 6 - 2 - - - 1 - 2 - 2 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W1 - W1 - -1 - 1 - -2 - -1 - - 15 - 16 - 11 - 16 - 15 - 22 - 22 - 21 - 15 - 15 - 15 - 15 - 4 - 9 - 9 - 31 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 68 - 95 - 58 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Choir....3 - 3 - - - SECOND - 4 - - TRIANGL - 32 - 45 - 0 - 0 - off - - - 0 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 0 - - - 1 - 1 - 6 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W4 - W1 - 3 - -3 - 0 - 0 - - 9 - 9 - 7 - 7 - 31 - 31 - 0 - 0 - 15 - 15 - 9 - 10 - 1 - 3 - 6 - 4 - 6 - 7 - 6 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 88 - 58 - 52 - 57 - - 0 - 0 - 0 - 0 - 41 - 99 - 88 - 97 - - - 12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 4 - - Choir....4 - 4 - - - SECOND - 5 - - TRIANGL - 33 - 19 - 9 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 6 - 3 - - - 1 - 1 - 7 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - -3 - -3 - 3 - - 14 - 11 - 21 - 19 - 31 - 31 - 14 - 18 - 15 - 15 - 9 - 10 - 1 - 3 - 6 - 4 - 9 - 10 - 10 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 68 - 59 - 54 - - 0 - 0 - 0 - 0 - 0 - 86 - 99 - 58 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Choir....5 - 5 - - - SECOND - 2 - - TRIANGL - 33 - 22 - 8 - 0 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 3 - - - 1 - 1 - 2 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W2 - 3 - -3 - -3 - 3 - - 12 - 12 - 13 - 18 - 31 - 31 - 14 - 21 - 15 - 15 - 9 - 10 - 1 - 3 - 6 - 4 - 9 - 10 - 10 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 87 - 57 - 72 - 51 - - 0 - 0 - 0 - 0 - 0 - 86 - 99 - 58 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Choir....6 - 6 - - - FIFTH - 7 - - TRIANGL - 30 - 10 - 17 - 4 - off - - - 4 - 2 - on - on - on - on - 0 - 0 - 0 - 0 - 2 - 0 - 2 - 0 - - - 1 - 0.5 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 3 - -3 - -3 - - 10 - 10 - 12 - 11 - 13 - 13 - 11 - 13 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 4 - 2 - 4 - 2 - VOF - VOF - VOF - VOF - - - 99 - 86 - 99 - 50 - 50 - 50 - - 99 - 50 - 99 - 50 - - 0 - 0 - 0 - 0 - 20 - 10 - 30 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Choral - 7 - - - SEVENTH - 0 - - TRIANGL - 29 - 0 - 23 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 2 - 0.5 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 13 - 13 - 13 - 13 - 14 - 14 - 14 - 14 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 4 - 2 - 4 - 2 - VOF - VOF - VOF - VOF - - - 99 - 71 - 99 - 50 - 50 - 50 - - 99 - 78 - 99 - 50 - - 1 - 1 - 1 - 0 - 88 - 0 - 0 - 40 - - - 0 - POLY - 5 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 13 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Chorus - 8 - - - FOURTH - 5 - - TRIANGL - 35 - 35 - 11 - 2 - off - - - 4 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 6 - 6 - 5 - 2 - - - 1 - 1 - 1 - 1.56 - no - no - no - yes - 8 - 8 - 8 - 57 - - W2 - W2 - W1 - W1 - -3 - 0 - -1 - 1 - - 10 - 6 - 10 - 31 - 6 - 7 - 6 - 22 - 15 - 7 - 15 - 15 - 7 - 4 - 9 - 2 - 6 - 4 - 9 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 64 - 57 - 47 - - 0 - 0 - 0 - 0 - 10 - 50 - 69 - 35 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 1 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - Chorus...1 - 9 - - - FOURTH - 7 - - TRIANGL - 35 - 35 - 11 - 2 - off - - - 4 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 3 - - - 1 - 1 - 1 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 0 - -1 - 2 - - 15 - 7 - 9 - 14 - 6 - 7 - 6 - 22 - 15 - 7 - 15 - 15 - 7 - 7 - 8 - 5 - 9 - 4 - 9 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 67 - 64 - 58 - - 0 - 0 - 0 - 0 - 10 - 50 - 69 - 35 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 1 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Chorus...2 - 10 - - - SEVENTH - 5 - - TRIANGL - 35 - 35 - 11 - 2 - off - - - 4 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 6 - 5 - 4 - - - 1 - 2 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - -3 - 1 - -1 - 2 - - 13 - 6 - 13 - 11 - 7 - 7 - 6 - 9 - 15 - 7 - 15 - 15 - 7 - 7 - 8 - 5 - 9 - 4 - 9 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 77 - 87 - 73 - - 0 - 0 - 0 - 0 - 10 - 50 - 69 - 35 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 1 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Chorus...3 - 11 - - - SEVENTH - 0 - - TRIANGL - 27 - 15 - 72 - 34 - off - - - 1 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 6 - 5 - 6 - 3 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W2 - W2 - 3 - 2 - 1 - 0 - - 10 - 10 - 13 - 7 - 5 - 4 - 6 - 5 - 14 - 9 - 15 - 14 - 8 - 5 - 8 - 10 - 7 - 5 - 9 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 91 - 96 - 81 - - 1 - 0 - 0 - 1 - 10 - 60 - 89 - 45 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 1 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - Chorus...4 - 12 - - - SEVENTH - 1 - - TRIANGL - 27 - 15 - 79 - 38 - off - - - 1 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 7 - 6 - 6 - 4 - - - 1 - 1 - 0.5 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W4 - W1 - W1 - 2 - 1 - -2 - 1 - - 9 - 12 - 10 - 9 - 4 - 8 - 7 - 7 - 15 - 11 - 15 - 13 - 8 - 4 - 5 - 8 - 7 - 6 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 99 - 99 - 65 - - 0 - 0 - 0 - 0 - 10 - 60 - 89 - 45 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 1 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Chorus...5 - 13 - - - SEVENTH - 1 - - TRIANGL - 27 - 15 - 79 - 61 - off - - - 1 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 5 - - - 1 - 2 - 3 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W3 - 0 - 0 - 0 - 0 - - 12 - 12 - 10 - 12 - 7 - 6 - 10 - 10 - 15 - 13 - 15 - 13 - 6 - 5 - 3 - 6 - 8 - 7 - 7 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 75 - - 0 - 0 - 1 - 0 - 10 - 50 - 67 - 62 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 1 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - Chorus...6 - 14 - - - SEVENTH - 3 - - TRIANGL - 27 - 15 - 79 - 61 - off - - - 3 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 3 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W4 - W1 - 2 - 0 - 3 - 0 - - 8 - 9 - 8 - 6 - 8 - 3 - 5 - 7 - 15 - 13 - 15 - 13 - 5 - 4 - 4 - 5 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 91 - 85 - 91 - 66 - - 0 - 0 - 0 - 0 - 30 - 50 - 42 - 23 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 1 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - Chorus...7 - 15 - - - SEVENTH - 1 - - TRIANGL - 27 - 15 - 79 - 61 - off - - - 1 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 6 - 5 - 7 - 0 - - - 3 - 1 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W4 - W2 - 0 - 0 - 0 - 0 - - 9 - 9 - 9 - 6 - 6 - 5 - 4 - 5 - 13 - 14 - 13 - 12 - 2 - 3 - 6 - 6 - 9 - 7 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 91 - 95 - 57 - - 0 - 0 - 0 - 0 - 30 - 50 - 42 - 23 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 1 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Chorus...8 - 16 - - - - FVoice - 2 - - FIFTH - 6 - - TRIANGL - 39 - 27 - 48 - 8 - on - - - 2 - 1 - off - off - on - on - 0 - 0 - 0 - 0 - 6 - 6 - 6 - 6 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W1 - W4 - -3 - -1 - 3 - -2 - - 12 - 21 - 12 - 31 - 8 - 24 - 8 - 19 - 14 - 12 - 14 - 10 - 4 - 24 - 4 - 4 - 9 - 7 - 9 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 75 - 91 - 82 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 4 - - F Voice..1 - 0 - - - FOURTH - 4 - - TRIANGL - 39 - 34 - 91 - 2 - off - - - 1 - 1 - off - off - on - on - 0 - 0 - 0 - 0 - 6 - 4 - 5 - 5 - - - 1 - 1 - 1 - 23.55 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 0 - 3 - -2 - - 14 - 6 - 12 - 13 - 8 - 7 - 6 - 22 - 14 - 9 - 14 - 14 - 4 - 15 - 10 - 15 - 9 - 3 - 7 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 87 - 68 - 26 - 50 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - F Voice..2 - 1 - - - EIGHTH - 4 - - TRIANGL - 35 - 0 - 21 - 40 - off - - - 1 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 6 - 6 - 6 - 5 - - - 1 - 2 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -2 - 2 - 3 - -3 - - 13 - 12 - 13 - 15 - 25 - 25 - 12 - 31 - 15 - 15 - 15 - 15 - 6 - 6 - 10 - 14 - 7 - 7 - 7 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 99 - 99 - 99 - - 0 - 0 - 0 - 0 - 0 - 60 - 15 - 40 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 4 - - F Voice..3 - 2 - - - FIFTH - 7 - - TRIANGL - 35 - 58 - 10 - 2 - off - - - 4 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 0 - 6 - 4 - - - 1 - 1 - 2 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 1 - 1 - 0 - 0 - - 18 - 15 - 18 - 18 - 6 - 6 - 21 - 21 - 15 - 14 - 15 - 15 - 4 - 6 - 4 - 3 - 9 - 7 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 88 - 67 - 55 - 71 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 1 - - - 12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - F Voice..4 - 3 - - - FIFTH - 4 - - TRIANGL - 30 - 3 - 37 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 0 - 2 - 0 - - - 1 - 1 - 2 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - -3 - -3 - 3 - - 19 - 14 - 11 - 24 - 15 - 23 - 13 - 23 - 15 - 15 - 10 - 15 - 0 - 0 - 0 - 0 - 7 - 6 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 47 - 99 - 45 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Fem.Voice* - 4 - - - - MVoice - 3 - - FIFTH - 0 - - TRIANGL - 30 - 33 - 51 - 38 - off - - - 1 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 6 - 6 - 6 - 5 - - - 2 - 5 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W5 - W2 - W1 - 1 - -1 - -1 - -1 - - 13 - 13 - 12 - 31 - 24 - 5 - 6 - 24 - 15 - 15 - 15 - 14 - 2 - 2 - 4 - 3 - 7 - 7 - 7 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 61 - 99 - 73 - - 0 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - M Voice..1 - 0 - - - FIFTH - 4 - - TRIANGL - 29 - 12 - 41 - 38 - off - - - 2 - 1 - on - off - on - off - 0 - 0 - 0 - 0 - 6 - 6 - 6 - 5 - - - 2 - 1 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W2 - 1 - -2 - 0 - 0 - - 15 - 31 - 15 - 31 - 24 - 24 - 24 - 24 - 15 - 15 - 15 - 15 - 3 - 3 - 3 - 3 - 7 - 4 - 7 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 74 - 96 - 71 - - 0 - 0 - 1 - 1 - 0 - 0 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - M Voice..2 - 1 - - - FIFTH - 4 - - TRIANGL - 30 - 33 - 33 - 12 - off - - - 1 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 5 - - - 3 - 6.96 - 1 - 1 - no - yes - no - no - 8 - 55 - 8 - 8 - - W1 - W1 - W2 - W2 - 2 - 0 - 1 - 1 - - 8 - 18 - 9 - 31 - 0 - 7 - 3 - 24 - 12 - 3 - 9 - 10 - 15 - 15 - 15 - 2 - 8 - 4 - 7 - 4 - VOF - V24 - VOF - V48 - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 42 - 88 - 90 - - 1 - 1 - 1 - 1 - 10 - 10 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - M Voice..3 - 2 - - - FIFTH - 2 - - TRIANGL - 33 - 20 - 56 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 6 - 6 - - - 1 - 8 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W2 - W1 - -2 - 1 - 3 - 1 - - 10 - 13 - 12 - 12 - 0 - 12 - 6 - 5 - 12 - 15 - 13 - 3 - 15 - 6 - 15 - 7 - 8 - 5 - 7 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 52 - 92 - 70 - - 1 - 1 - 1 - 1 - 10 - 10 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - M Voice..4 - 3 - - - FIFTH - 0 - - TRIANGL - 32 - 0 - 48 - 38 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 13.5 - 1 - 2 - 1 - yes - no - no - no - 72 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 2 - -3 - 3 - - 10 - 18 - 11 - 31 - 25 - 6 - 25 - 25 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 7 - 2 - 7 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 78 - 71 - 99 - 77 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 19 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Mal.Voice* - 4 - - - FOURTH - 1 - - TRIANGL - 10 - 7 - 5 - 1 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 0 - 0 - 0 - - - 4 - 5 - 0.5 - 27.57 - no - no - no - no - 8 - 8 - 8 - 23 - - W1 - W4 - W1 - W2 - 0 - -3 - 3 - 0 - - 14 - 11 - 15 - 31 - 0 - 2 - 2 - 0 - 15 - 15 - 15 - 15 - 1 - 3 - 4 - 0 - 6 - 1 - 1 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 60 - 59 - 50 - - 0 - 0 - 0 - 0 - 8 - 13 - 35 - 44 - - - -12 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 3 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Male Voice - 5 - - - FOURTH - 1 - - TRIANGL - 26 - 0 - 5 - 1 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 0 - 0 - 0 - - - 1.5 - 1.49 - 0.75 - 9.06 - no - no - no - no - 16 - 9 - 12 - 9 - - W1 - W4 - W1 - W2 - 0 - -3 - 3 - 0 - - 14 - 11 - 15 - 31 - 0 - 2 - 2 - 0 - 15 - 15 - 15 - 15 - 1 - 3 - 4 - 0 - 6 - 1 - 1 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 60 - 59 - 50 - - 0 - 0 - 0 - 0 - 8 - 13 - 35 - 44 - - - -7 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - MaleVoices - 6 - - - - Other - 4 - - FIFTH - 5 - - TRIANGL - 34 - 14 - 19 - 8 - off - - - 5 - 1 - off - on - off - on - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 5 - - - 2 - 2 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - 3 - 3 - -3 - -3 - - 12 - 12 - 12 - 5 - 31 - 7 - 31 - 7 - 15 - 14 - 15 - 14 - 0 - 0 - 0 - 0 - 7 - 5 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 86 - 99 - 82 - - 0 - 0 - 0 - 0 - 10 - 14 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Quartet..1 - 0 - - - FIFTH - 6 - - TRIANGL - 34 - 14 - 19 - 8 - off - - - 5 - 1 - off - on - off - on - 0 - 0 - 0 - 0 - 6 - 5 - 6 - 4 - - - 2 - 1 - 2 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W1 - 3 - 3 - -3 - -3 - - 12 - 14 - 14 - 14 - 31 - 7 - 31 - 7 - 15 - 14 - 15 - 14 - 0 - 0 - 0 - 0 - 7 - 5 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 99 - 81 - - 0 - 0 - 0 - 0 - 10 - 14 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Quartet..2 - 1 - - - SIXTH - 7 - - TRIANGL - 33 - 8 - 12 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 1 - 2 - - - 3 - 6 - 2.99 - 5.99 - no - no - no - no - 8 - 8 - 10 - 12 - - W2 - W4 - W4 - W6 - -3 - -3 - 3 - 3 - - 14 - 14 - 14 - 20 - 9 - 8 - 9 - 6 - 10 - 9 - 11 - 7 - 2 - 2 - 2 - 0 - 4 - 4 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 89 - 99 - 73 - - 0 - 0 - 0 - 0 - 0 - 20 - 0 - 20 - - - -19 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Ensem.1 - 2 - - - SEVENTH - 7 - - TRIANGL - 33 - 12 - 22 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 2 - - - 3 - 6 - 6 - 21.98 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W2 - W1 - W7 - -3 - 3 - 3 - 0 - - 10 - 10 - 31 - 31 - 3 - 4 - 7 - 23 - 11 - 7 - 11 - 12 - 1 - 2 - 2 - 9 - 5 - 5 - 5 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 72 - - 0 - 0 - 0 - 0 - 0 - 20 - 0 - 20 - - - -19 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Ensem.2 - 3 - - - FIFTH - 2 - - SHOLD - 99 - 0 - 12 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 6 - 2 - - - 1 - 3 - 5 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W5 - W1 - -3 - -3 - 3 - 3 - - 26 - 31 - 26 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 7 - 5 - 7 - 5 - 4 - 2 - 4 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 67 - 86 - 80 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 39 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Ensem.3 - 4 - - - FIFTH - 7 - - TRIANGL - 31 - 1 - 20 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 1 - - - 6 - 3 - 2.99 - 6 - no - no - no - no - 8 - 8 - 10 - 8 - - W2 - W4 - W4 - W1 - -3 - -1 - 1 - 3 - - 27 - 7 - 16 - 8 - 9 - 7 - 31 - 4 - 11 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 4 - 4 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 81 - 99 - 62 - - 0 - 0 - 0 - 0 - 20 - 20 - 20 - 20 - - - -19 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Ensem.4 - 5 - - - SIXTH - 6 - - TRIANGL - 28 - 11 - 27 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 3 - 3 - 0 - - - 1 - 0.5 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W2 - W3 - W6 - -3 - 3 - -3 - 0 - - 14 - 11 - 14 - 14 - 6 - 6 - 6 - 2 - 14 - 14 - 14 - 10 - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 91 - 68 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 19 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Ensem.5 - 6 - - - FIFTH - 5 - - TRIANGL - 30 - 10 - 80 - 4 - off - - - 4 - 2 - on - on - on - on - 0 - 0 - 0 - 0 - 2 - 0 - 2 - 0 - - - 2 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - -3 - 3 - 3 - - 10 - 10 - 10 - 12 - 14 - 14 - 12 - 14 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 6 - 4 - 6 - 4 - VOF - VOF - VOF - VOF - - - 99 - 86 - 99 - 50 - 50 - 50 - - 99 - 65 - 99 - 65 - - 0 - 0 - 0 - 0 - 10 - 10 - 10 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Voice 1 - 7 - - - FIFTH - 5 - - TRIANGL - 30 - 10 - 80 - 4 - off - - - 4 - 2 - on - on - on - on - 0 - 0 - 0 - 0 - 2 - 0 - 2 - 0 - - - 2 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - -3 - 3 - 3 - - 13 - 13 - 13 - 12 - 14 - 14 - 12 - 14 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 6 - 4 - 6 - 4 - VOF - VOF - VOF - VOF - - - 99 - 86 - 99 - 50 - 50 - 50 - - 99 - 65 - 99 - 65 - - 0 - 0 - 0 - 0 - 10 - 10 - 10 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Voice 1* - 8 - - - FIFTH - 6 - - TRIANGL - 30 - 18 - 44 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 0 - 2 - 0 - - - 2 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W4 - W1 - -3 - 0 - 0 - 1 - - 14 - 15 - 14 - 18 - 2 - 2 - 2 - 2 - 10 - 11 - 10 - 15 - 1 - 1 - 1 - 1 - 5 - 2 - 5 - 4 - VOF - VOF - VOF - VOF - - - 99 - 62 - 99 - 50 - 50 - 50 - - 99 - 49 - 99 - 55 - - 1 - 1 - 1 - 1 - 15 - 0 - 15 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Voice 2 - 9 - - - FOURTH - 7 - - TRIANGL - 30 - 11 - 33 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 2 - 0 - - - 1 - 1 - 2 - 11 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -2 - 3 - 0 - - 17 - 11 - 12 - 31 - 15 - 23 - 13 - 31 - 15 - 15 - 11 - 15 - 0 - 0 - 0 - 0 - 7 - 6 - 7 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 82 - 66 - 0 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Syntvoice* - 10 - - - THIRD - 7 - - SAWUP - 16 - 0 - 81 - 0 - on - - - 6 - 2 - off - off - off - on - 0 - 0 - 0 - 0 - 3 - 0 - 0 - 0 - - - 1 - 0.5 - 1.49 - 15.57 - no - no - no - no - 8 - 8 - 9 - 96 - - W2 - W4 - W1 - W4 - -3 - 3 - 3 - -3 - - 20 - 14 - 19 - 31 - 17 - 8 - 28 - 0 - 0 - 15 - 6 - 15 - 13 - 7 - 13 - 0 - 11 - 7 - 12 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 76 - 99 - 71 - - 0 - 0 - 0 - 0 - 0 - 5 - 8 - 0 - - - -1 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - VocalNuts - 11 - - - FIFTH - 7 - - TRIANGL - 35 - 42 - 35 - 0 - off - - - 3 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 6 - 1 - 6 - 3 - - - 1 - 1 - 10 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 2 - 1 - -1 - 1 - - 8 - 10 - 9 - 15 - 14 - 31 - 31 - 14 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 6 - 3 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 66 - 68 - 69 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 99 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 65 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - > Voices < - 12 - - - FOURTH - 7 - - TRIANGL - 26 - 0 - 5 - 1 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 0 - 0 - 0 - - - 1.5 - 1.49 - 1.51 - 10.48 - no - no - no - no - 16 - 9 - 14 - 9 - - W1 - W1 - W1 - W1 - 0 - -3 - 3 - 0 - - 14 - 11 - 15 - 31 - 0 - 2 - 2 - 0 - 15 - 15 - 15 - 15 - 1 - 3 - 4 - 0 - 6 - 1 - 1 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 64 - 53 - 57 - - 0 - 0 - 0 - 0 - 0 - 5 - 8 - 0 - - - -7 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Voices - 13 - - - SEVENTH - 7 - - SAWUP - 79 - 0 - 68 - 99 - off - - - 3 - 0 - off - off - off - on - 0 - 0 - 0 - 0 - 2 - 2 - 3 - 0 - - - 1.51 - 1.49 - 24.22 - 22.38 - no - no - no - no - 14 - 9 - 8 - 23 - - W4 - W4 - W7 - W3 - -3 - 1 - 3 - -3 - - 11 - 11 - 16 - 31 - 8 - 8 - 10 - 14 - 13 - 13 - 12 - 14 - 0 - 0 - 0 - 0 - 4 - 4 - 6 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 99 - 65 - 92 - - 1 - 0 - 0 - 0 - 0 - 38 - 0 - 0 - - - -7 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 21 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Whisper - 14 - - - SECOND - 0 - - SHOLD - 99 - 0 - 82 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 1 - 2 - 1 - - - 2 - 8 - 2 - 7.4 - no - no - no - no - 8 - 8 - 8 - 12 - - W1 - W8 - W1 - W4 - 3 - 3 - -3 - -3 - - 11 - 0 - 23 - 6 - 1 - 0 - 1 - 29 - 15 - 15 - 10 - 15 - 6 - 12 - 0 - 1 - 5 - 2 - 2 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 83 - 75 - 6 - - 1 - 1 - 1 - 0 - 1 - 46 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Wind Voice - 15 - - - - - PERCUSSION - 5 - - Bell - 0 - - FIFTH - 0 - - TRIANGL - 18 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 0 - 2 - 1 - - - 1 - 3.46 - 1 - 2.93 - no - no - no - no - 8 - 8 - 8 - 23 - - W1 - W1 - W1 - W5 - -3 - -3 - 3 - 3 - - 26 - 31 - 26 - 31 - 15 - 31 - 15 - 31 - 0 - 15 - 0 - 15 - 0 - 0 - 0 - 0 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 65 - 99 - 73 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Agogo * - 0 - - - FIFTH - 7 - - TRIANGL - 19 - 0 - 6 - 0 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 1 - 2 - - - 2 - 13.89 - 2 - 7 - no - yes - no - no - 8 - 45 - 8 - 8 - - W1 - W2 - W1 - W3 - -1 - -2 - -1 - 1 - - 31 - 31 - 31 - 31 - 17 - 19 - 17 - 18 - 10 - 12 - 14 - 12 - 15 - 25 - 16 - 25 - 6 - 4 - 6 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 89 - 99 - 87 - - 1 - 1 - 1 - 1 - 0 - 17 - 0 - 6 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Agogo Bell - 1 - - - FIFTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 0 - 5 - 0 - - - 3.5 - 3.52 - 5.25 - 5.25 - no - no - no - no - 16 - 16 - 12 - 12 - - W1 - W2 - W1 - W1 - 3 - -3 - 0 - 2 - - 29 - 31 - 23 - 23 - 10 - 3 - 6 - 10 - 0 - 0 - 0 - 0 - 8 - 8 - 8 - 0 - 3 - 3 - 3 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 81 - 99 - 84 - - 1 - 1 - 1 - 1 - 14 - 76 - 20 - 56 - - - -22 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Analobell* - 2 - - - FIFTH - 1 - - TRIANGL - 30 - 0 - 0 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 3 - 0 - 1 - - - 3 - 2 - 1 - 2.82 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 2 - 3 - -3 - - 26 - 30 - 28 - 25 - 12 - 16 - 8 - 26 - 4 - 4 - 11 - 7 - 5 - 0 - 5 - 0 - 4 - 3 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 87 - 98 - 88 - - 0 - 2 - 1 - 1 - 0 - 0 - 0 - 0 - - - 2 - POLY - 3 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 38 - 42 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bangkok - 3 - - - FIFTH - 5 - - TRIANGL - 24 - 0 - 0 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 1 - 5 - 1 - - - 1 - 5 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 1 - 0 - 0 - 0 - - 27 - 31 - 31 - 31 - 15 - 16 - 11 - 5 - 15 - 15 - 14 - 7 - 12 - 12 - 0 - 0 - 3 - 3 - 5 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 79 - 78 - 98 - 80 - - 1 - 1 - 0 - 3 - 0 - 0 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bass Bells - 4 - - - FIFTH - 7 - - TRIANGL - 30 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 1 - 3 - 1 - - - 0.5 - 3 - 1 - 7 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - -3 - 3 - 3 - - 24 - 31 - 25 - 31 - 9 - 16 - 9 - 22 - 0 - 8 - 0 - 10 - 0 - 10 - 0 - 7 - 6 - 4 - 4 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 68 - 96 - 76 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bell - 5 - - - FIFTH - 7 - - TRIANGL - 30 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 1 - 3 - 1 - - - 0.5 - 4 - 1 - 7 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - -3 - 3 - 3 - - 24 - 31 - 25 - 31 - 9 - 16 - 9 - 22 - 0 - 8 - 0 - 10 - 0 - 10 - 0 - 7 - 6 - 4 - 4 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 68 - 96 - 76 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bell* - 6 - - - FIFTH - 0 - - TRIANGL - 26 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 4 - 2 - 4 - - - 1.5 - 10.37 - 1.49 - 10.38 - no - no - no - no - 16 - 14 - 9 - 8 - - W1 - W5 - W1 - W4 - -3 - -3 - 3 - 3 - - 31 - 30 - 30 - 31 - 31 - 10 - 29 - 5 - 15 - 2 - 15 - 4 - 10 - 1 - 10 - 0 - 4 - 4 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 83 - 92 - 81 - - 1 - 1 - 1 - 1 - 0 - 80 - 0 - 80 - - - 5 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bell Ensem - 7 - - - SEVENTH - 7 - - TRIANGL - 31 - 0 - 6 - 0 - on - - - 4 - 2 - off - off - off - on - 0 - 0 - 0 - 0 - 3 - 0 - 3 - 0 - - - 1.51 - 1.49 - 0.75 - 9 - no - no - no - no - 14 - 9 - 12 - 96 - - W6 - W6 - W1 - W4 - 3 - -3 - 3 - -3 - - 21 - 31 - 14 - 18 - 8 - 8 - 7 - 11 - 15 - 15 - 15 - 7 - 4 - 7 - 2 - 15 - 5 - 7 - 7 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 92 - 67 - - 0 - 0 - 0 - 0 - 0 - 5 - 8 - 0 - - - 5 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - Bell Pad - 8 - - - FIFTH - 6 - - TRIANGL - 12 - 0 - 6 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 4 - 5 - 1 - - - 2 - 4 - 2 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W3 - W1 - W1 - 3 - -3 - 0 - 0 - - 30 - 27 - 29 - 29 - 2 - 15 - 15 - 4 - 14 - 14 - 14 - 13 - 3 - 0 - 3 - 1 - 3 - 3 - 3 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 87 - 99 - 82 - - 1 - 1 - 0 - 0 - 0 - 88 - 87 - 0 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 17 - 6 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bell.....1 - 9 - - - FIFTH - 7 - - TRIANGL - 20 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 6 - 4 - - - 4 - 14 - 1 - 14 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W3 - W1 - -3 - -3 - 0 - 3 - - 31 - 31 - 31 - 27 - 8 - 7 - 7 - 4 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 74 - 99 - 56 - - 1 - 0 - 1 - 2 - 0 - 0 - 0 - 98 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bell.....2 - 10 - - - FIFTH - 4 - - TRIANGL - 9 - 0 - 4 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 4 - 2 - - - 1 - 5 - 2 - 1.41 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W4 - -3 - 3 - 3 - 0 - - 24 - 21 - 28 - 26 - 24 - 14 - 6 - 4 - 14 - 13 - 7 - 11 - 3 - 0 - 4 - 1 - 1 - 1 - 2 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 84 - 99 - 78 - - 2 - 2 - 2 - 0 - 0 - 0 - 0 - 22 - - - 12 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bell.....3 - 11 - - - FIFTH - 7 - - TRIANGL - 20 - 10 - 0 - 57 - on - - - 0 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 7 - 3 - 5 - 2 - - - 3 - 15 - 3 - 15 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W5 - W1 - W1 - 0 - 1 - 3 - 3 - - 25 - 25 - 25 - 25 - 7 - 10 - 7 - 10 - 7 - 2 - 7 - 1 - 15 - 31 - 18 - 23 - 3 - 3 - 4 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 65 - 99 - 78 - - 0 - 0 - 0 - 0 - 19 - 0 - 19 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 21 - 39 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bell.....4 - 12 - - - SEVENTH - 6 - - TRIANGL - 20 - 10 - 0 - 57 - on - - - 0 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 6 - 4 - - - 1 - 2 - 4 - 15 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 1 - 3 - 3 - - 25 - 25 - 25 - 25 - 7 - 10 - 7 - 10 - 7 - 2 - 7 - 1 - 7 - 31 - 18 - 2 - 4 - 5 - 4 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 72 - 98 - 81 - - 0 - 0 - 0 - 0 - 19 - 0 - 19 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 21 - 39 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bell.....5 - 13 - - - SECOND - 0 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 5 - 5 - - - 1 - 2 - 4 - 15 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W3 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 6 - 10 - 31 - 26 - 0 - 0 - 15 - 0 - 0 - 0 - 0 - 14 - 4 - 5 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 73 - 73 - 78 - - 0 - 1 - 1 - 2 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bell.....6 - 14 - - - THIRD - 0 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 4 - 4 - - - 1 - 7 - 7 - 13 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W2 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 6 - 10 - 31 - 26 - 0 - 0 - 15 - 0 - 0 - 0 - 0 - 14 - 6 - 5 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 73 - 73 - 78 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bell.....7 - 15 - - - FIFTH - 7 - - TRIANGL - 92 - 0 - 1 - 99 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 5 - - - 1 - 7 - 1 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W4 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 10 - 0 - 13 - 13 - 0 - 15 - 0 - 0 - 7 - 0 - 31 - 31 - 4 - 2 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 77 - 99 - 75 - - 0 - 3 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bell.....8 - 16 - - - SIXTH - 0 - - TRIANGL - 26 - 0 - 0 - 57 - on - - - 6 - 1 - on - on - on - off - 0 - 0 - 0 - 0 - 6 - 3 - 5 - 3 - - - 1 - 4 - 8 - 18.37 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W3 - W1 - 0 - 0 - 0 - 0 - - 18 - 18 - 18 - 24 - 8 - 31 - 31 - 21 - 15 - 15 - 15 - 10 - 10 - 10 - 10 - 9 - 5 - 5 - 5 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 0 - 0 - 0 - 2 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bell.....9 - 17 - - - FOURTH - 0 - - TRIANGL - 26 - 0 - 0 - 28 - on - - - 6 - 1 - off - off - on - off - 0 - 0 - 0 - 0 - 6 - 4 - 5 - 4 - - - 2 - 7 - 4 - 12 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W1 - 0 - 0 - 0 - 0 - - 24 - 31 - 31 - 31 - 4 - 12 - 6 - 13 - 12 - 15 - 12 - 10 - 9 - 6 - 7 - 6 - 4 - 3 - 3 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 63 - 72 - 63 - - 0 - 0 - 0 - 2 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bell....10 - 18 - - - SEVENTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 2 - - - 2 - 12 - 2 - 9 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W2 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 16 - 11 - 8 - 5 - 11 - 10 - 10 - 15 - 0 - 0 - 0 - 14 - 4 - 5 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 92 - 93 - 72 - - 0 - 3 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bell....11 - 19 - - - FIFTH - 0 - - TRIANGL - 25 - 0 - 36 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 1 - 2 - - - 0.75 - 2.68 - 0.75 - 2.7 - no - no - no - no - 12 - 19 - 12 - 17 - - W1 - W1 - W1 - W1 - 3 - -3 - -3 - 3 - - 28 - 24 - 31 - 26 - 10 - 8 - 10 - 8 - 14 - 13 - 14 - 13 - 8 - 6 - 8 - 6 - 4 - 2 - 3 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 91 - 97 - 92 - - 0 - 1 - 0 - 1 - 11 - 21 - 13 - 22 - - - 5 - POLY - 1 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 48 - 0 - 0 - 0 - 0 - 0 - 0 - - BelleBell* - 20 - - - EIGHTH - 0 - - TRIANGL - 29 - 0 - 3 - 19 - on - - - 5 - 3 - off - on - off - off - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 0 - - - 6.28 - 1 - 19.03 - 5.19 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 12 - 12 - 12 - 12 - 5 - 5 - 5 - 5 - 13 - 13 - 13 - 13 - 4 - 4 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 95 - 97 - 87 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 24 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bells - 21 - - - SEVENTH - 7 - - TRIANGL - 31 - 0 - 6 - 0 - on - - - 4 - 2 - off - off - off - on - 0 - 0 - 0 - 0 - 3 - 0 - 3 - 0 - - - 1.51 - 1.49 - 0.75 - 9 - no - no - no - no - 14 - 9 - 12 - 96 - - W7 - W7 - W1 - W8 - 3 - -3 - 3 - -3 - - 19 - 19 - 31 - 30 - 12 - 12 - 7 - 11 - 10 - 11 - 15 - 7 - 4 - 7 - 2 - 15 - 5 - 7 - 7 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 87 - 88 - 92 - 67 - - 0 - 0 - 0 - 0 - 0 - 5 - 8 - 0 - - - 5 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - BellyStuff - 22 - - - FIFTH - 6 - - SHOLD - 12 - 0 - 6 - 0 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 3 - 7 - 3 - - - 1 - 8.48 - 0.5 - 3.46 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 3 - -3 - 0 - 0 - - 30 - 27 - 29 - 29 - 2 - 15 - 15 - 4 - 14 - 14 - 14 - 13 - 3 - 0 - 3 - 1 - 3 - 3 - 3 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 99 - 81 - - 1 - 1 - 0 - 0 - 0 - 88 - 87 - 0 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 17 - 6 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Big Bell.1 - 23 - - - FIFTH - 6 - - SHOLD - 12 - 0 - 6 - 0 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 4 - - - 1 - 5.65 - 4 - 6.92 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W2 - W3 - 3 - -3 - 0 - 0 - - 30 - 27 - 29 - 29 - 2 - 15 - 15 - 4 - 14 - 14 - 14 - 13 - 3 - 0 - 3 - 1 - 3 - 3 - 3 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 87 - 99 - 82 - - 1 - 1 - 0 - 0 - 0 - 88 - 87 - 0 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 17 - 6 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Big Bell.2 - 24 - - - FIFTH - 6 - - SHOLD - 12 - 0 - 6 - 0 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 6 - 1 - - - 0.5 - 0.5 - 2 - 7.85 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - -3 - 0 - 0 - - 30 - 27 - 29 - 29 - 2 - 15 - 15 - 4 - 14 - 14 - 14 - 13 - 3 - 0 - 3 - 1 - 3 - 3 - 3 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 90 - 99 - 81 - - 1 - 1 - 0 - 0 - 0 - 88 - 87 - 0 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 17 - 6 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Big Bell.3 - 25 - - - FIFTH - 3 - - TRIANGL - 30 - 6 - 17 - 9 - off - - - 5 - 2 - off - off - off - on - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - - - 1 - 3 - 4 - 11 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W2 - -3 - -3 - 3 - 3 - - 11 - 10 - 11 - 11 - 31 - 7 - 31 - 4 - 15 - 15 - 15 - 15 - 2 - 4 - 2 - 5 - 5 - 4 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 71 - 99 - 85 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 40 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 4 - - BowedBell - 26 - - - FIFTH - 2 - - TRIANGL - 26 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 6 - 2 - - - 2 - 7 - 2 - 7 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W4 - -3 - -3 - 3 - 3 - - 26 - 31 - 26 - 31 - 31 - 14 - 31 - 14 - 15 - 14 - 15 - 13 - 7 - 5 - 7 - 5 - 4 - 2 - 4 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 88 - 96 - 99 - - 1 - 0 - 1 - 0 - 0 - 26 - 0 - 39 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BrightBell - 27 - - - FIFTH - 0 - - SHOLD - 84 - 0 - 71 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 1 - 2 - 1 - - - 5 - 12.72 - 1 - 5.99 - no - no - no - no - 8 - 8 - 8 - 12 - - W1 - W5 - W5 - W1 - 0 - 0 - -1 - 0 - - 13 - 28 - 14 - 28 - 9 - 7 - 4 - 8 - 12 - 14 - 10 - 14 - 0 - 0 - 0 - 0 - 2 - 1 - 2 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 88 - 99 - 85 - - 1 - 1 - 1 - 0 - 1 - 46 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Brthbells - 28 - - - THIRD - 7 - - TRIANGL - 99 - 63 - 49 - 44 - off - - - 5 - 3 - off - on - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1.93 - 1.41 - 0.93 - 1 - no - no - no - no - 23 - 8 - 15 - 8 - - W1 - W2 - W1 - W1 - 3 - 3 - -3 - -3 - - 23 - 24 - 31 - 31 - 31 - 16 - 4 - 31 - 15 - 1 - 11 - 15 - 9 - 28 - 16 - 1 - 8 - 14 - 15 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 84 - 64 - 43 - 47 - - 1 - 0 - 0 - 1 - 0 - 36 - 44 - 34 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Carnival! - 29 - - - FIFTH - 5 - - SAWUP - 25 - 42 - 14 - 0 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 4 - 7 - 1 - - - 1 - 1.41 - 1 - 23.55 - no - no - no - yes - 8 - 8 - 8 - 8 - - W2 - W1 - W2 - W1 - 0 - -3 - 0 - 0 - - 28 - 28 - 28 - 28 - 9 - 9 - 9 - 9 - 4 - 4 - 4 - 4 - 31 - 31 - 31 - 31 - 3 - 4 - 4 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 83 - 90 - 91 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - ChurchBell - 30 - - - SECOND - 7 - - TRIANGL - 35 - 0 - 8 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 0 - 1 - 1 - - - 1.06 - 0.68 - 2.06 - 0.56 - no - no - no - no - 9 - 11 - 9 - 9 - - W1 - W1 - W2 - W4 - 0 - 1 - 0 - 0 - - 26 - 24 - 22 - 25 - 5 - 24 - 7 - 22 - 0 - 3 - 6 - 7 - 7 - 3 - 6 - 0 - 3 - 3 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 96 - 60 - 67 - - 1 - 1 - 0 - 0 - 0 - 34 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 3 - - ClickChime - 31 - - - FIFTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1.5 - 5.25 - 1.51 - 5.29 - no - no - no - no - 16 - 12 - 14 - 14 - - W1 - W1 - W1 - W1 - 3 - 1 - -3 - -1 - - 31 - 31 - 30 - 30 - 9 - 5 - 9 - 4 - 0 - 0 - 0 - 0 - 10 - 27 - 22 - 31 - 3 - 4 - 3 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 73 - 99 - 75 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - -7 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Cloches * - 32 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 21.88 - 12.25 - 19.56 - 11.13 - yes - yes - yes - yes - 31 - 68 - 62 - 55 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 18 - 22 - 18 - 10 - 15 - 11 - 7 - 12 - 18 - 0 - 16 - 31 - 8 - 4 - 8 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 79 - 95 - 67 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Cow Bell - 33 - - - FIFTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 0 - 3 - 0 - - - 1 - 5 - 1 - 20.7 - no - no - no - yes - 8 - 8 - 8 - 51 - - W1 - W5 - W1 - W3 - 0 - 0 - 0 - 0 - - 26 - 31 - 26 - 31 - 16 - 20 - 14 - 23 - 0 - 0 - 0 - 0 - 31 - 31 - 31 - 31 - 8 - 10 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 71 - 99 - 81 - - 1 - 0 - 2 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Cow-Belle* - 34 - - - THIRD - 5 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 6 - 4 - - - 1 - 9 - 3.46 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 22 - 22 - 31 - 31 - 7 - 7 - 15 - 15 - 2 - 2 - 4 - 4 - 6 - 6 - 4 - 4 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 74 - 81 - 65 - - 1 - 1 - 1 - 1 - 0 - 0 - 31 - 31 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Gong.....1 - 35 - - - THIRD - 6 - - TRIANGL - 25 - 0 - 0 - 64 - on - - - 5 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 7 - 5 - - - 1 - 9 - 3.46 - 14.1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 24 - 12 - 24 - 2 - 9 - 9 - 9 - 12 - 14 - 3 - 3 - 12 - 5 - 14 - 7 - 6 - 6 - 3 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 77 - 80 - 59 - - 1 - 1 - 1 - 1 - 0 - 0 - 31 - 31 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Gong.....2 - 36 - - - THIRD - 6 - - TRIANGL - 11 - 0 - 13 - 64 - on - - - 6 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 4 - - - 0.5 - 0.78 - 0.87 - 0.87 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 7 - 19 - 25 - 31 - 31 - 31 - 31 - 14 - 15 - 15 - 15 - 3 - 2 - 2 - 2 - 3 - 2 - 2 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 70 - 74 - 53 - - 1 - 1 - 1 - 1 - 0 - 0 - 31 - 31 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Gong.....3 - 37 - - - FIFTH - 0 - - TRIANGL - 82 - 0 - 7 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 4 - 3 - 4 - - - 1 - 1.41 - 1 - 2.29 - no - no - no - no - 8 - 8 - 8 - 18 - - W1 - W1 - W1 - W1 - -3 - 3 - 3 - 0 - - 24 - 7 - 16 - 11 - 24 - 4 - 6 - 4 - 14 - 13 - 7 - 11 - 3 - 0 - 4 - 1 - 1 - 1 - 2 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 71 - 99 - 67 - - 2 - 2 - 2 - 0 - 0 - 0 - 0 - 22 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Gong Ageng - 38 - - - FOURTH - 5 - - SHOLD - 99 - 32 - 80 - 0 - on - - - 7 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 0 - 1 - 3 - - - 0.5 - 0.79 - 3 - 1.41 - no - no - no - no - 8 - 9 - 8 - 8 - - W1 - W5 - W1 - W8 - 0 - 0 - 0 - 0 - - 22 - 31 - 31 - 31 - 9 - 31 - 13 - 31 - 14 - 15 - 10 - 15 - 15 - 0 - 0 - 0 - 3 - 3 - 2 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 85 - 69 - 83 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 3 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 41 - 0 - 0 - 0 - 0 - 0 - 0 - - Gongs * - 39 - - - FIFTH - 7 - - TRIANGL - 20 - 8 - 2 - 27 - off - - - 5 - 1 - on - off - on - off - 0 - 0 - 0 - 0 - 3 - 4 - 3 - 2 - - - 1.49 - 1.49 - 1.5 - 20.31 - no - no - no - no - 9 - 9 - 16 - 23 - - W1 - W1 - W2 - W8 - -3 - 3 - 3 - -3 - - 31 - 31 - 31 - 31 - 8 - 18 - 12 - 13 - 14 - 14 - 12 - 12 - 4 - 2 - 8 - 9 - 7 - 4 - 13 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 86 - 96 - 61 - - 2 - 2 - 1 - 2 - 0 - 25 - 0 - 39 - - - -7 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - HiTine81Z - 40 - - - SIXTH - 7 - - TRIANGL - 36 - 35 - 0 - 0 - on - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 3 - - - 1 - 8 - 1 - 7 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W3 - W2 - -1 - 0 - 0 - 0 - - 31 - 31 - 19 - 12 - 6 - 6 - 6 - 6 - 13 - 13 - 13 - 13 - 6 - 6 - 6 - 10 - 4 - 4 - 5 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 87 - 86 - 98 - 68 - - 1 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - HumorBells - 41 - - - FIFTH - 0 - - SQUARE - 31 - 11 - 4 - 26 - off - - - 5 - 3 - off - on - off - on - 0 - 0 - 0 - 0 - 4 - 3 - 4 - 3 - - - 1.5 - 15 - 1.49 - 15 - no - no - no - no - 16 - 8 - 9 - 8 - - W1 - W7 - W1 - W8 - -3 - -3 - 3 - 3 - - 31 - 31 - 31 - 31 - 9 - 14 - 9 - 14 - 13 - 9 - 13 - 9 - 8 - 13 - 8 - 13 - 4 - 4 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 63 - 95 - 63 - - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - - - 5 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 10 - 80 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - KeyBell - 42 - - - FIFTH - 6 - - SHOLD - 12 - 0 - 6 - 0 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 6 - 4 - - - 1.41 - 10 - 3.46 - 3.46 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - -3 - 0 - 0 - - 30 - 27 - 29 - 29 - 2 - 15 - 15 - 4 - 14 - 14 - 14 - 13 - 3 - 0 - 3 - 1 - 3 - 3 - 3 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 84 - - 1 - 1 - 0 - 0 - 0 - 88 - 87 - 0 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 17 - 6 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Large Ben - 43 - - - THIRD - 2 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 4 - 3 - - - 4 - 0.5 - 0.5 - 7 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 19 - 19 - 22 - 29 - 9 - 28 - 12 - 10 - 14 - 9 - 4 - 3 - 6 - 9 - 2 - 7 - 9 - 4 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 88 - - 3 - 3 - 3 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - LastTwango - 44 - - - FIFTH - 7 - - TRIANGL - 20 - 8 - 2 - 27 - off - - - 5 - 1 - on - off - on - off - 0 - 0 - 0 - 0 - 3 - 4 - 3 - 2 - - - 1.49 - 1.49 - 1.5 - 21.06 - no - no - no - no - 9 - 9 - 16 - 23 - - W1 - W1 - W2 - W8 - -3 - 3 - 3 - -3 - - 31 - 31 - 31 - 31 - 12 - 4 - 15 - 9 - 14 - 13 - 12 - 12 - 3 - 3 - 8 - 9 - 7 - 4 - 13 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 86 - 96 - 53 - - 2 - 2 - 1 - 2 - 0 - 25 - 0 - 39 - - - -19 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - LoTine81Z - 45 - - - FIFTH - 6 - - TRIANGL - 32 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 1 - 2 - - - 1.5 - 3 - 1.49 - 2.99 - no - no - no - no - 16 - 8 - 9 - 10 - - W1 - W1 - W1 - W1 - -3 - 3 - 3 - -3 - - 20 - 31 - 21 - 31 - 14 - 14 - 18 - 6 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 7 - 3 - 7 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 99 - 79 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -19 - MONO - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - MellowSqar - 46 - - - FIFTH - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 3 - - - 3 - 4 - 2 - 1.41 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 16 - 16 - 16 - 16 - 5 - 5 - 5 - 5 - 18 - 18 - 18 - 18 - 8 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 71 - 99 - 74 - - 0 - 0 - 0 - 2 - 0 - 0 - 0 - 0 - - - 0 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Moooo Bell - 47 - - - FIFTH - 0 - - TRIANGL - 25 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 4 - 2 - 4 - - - 1.31 - 8.97 - 1 - 7.85 - no - no - no - no - 13 - 11 - 8 - 8 - - W1 - W2 - W1 - W1 - -3 - -2 - 3 - 0 - - 31 - 31 - 31 - 29 - 12 - 13 - 10 - 15 - 11 - 1 - 1 - 1 - 6 - 0 - 0 - 0 - 4 - 6 - 5 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 79 - 99 - 80 - - 0 - 1 - 1 - 1 - 0 - 3 - 0 - 6 - - - 11 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Mr.Rogers - 48 - - - FIFTH - 0 - - SAWUP - 12 - 0 - 0 - 15 - off - - - 0 - 0 - off - on - off - on - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 6 - 5 - 6 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 3 - -3 - -3 - - 17 - 31 - 17 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 5 - 0 - 5 - 0 - 3 - 3 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 73 - 99 - 73 - - 2 - 1 - 2 - 1 - 99 - 0 - 99 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OhMy!Bells - 49 - - - FIRST - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 2 - 5 - 2 - - - 1 - 2 - 1 - 7.07 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 16 - 16 - 16 - 16 - 5 - 5 - 5 - 5 - 18 - 18 - 18 - 18 - 8 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 70 - 73 - 79 - - 0 - 0 - 0 - 2 - 0 - 0 - 0 - 0 - - - 0 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntCowBel - 50 - - - FIFTH - 0 - - SHOLD - 67 - 0 - 4 - 41 - off - - - 6 - 3 - off - off - off - on - 0 - 0 - 0 - 0 - 3 - 4 - 5 - 3 - - - 0.5 - 0.5 - 5 - 18.84 - no - no - no - no - 8 - 8 - 8 - 96 - - W1 - W4 - W1 - W7 - -3 - 3 - 3 - -3 - - 31 - 31 - 31 - 31 - 22 - 22 - 31 - 31 - 14 - 14 - 14 - 13 - 10 - 15 - 15 - 7 - 6 - 7 - 7 - 4 - VOF - VOF - VOF - V24 - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - PluckBell - 51 - - - SEVENTH - 0 - - TRIANGL - 31 - 0 - 14 - 0 - on - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 3 - - - 2 - 2 - 2 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 9 - 31 - 31 - 31 - 13 - 17 - 0 - 0 - 15 - 15 - 15 - 15 - 9 - 12 - 0 - 3 - 6 - 4 - 4 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 81 - 99 - - 1 - 1 - 2 - 0 - 0 - 0 - 0 - 10 - - - -24 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SpaceBell1 - 52 - - - SIXTH - 4 - - TRIANGL - 22 - 0 - 9 - 4 - on - - - 3 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 3 - - - 14 - 23.55 - 20.41 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 24 - 25 - 31 - 31 - 15 - 31 - 31 - 15 - 15 - 15 - 15 - 9 - 10 - 10 - 10 - 7 - 6 - 6 - 6 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 85 - - 1 - 1 - 2 - 0 - 0 - 0 - 0 - 10 - - - -24 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SpaceBell2 - 53 - - - FIFTH - 4 - - TRIANGL - 7 - 0 - 4 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 6 - 4 - - - 1 - 1.41 - 7 - 11 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W2 - W1 - -1 - 0 - -2 - -2 - - 24 - 21 - 28 - 26 - 24 - 14 - 6 - 4 - 14 - 13 - 7 - 11 - 3 - 0 - 4 - 1 - 1 - 1 - 2 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 83 - 99 - 79 - - 2 - 2 - 2 - 0 - 0 - 0 - 0 - 22 - - - -12 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SundayBell - 54 - - - FIFTH - 7 - - TRIANGL - 34 - 0 - 10 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 1 - - - 1.5 - 22.49 - 3 - 25.95 - no - no - no - no - 16 - 8 - 8 - 8 - - W3 - W3 - W1 - W4 - -3 - 0 - 3 - 0 - - 31 - 31 - 31 - 31 - 15 - 21 - 11 - 17 - 10 - 12 - 8 - 8 - 6 - 5 - 6 - 6 - 5 - 1 - 5 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 76 - 99 - 77 - - 0 - 0 - 0 - 0 - 0 - 30 - 0 - 70 - - - -7 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Perc. 1 - 55 - - - FIFTH - 7 - - TRIANGL - 32 - 0 - 18 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 0 - 2 - 0 - - - 2 - 13 - 0.5 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W3 - W2 - W1 - W2 - -2 - -2 - 2 - 2 - - 27 - 31 - 26 - 31 - 9 - 7 - 8 - 8 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 5 - 1 - 4 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 57 - 92 - 50 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Perc. 2 - 56 - - - FIFTH - 7 - - TRIANGL - 31 - 0 - 0 - 0 - off - - - 5 - 0 - on - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W7 - W6 - W1 - 3 - 3 - -3 - -3 - - 22 - 31 - 26 - 31 - 21 - 26 - 22 - 20 - 14 - 4 - 12 - 0 - 7 - 8 - 12 - 0 - 7 - 1 - 9 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 60 - 91 - 77 - - 2 - 0 - 2 - 0 - 0 - 0 - 0 - 30 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Perc. 3 - 57 - - - FIFTH - 0 - - TRIANGL - 26 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 4 - 2 - 4 - - - 1.5 - 10.37 - 1.49 - 10.38 - no - no - no - no - 16 - 14 - 9 - 8 - - W1 - W5 - W1 - W4 - -3 - -3 - 3 - 3 - - 31 - 30 - 30 - 31 - 31 - 10 - 29 - 5 - 15 - 2 - 15 - 4 - 10 - 1 - 10 - 0 - 5 - 5 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 83 - 92 - 81 - - 1 - 1 - 1 - 1 - 0 - 30 - 0 - 30 - - - 5 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sy.Perc. 4 - 58 - - - SIXTH - 0 - - SHOLD - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 5 - - - 0.5 - 2 - 2 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 1 - -1 - 3 - - 31 - 31 - 31 - 31 - 6 - 6 - 6 - 6 - 14 - 14 - 14 - 14 - 6 - 6 - 6 - 6 - 4 - 4 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 91 - 84 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -24 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SynthBell - 59 - - - FIFTH - 2 - - TRIANGL - 26 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 6 - 2 - - - 2 - 7 - 2 - 7 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W4 - -3 - -3 - 3 - 3 - - 26 - 31 - 26 - 31 - 31 - 14 - 31 - 14 - 15 - 14 - 15 - 10 - 7 - 5 - 7 - 5 - 4 - 2 - 4 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 67 - 96 - 80 - - 1 - 0 - 1 - 0 - 0 - 26 - 0 - 39 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Tube Bell - 60 - - - FIFTH - 4 - - TRIANGL - 7 - 0 - 4 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 1.41 - 1 - 1.41 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 3 - 3 - 0 - - 24 - 21 - 28 - 26 - 24 - 14 - 6 - 4 - 14 - 13 - 7 - 11 - 3 - 0 - 4 - 1 - 1 - 1 - 2 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 76 - 99 - 71 - - 2 - 2 - 2 - 0 - 0 - 0 - 0 - 22 - - - 12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Tube Bells - 61 - - - - Block - 1 - - THIRD - 7 - - SHOLD - 99 - 0 - 99 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 1 - 1 - 0 - - - 14.13 - 1.41 - 13 - 23.55 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 3 - -3 - 3 - 2 - - 31 - 31 - 31 - 31 - 17 - 0 - 19 - 3 - 15 - 0 - 11 - 15 - 10 - 31 - 11 - 26 - 6 - 3 - 3 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 64 - 81 - 62 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -10 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - "Air"imba - 0 - - - FIFTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 4 - 2 - 7 - - - 1.5 - 5.02 - 1.51 - 8.63 - no - no - no - yes - 16 - 17 - 14 - 72 - - W1 - W1 - W1 - W1 - -3 - -3 - -2 - 0 - - 31 - 29 - 28 - 31 - 11 - 18 - 8 - 23 - 0 - 4 - 9 - 3 - 24 - 26 - 9 - 24 - 6 - 8 - 4 - 12 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 79 - 99 - 78 - - 2 - 0 - 2 - 0 - 20 - 35 - 36 - 34 - - - -7 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Balafon * - 1 - - - FIFTH - 6 - - TRIANGL - 82 - 0 - 7 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 3.89 - 1 - 1.83 - no - no - no - no - 8 - 12 - 8 - 9 - - W1 - W1 - W1 - W1 - 1 - -1 - -1 - 1 - - 31 - 31 - 26 - 23 - 16 - 23 - 18 - 25 - 10 - 11 - 11 - 12 - 16 - 21 - 22 - 21 - 9 - 10 - 10 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 85 - 92 - 87 - - 0 - 0 - 1 - 1 - 0 - 2 - 1 - 2 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BamboBlock - 2 - - - FIFTH - 0 - - TRIANGL - 35 - 0 - 2 - 0 - on - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 2 - 7 - 3 - - - 1 - 11 - 2 - 7 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - -1 - - 19 - 18 - 18 - 21 - 31 - 31 - 15 - 18 - 15 - 15 - 12 - 12 - 9 - 18 - 12 - 15 - 15 - 15 - 15 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 94 - 91 - 81 - - 0 - 1 - 2 - 1 - 0 - 39 - 17 - 82 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BamboChiff - 3 - - - FIFTH - 3 - - TRIANGL - 44 - 99 - 4 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 4 - 2 - - - 3 - 11 - 6 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -1 - 1 - 1 - - 18 - 18 - 31 - 31 - 10 - 18 - 10 - 18 - 0 - 9 - 12 - 0 - 7 - 6 - 6 - 7 - 6 - 5 - 6 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 77 - 99 - 76 - - 3 - 3 - 3 - 3 - 0 - 0 - 0 - 2 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BamboMar.1 - 4 - - - FIFTH - 3 - - TRIANGL - 21 - 0 - 0 - 0 - on - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 4 - - - 1 - 7 - 1 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -1 - 1 - 1 - - 18 - 18 - 27 - 22 - 10 - 18 - 10 - 13 - 0 - 9 - 12 - 12 - 7 - 6 - 10 - 10 - 6 - 5 - 6 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 70 - 99 - 77 - - 3 - 2 - 3 - 3 - 0 - 0 - 0 - 2 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BamboMar.2 - 5 - - - FIFTH - 7 - - TRIANGL - 21 - 0 - 0 - 0 - on - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 1 - - - 1 - 7 - 1 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -1 - 1 - 1 - - 18 - 18 - 27 - 22 - 10 - 18 - 10 - 13 - 0 - 9 - 12 - 12 - 7 - 6 - 10 - 10 - 6 - 5 - 6 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 70 - 99 - 72 - - 3 - 3 - 3 - 3 - 0 - 0 - 0 - 2 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BamboMar.3 - 6 - - - THIRD - 5 - - TRIANGL - 23 - 12 - 49 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 0 - 3 - 2 - - - 0.5 - 1.05 - 1.06 - 0.5 - no - no - no - no - 8 - 12 - 9 - 8 - - W1 - W2 - W8 - W2 - 2 - 0 - 0 - -3 - - 26 - 28 - 23 - 26 - 10 - 18 - 27 - 6 - 0 - 4 - 4 - 0 - 31 - 15 - 15 - 31 - 5 - 5 - 5 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 91 - 80 - 60 - - 1 - 2 - 2 - 2 - 0 - 0 - 0 - 70 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bamboo * - 7 - - - FIFTH - 3 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0.5 - 12.72 - 0.5 - 11.24 - yes - yes - yes - yes - 8 - 64 - 8 - 72 - - W1 - W1 - W1 - W2 - 3 - -3 - -3 - 3 - - 31 - 24 - 31 - 25 - 21 - 22 - 21 - 22 - 0 - 0 - 0 - 0 - 21 - 31 - 0 - 31 - 12 - 3 - 12 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 82 - 99 - 82 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Castanet - 8 - - - FOURTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 0 - - - 1 - 0.5 - 4 - 1 - no - yes - no - no - 8 - 96 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 28 - 29 - 22 - 31 - 15 - 8 - 7 - 15 - 17 - 13 - 15 - 0 - 8 - 7 - 11 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 61 - 70 - 0 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Claves * - 9 - - - FIFTH - 7 - - SAWUP - 50 - 35 - 0 - 82 - on - - - 4 - 0 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 5 - 6 - 4 - - - 1 - 1 - 1 - 11 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 6 - 24 - 6 - 24 - 12 - 12 - 12 - 12 - 6 - 16 - 6 - 16 - 7 - 1 - 7 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 89 - 94 - 98 - - 1 - 1 - 1 - 1 - 14 - 99 - 14 - 99 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - MarimbLead - 10 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 0 - 1 - 3 - - - 1 - 2 - 1 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - -3 - -3 - 3 - - 31 - 31 - 31 - 31 - 13 - 0 - 15 - 3 - 0 - 15 - 0 - 15 - 0 - 21 - 0 - 18 - 6 - 5 - 5 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 63 - 96 - 71 - - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Marimba * - 11 - - - FIFTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 2 - 6 - - - 0.5 - 3 - 2 - 4.71 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 22 - 26 - 23 - 31 - 31 - 24 - 31 - 22 - 15 - 5 - 15 - 5 - 10 - 12 - 10 - 14 - 5 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 82 - 98 - 82 - - 1 - 1 - 1 - 1 - 0 - 12 - 0 - 21 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Marimba - 12 - - - THIRD - 0 - - TRIANGL - 30 - 9 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 5 - 5 - 4 - - - 4 - 8.72 - 18.37 - 8.01 - no - no - yes - no - 8 - 11 - 8 - 19 - - W1 - W1 - W6 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 15 - 31 - 18 - 15 - 8 - 15 - 15 - 10 - 16 - 18 - 14 - 6 - 6 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 79 - 75 - 73 - - 2 - 2 - 3 - 3 - 0 - 99 - 59 - 72 - - - -24 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 40 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Marimba* - 13 - - - THIRD - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 5 - - - 1 - 6 - 7 - 13 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 12 - 18 - 13 - 27 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 6 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 69 - 68 - 99 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Marimba..1 - 14 - - - FIFTH - 5 - - TRIANGL - 21 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 5 - - - 1 - 6 - 1 - 10 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W4 - -3 - 3 - 3 - -3 - - 31 - 31 - 31 - 27 - 10 - 17 - 10 - 25 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 80 - 99 - 91 - - 0 - 1 - 1 - 1 - 17 - 0 - 17 - 0 - - - -12 - POLY - 2 - FINGER - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - Marimba..2 - 15 - - - FIFTH - 5 - - TRIANGL - 21 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 3 - 6 - 4 - - - 1 - 7 - 1 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 3 - 3 - -3 - - 31 - 31 - 31 - 27 - 10 - 17 - 10 - 25 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 73 - 99 - 76 - - 0 - 1 - 1 - 1 - 17 - 0 - 17 - 0 - - - -24 - POLY - 2 - FINGER - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Marimba..3 - 16 - - - FIFTH - 5 - - TRIANGL - 21 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 5 - 4 - - - 1 - 5 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - -3 - 3 - 3 - -3 - - 31 - 31 - 31 - 22 - 10 - 17 - 10 - 13 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 5 - 7 - 7 - 7 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 80 - 99 - 88 - - 0 - 1 - 1 - 3 - 17 - 0 - 17 - 0 - - - -12 - POLY - 2 - FINGER - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Marimba..4 - 17 - - - THIRD - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 5 - 7 - 5 - - - 0.5 - 0.5 - 5 - 13 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 12 - 18 - 13 - 27 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 6 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 77 - 70 - 93 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Marimba..5 - 18 - - - THIRD - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 6 - 5 - - - 1 - 1 - 7 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 12 - 18 - 13 - 31 - 0 - 0 - 0 - 4 - 0 - 0 - 0 - 2 - 6 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 75 - 68 - 98 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Marimba..6 - 19 - - - FOURTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 6 - 5 - - - 2 - 3 - 1 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 12 - 18 - 13 - 31 - 0 - 0 - 0 - 3 - 0 - 0 - 0 - 2 - 6 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 79 - 66 - 99 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Marimba..7 - 20 - - - SEVENTH - 7 - - SHOLD - 30 - 40 - 36 - 15 - on - - - 2 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 6 - 2 - 4 - 1 - - - 1 - 1 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 24 - 16 - 16 - 16 - 24 - 13 - 13 - 13 - 12 - 18 - 9 - 9 - 12 - 5 - 7 - 4 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 64 - 99 - 81 - - 2 - 2 - 3 - 3 - 1 - 46 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Ornt Block - 21 - - - FIRST - 7 - - SHOLD - 58 - 0 - 99 - 80 - off - - - 5 - 3 - off - off - on - on - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 5 - 12.72 - 3 - 5.19 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 1 - -1 - 0 - - 31 - 20 - 31 - 10 - 15 - 3 - 27 - 20 - 0 - 14 - 10 - 11 - 0 - 0 - 17 - 0 - 11 - 15 - 5 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 65 - 63 - 45 - - 1 - 1 - 1 - 0 - 1 - 46 - 0 - 0 - - - -13 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SynGameran - 22 - - - FIFTH - 7 - - SAWUP - 50 - 35 - 0 - 82 - on - - - 4 - 0 - on - on - on - on - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 3 - - - 1 - 0.5 - 1 - 20.41 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - 0 - 0 - 0 - 0 - - 15 - 10 - 31 - 31 - 2 - 1 - 9 - 24 - 14 - 15 - 12 - 12 - 7 - 7 - 15 - 16 - 7 - 7 - 7 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 82 - 99 - 93 - - 0 - 0 - 1 - 1 - 0 - 0 - 14 - 99 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SynthMarib - 23 - - - THIRD - 0 - - TRIANGL - 24 - 0 - 38 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 0 - 0 - 3 - - - 0.5 - 0.5 - 22.49 - 4.37 - no - no - yes - no - 8 - 8 - 8 - 14 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 19 - 25 - 31 - 25 - 16 - 31 - 5 - 28 - 10 - 6 - 15 - 10 - 17 - 27 - 0 - 23 - 6 - 9 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 12 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 19 - 0 - 0 - 0 - 0 - 0 - 0 - - Tablas * - 24 - - - FIFTH - 5 - - TRIANGL - 82 - 0 - 7 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 1 - 2 - - - 1 - 3.62 - 1 - 1.83 - no - no - no - no - 8 - 18 - 8 - 9 - - W1 - W1 - W1 - W2 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 18 - 24 - 21 - 24 - 0 - 12 - 10 - 0 - 19 - 18 - 19 - 1 - 9 - 10 - 10 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 99 - 85 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - 12 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Wood Block - 25 - - - FIFTH - 0 - - TRIANGL - 14 - 0 - 99 - 0 - on - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 3 - 2 - 0 - - - 1.49 - 5.59 - 1.51 - 4.12 - no - no - no - no - 9 - 17 - 14 - 18 - - W1 - W5 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 26 - 31 - 31 - 31 - 15 - 23 - 15 - 15 - 0 - 0 - 12 - 22 - 0 - 0 - 6 - 7 - 7 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 73 - 99 - 75 - - 2 - 1 - 1 - 1 - 0 - 32 - 0 - 0 - - - -7 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - WoodBlock* - 26 - - - FIFTH - 0 - - TRIANGL - 48 - 0 - 0 - 0 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 0 - 5 - 0 - - - 1 - 1 - 1 - 3.46 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 16 - 16 - 22 - 18 - 13 - 13 - 12 - 10 - 18 - 18 - 16 - 15 - 9 - 9 - 8 - 12 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 69 - 99 - 77 - - 1 - 1 - 2 - 2 - 0 - 0 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - WoodBlock1 - 27 - - - THIRD - 0 - - TRIANGL - 48 - 0 - 0 - 0 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 4 - 1 - - - 1 - 1 - 1 - 3.46 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 16 - 16 - 22 - 18 - 13 - 13 - 12 - 10 - 18 - 18 - 16 - 15 - 9 - 9 - 8 - 12 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 55 - 66 - 77 - - 1 - 1 - 2 - 2 - 0 - 0 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - WoodBlock2 - 28 - - - THIRD - 0 - - TRIANGL - 48 - 0 - 0 - 0 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 1 - 5 - 0 - - - 1 - 1.41 - 1.73 - 3.46 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 16 - 16 - 22 - 18 - 13 - 13 - 12 - 10 - 18 - 18 - 16 - 15 - 9 - 9 - 8 - 12 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 75 - 72 - 68 - - 1 - 1 - 2 - 2 - 0 - 0 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - WoodBlock3 - 29 - - - - Chime - 2 - - FIFTH - 0 - - TRIANGL - 26 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 4 - 2 - 4 - - - 1.5 - 10.37 - 1.49 - 10.38 - no - no - no - no - 16 - 14 - 9 - 8 - - W1 - W3 - W1 - W3 - -3 - -3 - 3 - 3 - - 31 - 31 - 31 - 31 - 11 - 12 - 11 - 12 - 14 - 1 - 14 - 1 - 9 - 0 - 9 - 0 - 5 - 6 - 5 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 80 - 99 - 80 - - 1 - 1 - 1 - 1 - 0 - 10 - 0 - 10 - - - 5 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 4 - - BriteCelst - 0 - - - FIFTH - 0 - - TRIANGL - 25 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 4 - 2 - 4 - - - 1 - 7 - 1 - 1.73 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 3 - 3 - -3 - - 31 - 31 - 31 - 25 - 13 - 16 - 10 - 28 - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - 4 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 70 - 99 - 82 - - 0 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - 12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Celeste - 1 - - - FIFTH - 0 - - TRIANGL - 25 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 3 - - - 1 - 8 - 1 - 15.55 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W1 - W1 - W1 - -3 - 3 - 3 - -3 - - 31 - 31 - 31 - 25 - 13 - 16 - 10 - 28 - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - 4 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 60 - 99 - 81 - - 0 - 1 - 1 - 2 - 0 - 0 - 0 - 0 - - - 12 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Celeste..1 - 2 - - - FIFTH - 0 - - TRIANGL - 25 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 4 - 1 - - - 1 - 2 - 4 - 10 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W4 - W1 - -3 - 3 - 3 - -3 - - 31 - 31 - 31 - 31 - 13 - 16 - 10 - 21 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - 18 - 4 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 59 - 99 - 59 - - 0 - 1 - 1 - 2 - 0 - 0 - 0 - 0 - - - 12 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Celeste..2 - 3 - - - FIFTH - 5 - - SHOLD - 41 - 0 - 0 - 0 - on - - - 0 - 2 - on - off - on - off - 0 - 0 - 0 - 0 - 0 - 1 - 2 - 2 - - - 2.5 - 5.19 - 2.5 - 5 - no - no - no - no - 16 - 8 - 16 - 8 - - W1 - W4 - W1 - W1 - 2 - -2 - 1 - -2 - - 23 - 31 - 25 - 31 - 31 - 31 - 31 - 31 - 13 - 13 - 13 - 13 - 7 - 9 - 7 - 7 - 3 - 2 - 3 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 86 - 83 - 92 - - 1 - 1 - 1 - 1 - 0 - 17 - 0 - 18 - - - 12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 0 - 54 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Chimes * - 4 - - - THIRD - 0 - - TRIANGL - 25 - 2 - 1 - 22 - off - - - 5 - 2 - off - on - off - on - 0 - 0 - 0 - 0 - 4 - 3 - 7 - 3 - - - 1.5 - 7.43 - 23.55 - 15 - no - no - no - no - 16 - 15 - 8 - 8 - - W1 - W1 - W5 - W7 - 0 - 3 - 0 - 0 - - 31 - 31 - 31 - 31 - 8 - 5 - 24 - 14 - 13 - 13 - 0 - 0 - 10 - 7 - 0 - 2 - 5 - 2 - 2 - 1 - VOF - V48 - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 77 - 76 - 61 - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -7 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 40 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Chiming - 5 - - - SIXTH - 7 - - TRIANGL - 33 - 0 - 10 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 7 - 7 - 7 - - - 15 - 10 - 2 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 14 - 10 - 12 - 29 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 6 - 6 - 5 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 91 - 99 - 99 - 99 - - 0 - 0 - 0 - 0 - 0 - 10 - 15 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Glocken - 6 - - - SEVENTH - 4 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 3 - 3 - on - off - off - off - 0 - 0 - 0 - 0 - 3 - 4 - 5 - 2 - - - 4 - 1 - 1 - 14 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W1 - W1 - -3 - -3 - 3 - 3 - - 31 - 31 - 24 - 31 - 17 - 14 - 17 - 19 - 15 - 9 - 15 - 10 - 8 - 5 - 8 - 4 - 5 - 2 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 61 - 99 - 77 - - 0 - 0 - 1 - 0 - 5 - 0 - 10 - 35 - - - 0 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Glocken..1 - 7 - - - FIFTH - 4 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 3 - 3 - on - off - off - off - 0 - 0 - 0 - 0 - 6 - 6 - 5 - 2 - - - 1 - 8 - 1 - 15 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - -3 - 3 - 3 - - 31 - 31 - 30 - 31 - 17 - 14 - 18 - 19 - 15 - 9 - 12 - 10 - 8 - 5 - 10 - 4 - 5 - 2 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 57 - 99 - 76 - - 0 - 0 - 1 - 1 - 5 - 0 - 10 - 35 - - - 12 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Glocken..2 - 8 - - - FIFTH - 0 - - TRIANGL - 26 - 0 - 8 - 0 - off - - - 0 - 3 - on - on - on - on - 0 - 0 - 0 - 0 - 1 - 4 - 1 - 7 - - - 1 - 3 - 1 - 14 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - -3 - -3 - 3 - - 20 - 25 - 20 - 31 - 26 - 26 - 26 - 15 - 13 - 13 - 13 - 13 - 7 - 12 - 7 - 15 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 65 - 99 - 58 - - 1 - 2 - 1 - 2 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 23 - 59 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - GoodVibes* - 9 - - - EIGHTH - 0 - - TRIANGL - 22 - 0 - 0 - 42 - off - - - 6 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 3 - 3 - 3 - 3 - - - 1 - 14 - 4 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 3 - 3 - 3 - - 31 - 31 - 31 - 31 - 20 - 16 - 20 - 20 - 13 - 0 - 13 - 13 - 7 - 21 - 11 - 7 - 7 - 6 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 8 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - GreatVibes - 10 - - - SEVENTH - 3 - - TRIANGL - 25 - 19 - 7 - 92 - on - - - 3 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 5 - - - 2 - 4 - 24.22 - 25.95 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W2 - W3 - 2 - -2 - 0 - 0 - - 14 - 15 - 31 - 31 - 8 - 8 - 31 - 15 - 9 - 9 - 15 - 0 - 13 - 13 - 11 - 8 - 6 - 6 - 6 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 91 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -24 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Mod Chime - 11 - - - FIFTH - 1 - - TRIANGL - 35 - 0 - 3 - 10 - on - - - 4 - 2 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 4 - - - 2 - 2 - 10 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W2 - W3 - 1 - -2 - 1 - 2 - - 16 - 13 - 31 - 0 - 5 - 10 - 9 - 31 - 3 - 1 - 2 - 13 - 9 - 31 - 8 - 16 - 6 - 3 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 76 - 96 - 99 - - 1 - 1 - 1 - 1 - 10 - 10 - 10 - 10 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SynthChime - 12 - - - SIXTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 5 - - - 2 - 2 - 15.57 - 11 - yes - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 14 - 15 - 14 - 12 - 12 - 12 - 12 - 4 - 4 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 64 - 99 - 57 - - 0 - 0 - 0 - 2 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Triangle.1 - 13 - - - SEVENTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 6 - 3 - - - 2 - 6 - 14 - 11 - no - yes - no - yes - 8 - 8 - 8 - 32 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 13 - 31 - 31 - 15 - 0 - 15 - 14 - 12 - 31 - 12 - 12 - 4 - 4 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 97 - 99 - 48 - - 0 - 0 - 0 - 2 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Triangle.2 - 14 - - - SIXTH - 5 - - TRIANGL - 39 - 0 - 0 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 7 - 4 - - - 1 - 1 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 24 - 22 - 23 - 21 - 22 - 10 - 10 - 3 - 15 - 15 - 15 - 14 - 7 - 7 - 7 - 7 - 9 - 9 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 81 - - 3 - 3 - 3 - 3 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Vib Lead.1 - 15 - - - FIFTH - 5 - - TRIANGL - 39 - 0 - 0 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 5 - 4 - - - 1 - 14 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W3 - 0 - 0 - 0 - 0 - - 31 - 31 - 23 - 21 - 7 - 15 - 10 - 3 - 14 - 11 - 15 - 14 - 7 - 10 - 7 - 7 - 10 - 12 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 62 - 99 - 81 - - 1 - 2 - 3 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Vib Lead.2 - 16 - - - FIFTH - 0 - - TRIANGL - 31 - 0 - 0 - 31 - off - - - 3 - 3 - on - off - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - - - 1 - 5 - 1 - 12 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 3 - 3 - -3 - - 31 - 31 - 31 - 31 - 17 - 14 - 17 - 15 - 15 - 9 - 15 - 10 - 5 - 8 - 5 - 14 - 4 - 6 - 4 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 54 - 97 - 54 - - 2 - 0 - 2 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 30 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Vibe. - 17 - - - FIFTH - 7 - - TRIANGL - 21 - 0 - 0 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 2 - 3 - - - 1 - 7 - 1 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - -1 - - 31 - 27 - 31 - 22 - 9 - 22 - 10 - 13 - 12 - 7 - 12 - 13 - 7 - 0 - 10 - 10 - 6 - 12 - 13 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 87 - 96 - 59 - - 1 - 2 - 1 - 2 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 8 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Vibe.....1 - 18 - - - EIGHTH - 0 - - TRIANGL - 22 - 0 - 0 - 42 - off - - - 6 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 7 - 5 - 4 - 4 - - - 1 - 12 - 4 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 3 - 3 - 3 - - 31 - 31 - 31 - 31 - 20 - 16 - 20 - 20 - 13 - 0 - 13 - 13 - 7 - 21 - 11 - 7 - 7 - 6 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 8 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Vibe.....2 - 19 - - - EIGHTH - 0 - - TRIANGL - 22 - 0 - 0 - 42 - off - - - 6 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 7 - 4 - 5 - 2 - - - 1 - 7 - 1 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 3 - 3 - 3 - - 31 - 31 - 31 - 31 - 20 - 16 - 20 - 20 - 13 - 0 - 13 - 13 - 7 - 21 - 11 - 7 - 7 - 6 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 0 - 1 - 0 - 2 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 8 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Vibe.....3 - 20 - - - SIXTH - 5 - - TRIANGL - 33 - 0 - 0 - 99 - on - - - 0 - 0 - on - on - on - on - 0 - 0 - 0 - 0 - 7 - 5 - 4 - 3 - - - 1 - 4 - 1 - 12 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 3 - 3 - 3 - - 31 - 27 - 27 - 18 - 21 - 9 - 9 - 6 - 12 - 13 - 13 - 4 - 6 - 3 - 3 - 31 - 8 - 6 - 6 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 58 - - 0 - 1 - 1 - 2 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 8 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Vibe.....4 - 21 - - - SIXTH - 5 - - TRIANGL - 33 - 0 - 0 - 99 - on - - - 0 - 0 - on - on - on - on - 0 - 0 - 0 - 0 - 6 - 4 - 4 - 3 - - - 1 - 7 - 1 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W3 - W1 - -3 - 3 - 3 - 3 - - 31 - 27 - 27 - 18 - 21 - 9 - 9 - 6 - 12 - 13 - 13 - 4 - 6 - 3 - 3 - 31 - 8 - 6 - 6 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 91 - 99 - 57 - - 1 - 3 - 3 - 3 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 8 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Vibe.....5 - 22 - - - EIGHTH - 0 - - TRIANGL - 22 - 0 - 0 - 42 - off - - - 6 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 7 - 5 - 5 - 4 - - - 2 - 12 - 4 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W3 - -3 - 3 - 3 - 3 - - 31 - 31 - 31 - 31 - 20 - 16 - 20 - 20 - 13 - 0 - 13 - 13 - 7 - 21 - 11 - 7 - 7 - 6 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 8 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Vibe.....6 - 23 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 7 - 0 - 5 - - - 1 - 6 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W2 - -3 - 1 - 3 - 0 - - 27 - 31 - 28 - 27 - 26 - 20 - 27 - 10 - 14 - 0 - 14 - 0 - 10 - 18 - 11 - 31 - 5 - 1 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 89 - 99 - 84 - - 2 - 1 - 2 - 1 - 11 - 0 - 11 - 21 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Vibesyn * - 24 - - - SEVENTH - 0 - - SHOLD - 45 - 0 - 5 - 6 - off - - - 3 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 7 - 4 - 4 - 3 - - - 11 - 11 - 11 - 15 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 6 - 31 - 31 - 18 - 15 - 18 - 18 - 11 - 11 - 11 - 11 - 9 - 9 - 9 - 9 - 4 - 2 - 2 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 99 - 99 - 82 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - WindChime1 - 25 - - - SEVENTH - 1 - - SHOLD - 78 - 0 - 56 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 3 - 5 - 2 - - - 11 - 12.72 - 2.82 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - -1 - 0 - - 17 - 28 - 14 - 28 - 13 - 18 - 16 - 12 - 12 - 14 - 10 - 14 - 0 - 0 - 0 - 0 - 3 - 2 - 2 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 80 - 89 - 80 - - 1 - 1 - 1 - 0 - 1 - 46 - 0 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - WindChime2 - 26 - - - SIXTH - 6 - - SQUARE - 41 - 44 - 0 - 54 - on - - - 0 - 2 - on - on - on - off - 0 - 0 - 0 - 0 - 1 - 1 - 2 - 1 - - - 1 - 1 - 2 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 0 - 3 - 3 - - 31 - 31 - 25 - 31 - 17 - 18 - 16 - 14 - 14 - 14 - 13 - 14 - 12 - 13 - 14 - 14 - 5 - 5 - 5 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 90 - 75 - 75 - - 2 - 2 - 2 - 2 - 0 - 0 - 32 - 17 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 0 - 49 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Xylophone.1 - 27 - - - THIRD - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 1 - 1 - 1 - - - 1 - 5 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W7 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 23 - 31 - 22 - 15 - 5 - 15 - 5 - 15 - 16 - 18 - 0 - 7 - 5 - 7 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 86 - 99 - 90 - - 0 - 2 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Xylophone.2 - 28 - - - FIFTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 3 - 1 - 2 - - - 3 - 8 - 1 - 10 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 15 - 22 - 15 - 22 - 7 - 9 - 7 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 80 - 98 - 65 - - 2 - 1 - 1 - 2 - 0 - 0 - 0 - 38 - - - 12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Xylophone.3 - 29 - - - FIFTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 3 - 1 - 2 - - - 4 - 8 - 1 - 10 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 15 - 22 - 15 - 22 - 7 - 9 - 7 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 80 - 98 - 65 - - 2 - 1 - 1 - 2 - 0 - 0 - 0 - 38 - - - 12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Xylophone.4 - 30 - - - SIXTH - 6 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 7 - 4 - - - 0.5 - 1 - 3.46 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W1 - 0 - 3 - 0 - 3 - - 27 - 27 - 31 - 31 - 16 - 16 - 13 - 13 - 14 - 14 - 14 - 14 - 6 - 6 - 7 - 7 - 6 - 6 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 86 - 99 - 83 - - 1 - 2 - 3 - 3 - 0 - 0 - 0 - 0 - - - 12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 17 - 6 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Xylophone1 - 31 - - - FIFTH - 6 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 7 - 3 - - - 1 - 2 - 1 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 3 - -2 - -1 - - 31 - 31 - 31 - 31 - 10 - 18 - 12 - 18 - 13 - 13 - 13 - 13 - 6 - 7 - 6 - 7 - 7 - 4 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 93 - 99 - 79 - - 1 - 3 - 1 - 2 - 0 - 25 - 0 - 20 - - - 12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 17 - 6 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Xylophone2 - 32 - - - FIFTH - 6 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 3 - 7 - 3 - - - 1 - 14 - 1 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W1 - W2 - 0 - 3 - -2 - -1 - - 31 - 29 - 31 - 22 - 9 - 22 - 12 - 13 - 12 - 7 - 13 - 12 - 7 - 0 - 6 - 5 - 6 - 12 - 7 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 91 - 99 - 79 - - 1 - 3 - 2 - 2 - 0 - 25 - 0 - 20 - - - 12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 17 - 6 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Xylophone3 - 33 - - - SIXTH - 6 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 6 - 7 - 4 - - - 0.5 - 2 - 3.46 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - 0 - 3 - 0 - 3 - - 27 - 27 - 31 - 31 - 16 - 16 - 13 - 13 - 14 - 14 - 14 - 14 - 6 - 6 - 7 - 7 - 5 - 5 - 5 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 84 - 99 - 64 - - 1 - 1 - 3 - 3 - 0 - 0 - 0 - 0 - - - 12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 17 - 6 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Xylophone4 - 34 - - - SIXTH - 1 - - TRIANGL - 35 - 0 - 25 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 4 - - - 1 - 6 - 0.5 - 13 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W2 - W1 - -1 - 1 - 2 - -2 - - 31 - 31 - 31 - 31 - 17 - 14 - 31 - 19 - 15 - 9 - 15 - 10 - 8 - 5 - 0 - 4 - 5 - 5 - 8 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 67 - 62 - 65 - - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - - - 12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Xylophone5 - 35 - - - SIXTH - 1 - - TRIANGL - 35 - 0 - 25 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 4 - 4 - 3 - - - 1 - 2 - 4 - 15.7 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -1 - 1 - 2 - -2 - - 31 - 31 - 31 - 31 - 17 - 14 - 31 - 14 - 15 - 9 - 15 - 10 - 8 - 5 - 0 - 9 - 6 - 6 - 9 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 66 - 59 - 82 - - 1 - 1 - 1 - 3 - 0 - 0 - 0 - 0 - - - 12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Xylophone6 - 36 - - - FIFTH - 1 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 6 - 4 - 5 - - - 0.5 - 1 - 1 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -1 - 1 - 2 - -2 - - 31 - 18 - 31 - 31 - 17 - 18 - 31 - 14 - 15 - 9 - 15 - 10 - 8 - 5 - 0 - 9 - 6 - 6 - 9 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 91 - 95 - 85 - - 1 - 3 - 3 - 3 - 0 - 0 - 0 - 0 - - - 12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Xylophone7 - 37 - - - FIFTH - 6 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 5 - 7 - 4 - - - 1 - 14 - 1 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 3 - 0 - -1 - - 28 - 31 - 31 - 22 - 15 - 21 - 10 - 13 - 12 - 7 - 12 - 13 - 6 - 0 - 5 - 5 - 6 - 12 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 79 - - 2 - 1 - 1 - 2 - 0 - 0 - 0 - 0 - - - 12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 17 - 6 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Xylophone8 - 38 - - - - Cymbal - 3 - - FOURTH - 7 - - TRIANGL - 31 - 13 - 14 - 30 - on - - - 0 - 3 - off - on - off - off - 0 - 0 - 0 - 0 - 4 - 1 - 1 - 0 - - - 0.5 - 3 - 6.28 - 1.18 - no - no - no - no - 8 - 8 - 8 - 19 - - W1 - W1 - W2 - W8 - 3 - -3 - 3 - -3 - - 29 - 30 - 31 - 31 - 11 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 31 - 1 - 0 - 0 - 4 - 1 - 1 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 78 - 86 - 68 - - 0 - 0 - 0 - 0 - 10 - 31 - 0 - 11 - - - 0 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Chin.Cymb* - 0 - - - SECOND - 6 - - TRIANGL - 0 - 2 - 0 - 3 - off - - - 5 - 0 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 0 - 0 - 0 - - - 8.65 - 0.87 - 21.98 - 18.84 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 25 - 21 - 31 - 31 - 22 - 28 - 31 - 8 - 11 - 11 - 14 - 5 - 0 - 6 - 0 - 2 - 1 - 1 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 78 - 87 - 89 - - 2 - 1 - 2 - 0 - 0 - 0 - 0 - 0 - - - -6 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Cymbal...1 - 1 - - - SECOND - 6 - - TRIANGL - 0 - 2 - 0 - 3 - off - - - 5 - 0 - on - on - on - on - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 8.65 - 0.87 - 21.98 - 19.03 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 25 - 21 - 31 - 31 - 22 - 28 - 31 - 8 - 11 - 11 - 14 - 5 - 0 - 6 - 0 - 2 - 1 - 1 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 78 - 87 - 89 - - 2 - 1 - 2 - 0 - 0 - 0 - 0 - 0 - - - -6 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Cymbal...1* - 2 - - - SECOND - 6 - - TRIANGL - 0 - 2 - 0 - 3 - off - - - 5 - 0 - on - on - on - on - 0 - 0 - 0 - 0 - 4 - 0 - 0 - 0 - - - 8.65 - 10.13 - 8 - 12 - no - no - no - no - 8 - 11 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 25 - 21 - 31 - 31 - 22 - 28 - 31 - 8 - 11 - 11 - 14 - 5 - 0 - 6 - 0 - 2 - 1 - 1 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 86 - 89 - - 2 - 1 - 2 - 0 - 0 - 0 - 0 - 0 - - - -6 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Cymbal...2 - 4 - - - SECOND - 6 - - TRIANGL - 0 - 2 - 0 - 3 - off - - - 5 - 0 - on - on - on - on - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 8.65 - 9.89 - 7 - 12 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 25 - 21 - 31 - 31 - 22 - 28 - 31 - 8 - 11 - 11 - 14 - 5 - 0 - 6 - 0 - 2 - 1 - 1 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 86 - 89 - - 2 - 1 - 2 - 0 - 0 - 0 - 0 - 0 - - - -6 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Cymbal...2* - 5 - - - FOURTH - 6 - - TRIANGL - 0 - 2 - 0 - 3 - off - - - 5 - 0 - on - on - on - on - 0 - 0 - 0 - 0 - 4 - 1 - 0 - 0 - - - 6.92 - 7.07 - 10.38 - 19.78 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 25 - 21 - 31 - 31 - 22 - 28 - 31 - 8 - 11 - 11 - 14 - 5 - 0 - 6 - 0 - 2 - 1 - 1 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 91 - 91 - - 2 - 1 - 2 - 0 - 0 - 0 - 0 - 0 - - - -6 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Cymbal...3 - 7 - - - - Drum - 4 - - FIFTH - 6 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 0 - 5 - 0 - - - 0.5 - 0.5 - 13 - 17.27 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 18 - 31 - 31 - 15 - 7 - 15 - 15 - 11 - 0 - 16 - 0 - 8 - 5 - 7 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 77 - 99 - 99 - - 0 - 0 - 2 - 0 - 0 - 0 - 99 - 0 - - - -24 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bass/Snare - 0 - - - FOURTH - 7 - - SHOLD - 99 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 1 - 2 - 0 - - - 0.5 - 0.5 - 9 - 15 - no - no - yes - yes - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -1 - 2 - 3 - - 30 - 31 - 31 - 31 - 20 - 18 - 20 - 31 - 0 - 0 - 0 - 0 - 19 - 19 - 19 - 19 - 15 - 2 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 82 - 86 - 95 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -11 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - Bass Drum - 1 - - - FOURTH - 0 - - TRIANGL - 80 - 0 - 74 - 0 - off - - - 7 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 2.31 - 1 - 0.71 - 2 - yes - no - no - no - 13 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 11 - 24 - 21 - 15 - 14 - 8 - 10 - 0 - 18 - 0 - 8 - 31 - 12 - 6 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 91 - 95 - 73 - 78 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -24 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bass Drum1 - 2 - - - SECOND - 6 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 7.02 - 1.31 - 0.81 - 10.7 - yes - yes - yes - yes - 9 - 13 - 13 - 19 - - W1 - W1 - W1 - W1 - 2 - -2 - 2 - -2 - - 31 - 31 - 31 - 31 - 10 - 24 - 21 - 25 - 15 - 10 - 10 - 11 - 21 - 0 - 0 - 7 - 10 - 11 - 12 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 71 - 69 - 70 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -24 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bass Drum2 - 3 - - - SIXTH - 6 - - TRIANGL - 0 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 1 - 6 - 0 - - - 0.78 - 0.87 - 0.5 - 0.87 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 24 - 27 - 31 - 15 - 16 - 18 - 27 - 15 - 13 - 14 - 14 - 18 - 25 - 16 - 25 - 9 - 12 - 8 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 85 - - 2 - 2 - 2 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BassDrum.1 - 5 - - - FIFTH - 6 - - TRIANGL - 0 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 2 - 5 - 0 - - - 0.5 - 0.87 - 0.5 - 0.87 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 24 - 27 - 31 - 15 - 27 - 18 - 27 - 15 - 13 - 14 - 14 - 18 - 25 - 16 - 25 - 9 - 12 - 8 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 70 - 99 - 78 - - 2 - 2 - 2 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BassDrum.2 - 6 - - - THIRD - 6 - - TRIANGL - 0 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 1 - 2 - 0 - - - 0.5 - 0.5 - 0.78 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 24 - 27 - 31 - 15 - 27 - 18 - 27 - 15 - 13 - 14 - 14 - 18 - 25 - 16 - 25 - 9 - 12 - 8 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 78 - 85 - 72 - - 2 - 2 - 2 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BassDrum.3 - 7 - - - FIFTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 2 - 0 - 3 - - - 0.71 - 1.43 - 1 - 0.62 - no - no - no - no - 8 - 15 - 8 - 10 - - W1 - W6 - W2 - W1 - 0 - 3 - -3 - -3 - - 28 - 24 - 24 - 25 - 12 - 17 - 15 - 21 - 11 - 4 - 0 - 0 - 20 - 9 - 0 - 31 - 6 - 6 - 7 - 14 - VOF - VOF - VOF - VOF - - - 99 - 17 - 42 - 50 - 50 - 50 - - 99 - 66 - 99 - 82 - - 2 - 2 - 2 - 0 - 0 - 30 - 2 - 5 - - - 5 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BoConga - 8 - - - THIRD - 0 - - TRIANGL - 24 - 0 - 38 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 0 - 0 - 3 - - - 0.5 - 0.5 - 13 - 0.87 - no - no - yes - no - 8 - 8 - 8 - 14 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 19 - 25 - 31 - 25 - 16 - 31 - 5 - 29 - 10 - 6 - 11 - 9 - 17 - 27 - 0 - 23 - 6 - 9 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Congas * - 9 - - - THIRD - 6 - - TRIANGL - 34 - 10 - 9 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 5 - 3 - - - 1 - 2 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -3 - -1 - -1 - - 31 - 31 - 31 - 24 - 24 - 27 - 27 - 25 - 15 - 11 - 11 - 11 - 7 - 31 - 31 - 18 - 7 - 15 - 15 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 76 - - 1 - 2 - 1 - 3 - 0 - 0 - 0 - 46 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - DrmSpring1 - 10 - - - THIRD - 7 - - TRIANGL - 34 - 10 - 25 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 5 - 6 - 3 - - - 0.78 - 1.73 - 2.82 - 0.78 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -3 - -1 - -1 - - 31 - 31 - 31 - 24 - 24 - 27 - 27 - 25 - 15 - 11 - 11 - 11 - 7 - 31 - 31 - 18 - 7 - 15 - 15 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 96 - 96 - 99 - - 1 - 2 - 1 - 3 - 0 - 0 - 0 - 46 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - DrmSpring2 - 11 - - - FIFTH - 5 - - TRIANGL - 33 - 35 - 15 - 0 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 6 - 2 - - - 2 - 2 - 2.82 - 9.89 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 0 - 1 - 2 - - 31 - 31 - 21 - 6 - 4 - 10 - 10 - 8 - 0 - 13 - 13 - 13 - 8 - 3 - 4 - 1 - 7 - 6 - 7 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 82 - 98 - 81 - - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 99 - - - -24 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - DrumString - 12 - - - FIFTH - 7 - - SHOLD - 99 - 0 - 99 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 1 - 1 - 0 - - - 1.57 - 1.41 - 13 - 23.55 - no - no - yes - yes - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -1 - 2 - 3 - - 30 - 31 - 31 - 31 - 9 - 16 - 15 - 18 - 9 - 5 - 6 - 5 - 13 - 11 - 14 - 19 - 6 - 2 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 82 - 86 - 95 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 8 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 7 - - Efem Toms - 13 - - - FOURTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 1 - 1 - - - 0.62 - 0.5 - 8.24 - 4 - yes - yes - yes - no - 10 - 8 - 12 - 8 - - W2 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 27 - 31 - 14 - 3 - 4 - 14 - 0 - 0 - 7 - 0 - 4 - 0 - 10 - 8 - 7 - 1 - 1 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 95 - 84 - 87 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - -24 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - El.Snare * - 14 - - - FOURTH - 2 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - - - 3 - 1 - 10.81 - 3.56 - no - yes - yes - no - 8 - 8 - 12 - 9 - - W2 - W2 - W6 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 16 - 3 - 2 - 14 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 2 - 8 - 3 - 1 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 68 - 81 - 87 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - -24 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - El.Snare2* - 15 - - - FOURTH - 7 - - TRIANGL - 0 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 7 - 0 - 0 - 2 - 0 - 0 - 0 - - - 2 - 7 - 7 - 21.98 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W1 - W8 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 13 - 9 - 12 - 12 - 4 - 15 - 15 - 15 - 31 - 0 - 0 - 0 - 15 - 4 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 75 - 86 - 99 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - FM Hi-Hats - 16 - - - SECOND - 7 - - TRIANGL - 35 - 0 - 8 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 0 - 1 - 1 - - - 1.06 - 0.68 - 2.06 - 0.56 - no - no - no - no - 9 - 11 - 9 - 9 - - W1 - W1 - W1 - W1 - 0 - 1 - 0 - 0 - - 31 - 31 - 29 - 31 - 5 - 24 - 7 - 22 - 0 - 3 - 6 - 7 - 7 - 3 - 6 - 0 - 3 - 3 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 60 - 80 - - 3 - 2 - 0 - 0 - 0 - 34 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 3 - - Hand Drum - 17 - - - SECOND - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 1 - 6 - 0 - - - 0.87 - 0.87 - 2.82 - 0.71 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 29 - 26 - 0 - 24 - 26 - 21 - 15 - 13 - 4 - 9 - 7 - 3 - 6 - 0 - 3 - 4 - 4 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 59 - 65 - 83 - - 3 - 2 - 0 - 2 - 0 - 0 - 0 - 0 - - - 0 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Hand Drum1 - 18 - - - SECOND - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 0 - 0 - 0 - - - 0.71 - 1 - 0.71 - 0.71 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 29 - 26 - 0 - 24 - 26 - 21 - 15 - 13 - 4 - 9 - 7 - 3 - 6 - 0 - 8 - 4 - 4 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 59 - 65 - 87 - - 3 - 2 - 0 - 2 - 0 - 0 - 0 - 0 - - - 0 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Hand Drum2 - 19 - - - FIFTH - 7 - - TRIANGL - 99 - 0 - 85 - 70 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 16.77 - 12.5 - 11.67 - 12 - yes - yes - yes - yes - 59 - 104 - 108 - 111 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 10 - 9 - 10 - 6 - 0 - 15 - 0 - 15 - 0 - 31 - 0 - 6 - 15 - 15 - 15 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 89 - 99 - 99 - 99 - - 3 - 3 - 3 - 3 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - "Hi!" Hat! - 20 - - - FOURTH - 7 - - TRIANGL - 0 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 7 - 0 - 0 - 2 - 0 - 0 - 0 - - - 2 - 7 - 7 - 21.98 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W1 - W8 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 19 - 9 - 12 - 12 - 0 - 15 - 15 - 15 - 31 - 0 - 0 - 0 - 15 - 4 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 78 - 94 - 99 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Hi-Hat * - 21 - - - FIFTH - 7 - - TRIANGL - 11 - 0 - 8 - 0 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 2 - 1 - 2 - - - 1 - 5.19 - 1 - 7.85 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - -3 - 3 - 3 - - 26 - 21 - 27 - 21 - 31 - 20 - 31 - 19 - 15 - 12 - 15 - 13 - 14 - 9 - 15 - 13 - 6 - 4 - 7 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 86 - 99 - 80 - - 0 - 1 - 0 - 1 - 0 - 30 - 0 - 30 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Java Jive - 22 - - - FIRST - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 2 - 0 - - - 5.62 - 1 - 0.5 - 0.78 - yes - yes - yes - yes - 18 - 8 - 8 - 80 - - W1 - W1 - W3 - W4 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 29 - 17 - 25 - 22 - 15 - 0 - 4 - 3 - 16 - 1 - 19 - 0 - 8 - 8 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 83 - 95 - 95 - - 1 - 2 - 3 - 0 - 0 - 0 - 0 - 0 - - - -12 - MONO - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - KickDrum * - 23 - - - FIFTH - 5 - - TRIANGL - 36 - 0 - 0 - 80 - off - - - 0 - 0 - on - on - on - on - 0 - 0 - 0 - 0 - 4 - 1 - 5 - 1 - - - 0.5 - 0.5 - 0.5 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 27 - 31 - 24 - 19 - 15 - 24 - 6 - 24 - 0 - 0 - 4 - 4 - 13 - 12 - 15 - 15 - 6 - 5 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 81 - 99 - 29 - - 1 - 0 - 2 - 3 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Log Drum.1 - 24 - - - FIFTH - 5 - - TRIANGL - 36 - 0 - 0 - 80 - off - - - 0 - 0 - on - on - on - on - 0 - 0 - 0 - 0 - 4 - 1 - 4 - 0 - - - 0.71 - 0.87 - 0.71 - 1.41 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 27 - 31 - 24 - 19 - 15 - 24 - 6 - 24 - 0 - 0 - 4 - 4 - 13 - 12 - 15 - 15 - 6 - 5 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 73 - 99 - 93 - - 1 - 1 - 2 - 3 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Log Drum.2 - 25 - - - FIRST - 5 - - TRIANGL - 4 - 0 - 69 - 0 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 0 - 1 - 1 - - - 0.5 - 0.98 - 0.68 - 1.73 - no - no - no - no - 8 - 10 - 11 - 8 - - W1 - W6 - W1 - W4 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 13 - 10 - 2 - 13 - 13 - 0 - 0 - 0 - 15 - 0 - 0 - 0 - 6 - 2 - 4 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 70 - 64 - 72 - - 1 - 1 - 1 - 1 - 0 - 4 - 0 - 33 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 42 - 0 - 0 - 0 - 0 - 0 - 0 - - MiamiToms* - 26 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 3 - 2 - - - 1 - 2 - 1.73 - 0.87 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 25 - 24 - 29 - 27 - 15 - 15 - 21 - 25 - 4 - 0 - 15 - 13 - 24 - 12 - 21 - 24 - 7 - 9 - 15 - 13 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 90 - 99 - 98 - - 1 - 2 - 0 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntDrm..1 - 27 - - - FIFTH - 5 - - TRIANGL - 40 - 0 - 16 - 46 - off - - - 2 - 1 - off - on - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 3 - 2 - - - 0.5 - 0.5 - 0.5 - 0.78 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 1 - 0 - 0 - - 31 - 31 - 31 - 31 - 12 - 22 - 9 - 1 - 0 - 0 - 11 - 0 - 31 - 0 - 6 - 7 - 6 - 3 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 86 - 99 - 73 - - 2 - 1 - 2 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntDrm..2 - 28 - - - FIFTH - 5 - - TRIANGL - 11 - 0 - 16 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 4 - 4 - - - 0.5 - 0.5 - 0.87 - 0.78 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 1 - 0 - 0 - - 31 - 31 - 31 - 31 - 12 - 22 - 9 - 1 - 0 - 0 - 11 - 0 - 31 - 0 - 6 - 7 - 6 - 3 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 85 - 62 - 72 - - 2 - 1 - 2 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntDrm..3 - 29 - - - FIFTH - 5 - - TRIANGL - 11 - 0 - 16 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 3 - 5 - 2 - - - 2 - 10.38 - 0.71 - 0.71 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 1 - 0 - 0 - - 31 - 31 - 31 - 31 - 12 - 22 - 11 - 10 - 0 - 0 - 11 - 0 - 31 - 0 - 9 - 9 - 6 - 3 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 56 - 89 - 75 - - 2 - 1 - 2 - 1 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntDrm..4 - 30 - - - FIFTH - 5 - - TRIANGL - 11 - 0 - 16 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 4 - 3 - - - 1 - 2 - 1 - 16.96 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 1 - 0 - 0 - - 27 - 31 - 31 - 31 - 12 - 16 - 9 - 13 - 13 - 14 - 13 - 14 - 12 - 12 - 22 - 18 - 6 - 6 - 10 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 72 - 97 - 67 - - 1 - 1 - 1 - 3 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntDrm..5 - 31 - - - FIFTH - 1 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 2 - 4 - 3 - - - 0.5 - 2.82 - 0.5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 28 - 0 - 28 - 15 - 9 - 15 - 9 - 10 - 12 - 9 - 13 - 12 - 9 - 0 - 9 - 5 - 7 - 1 - 7 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 97 - 99 - 77 - - 1 - 0 - 2 - 3 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntDrm..6 - 32 - - - FIFTH - 5 - - TRIANGL - 11 - 0 - 16 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 3 - 5 - - - 0.5 - 0.71 - 0.87 - 0.78 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -1 - 0 - 0 - - 31 - 31 - 31 - 31 - 12 - 22 - 11 - 10 - 0 - 0 - 11 - 0 - 31 - 0 - 9 - 9 - 6 - 3 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 83 - 87 - 72 - - 2 - 2 - 2 - 2 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntDrm..7 - 33 - - - THIRD - 6 - - TRIANGL - 11 - 0 - 16 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 6 - 2 - - - 0.5 - 0.71 - 1.41 - 0.78 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -1 - 0 - 0 - - 31 - 31 - 31 - 31 - 12 - 22 - 11 - 10 - 0 - 0 - 11 - 0 - 31 - 0 - 9 - 9 - 6 - 3 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 83 - 87 - 72 - - 2 - 2 - 2 - 2 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntDrm..8 - 34 - - - THIRD - 6 - - TRIANGL - 11 - 0 - 16 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 2 - 5 - 3 - - - 0.5 - 0.71 - 1.41 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -1 - 0 - 0 - - 31 - 31 - 31 - 31 - 12 - 22 - 26 - 11 - 0 - 0 - 11 - 0 - 31 - 0 - 9 - 9 - 6 - 3 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 68 - 95 - 48 - - 2 - 2 - 2 - 3 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntDrm..9 - 35 - - - FOURTH - 6 - - TRIANGL - 11 - 0 - 16 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 3 - 3 - - - 0.71 - 2.82 - 1.73 - 0.87 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -1 - 0 - 0 - - 24 - 24 - 31 - 31 - 15 - 15 - 26 - 11 - 0 - 5 - 11 - 0 - 12 - 24 - 9 - 9 - 8 - 7 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 68 - 55 - 48 - - 2 - 2 - 2 - 3 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntDrm.10 - 36 - - - FIFTH - 5 - - SAWUP - 38 - 28 - 14 - 0 - off - - - 7 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 2 - - - 0.5 - 0.5 - 0.5 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 28 - 15 - 25 - 18 - 5 - 10 - 6 - 24 - 13 - 13 - 4 - 15 - 3 - 3 - 15 - 15 - 7 - 7 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 72 - 99 - 91 - - 1 - 0 - 2 - 3 - 0 - 0 - 0 - 99 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntEchoDr - 37 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 0 - 5 - 0 - - - 1.73 - 0.87 - 0.5 - 3.14 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 18 - 18 - 31 - 15 - 8 - 10 - 15 - 12 - 12 - 9 - 5 - 6 - 5 - 6 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 95 - 78 - 90 - - 1 - 0 - 0 - 0 - 0 - 70 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Percussive - 38 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1.73 - 0.71 - 0.5 - 3.14 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 18 - 18 - 31 - 15 - 8 - 10 - 15 - 12 - 12 - 9 - 5 - 6 - 5 - 6 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 95 - 78 - 90 - - 1 - 0 - 0 - 0 - 0 - 70 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Percussive* - 39 - - - SECOND - 0 - - TRIANGL - 2 - 0 - 95 - 0 - on - - - 7 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0.5 - 0.68 - 3.46 - 0.79 - no - no - no - no - 8 - 11 - 8 - 9 - - W1 - W3 - W5 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 16 - 0 - 9 - 13 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 7 - 2 - 4 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 66 - 83 - 99 - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Simmons1 * - 40 - - - SECOND - 0 - - TRIANGL - 2 - 0 - 95 - 0 - on - - - 7 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0.5 - 0.68 - 3.46 - 0.79 - no - no - no - no - 8 - 11 - 8 - 9 - - W1 - W3 - W5 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 15 - 0 - 9 - 13 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 6 - 5 - 1 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 60 - 75 - 99 - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Simmons2 * - 41 - - - THIRD - 7 - - TRIANGL - 20 - 0 - 0 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 3 - 3 - - - 1 - 0.5 - 3 - 3.14 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W3 - W4 - 0 - 0 - 3 - -3 - - 31 - 31 - 31 - 31 - 15 - 19 - 25 - 25 - 7 - 5 - 5 - 3 - 17 - 5 - 6 - 8 - 9 - 11 - 11 - 10 - VOF - V24 - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 88 - 99 - 99 - - 0 - 1 - 1 - 2 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 7 - - Skankin' - 42 - - - THIRD - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 6.86 - 2.62 - 2 - 17.27 - yes - yes - no - yes - 14 - 18 - 8 - 96 - - W1 - W1 - W3 - W4 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 26 - 14 - 0 - 0 - 15 - 0 - 0 - 0 - 16 - 0 - 0 - 0 - 8 - 1 - 1 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 89 - 84 - 99 - - 1 - 2 - 3 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Snare * - 43 - - - FIFTH - 7 - - SHOLD - 99 - 0 - 99 - 0 - on - - - 7 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 0 - 2 - 0 - - - 22.81 - 0.93 - 0.5 - 21.78 - yes - no - yes - yes - 19 - 23 - 8 - 126 - - W1 - W1 - W1 - W1 - 3 - -3 - -3 - 3 - - 31 - 31 - 31 - 31 - 15 - 21 - 10 - 24 - 10 - 11 - 14 - 15 - 16 - 9 - 18 - 0 - 8 - 3 - 8 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 90 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Snare 1 - 44 - - - FIFTH - 7 - - TRIANGL - 99 - 0 - 48 - 15 - on - - - 6 - 2 - on - on - on - on - 0 - 0 - 0 - 0 - 2 - 4 - 2 - 0 - - - 14.22 - 14.22 - 16.87 - 13.46 - yes - yes - yes - yes - 9 - 9 - 20 - 73 - - W1 - W1 - W1 - W1 - 3 - -3 - -3 - 3 - - 31 - 31 - 27 - 31 - 19 - 21 - 19 - 26 - 14 - 11 - 14 - 15 - 19 - 9 - 19 - 0 - 7 - 4 - 9 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 78 - 99 - 97 - - 0 - 3 - 0 - 3 - 0 - 0 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Snare 2 - 45 - - - FOURTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1.41 - 0.62 - 3.14 - 17.27 - yes - no - no - yes - 8 - 10 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 20 - 31 - 31 - 15 - 8 - 15 - 15 - 15 - 8 - 16 - 0 - 8 - 5 - 8 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 95 - 99 - 98 - - 1 - 1 - 3 - 0 - 0 - 0 - 12 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Snare 1 - 46 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - - - 1.41 - 0.78 - 3.14 - 17.27 - yes - no - no - no - 8 - 8 - 8 - 112 - - W1 - W1 - W8 - W7 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 20 - 4 - 0 - 15 - 8 - 15 - 15 - 15 - 8 - 16 - 0 - 8 - 5 - 8 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 1 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 7 - - Snare 2 - 47 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 0 - 5 - 0 - - - 0.5 - 1.57 - 1 - 3.14 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - -3 - - 31 - 31 - 19 - 31 - 31 - 26 - 31 - 31 - 15 - 10 - 15 - 15 - 16 - 10 - 17 - 0 - 7 - 5 - 8 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 87 - 88 - 94 - 96 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Snare....1 - 48 - - - FIRST - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 0 - 5 - 0 - - - 0.78 - 1.57 - 1.57 - 25.95 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 19 - 31 - 31 - 26 - 22 - 31 - 15 - 10 - 13 - 15 - 16 - 10 - 17 - 0 - 8 - 5 - 8 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 79 - 99 - 99 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Snare....2 - 49 - - - FOURTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 0 - 4 - 0 - - - 0.71 - 1.57 - 0.5 - 17.27 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 21 - 31 - 31 - 15 - 9 - 15 - 15 - 16 - 15 - 18 - 0 - 8 - 5 - 8 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 33 - 83 - 99 - - 0 - 0 - 1 - 0 - 0 - 20 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Snare....3 - 50 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 1 - 6 - 1 - - - 25.95 - 25.95 - 0.5 - 17.27 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 19 - 31 - 31 - 15 - 5 - 15 - 15 - 15 - 16 - 18 - 0 - 8 - 5 - 8 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 67 - 71 - 99 - 99 - - 0 - 2 - 1 - 0 - 0 - 20 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Snare....4 - 51 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 0 - 2 - 0 - - - 12.06 - 9.81 - 0.62 - 9.87 - yes - yes - yes - yes - 17 - 21 - 10 - 22 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 16 - 18 - 20 - 31 - 26 - 0 - 0 - 15 - 15 - 15 - 0 - 14 - 0 - 6 - 1 - 7 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 81 - 99 - 99 - - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - - - 12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SnareDrm.* - 52 - - - FIFTH - 7 - - TRIANGL - 35 - 36 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - - - 1.41 - 0.78 - 3.14 - 17.27 - yes - no - no - no - 8 - 8 - 8 - 112 - - W1 - W1 - W8 - W4 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 16 - 4 - 0 - 15 - 8 - 15 - 15 - 15 - 8 - 16 - 0 - 0 - 5 - 8 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 1 - 1 - 1 - 0 - 46 - 0 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 7 - - Snare&Tom - 53 - - - SECOND - 0 - - TRIANGL - 32 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 2 - 3 - - - 1 - 1 - 3.14 - 15.7 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -1 - -2 - 0 - 0 - - 24 - 19 - 21 - 20 - 12 - 8 - 12 - 16 - 15 - 10 - 12 - 10 - 15 - 0 - 14 - 16 - 5 - 4 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 66 - 76 - 39 - - 1 - 0 - 0 - 0 - 0 - 26 - 0 - 26 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Steel Drum - 54 - - - THIRD - 0 - - TRIANGL - 16 - 0 - 9 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 4 - 7 - - - 2 - 6 - 8.98 - 2.02 - no - no - no - no - 8 - 8 - 14 - 15 - - W1 - W2 - W3 - W4 - 1 - 0 - 3 - -3 - - 21 - 13 - 14 - 31 - 8 - 8 - 5 - 9 - 12 - 11 - 10 - 10 - 12 - 12 - 3 - 4 - 6 - 5 - 4 - 3 - VOF - VOF - VOF - V48 - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 64 - 40 - 68 - - 1 - 1 - 1 - 1 - 0 - 50 - 0 - 26 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SteelDrum - 55 - - - SEVENTH - 4 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 6 - 3 - - - 1 - 1 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 2 - 2 - -2 - - 31 - 27 - 27 - 31 - 12 - 10 - 10 - 6 - 14 - 14 - 14 - 14 - 13 - 13 - 13 - 9 - 6 - 6 - 6 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 95 - 84 - - 1 - 2 - 2 - 2 - 0 - 45 - 67 - 0 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SteelDrum1 - 56 - - - FIFTH - 5 - - TRIANGL - 25 - 0 - 10 - 21 - off - - - 2 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 4 - 3 - 6 - 2 - - - 1 - 2 - 1 - 1.73 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 2 - 2 - -2 - - 31 - 27 - 27 - 31 - 12 - 10 - 10 - 6 - 14 - 14 - 14 - 14 - 13 - 13 - 13 - 9 - 6 - 6 - 6 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 95 - 84 - - 1 - 2 - 2 - 2 - 0 - 45 - 67 - 0 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SteelDrum2 - 57 - - - THIRD - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 1 - - - 1 - 1.57 - 1 - 3.14 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 20 - 20 - 20 - 20 - 10 - 10 - 10 - 16 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 6 - 4 - 4 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 60 - 63 - 73 - - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SteelDrum3 - 58 - - - THIRD - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 3 - 6 - 2 - - - 1 - 1.57 - 1.57 - 3.14 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 20 - 20 - 20 - 20 - 10 - 10 - 10 - 16 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 6 - 4 - 4 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 66 - 47 - 66 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SteelDrum4 - 59 - - - FOURTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 4 - 0 - 4 - - - 0.5 - 0.93 - 1 - 0.62 - no - no - no - no - 8 - 15 - 8 - 10 - - W1 - W1 - W5 - W1 - 3 - -2 - -3 - 3 - - 27 - 24 - 23 - 25 - 18 - 17 - 11 - 21 - 10 - 4 - 10 - 0 - 10 - 9 - 4 - 31 - 5 - 6 - 4 - 2 - VOF - VOF - VOF - VOF - - - 99 - 25 - 25 - 21 - 50 - 50 - - 93 - 93 - 89 - 95 - - 2 - 2 - 3 - 3 - 0 - 30 - 50 - 75 - - - -12 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SyBon - 60 - - - FOURTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 4 - 0 - 4 - - - 0.5 - 0.93 - 1 - 0.62 - no - no - no - no - 8 - 15 - 8 - 10 - - W1 - W1 - W5 - W1 - 3 - -2 - -3 - 3 - - 27 - 24 - 23 - 25 - 18 - 17 - 11 - 21 - 13 - 4 - 13 - 0 - 13 - 9 - 4 - 31 - 5 - 6 - 4 - 2 - VOF - VOF - VOF - VOF - - - 99 - 25 - 25 - 21 - 50 - 50 - - 93 - 93 - 89 - 95 - - 2 - 2 - 3 - 3 - 0 - 30 - 50 - 75 - - - -12 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SyBon* - 61 - - - FIFTH - 7 - - SAWUP - 63 - 0 - 99 - 0 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 5 - 2 - - - 2 - 1 - 6 - 4.71 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 2 - 0 - 0 - - 21 - 24 - 21 - 24 - 19 - 24 - 21 - 24 - 0 - 4 - 0 - 15 - 12 - 22 - 12 - 31 - 11 - 11 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 99 - 60 - - 0 - 0 - 0 - 0 - 0 - 45 - 67 - 0 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SynthDrm.1 - 62 - - - FIFTH - 7 - - SAWUP - 63 - 0 - 99 - 0 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 1 - 4 - 1 - - - 0.5 - 1 - 2.82 - 25.95 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 2 - 0 - 0 - - 21 - 24 - 21 - 24 - 19 - 24 - 21 - 24 - 0 - 4 - 0 - 15 - 12 - 22 - 12 - 31 - 11 - 11 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 99 - 93 - - 1 - 2 - 1 - 0 - 0 - 45 - 67 - 0 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SynthDrm.2 - 63 - - - FIFTH - 7 - - SAWUP - 63 - 0 - 99 - 0 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 0 - 3 - 2 - - - 0.5 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 2 - 0 - 0 - - 28 - 31 - 21 - 24 - 19 - 24 - 21 - 24 - 0 - 4 - 0 - 15 - 12 - 22 - 12 - 31 - 11 - 11 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 99 - 99 - - 1 - 2 - 1 - 0 - 0 - 45 - 67 - 0 - - - 0 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SynthDrm.3 - 64 - - - FIFTH - 4 - - SHOLD - 30 - 99 - 0 - 0 - off - - - 7 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 1 - 5 - 1 - - - 0.5 - 0.71 - 1 - 15.7 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 25 - 21 - 24 - 18 - 12 - 21 - 24 - 0 - 15 - 0 - 15 - 9 - 7 - 12 - 31 - 7 - 4 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 0 - 0 - 1 - 0 - 0 - 45 - 67 - 0 - - - 0 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SynthDrm.4 - 65 - - - FIFTH - 4 - - SHOLD - 30 - 99 - 0 - 0 - off - - - 7 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 3 - 4 - 3 - - - 0.5 - 0.5 - 0.5 - 14.13 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 24 - 17 - 31 - 31 - 24 - 0 - 15 - 15 - 15 - 9 - 7 - 0 - 31 - 5 - 5 - 15 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 92 - 99 - 99 - - 0 - 1 - 1 - 3 - 0 - 45 - 67 - 0 - - - 0 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SynthDrm.5 - 66 - - - THIRD - 3 - - TRIANGL - 23 - 0 - 0 - 42 - on - - - 6 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 2 - - - 0.5 - 0.71 - 0.5 - 0.71 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 2 - 0 - 0 - - 21 - 24 - 21 - 24 - 19 - 24 - 21 - 24 - 0 - 4 - 0 - 15 - 12 - 22 - 12 - 31 - 11 - 11 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 99 - 93 - - 1 - 2 - 1 - 0 - 0 - 45 - 67 - 0 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SynthDrm.6 - 67 - - - FOURTH - 3 - - TRIANGL - 23 - 0 - 0 - 42 - on - - - 6 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 2 - - - 1 - 0.71 - 1 - 25.95 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 2 - 0 - 0 - - 28 - 24 - 21 - 24 - 19 - 24 - 21 - 24 - 0 - 4 - 0 - 15 - 12 - 22 - 12 - 31 - 11 - 11 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 99 - 93 - - 1 - 2 - 1 - 0 - 0 - 45 - 67 - 0 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SynthDrm.7 - 68 - - - THIRD - 3 - - TRIANGL - 23 - 0 - 0 - 42 - on - - - 6 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 3 - 2 - - - 0.5 - 1 - 1.73 - 25.95 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 2 - 0 - 0 - - 16 - 25 - 31 - 31 - 16 - 25 - 31 - 6 - 12 - 0 - 12 - 0 - 18 - 9 - 6 - 7 - 9 - 7 - 6 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 25 - - 1 - 2 - 1 - 0 - 0 - 45 - 67 - 0 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SynthDrm.8 - 69 - - - FIFTH - 3 - - TRIANGL - 23 - 0 - 0 - 42 - on - - - 6 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 3 - 1 - - - 0.5 - 1 - 0.5 - 23.55 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 16 - 19 - 12 - 31 - 6 - 0 - 0 - 10 - 31 - 31 - 0 - 31 - 9 - 6 - 6 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 57 - - 1 - 2 - 1 - 0 - 0 - 45 - 67 - 0 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SynthDrm.9 - 70 - - - FIFTH - 4 - - SAWUP - 8 - 0 - 99 - 0 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 2 - 5 - 1 - - - 1.41 - 0.71 - 0.71 - 21.2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 16 - 19 - 12 - 31 - 6 - 0 - 0 - 10 - 31 - 31 - 0 - 31 - 9 - 6 - 6 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 57 - - 1 - 2 - 1 - 0 - 0 - 45 - 67 - 0 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SynthDrm10 - 71 - - - FIFTH - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 2 - - - 0.5 - 0.71 - 1.41 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 29 - 26 - 16 - 31 - 26 - 21 - 0 - 10 - 4 - 9 - 31 - 16 - 6 - 0 - 5 - 4 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 84 - 99 - 74 - - 1 - 2 - 0 - 2 - 0 - 0 - 0 - 0 - - - 0 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SynthDrm11 - 72 - - - FIFTH - 3 - - TRIANGL - 36 - 28 - 2 - 77 - on - - - 7 - 1 - on - off - on - off - 0 - 0 - 0 - 0 - 6 - 2 - 4 - 2 - - - 1.73 - 1 - 0.5 - 18.37 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 18 - 16 - 20 - 11 - 31 - 6 - 0 - 0 - 15 - 31 - 31 - 0 - 25 - 9 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 45 - - 1 - 2 - 1 - 3 - 0 - 45 - 67 - 0 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SynthDrm12 - 73 - - - FIFTH - 7 - - SAWUP - 63 - 0 - 99 - 0 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 4 - 4 - - - 0.71 - 1.57 - 1.73 - 25.95 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 2 - 0 - 0 - - 21 - 24 - 21 - 24 - 19 - 24 - 21 - 24 - 0 - 4 - 0 - 15 - 12 - 22 - 12 - 31 - 11 - 11 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 95 - 99 - 97 - - 0 - 0 - 0 - 0 - 0 - 45 - 67 - 0 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SynthDrm13 - 74 - - - FIRST - 7 - - SAWUP - 63 - 0 - 99 - 0 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 3 - 3 - - - 0.71 - 0.71 - 1.73 - 25.95 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 2 - 0 - 0 - - 21 - 24 - 21 - 24 - 19 - 24 - 21 - 24 - 0 - 4 - 0 - 15 - 12 - 22 - 12 - 31 - 11 - 11 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 86 - 66 - 97 - - 0 - 0 - 0 - 0 - 0 - 45 - 67 - 0 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SynthDrm14 - 75 - - - FOURTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 4 - 3 - - - 0.5 - 0.5 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 2 - 0 - 0 - - 21 - 19 - 31 - 24 - 17 - 24 - 24 - 24 - 0 - 10 - 9 - 15 - 12 - 14 - 13 - 31 - 11 - 11 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 53 - 94 - 99 - - 0 - 0 - 0 - 0 - 0 - 45 - 67 - 0 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SynthDrm15 - 76 - - - FIFTH - 7 - - SHOLD - 0 - 0 - 0 - 0 - on - - - 7 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 2 - 5 - 2 - - - 0.87 - 0.5 - 0.71 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 28 - 20 - 31 - 28 - 15 - 7 - 12 - 30 - 7 - 0 - 0 - 0 - 7 - 22 - 31 - 8 - 7 - 15 - 6 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 81 - 97 - 99 - - 1 - 3 - 0 - 1 - 62 - 0 - 0 - 99 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 98 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SynthDrm16 - 77 - - - FIFTH - 4 - - TRIANGL - 32 - 44 - 20 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 3 - 5 - 2 - - - 1 - 5 - 1 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - -1 - -1 - 2 - - 28 - 28 - 28 - 28 - 9 - 15 - 9 - 15 - 10 - 10 - 10 - 12 - 13 - 31 - 13 - 9 - 2 - 2 - 2 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 52 - 93 - 89 - - 1 - 1 - 1 - 2 - 30 - 30 - 50 - 50 - - - -12 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Tibet Drum - 78 - - - FIFTH - 7 - - TRIANGL - 11 - 0 - 16 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 0 - 4 - 0 - - - 0.5 - 0.71 - 0.87 - 0.78 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -3 - 3 - 3 - - 31 - 21 - 19 - 15 - 12 - 9 - 31 - 7 - 0 - 15 - 15 - 15 - 7 - 4 - 0 - 3 - 6 - 4 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 71 - 95 - 55 - - 2 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Timbale..1 - 79 - - - FIFTH - 5 - - TRIANGL - 11 - 0 - 16 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 0 - 5 - 0 - - - 0.5 - 0.71 - 0.87 - 0.78 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -3 - 3 - 3 - - 31 - 31 - 31 - 31 - 12 - 24 - 9 - 1 - 0 - 10 - 11 - 0 - 7 - 9 - 6 - 7 - 6 - 3 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 83 - 87 - 61 - - 2 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 99 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Timbale..2 - 80 - - - SECOND - 0 - - TRIANGL - 2 - 0 - 95 - 0 - on - - - 7 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 0 - 0 - 0 - - - 2 - 0.88 - 14.45 - 1.62 - no - no - no - no - 32 - 10 - 52 - 18 - - W1 - W3 - W1 - W2 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 14 - 13 - 17 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 6 - 7 - 9 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 60 - 80 - - 0 - 0 - 0 - 1 - 0 - 12 - 50 - 19 - - - -24 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Timbales * - 81 - - - THIRD - 0 - - TRIANGL - 7 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 2 - 5 - 7 - - - 0.5 - 0.62 - 0.88 - 0.62 - no - no - no - no - 8 - 10 - 10 - 10 - - W1 - W1 - W3 - W4 - 0 - -3 - 3 - -3 - - 29 - 31 - 31 - 31 - 11 - 17 - 18 - 15 - 0 - 11 - 15 - 0 - 0 - 6 - 12 - 8 - 4 - 3 - 4 - 3 - VOF - VOF - V48 - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 75 - 79 - 79 - - 1 - 1 - 1 - 0 - 0 - 54 - 0 - 0 - - - 0 - POLY - 12 - FULL - 0 - POR - 40 - 0 - 0 - 80 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Timpani * - 82 - - - THIRD - 7 - - TRIANGL - 21 - 0 - 3 - 0 - off - - - 6 - 2 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 0 - 1 - 0 - - - 0.5 - 0.5 - 0.78 - 22.49 - no - no - no - yes - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 29 - 17 - 15 - 15 - 18 - 15 - 15 - 12 - 0 - 12 - 7 - 17 - 0 - 4 - 4 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 60 - 82 - 65 - - 0 - 0 - 0 - 0 - 0 - 0 - 59 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Timpani - 83 - - - THIRD - 5 - - TRIANGL - 21 - 0 - 3 - 0 - off - - - 6 - 2 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 0 - 5 - 0 - - - 0.5 - 0.5 - 0.78 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 29 - 12 - 19 - 7 - 18 - 15 - 11 - 12 - 0 - 12 - 12 - 4 - 0 - 4 - 4 - 2 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 72 - 63 - 55 - - 0 - 0 - 0 - 0 - 0 - 0 - 59 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Timpani..1 - 84 - - - THIRD - 7 - - TRIANGL - 21 - 0 - 3 - 0 - off - - - 6 - 2 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 0 - 5 - 0 - - - 0.78 - 0.5 - 0.5 - 0.78 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 29 - 31 - 31 - 15 - 18 - 15 - 15 - 12 - 0 - 12 - 8 - 7 - 0 - 4 - 4 - 3 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 55 - 79 - 61 - - 1 - 0 - 0 - 1 - 0 - 0 - 59 - 0 - - - -24 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Timpani..2 - 85 - - - SECOND - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 8.24 - 11.46 - 2.31 - no - yes - yes - yes - 8 - 12 - 26 - 13 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 16 - 12 - 14 - 5 - 15 - 4 - 0 - 14 - 10 - 16 - 10 - 10 - 7 - 7 - 6 - 8 - VOF - VOF - VOF - VOF - - - 99 - 23 - 35 - 46 - 50 - 50 - - 94 - 52 - 81 - 93 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -24 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Tom 1 - 86 - - - FOURTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 0 - - - 0.5 - 1 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 31 - 24 - 31 - 15 - 15 - 6 - 15 - 11 - 0 - 17 - 0 - 6 - 1 - 3 - 1 - VOF - VOF - VOF - VOF - - - 99 - 37 - 38 - 0 - 50 - 50 - - 99 - 55 - 94 - 99 - - 1 - 1 - 1 - 0 - 0 - 19 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Tom 2 - 87 - - - FOURTH - 7 - - SHOLD - 99 - 0 - 99 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 0 - - - 0.5 - 1 - 0.87 - 8.65 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 20 - 31 - 24 - 31 - 14 - 15 - 6 - 15 - 11 - 0 - 5 - 0 - 6 - 1 - 3 - 1 - VOF - VOF - VOF - VOF - - - 99 - 37 - 38 - 0 - 50 - 50 - - 99 - 55 - 94 - 70 - - 1 - 1 - 1 - 0 - 0 - 19 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Tom 3 - 88 - - - FOURTH - 4 - - SHOLD - 99 - 0 - 99 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 0 - - - 0.5 - 0.62 - 0.62 - 1.57 - no - no - no - no - 8 - 10 - 10 - 8 - - W1 - W1 - W6 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 11 - 31 - 24 - 31 - 10 - 15 - 6 - 15 - 31 - 0 - 5 - 0 - 10 - 1 - 3 - 1 - VOF - VOF - VOF - VOF - - - 99 - 37 - 38 - 44 - 50 - 50 - - 99 - 55 - 94 - 70 - - 1 - 1 - 1 - 0 - 0 - 19 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Tom 4 - 89 - - - FOURTH - 4 - - SHOLD - 99 - 0 - 99 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 0 - - - 0.5 - 0.62 - 0.62 - 1.57 - no - no - no - no - 8 - 10 - 10 - 8 - - W1 - W1 - W6 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 11 - 31 - 24 - 31 - 13 - 15 - 6 - 15 - 31 - 0 - 5 - 0 - 10 - 1 - 3 - 1 - VOF - VOF - VOF - VOF - - - 99 - 37 - 38 - 44 - 50 - 50 - - 99 - 55 - 94 - 70 - - 1 - 1 - 1 - 0 - 0 - 19 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Tom 4* - 90 - - - FOURTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 0 - 6 - 0 - - - 0.5 - 0.78 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 3 - 3 - 0 - - 19 - 21 - 24 - 24 - 22 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 13 - 27 - 16 - 23 - 10 - 15 - 15 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 93 - 0 - 0 - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Tom Tom..1 - 91 - - - FOURTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 0 - 5 - 0 - - - 0.5 - 0.78 - 0.78 - 1.73 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 3 - 3 - 0 - - 19 - 21 - 24 - 24 - 22 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 13 - 27 - 16 - 26 - 10 - 15 - 15 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 93 - 71 - 99 - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Tom Tom..2 - 92 - - - FIFTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 0 - 5 - 0 - - - 0.71 - 0.71 - 0.78 - 0.71 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 3 - 3 - 0 - - 19 - 21 - 24 - 24 - 22 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 13 - 27 - 16 - 26 - 10 - 15 - 15 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 2 - 2 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Tom Tom..3 - 93 - - - FIFTH - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 0 - 5 - 0 - - - 3 - 4 - 5 - 3 - no - no - no - no - 8 - 13 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - -3 - - 31 - 31 - 31 - 31 - 28 - 19 - 13 - 19 - 15 - 13 - 13 - 10 - 15 - 10 - 12 - 12 - 7 - 5 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 78 - 89 - 77 - - 0 - 0 - 0 - 0 - 0 - 50 - 31 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Tom Tom..4 - 94 - - - THIRD - 3 - - TRIANGL - 7 - 0 - 81 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0.5 - 0.68 - 0.87 - 0.5 - no - no - no - no - 8 - 11 - 8 - 8 - - W1 - W1 - W6 - W6 - 3 - -3 - 3 - -3 - - 29 - 31 - 19 - 31 - 12 - 22 - 11 - 16 - 0 - 9 - 9 - 0 - 0 - 4 - 3 - 0 - 6 - 3 - 2 - 1 - VOF - VOF - VOF - VOF - - - 99 - 64 - 67 - 22 - 50 - 50 - - 90 - 99 - 60 - 80 - - 0 - 0 - 0 - 0 - 0 - 54 - 59 - 53 - - - -12 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Tom-Pany - 95 - - - FIFTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 1 - 6 - 0 - - - 0.5 - 0.5 - 0.5 - 25.95 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 27 - 24 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 15 - 31 - 31 - 31 - 6 - 7 - 6 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 0 - 0 - 0 - 0 - 0 - 70 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Wood Drum - 96 - - - FIFTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0.5 - 0.5 - 0.5 - 25.95 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 27 - 24 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 15 - 31 - 31 - 31 - 6 - 7 - 6 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 0 - 0 - 0 - 0 - 0 - 70 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Wood Drum* - 97 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 3 - 6 - 4 - - - 0.5 - 0.71 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -1 - -2 - 0 - 3 - - 31 - 16 - 31 - 31 - 9 - 12 - 22 - 22 - 12 - 9 - 3 - 5 - 9 - 12 - 15 - 21 - 6 - 3 - 6 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 63 - 99 - 99 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 46 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - XyloSpring - 98 - - - FIRST - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 1 - no - no - no - no - 255 - 255 - 255 - 255 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 11 - 0 - 0 - 0 - 15 - 15 - 15 - 15 - VOF - VOF - VOF - VOF - - - 93 - 72 - 99 - 67 - 6 - 0 - - 90 - 0 - 0 - 0 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - SUS - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - Bass Drum3 - 4 - - - - Other - 6 - - SIXTH - 7 - - SHOLD - 81 - 0 - 0 - 99 - on - - - 7 - 3 - on - on - on - off - 0 - 0 - 0 - 0 - 2 - 1 - 2 - 0 - - - 12 - 12 - 20.41 - 9 - yes - yes - yes - yes - 80 - 80 - 64 - 80 - - W2 - W6 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 13 - 13 - 13 - 21 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 6 - 7 - 7 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 24 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Cabassa * - 0 - - - SIXTH - 7 - - SHOLD - 89 - 0 - 0 - 99 - on - - - 7 - 3 - on - on - on - off - 0 - 0 - 0 - 0 - 2 - 1 - 2 - 0 - - - 22.49 - 22.81 - 12 - 9 - yes - yes - yes - yes - 80 - 83 - 96 - 96 - - W1 - W5 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 13 - 13 - 13 - 21 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 7 - 7 - 6 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 98 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 24 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Maracas * - 1 - - - THIRD - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 2 - 2 - - - 1 - 7.02 - 7 - 13 - no - no - no - no - 8 - 9 - 8 - 8 - - W2 - W1 - W1 - W7 - 0 - 3 - -3 - 0 - - 31 - 31 - 31 - 31 - 14 - 16 - 11 - 23 - 0 - 8 - 8 - 5 - 0 - 0 - 0 - 0 - 6 - 4 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 77 - 77 - 85 - - 1 - 1 - 1 - 1 - 0 - 10 - 12 - 28 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Metalimba - 2 - - - THIRD - 6 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 1 - 0 - 1 - - - 7.85 - 12.56 - 1 - 1.31 - yes - yes - yes - yes - 16 - 105 - 8 - 53 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 24 - 31 - 31 - 31 - 16 - 0 - 18 - 19 - 0 - 15 - 15 - 0 - 31 - 0 - 0 - 0 - 7 - 1 - 1 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 89 - 69 - 99 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -24 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Tambourin* - 3 - - - - - NOISES - 6 - - Noises - 0 - - FIFTH - 1 - - SHOLD - 99 - 0 - 0 - 99 - off - - - 2 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 6 - 5 - 6 - 5 - - - 0.5 - 0.5 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 12 - 19 - 15 - 15 - 18 - 18 - 4 - 4 - 15 - 12 - 15 - 15 - 3 - 17 - 3 - 2 - 3 - 3 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 99 - 99 - 77 - - 0 - 0 - 0 - 0 - 2 - 3 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Airplane.1 - 0 - - - FIFTH - 1 - - SHOLD - 99 - 0 - 0 - 99 - off - - - 2 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 7 - 4 - 4 - 4 - - - 0.5 - 2.82 - 1 - 2.82 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 12 - 19 - 15 - 15 - 18 - 18 - 4 - 4 - 15 - 12 - 15 - 15 - 3 - 17 - 3 - 2 - 3 - 3 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 99 - 99 - 86 - - 0 - 0 - 0 - 0 - 2 - 3 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Airplane.2 - 1 - - - THIRD - 4 - - SQUARE - 55 - 0 - 0 - 40 - off - - - 6 - 3 - on - off - on - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 27.57 - 5.19 - 3.14 - 25.95 - yes - yes - no - no - 47 - 96 - 8 - 8 - - W1 - W6 - W1 - W5 - 3 - 3 - -3 - -3 - - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 6 - 4 - 6 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 71 - 58 - 46 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Alarm Call - 2 - - - FIFTH - 4 - - TRIANGL - 38 - 3 - 5 - 0 - off - - - 4 - 1 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 0 - 2 - 0 - - - 2.06 - 1.66 - 1.67 - 2.06 - no - no - no - no - 13 - 9 - 11 - 17 - - W5 - W3 - W3 - W4 - -3 - -3 - 2 - -2 - - 20 - 25 - 15 - 30 - 21 - 7 - 10 - 5 - 14 - 15 - 14 - 14 - 3 - 4 - 0 - 2 - 5 - 5 - 7 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 76 - 99 - 77 - - 0 - 0 - 0 - 0 - 0 - 8 - 6 - 0 - - - -19 - POLY - 3 - FULL - 0 - POR - 99 - 0 - 0 - 43 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Alien 3 - 3 - - - THIRD - 0 - - SQUARE - 50 - 0 - 0 - 99 - on - - - 0 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 3 - - - 2 - 1 - 3 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -1 - 3 - 2 - - 21 - 22 - 22 - 10 - 4 - 16 - 15 - 12 - 14 - 13 - 13 - 14 - 31 - 31 - 31 - 1 - 6 - 5 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 44 - 70 - 40 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Alien Chat - 4 - - - FOURTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 3 - 5 - - - 0.62 - 0.5 - 8.24 - 4 - yes - yes - yes - no - 10 - 8 - 12 - 8 - - W2 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 27 - 29 - 19 - 3 - 4 - 10 - 15 - 0 - 7 - 7 - 4 - 0 - 10 - 8 - 6 - 1 - 1 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 87 - 94 - - 2 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - -24 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Artofnoiz* - 5 - - - EIGHTH - 0 - - TRIANGL - 37 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 4 - 3 - - - 8 - 6 - 5.65 - 5.19 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 3 - -3 - - 31 - 12 - 10 - 7 - 27 - 27 - 27 - 27 - 15 - 15 - 15 - 15 - 13 - 13 - 13 - 13 - 13 - 13 - 13 - 13 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -24 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AutoDecent - 6 - - - FOURTH - 5 - - SHOLD - 99 - 0 - 64 - 0 - off - - - 7 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 4 - 3 - - - 0.5 - 6.92 - 0.5 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - -3 - -3 - -3 - - 15 - 20 - 20 - 18 - 9 - 11 - 6 - 7 - 12 - 9 - 5 - 5 - 0 - 4 - 1 - 1 - 1 - 1 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 77 - 83 - 48 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -24 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AutoStorm1 - 7 - - - FOURTH - 3 - - SHOLD - 80 - 0 - 99 - 17 - on - - - 7 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 3 - 4 - 3 - - - 0.5 - 6.92 - 0.5 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - -3 - -3 - -3 - - 19 - 18 - 24 - 15 - 9 - 11 - 6 - 7 - 12 - 9 - 5 - 5 - 9 - 9 - 9 - 9 - 1 - 1 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 77 - 83 - 51 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -24 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - AutoStorm2 - 8 - - - FIFTH - 6 - - SQUARE - 89 - 0 - 99 - 35 - on - - - 7 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 3 - 4 - 4 - - - 0.5 - 4 - 4 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 27 - 27 - 28 - 31 - 15 - 12 - 12 - 11 - 7 - 7 - 12 - 12 - 9 - 9 - 11 - 11 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 84 - 99 - 66 - - 3 - 3 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 1 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Big Belch - 9 - - - FIFTH - 0 - - TRIANGL - 34 - 0 - 80 - 94 - off - - - 6 - 3 - on - off - on - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 25.95 - 0.71 - 25.95 - 0.71 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 19 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 15 - 15 - 14 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 75 - 99 - 81 - - 0 - 0 - 0 - 0 - 10 - 40 - 10 - 40 - - - -12 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 99 - 0 - 0 - 51 - 0 - 0 - 0 - 0 - 0 - 0 - - Birds - 10 - - - FIFTH - 7 - - TRIANGL - 31 - 0 - 35 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0.78 - 1.73 - 3.14 - 4.24 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W2 - W1 - 2 - -3 - -2 - 0 - - 18 - 25 - 19 - 30 - 0 - 0 - 0 - 0 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 5 - 8 - 8 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 97 - 95 - 69 - - 1 - 1 - 0 - 0 - 0 - 35 - 0 - 9 - - - -12 - POLY - 6 - FULL - 0 - POR - 99 - 0 - 0 - 61 - 0 - 29 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BlendOrgan - 11 - - - THIRD - 7 - - TRIANGL - 0 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 7 - 3 - 3 - 7 - 7 - 5 - 2 - 3 - - - 4 - 0.5 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 15 - 15 - 19 - 15 - 4 - 6 - 21 - 4 - 12 - 13 - 9 - 2 - 4 - 4 - 21 - 4 - 9 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 98 - - 0 - 3 - 3 - 0 - 0 - 0 - 0 - 0 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Blow Up - 12 - - - FOURTH - 5 - - SAWUP - 17 - 0 - 73 - 90 - off - - - 7 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 4 - 4 - 2 - - - 2 - 7 - 20.41 - 9.42 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 2 - 0 - 2 - - 31 - 31 - 31 - 31 - 7 - 7 - 7 - 10 - 0 - 0 - 0 - 0 - 12 - 12 - 28 - 27 - 13 - 4 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 50 - 58 - 75 - - 2 - 2 - 2 - 2 - 0 - 0 - 0 - 0 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Boingggggg - 13 - - - THIRD - 5 - - SHOLD - 52 - 0 - 55 - 73 - off - - - 7 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 3 - 5 - 3 - - - 5 - 16.96 - 25.95 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 13 - 31 - 19 - 15 - 11 - 15 - 6 - 15 - 0 - 0 - 6 - 7 - 5 - 8 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 80 - 57 - 63 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 2 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - BrokWindow - 14 - - - FOURTH - 7 - - SQUARE - 50 - 0 - 99 - 67 - on - - - 3 - 2 - on - off - on - off - 0 - 0 - 0 - 0 - 5 - 4 - 3 - 4 - - - 3 - 1 - 0.71 - 0.71 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -3 - 0 - -3 - - 24 - 31 - 31 - 23 - 13 - 31 - 31 - 6 - 0 - 15 - 15 - 14 - 13 - 31 - 31 - 0 - 6 - 15 - 15 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 0 - 65 - 58 - - 2 - 0 - 1 - 0 - 0 - 0 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Bubbly - 15 - - - SEVENTH - 0 - - SQUARE - 19 - 70 - 0 - 99 - on - - - 4 - 3 - on - on - on - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 14.22 - 19.21 - 11.13 - 1 - yes - yes - yes - no - 17 - 26 - 23 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 15 - 15 - 15 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 95 - 58 - 0 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Busy * - 16 - - - THIRD - 0 - - SQUARE - 15 - 0 - 0 - 90 - off - - - 0 - 3 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 3 - 6 - 3 - - - 0.5 - 0.5 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 3 - -3 - -3 - - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 52 - 64 - 50 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Busy.....1 - 17 - - - EIGHTH - 0 - - SQUARE - 15 - 0 - 0 - 99 - off - - - 0 - 3 - on - on - on - on - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0.5 - 0.5 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 3 - -3 - -3 - - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Busy.....2 - 18 - - - THIRD - 7 - - TRIANGL - 99 - 0 - 16 - 84 - on - - - 0 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 5 - 3 - - - 0.87 - 7.85 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 2 - 0 - 2 - - 16 - 28 - 28 - 26 - 12 - 31 - 16 - 16 - 15 - 15 - 15 - 15 - 3 - 31 - 3 - 17 - 9 - 6 - 6 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 72 - - 2 - 3 - 3 - 2 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Choo Choo - 19 - - - FIRST - 7 - - SAWUP - 42 - 0 - 66 - 90 - off - - - 6 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 3 - - - 0.5 - 13.84 - 18.84 - 25.95 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 11 - 31 - 31 - 31 - 11 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 7 - 1 - 3 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Chopper..1 - 20 - - - FOURTH - 5 - - SAWUP - 51 - 0 - 0 - 99 - on - - - 7 - 3 - on - on - on - on - 0 - 0 - 0 - 0 - 6 - 6 - 4 - 4 - - - 0.78 - 1.41 - 2 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 1 - -1 - 1 - 1 - - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 3 - 3 - 3 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 86 - 78 - 80 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 1 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Chopper..2 - 21 - - - FIFTH - 4 - - SQUARE - 32 - 0 - 0 - 99 - off - - - 0 - 3 - on - off - on - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 19.47 - 13.12 - 17.17 - 15.11 - yes - yes - yes - yes - 93 - 10 - 95 - 18 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 29 - 31 - 28 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 4 - 1 - 4 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 82 - 90 - 82 - 90 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Cricket * - 22 - - - SIXTH - 1 - - TRIANGL - 99 - 0 - 0 - 49 - on - - - 7 - 3 - on - on - on - on - 0 - 0 - 0 - 0 - 7 - 4 - 6 - 4 - - - 1 - 1 - 1.41 - 1.57 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 13 - 13 - 13 - 13 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 3 - 3 - 4 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 54 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 12 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Diving Fly - 23 - - - THIRD - 7 - - TRIANGL - 85 - 0 - 45 - 0 - off - - - 7 - 0 - off - off - off - off - 7 - 3 - 3 - 7 - 6 - 4 - 5 - 4 - - - 1 - 1 - 25.95 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 27 - 31 - 3 - 3 - 10 - 8 - 0 - 0 - 15 - 5 - 13 - 13 - 13 - 9 - 4 - 4 - 3 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 56 - 73 - 79 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Dynamite - 24 - - - THIRD - 7 - - TRIANGL - 0 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 7 - 3 - 3 - 7 - 7 - 4 - 4 - 4 - - - 1 - 1 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - -3 - - 15 - 15 - 19 - 15 - 4 - 6 - 21 - 2 - 14 - 12 - 9 - 0 - 10 - 18 - 21 - 9 - 7 - 3 - 3 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 58 - 62 - 86 - - 0 - 3 - 3 - 0 - 0 - 0 - 0 - 0 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - EarthQuake - 25 - - - FIRST - 7 - - SHOLD - 99 - 0 - 12 - 0 - off - - - 6 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 3 - - - 0.5 - 1.83 - 3.18 - 3.62 - no - no - no - no - 8 - 9 - 11 - 18 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 23 - 21 - 16 - 23 - 7 - 6 - 11 - 12 - 15 - 14 - 10 - 14 - 6 - 6 - 5 - 5 - 4 - 1 - 1 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 18 - 0 - 50 - 50 - - 93 - 86 - 76 - 76 - - 1 - 1 - 0 - 1 - 0 - 0 - 0 - 3 - - - -24 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Earthquake - 26 - - - FIRST - 7 - - SHOLD - 99 - 0 - 12 - 0 - off - - - 6 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 3 - - - 0.5 - 1.83 - 3.18 - 4.81 - no - no - no - no - 8 - 9 - 11 - 21 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 23 - 21 - 16 - 23 - 7 - 6 - 11 - 12 - 15 - 14 - 13 - 14 - 6 - 6 - 5 - 5 - 4 - 1 - 1 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 18 - 0 - 50 - 50 - - 93 - 86 - 76 - 76 - - 1 - 1 - 0 - 1 - 0 - 0 - 0 - 3 - - - -24 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Earthquake* - 27 - - - FIFTH - 0 - - SQUARE - 13 - 0 - 99 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 5 - 4 - - - 1 - 2 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 21 - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 5 - 2 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 77 - 93 - 43 - - 0 - 0 - 1 - 0 - 5 - 0 - 10 - 35 - - - 0 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Eng Siren - 28 - - - FOURTH - 4 - - TRIANGL - 0 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 4 - - - 1 - 2 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 18 - 18 - 18 - 27 - 31 - 31 - 31 - 3 - 15 - 15 - 15 - 14 - 8 - 9 - 11 - 7 - 10 - 10 - 10 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 67 - 85 - 91 - - 0 - 0 - 0 - 0 - 1 - 0 - 75 - 77 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Excuse Me - 29 - - - FIRST - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0.68 - 3 - 1.12 - 1 - yes - no - yes - no - 11 - 8 - 10 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 17 - 19 - 13 - 31 - 13 - 8 - 3 - 31 - 0 - 15 - 15 - 15 - 31 - 8 - 1 - 0 - 7 - 4 - 4 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 81 - 91 - 0 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -10 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Exo/Bird * - 30 - - - SIXTH - 0 - - SHOLD - 71 - 0 - 99 - 99 - off - - - 3 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 6 - 4 - 3 - 3 - - - 1 - 4 - 1.57 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 3 - -3 - -3 - - 16 - 16 - 16 - 16 - 9 - 9 - 9 - 9 - 15 - 15 - 15 - 15 - 4 - 4 - 4 - 4 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 44 - 99 - 78 - 95 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Explosion - 31 - - - SIXTH - 7 - - SAWUP - 57 - 0 - 99 - 0 - on - - - 7 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 2 - 5 - - - 1 - 1 - 2 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 28 - 14 - 10 - 9 - 8 - 13 - 15 - 15 - 13 - 31 - 31 - 31 - 31 - 10 - 10 - 10 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 57 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - FaucetDrip - 32 - - - SECOND - 7 - - TRIANGL - 29 - 20 - 6 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 6 - 1 - 1.25 - 6 - no - no - no - no - 8 - 8 - 12 - 8 - - W1 - W1 - W1 - W1 - 3 - -3 - 1 - -2 - - 28 - 31 - 31 - 31 - 31 - 20 - 31 - 10 - 14 - 11 - 15 - 15 - 1 - 5 - 0 - 0 - 8 - 8 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 97 - 73 - 64 - - 0 - 0 - 0 - 0 - 0 - 0 - 5 - 48 - - - 12 - POLY - 12 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 54 - 0 - 0 - 0 - 0 - 0 - 0 - - Feedback * - 33 - - - THIRD - 7 - - TRIANGL - 57 - 0 - 0 - 99 - off - - - 6 - 2 - off - off - on - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 4 - 1 - 5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 14 - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 6 - 1 - 5 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 89 - 67 - 73 - - 0 - 0 - 0 - 0 - 0 - 50 - 59 - 0 - - - -24 - MONO - 12 - FULL - 99 - POR - 99 - 45 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Flight Sim - 34 - - - FOURTH - 7 - - TRIANGL - 20 - 0 - 0 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 1 - - - 1 - 2.48 - 0.5 - 5 - no - no - no - no - 8 - 15 - 8 - 8 - - W1 - W3 - W4 - W1 - 3 - 3 - -3 - 3 - - 31 - 26 - 15 - 15 - 19 - 26 - 26 - 13 - 15 - 10 - 15 - 15 - 7 - 5 - 4 - 5 - 7 - 5 - 5 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 63 - - 1 - 1 - 2 - 0 - 0 - 54 - 19 - 30 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Gizmo * - 35 - - - FIRST - 0 - - SHOLD - 99 - 0 - 99 - 0 - off - - - 7 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1.25 - 1.75 - no - no - no - no - 8 - 8 - 12 - 20 - - W3 - W3 - W1 - W1 - 0 - -3 - 3 - -3 - - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 7 - 1 - 1 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 75 - 78 - 67 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -24 - MONO - 12 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - GrandPrix* - 36 - - - THIRD - 7 - - TRIANGL - 97 - 0 - 0 - 52 - off - - - 0 - 2 - on - on - on - on - 0 - 0 - 0 - 0 - 3 - 0 - 0 - 0 - - - 0.5 - 0.5 - 15 - 15 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 14 - 31 - 31 - 15 - 11 - 0 - 0 - 0 - 14 - 15 - 15 - 10 - 10 - 0 - 0 - 11 - 15 - 3 - 3 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 97 - 76 - 91 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - GuiRoach:: - 37 - - - FIFTH - 7 - - SHOLD - 39 - 54 - 27 - 68 - off - - - 7 - 3 - off - on - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 3.46 - 0.5 - 2 - 1.57 - yes - no - yes - yes - 8 - 8 - 8 - 48 - - W2 - W1 - W8 - W1 - -2 - 2 - -3 - 3 - - 2 - 25 - 1 - 31 - 3 - 11 - 16 - 17 - 15 - 15 - 15 - 15 - 0 - 1 - 0 - 0 - 6 - 1 - 6 - 1 - VOF - VOF - VOF - V48 - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 99 - 68 - - 0 - 0 - 0 - 0 - 0 - 0 - 24 - 71 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Gurgle - 38 - - - THIRD - 7 - - TRIANGL - 33 - 0 - 99 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 4 - 5 - 3 - - - 1 - 16.96 - 1 - 9 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 0 - -1 - -1 - - 18 - 31 - 31 - 18 - 4 - 6 - 21 - 4 - 15 - 15 - 15 - 15 - 0 - 22 - 0 - 0 - 9 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 48 - 99 - 99 - - 0 - 1 - 1 - 0 - 0 - 0 - 0 - 46 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Hard Rain - 39 - - - THIRD - 7 - - SAWUP - 99 - 0 - 99 - 99 - on - - - 3 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 3 - - - 1.41 - 2 - 0.5 - 2.82 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 3 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 6 - 0 - 4 - 2 - 9 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 81 - 19 - 90 - 91 - - 0 - 1 - 1 - 2 - 0 - 0 - 0 - 0 - - - -24 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Harley Hog - 40 - - - FIFTH - 0 - - TRIANGL - 0 - 0 - 0 - 0 - on - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 4 - 3 - - - 0.5 - 1 - 0.5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 21 - 21 - 7 - 31 - 19 - 18 - 19 - 31 - 12 - 12 - 15 - 15 - 18 - 18 - 18 - 24 - 8 - 8 - 8 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 52 - 99 - 99 - - 0 - 0 - 3 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Heart Beat - 41 - - - FIFTH - 7 - - TRIANGL - 51 - 0 - 0 - 91 - off - - - 6 - 3 - off - on - on - on - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 7 - 0.5 - 13.84 - 0.5 - yes - no - yes - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W1 - 0 - 0 - 0 - 0 - - 14 - 31 - 14 - 13 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 4 - 1 - 4 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 98 - 99 - 92 - - 0 - 0 - 0 - 0 - 10 - 40 - 10 - 40 - - - 0 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Helicopter - 42 - - - THIRD - 4 - - SQUARE - 56 - 0 - 0 - 50 - off - - - 6 - 3 - on - off - on - off - 0 - 0 - 0 - 0 - 5 - 4 - 4 - 4 - - - 10 - 6 - 3 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 3 - -3 - -3 - - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 6 - 4 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 67 - 55 - 49 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Hi Alarm - 43 - - - FIFTH - 7 - - SHOLD - 58 - 0 - 99 - 80 - off - - - 5 - 3 - off - off - on - on - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 5 - 12.72 - 4 - 5.19 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - -1 - 0 - - 31 - 21 - 20 - 31 - 18 - 7 - 12 - 20 - 0 - 14 - 10 - 11 - 16 - 0 - 17 - 0 - 11 - 15 - 5 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 98 - 51 - 88 - 84 - - 1 - 1 - 1 - 0 - 1 - 46 - 0 - 0 - - - 0 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Hole in 1 - 44 - - - FIFTH - 7 - - SQUARE - 47 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 4 - 5 - 4 - - - 0.5 - 8.48 - 0.5 - 8.48 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 3 - 0 - 0 - - 31 - 7 - 31 - 9 - 31 - 12 - 31 - 5 - 15 - 12 - 15 - 12 - 0 - 6 - 0 - 6 - 15 - 4 - 15 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 62 - 63 - 75 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -24 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - House Fly - 45 - - - FIFTH - 7 - - TRIANGL - 25 - 42 - 0 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 4 - 2 - - - 3.46 - 9 - 4 - 4.71 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 1 - 0 - 0 - 0 - - 14 - 18 - 15 - 18 - 12 - 16 - 9 - 10 - 15 - 13 - 14 - 15 - 9 - 6 - 3 - 6 - 10 - 10 - 9 - 12 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 61 - 82 - 51 - - 1 - 1 - 1 - 0 - 0 - 0 - 0 - 10 - - - -24 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - HowlAtMoon - 46 - - - FIFTH - 0 - - TRIANGL - 99 - 67 - 32 - 74 - off - - - 4 - 0 - off - off - off - off - 0 - 3 - 1 - 3 - 0 - 7 - 2 - 1 - - - 4.32 - 4.75 - 19.03 - 16.3 - yes - no - no - yes - 24 - 44 - 72 - 41 - - W5 - W6 - W2 - W3 - -3 - 1 - 1 - 0 - - 31 - 2 - 12 - 8 - 4 - 9 - 29 - 13 - 11 - 5 - 7 - 15 - 14 - 10 - 12 - 23 - 2 - 8 - 13 - 7 - V12 - VOF - V12 - V24 - - - 0 - 0 - 0 - 0 - 50 - 50 - - 30 - 99 - 75 - 9 - - 1 - 3 - 1 - 1 - 44 - 37 - 12 - 93 - - - 0 - POLY - 11 - FULL - 38 - SUS - 81 - 21 - 28 - 41 - 31 - 81 - 47 - 37 - 27 - 0 - 0 - 0 - 0 - 4 - - Lil'Birdie - 47 - - - THIRD - 2 - - SQUARE - 56 - 0 - 0 - 39 - on - - - 6 - 1 - on - off - on - off - 0 - 0 - 0 - 0 - 4 - 4 - 5 - 3 - - - 1.73 - 7.85 - 1.73 - 0.87 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 3 - -3 - -3 - - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 6 - 4 - 6 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 67 - 55 - 49 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -24 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Lo Alarm - 48 - - - FIFTH - 7 - - TRIANGL - 24 - 6 - 16 - 0 - off - - - 5 - 2 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 2 - 0 - - - 2 - 2 - 2.16 - 1 - no - no - no - no - 8 - 8 - 12 - 8 - - W2 - W4 - W1 - W1 - 0 - -3 - 3 - 0 - - 26 - 31 - 31 - 31 - 10 - 9 - 0 - 4 - 15 - 15 - 15 - 15 - 0 - 3 - 0 - 0 - 5 - 2 - 11 - 2 - VOF - V12 - V48 - V24 - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 58 - 68 - 68 - - 2 - 0 - 0 - 0 - 5 - 21 - 12 - 15 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - MT:Apr'88 - 49 - - - FIFTH - 7 - - SAWUP - 64 - 0 - 99 - 99 - on - - - 7 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 0 - 5 - 0 - - - 0.5 - 2 - 1.57 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - -3 - - 25 - 25 - 31 - 26 - 21 - 9 - 21 - 21 - 15 - 15 - 15 - 15 - 3 - 8 - 31 - 18 - 9 - 9 - 10 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 84 - 99 - 99 - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - MachineGun - 50 - - - FIRST - 7 - - TRIANGL - 5 - 0 - 66 - 90 - off - - - 6 - 3 - on - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0.5 - 13.84 - 18.84 - 25.95 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 11 - 31 - 31 - 31 - 22 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 7 - 1 - 3 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 91 - 99 - 99 - 99 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -24 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - MalibuNite - 51 - - - EIGHTH - 7 - - SHOLD - 33 - 0 - 53 - 28 - off - - - 6 - 3 - on - off - on - on - 0 - 0 - 0 - 0 - 3 - 1 - 1 - 5 - - - 0.62 - 3.93 - 11.36 - 0.93 - no - no - no - no - 10 - 23 - 9 - 15 - - W3 - W2 - W3 - W4 - -3 - 0 - 3 - -3 - - 1 - 1 - 1 - 7 - 8 - 8 - 7 - 17 - 10 - 9 - 8 - 9 - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 1 - VOF - V24 - V24 - V12 - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 98 - 98 - 79 - - 0 - 0 - 0 - 0 - 0 - 5 - 8 - 0 - - - -4 - POLY - 12 - FULL - 30 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 1 - - Med Musak - 52 - - - FOURTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1.41 - 0.68 - 3.14 - 17.27 - yes - no - no - yes - 8 - 11 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 20 - 31 - 31 - 15 - 1 - 15 - 15 - 14 - 31 - 31 - 12 - 15 - 9 - 15 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 99 - 62 - 92 - - 1 - 1 - 3 - 0 - 0 - 0 - 12 - 0 - - - 12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Mouse-Tom - 53 - - - FOURTH - 7 - - SHOLD - 99 - 0 - 99 - 0 - off - - - 7 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 1 - 1 - 0 - - - 1.57 - 1.41 - 13 - 23.55 - no - no - yes - yes - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -1 - 2 - 3 - - 22 - 20 - 23 - 31 - 11 - 18 - 20 - 31 - 9 - 0 - 0 - 0 - 19 - 19 - 19 - 19 - 15 - 2 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 82 - 86 - 95 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -8 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - Mr.Mr.Noiz - 54 - - - FOURTH - 7 - - SHOLD - 99 - 0 - 99 - 0 - off - - - 7 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 1 - 1 - 0 - - - 1.57 - 1.41 - 13 - 23.55 - no - no - yes - yes - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -1 - 2 - 3 - - 30 - 31 - 31 - 31 - 11 - 18 - 20 - 31 - 9 - 0 - 0 - 0 - 19 - 19 - 19 - 19 - 15 - 2 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 82 - 86 - 95 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 11 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - Noise Shot - 55 - - - FIFTH - 4 - - TRIANGL - 79 - 46 - 99 - 99 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 0 - 1 - 0 - - - 1.5 - 0.5 - 3 - 0.5 - no - yes - no - yes - 16 - 8 - 8 - 8 - - W2 - W4 - W6 - W3 - -3 - 2 - 3 - 0 - - 12 - 8 - 11 - 12 - 31 - 31 - 31 - 8 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 0 - 6 - 9 - 5 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 67 - 99 - 99 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Ofthewall* - 56 - - - FOURTH - 7 - - TRIANGL - 14 - 0 - 0 - 0 - off - - - 5 - 1 - off - off - off - on - 0 - 0 - 0 - 0 - 4 - 7 - 7 - 3 - - - 3.5 - 7.75 - 3.68 - 10.99 - no - yes - yes - no - 120 - 16 - 19 - 64 - - W1 - W1 - W2 - W1 - -3 - -3 - -1 - 3 - - 31 - 31 - 31 - 31 - 31 - 25 - 31 - 31 - 15 - 15 - 10 - 15 - 7 - 8 - 10 - 2 - 3 - 3 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 60 - - 1 - 1 - 1 - 1 - 0 - 99 - 90 - 0 - - - -9 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 55 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OldClock - 57 - - - SIXTH - 7 - - TRIANGL - 16 - 0 - 89 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 4 - 3 - - - 1 - 1 - 3 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -1 - 0 - 0 - - 31 - 31 - 31 - 15 - 2 - 3 - 4 - 3 - 13 - 13 - 13 - 14 - 2 - 3 - 2 - 9 - 6 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 96 - 98 - 60 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OutOfTune - 58 - - - FIFTH - 7 - - SQUARE - 10 - 0 - 0 - 0 - on - - - 7 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 3 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W2 - W2 - 0 - 0 - 0 - 0 - - 2 - 31 - 2 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 31 - 0 - 31 - 0 - 6 - 1 - 6 - 1 - VOF - VOF - VOF - VOF - - - 74 - 2 - 27 - 0 - 50 - 50 - - 90 - 82 - 90 - 85 - - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Passing By - 59 - - - FIFTH - 0 - - TRIANGL - 21 - 0 - 99 - 99 - off - - - 7 - 1 - off - on - off - on - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 4 - - - 1 - 2 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 21 - 31 - 16 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 9 - 9 - 15 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 74 - 93 - 43 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Pull Over - 60 - - - FIFTH - 0 - - SHOLD - 46 - 0 - 99 - 0 - on - - - 7 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 16.96 - 1 - 25.95 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W7 - W1 - W6 - W1 - 0 - 0 - 0 - 0 - - 29 - 13 - 29 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 9 - 9 - 9 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 0 - 99 - 0 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 12 - POLY - 12 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - R2-D2 * - 61 - - - THIRD - 7 - - TRIANGL - 5 - 0 - 60 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 1 - 0.71 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 21 - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 3 - 1 - 3 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 53 - 91 - 71 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Racing Car - 62 - - - FOURTH - 7 - - SQUARE - 50 - 0 - 6 - 86 - on - - - 2 - 1 - on - off - on - on - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 16.87 - 3.67 - 19.56 - 13.56 - yes - yes - yes - yes - 20 - 10 - 62 - 25 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 18 - 21 - 11 - 3 - 24 - 9 - 5 - 3 - 14 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 6 - 3 - 2 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 97 - 51 - 81 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -24 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - RADIATION? - 63 - - - THIRD - 7 - - TRIANGL - 85 - 0 - 45 - 0 - off - - - 7 - 3 - off - on - off - off - 0 - 0 - 0 - 0 - 4 - 4 - 5 - 4 - - - 0.71 - 2 - 1 - 3.46 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - -3 - 3 - -3 - - 31 - 31 - 31 - 31 - 0 - 0 - 0 - 0 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 4 - 5 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 44 - 99 - 99 - - 1 - 0 - 0 - 1 - 0 - 36 - 0 - 34 - - - -24 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Rain Storm - 64 - - - THIRD - 2 - - TRIANGL - 81 - 0 - 0 - 0 - off - - - 7 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - - - 10.59 - 1.81 - 1 - 18.77 - yes - yes - no - yes - 66 - 21 - 8 - 85 - - W1 - W1 - W1 - W4 - 0 - 0 - 0 - 0 - - 15 - 18 - 31 - 29 - 12 - 12 - 31 - 21 - 15 - 15 - 15 - 13 - 0 - 0 - 0 - 0 - 8 - 6 - 5 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 93 - 0 - 75 - - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Refs.Wisl* - 65 - - - FIFTH - 5 - - SAWUP - 41 - 0 - 0 - 99 - on - - - 3 - 1 - on - on - on - on - 7 - 3 - 3 - 7 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 3 - -3 - 1 - - 22 - 22 - 22 - 19 - 4 - 4 - 4 - 24 - 9 - 9 - 9 - 15 - 6 - 6 - 6 - 6 - 7 - 7 - 7 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 66 - 99 - 95 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Repeater.1 - 66 - - - THIRD - 7 - - SAWUP - 41 - 61 - 84 - 99 - off - - - 7 - 1 - on - on - on - on - 7 - 3 - 3 - 7 - 4 - 3 - 5 - 3 - - - 5 - 5 - 1 - 5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 3 - -3 - 1 - - 22 - 22 - 22 - 19 - 4 - 4 - 4 - 24 - 9 - 9 - 9 - 15 - 6 - 6 - 6 - 6 - 7 - 7 - 7 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 89 - 55 - 97 - 71 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Repeater.2 - 67 - - - THIRD - 7 - - SAWUP - 51 - 0 - 0 - 99 - on - - - 3 - 1 - on - on - on - on - 7 - 3 - 3 - 7 - 5 - 3 - 5 - 1 - - - 1 - 5 - 1 - 7 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 3 - -3 - 1 - - 22 - 22 - 22 - 19 - 9 - 9 - 9 - 15 - 15 - 15 - 15 - 15 - 6 - 6 - 6 - 10 - 15 - 15 - 15 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 89 - 73 - 97 - 88 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Repeater.3 - 68 - - - FIFTH - 5 - - SAWUP - 64 - 0 - 0 - 99 - on - - - 3 - 1 - on - on - on - on - 7 - 3 - 3 - 7 - 5 - 3 - 5 - 3 - - - 1 - 1 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 1 - -3 - 0 - - 31 - 31 - 21 - 31 - 6 - 6 - 6 - 6 - 0 - 0 - 7 - 7 - 31 - 31 - 12 - 19 - 4 - 4 - 6 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 76 - 99 - 71 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Repeater.4 - 69 - - - SIXTH - 0 - - SQUARE - 37 - 0 - 0 - 99 - on - - - 3 - 1 - on - on - on - on - 7 - 3 - 3 - 7 - 6 - 4 - 5 - 3 - - - 1 - 1 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 27 - 3 - 19 - 31 - 15 - 27 - 27 - 27 - 14 - 15 - 15 - 15 - 4 - 4 - 4 - 4 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 86 - 81 - 82 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Repeater.5 - 70 - - - THIRD - 2 - - SQUARE - 88 - 0 - 0 - 50 - on - - - 6 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 8 - 8 - 8.48 - 8.48 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 22 - 31 - 31 - 21 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 6 - 2 - 2 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 62 - 57 - 52 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -24 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Ringing..1 - 71 - - - THIRD - 2 - - SQUARE - 59 - 0 - 0 - 60 - on - - - 6 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 10 - 10 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 22 - 31 - 31 - 21 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 6 - 2 - 2 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 62 - 57 - 28 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -24 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Ringing..2 - 72 - - - SIXTH - 7 - - SHOLD - 30 - 0 - 72 - 60 - on - - - 6 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 4 - 6 - 4 - - - 0.5 - 2 - 1 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 12 - 31 - 10 - 6 - 6 - 6 - 6 - 14 - 14 - 14 - 14 - 6 - 6 - 6 - 6 - 4 - 4 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 91 - 67 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - RiseDecent - 73 - - - THIRD - 0 - - TRIANGL - 30 - 9 - 4 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 6 - 3 - 7 - - - 1 - 5 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 11 - 31 - 9 - 23 - 11 - 11 - 0 - 15 - 4 - 5 - 0 - 3 - 9 - 9 - 9 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 98 - 92 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 82 - - - -12 - POLY - 7 - FULL - 3 - SUS - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - RubberBand1 - 74 - - - FIRST - 6 - - TRIANGL - 31 - 28 - 19 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 1 - 1 - 1 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 15 - 17 - 18 - 12 - 8 - 7 - 7 - 4 - 9 - 9 - 9 - 9 - 2 - 2 - 2 - 2 - 7 - 7 - 7 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 80 - 53 - 67 - - 1 - 0 - 1 - 1 - 54 - 0 - 0 - 8 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - RubberBand2 - 75 - - - FIFTH - 7 - - TRIANGL - 30 - 9 - 4 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 0 - 0 - 3 - - - 2 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 11 - 31 - 31 - 31 - 9 - 11 - 6 - 2 - 10 - 12 - 1 - 0 - 4 - 0 - 0 - 3 - 9 - 9 - 9 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 78 - 95 - 80 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 82 - - - -12 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - RubberBand3 - 76 - - - THIRD - 7 - - TRIANGL - 32 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 3 - -3 - 0 - - 11 - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 6 - 0 - 0 - 0 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 60 - 66 - 49 - - 0 - 0 - 0 - 0 - 0 - 33 - 27 - 0 - - - 0 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - RubberBand4 - 77 - - - THIRD - 7 - - TRIANGL - 32 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 3 - -3 - 0 - - 11 - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 6 - 0 - 0 - 0 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 78 - 64 - 50 - - 0 - 0 - 0 - 0 - 0 - 33 - 27 - 0 - - - 0 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - RubberBand5 - 78 - - - FIFTH - 7 - - TRIANGL - 30 - 9 - 3 - 0 - off - - - 6 - 0 - off - off - off - on - 0 - 0 - 0 - 0 - 7 - 4 - 5 - 3 - - - 1 - 2 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 28 - 10 - 8 - 2 - 12 - 12 - 10 - 0 - 4 - 0 - 2 - 3 - 9 - 9 - 9 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 96 - 82 - - 0 - 0 - 0 - 3 - 0 - 0 - 0 - 10 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - RubberBand6 - 79 - - - THIRD - 0 - - TRIANGL - 30 - 9 - 4 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 6 - 3 - 7 - - - 1 - 5 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 11 - 31 - 9 - 23 - 11 - 11 - 0 - 15 - 4 - 5 - 0 - 3 - 9 - 9 - 9 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 98 - 92 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 82 - - - -12 - MONO - 7 - FULL - 3 - SUS - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - RubberBand7 - 80 - - - FIFTH - 7 - - TRIANGL - 30 - 9 - 4 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 0 - 0 - 3 - - - 2 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 1 - 0 - 0 - - 31 - 31 - 31 - 31 - 28 - 11 - 6 - 2 - 10 - 12 - 1 - 0 - 4 - 0 - 0 - 3 - 9 - 9 - 9 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 78 - 95 - 80 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 82 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - RubberBand8 - 81 - - - FIFTH - 7 - - TRIANGL - 30 - 9 - 4 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 0 - 0 - 3 - - - 2 - 1 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 1 - 0 - 0 - - 31 - 31 - 31 - 31 - 28 - 11 - 6 - 2 - 10 - 12 - 1 - 0 - 4 - 0 - 0 - 3 - 9 - 9 - 9 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 78 - 95 - 85 - - 0 - 0 - 0 - 3 - 0 - 0 - 0 - 14 - - - -12 - POLY - 2 - FINGER - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - RubberBand9 - 82 - - - FOURTH - 7 - - TRIANGL - 5 - 0 - 0 - 88 - off - - - 6 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 4 - 4 - 4 - 4 - - - 25.95 - 10.38 - 18.84 - 25.95 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 15 - 13 - 31 - 31 - 0 - 15 - 15 - 15 - 9 - 6 - 0 - 0 - 7 - 4 - 3 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 85 - 99 - 99 - - 3 - 3 - 0 - 0 - 0 - 0 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SCM Writer - 83 - - - EIGHTH - 6 - - TRIANGL - 82 - 0 - 7 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 5 - 5 - 5 - - - 1 - 2.74 - 5.4 - 8.93 - no - no - no - no - 8 - 20 - 10 - 23 - - W1 - W1 - W2 - W1 - -3 - 3 - 3 - 3 - - 31 - 31 - 31 - 29 - 17 - 12 - 13 - 9 - 15 - 12 - 15 - 10 - 7 - 6 - 8 - 5 - 6 - 6 - 3 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 93 - 94 - 80 - - 2 - 2 - 3 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Saron Gam - 84 - - - THIRD - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 25.95 - 10.59 - 22.92 - 11.02 - no - no - yes - yes - 8 - 10 - 52 - 70 - - W1 - W2 - W1 - W1 - 0 - 0 - 0 - 0 - - 3 - 23 - 23 - 16 - 9 - 14 - 15 - 15 - 0 - 15 - 15 - 13 - 0 - 0 - 0 - 0 - 15 - 13 - 10 - 13 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 82 - 99 - 99 - 99 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 24 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Shore Wave - 85 - - - THIRD - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 25.95 - 10.59 - 22.92 - 11.02 - no - no - yes - yes - 8 - 10 - 52 - 70 - - W1 - W2 - W1 - W1 - 0 - 0 - 0 - 0 - - 3 - 23 - 23 - 16 - 5 - 14 - 15 - 15 - 0 - 15 - 15 - 13 - 0 - 0 - 0 - 0 - 9 - 7 - 4 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 82 - 99 - 99 - 99 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 24 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Shore Wv2 - 86 - - - FIFTH - 0 - - SAWUP - 13 - 0 - 0 - 99 - off - - - 6 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 3 - - - 1 - 2 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 21 - 14 - 16 - 14 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 9 - 9 - 15 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 74 - 93 - 43 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sick Siren - 87 - - - FIFTH - 7 - - SAWUP - 31 - 0 - 42 - 60 - on - - - 3 - 3 - on - on - on - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0.5 - 1.32 - 0.5 - 1.23 - no - no - no - yes - 8 - 15 - 8 - 118 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 25 - 31 - 15 - 31 - 31 - 31 - 21 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 10 - 15 - 4 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 83 - 99 - 86 - 99 - - 3 - 3 - 3 - 3 - 99 - 2 - 0 - 6 - - - -24 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Space BUG? - 88 - - - FIFTH - 7 - - TRIANGL - 10 - 8 - 45 - 60 - off - - - 3 - 1 - on - off - on - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0.5 - 1.73 - 0.81 - 1.37 - no - no - no - no - 8 - 8 - 13 - 14 - - W3 - W3 - W2 - W2 - 3 - 3 - -3 - -3 - - 20 - 14 - 10 - 22 - 8 - 9 - 6 - 10 - 8 - 15 - 15 - 15 - 5 - 3 - 5 - 12 - 4 - 2 - 4 - 6 - VOF - VOF - VOF - VOF - - - 94 - 99 - 18 - 21 - 50 - 50 - - 90 - 89 - 90 - 83 - - 0 - 1 - 0 - 1 - 0 - 3 - 0 - 3 - - - 3 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Space Gong - 89 - - - SIXTH - 7 - - SAWUP - 57 - 0 - 99 - 0 - on - - - 7 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 5 - 4 - 2 - - - 1 - 1 - 2 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 28 - 4 - 10 - 9 - 8 - 13 - 15 - 15 - 13 - 31 - 31 - 31 - 31 - 10 - 10 - 10 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 57 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Space Gun - 90 - - - SIXTH - 0 - - SQUARE - 50 - 0 - 99 - 0 - off - - - 6 - 3 - on - on - on - on - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 4 - - - 1 - 1.57 - 2.82 - 3.14 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W5 - W7 - W8 - 1 - 0 - 0 - 0 - - 8 - 6 - 11 - 5 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 2 - 3 - 4 - 1 - 9 - 1 - 1 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 0 - 0 - 0 - 0 - 1 - 2 - 3 - 96 - - - 0 - POLY - 5 - FULL - 60 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Space Talk - 91 - - - EIGHTH - 0 - - SQUARE - 35 - 0 - 75 - 0 - on - - - 7 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 2 - 0 - - - 1 - 1 - 4 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W6 - W1 - W6 - W2 - 3 - -3 - 3 - -3 - - 31 - 25 - 25 - 25 - 0 - 0 - 0 - 15 - 15 - 15 - 15 - 15 - 6 - 15 - 15 - 15 - 2 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 98 - - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 5 - - - 6 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Space Vibe - 92 - - - FIFTH - 5 - - TRIANGL - 35 - 33 - 0 - 0 - on - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 3 - 3 - - - 0.5 - 1 - 1 - 15 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -2 - -2 - 2 - 3 - - 6 - 4 - 6 - 4 - 9 - 9 - 9 - 12 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 4 - 3 - 4 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 89 - 99 - 87 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Space....1 - 93 - - - FIFTH - 5 - - SAWUP - 5 - 0 - 47 - 99 - off - - - 1 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 3 - 3 - 1 - - - 6 - 9 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 2 - 0 - 0 - - 12 - 3 - 9 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 4 - 4 - 6 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 89 - 99 - 87 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Space....2 - 94 - - - FIFTH - 1 - - TRIANGL - 43 - 65 - 11 - 90 - off - - - 7 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 4 - 3 - 3 - 2 - - - 1 - 3.14 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 1 - 0 - 0 - - 28 - 4 - 21 - 25 - 9 - 9 - 21 - 18 - 4 - 4 - 15 - 0 - 4 - 31 - 9 - 6 - 4 - 4 - 10 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 74 - 93 - 99 - - 0 - 0 - 0 - 2 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Space....3 - 95 - - - FIFTH - 1 - - TRIANGL - 99 - 0 - 99 - 0 - on - - - 7 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 4 - 4 - 2 - - - 1 - 1 - 2 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 1 - 1 - - 25 - 6 - 20 - 31 - 3 - 4 - 29 - 9 - 0 - 0 - 0 - 0 - 12 - 7 - 21 - 21 - 4 - 4 - 6 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 70 - 99 - 70 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Space....4 - 96 - - - EIGHTH - 0 - - TRIANGL - 37 - 0 - 66 - 90 - off - - - 6 - 3 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 5 - 4 - 3 - - - 0.5 - 13.84 - 2 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 3 - -3 - - 11 - 31 - 31 - 16 - 11 - 31 - 11 - 6 - 15 - 15 - 15 - 14 - 0 - 0 - 0 - 0 - 11 - 9 - 10 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 54 - 57 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 10 - - - -24 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SpaceBirds - 97 - - - FOURTH - 7 - - TRIANGL - 31 - 13 - 14 - 30 - on - - - 0 - 3 - off - on - off - off - 0 - 0 - 0 - 0 - 4 - 1 - 1 - 0 - - - 0.5 - 2 - 6.28 - 23.55 - no - no - no - yes - 8 - 8 - 8 - 8 - - W1 - W1 - W2 - W8 - 3 - -3 - 3 - -3 - - 5 - 20 - 21 - 4 - 21 - 20 - 3 - 7 - 15 - 11 - 6 - 13 - 0 - 0 - 0 - 0 - 8 - 5 - 6 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 82 - 96 - 75 - - 0 - 0 - 0 - 1 - 0 - 36 - 0 - 34 - - - 0 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 5 - - Spc Midiot - 98 - - - FIFTH - 0 - - TRIANGL - 25 - 0 - 10 - 99 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 3 - 2 - 5 - - - 1 - 2.99 - 1 - 3.06 - no - no - no - no - 8 - 10 - 8 - 9 - - W1 - W1 - W1 - W1 - 3 - 3 - 3 - -3 - - 17 - 20 - 22 - 20 - 7 - 7 - 7 - 12 - 15 - 15 - 15 - 15 - 9 - 8 - 9 - 7 - 5 - 3 - 6 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 82 - 99 - 82 - - 2 - 1 - 1 - 1 - 0 - 43 - 0 - 39 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SteelPan * - 99 - - - FOURTH - 6 - - SHOLD - 99 - 0 - 99 - 0 - off - - - 7 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 1 - 1 - 1 - - - 0.5 - 5.19 - 0.5 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W5 - W2 - W1 - W6 - -3 - -3 - -3 - -3 - - 15 - 20 - 20 - 18 - 6 - 11 - 7 - 8 - 12 - 9 - 5 - 5 - 0 - 4 - 1 - 1 - 1 - 1 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 96 - 99 - 67 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -24 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Storm Wind - 100 - - - THIRD - 7 - - TRIANGL - 28 - 0 - 0 - 99 - off - - - 6 - 3 - on - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 25.19 - 0.5 - 0.5 - 0.5 - no - no - no - no - 17 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 21 - 18 - 23 - 18 - 21 - 9 - 8 - 9 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 10 - 1 - 1 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 83 - 97 - 51 - 58 - - 3 - 3 - 3 - 3 - 0 - 2 - 0 - 6 - - - -24 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - TAP TAP<<< - 101 - - - FIFTH - 7 - - SQUARE - 58 - 0 - 0 - 99 - on - - - 0 - 2 - off - on - off - on - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 12.5 - 13.31 - 16.28 - 16.68 - yes - yes - yes - yes - 104 - 69 - 54 - 74 - - W1 - W1 - W2 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 6 - 6 - 6 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 72 - 99 - 75 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Telephone* - 102 - - - FOURTH - 0 - - SHOLD - 99 - 0 - 35 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0.5 - 2 - 2 - 18.24 - yes - no - no - no - 8 - 8 - 8 - 79 - - W1 - W3 - W5 - W7 - 0 - 3 - -3 - 0 - - 18 - 31 - 10 - 12 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 4 - 3 - 3 - 3 - VOF - VOF - VOF - VOF - - - 99 - 36 - 17 - 37 - 50 - 50 - - 84 - 59 - 52 - 46 - - 0 - 0 - 0 - 0 - 0 - 0 - 42 - 32 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Terror! - 103 - - - THIRD - 7 - - TRIANGL - 71 - 0 - 60 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 2 - - - 1 - 3 - 0.71 - 0.78 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 21 - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 3 - 1 - 3 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 50 - 70 - 66 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 12 - FULL - 14 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Traffic..1 - 104 - - - THIRD - 7 - - SHOLD - 21 - 0 - 95 - 0 - off - - - 7 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 4 - - - 1 - 1.73 - 0.5 - 1.57 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 21 - 31 - 31 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 3 - 1 - 3 - 2 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 50 - 70 - 72 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 12 - FULL - 14 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Traffic..2 - 105 - - - THIRD - 7 - - SAWUP - 12 - 0 - 0 - 0 - on - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 6 - 3 - - - 1 - 2 - 1.57 - 1.57 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 19 - 15 - 31 - 21 - 22 - 13 - 7 - 22 - 15 - 15 - 12 - 15 - 0 - 0 - 0 - 0 - 7 - 1 - 3 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 59 - 60 - 0 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Tug Boat - 106 - - - FOURTH - 7 - - SQUARE - 74 - 0 - 0 - 0 - off - - - 0 - 3 - on - off - off - off - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - - - 20.8 - 12.12 - 8.24 - 0.5 - yes - yes - yes - yes - 20 - 66 - 12 - 8 - - W1 - W1 - W1 - W8 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 17 - 31 - 31 - 5 - 0 - 15 - 15 - 0 - 0 - 0 - 0 - 0 - 9 - 3 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 77 - 89 - 62 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Typwriter* - 107 - - - FIRST - 7 - - TRIANGL - 5 - 0 - 66 - 90 - off - - - 6 - 3 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 3 - - - 0.5 - 13.84 - 2 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 3 - -3 - - 11 - 31 - 31 - 16 - 11 - 31 - 11 - 6 - 15 - 15 - 15 - 14 - 0 - 0 - 0 - 0 - 7 - 1 - 10 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 54 - 57 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - UFO Decent - 108 - - - THIRD - 2 - - SAWUP - 68 - 0 - 0 - 99 - off - - - 0 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 3 - - - 0.5 - 13.84 - 18.84 - 25.95 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 10 - 4 - 9 - 6 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 8 - 7 - 6 - 6 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 71 - 99 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Uzzie - 109 - - - EIGHTH - 7 - - SHOLD - 67 - 0 - 99 - 99 - on - - - 7 - 2 - off - off - off - on - 0 - 0 - 0 - 0 - 3 - 0 - 0 - 0 - - - 1.51 - 1.5 - 1.49 - 8.63 - no - no - no - no - 14 - 16 - 9 - 16 - - W5 - W4 - W1 - W1 - -3 - 3 - 3 - -3 - - 9 - 8 - 6 - 6 - 8 - 8 - 7 - 0 - 15 - 15 - 15 - 15 - 4 - 7 - 8 - 6 - 5 - 7 - 7 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 90 - 68 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Water * - 110 - - - FIRST - 7 - - TRIANGL - 6 - 0 - 66 - 90 - off - - - 6 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 3 - - - 0.5 - 13.84 - 18.84 - 25.95 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 11 - 31 - 31 - 31 - 11 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 7 - 1 - 3 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Waves....1 - 111 - - - FIRST - 7 - - TRIANGL - 4 - 0 - 66 - 90 - off - - - 6 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 3 - - - 0.5 - 13.84 - 18.84 - 25.95 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 4 - 31 - 31 - 31 - 11 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 7 - 1 - 3 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Waves....2 - 112 - - - FIRST - 7 - - TRIANGL - 5 - 0 - 0 - 88 - off - - - 6 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 5 - - - 0.5 - 13.84 - 18.84 - 25.95 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 8 - 31 - 31 - 31 - 11 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 7 - 1 - 3 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Waves....3 - 113 - - - SEVENTH - 7 - - TRIANGL - 5 - 0 - 66 - 85 - off - - - 6 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 6 - 5 - 6 - 3 - - - 0.5 - 13.84 - 18.84 - 25.95 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 11 - 31 - 10 - 30 - 11 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 7 - 1 - 3 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 1 - 0 - 99 - 99 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Waves....4 - 114 - - - FIRST - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 4 - 2 - - - 0.5 - 3 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 12 - 31 - 31 - 31 - 10 - 31 - 31 - 31 - 14 - 15 - 15 - 15 - 9 - 0 - 0 - 0 - 7 - 1 - 3 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 10 - - - -24 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Waves....5 - 115 - - - FOURTH - 7 - - SHOLD - 99 - 0 - 99 - 0 - off - - - 7 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - - - 1.41 - 0.5 - 13 - 10.99 - no - no - yes - yes - 8 - 8 - 64 - 8 - - W1 - W1 - W1 - W1 - 0 - -1 - 2 - 3 - - 6 - 31 - 31 - 31 - 8 - 5 - 0 - 0 - 14 - 0 - 0 - 0 - 0 - 19 - 19 - 19 - 2 - 1 - 1 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 0 - 64 - 99 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 12 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 83 - 0 - 0 - 0 - 0 - 0 - 0 - - Wind * - 116 - - - SECOND - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 0 - 1 - 1 - - - 1 - 0.5 - 0.5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W2 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 15 - 31 - 31 - 16 - 4 - 12 - 15 - 15 - 10 - 10 - 0 - 0 - 2 - 13 - 12 - 4 - 10 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 76 - 85 - 69 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - >>WOW<< - 117 - - - SECOND - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 1 - 0 - - - 1 - 1.73 - 3.46 - 17.27 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 31 - 20 - 11 - 31 - 15 - 5 - 15 - 15 - 15 - 16 - 18 - 0 - 8 - 5 - 8 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 65 - - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 7 - - WaterGlass - 118 - - - FIFTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 1 - 0 - - - 0.5 - 20.5 - 8.81 - 22.81 - no - yes - no - yes - 8 - 81 - 12 - 83 - - W3 - W4 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 29 - 31 - 15 - 15 - 15 - 15 - 15 - 15 - 15 - 15 - 13 - 13 - 13 - 13 - 7 - 9 - 7 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 95 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - WeirdAxe * - 119 - - - THIRD - 0 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 25.95 - 10.59 - 22.92 - 11.02 - no - no - yes - yes - 8 - 10 - 52 - 70 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 11 - 31 - 31 - 24 - 10 - 18 - 19 - 19 - 10 - 15 - 15 - 10 - 10 - 0 - 0 - 0 - 11 - 10 - 12 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 90 - 86 - 92 - 63 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 24 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - White Blow - 120 - - - - - OTHER - 7 - - Other - 0 - - FIFTH - 4 - - TRIANGL - 28 - 17 - 2 - 0 - off - - - 4 - 0 - off - off - off - off - 7 - 3 - 3 - 7 - 5 - 5 - 5 - 5 - - - 1 - 13 - 5 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W5 - W1 - W1 - -2 - -2 - 1 - 1 - - 31 - 31 - 31 - 31 - 7 - 7 - 7 - 7 - 15 - 15 - 15 - 15 - 10 - 7 - 7 - 7 - 5 - 5 - 7 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 70 - 99 - 94 - - 0 - 0 - 1 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - 120 VAC - 0 - - - FIFTH - 5 - - TRIANGL - 28 - 9 - 7 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 6 - 3 - 6 - - - 1.49 - 5.81 - 1.51 - 6 - no - no - no - no - 9 - 21 - 14 - 8 - - W2 - W7 - W2 - W2 - -2 - 0 - 2 - 0 - - 31 - 19 - 31 - 31 - 31 - 31 - 31 - 19 - 15 - 5 - 15 - 5 - 1 - 31 - 1 - 31 - 5 - 5 - 5 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 74 - 99 - 75 - - 1 - 2 - 1 - 2 - 0 - 0 - 0 - 0 - - - -19 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 40 - 0 - 15 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Amazon - 1 - - - FIFTH - 5 - - TRIANGL - 21 - 1 - 22 - 12 - off - - - 3 - 2 - on - off - on - off - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 1 - - - 0.5 - 4 - 0.5 - 6.16 - no - no - no - no - 8 - 8 - 8 - 14 - - W1 - W1 - W1 - W1 - -3 - 3 - 3 - 3 - - 11 - 31 - 11 - 31 - 10 - 9 - 10 - 9 - 0 - 0 - 0 - 0 - 10 - 0 - 10 - 0 - 5 - 5 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 71 - 99 - 71 - - 0 - 1 - 0 - 1 - 9 - 10 - 9 - 10 - - - 12 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 55 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - ArcoGlass* - 2 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0.87 - 8.48 - 0.87 - 9.89 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 12 - 31 - 12 - 31 - 15 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 6 - 11 - 13 - 31 - 5 - 0 - 7 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 80 - 47 - 72 - 0 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Aviary - 3 - - - FIFTH - 1 - - TRIANGL - 30 - 24 - 3 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 7 - 6 - 4 - 6 - 3 - - - 1 - 5 - 2 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -3 - -3 - 0 - - 9 - 12 - 11 - 9 - 6 - 12 - 10 - 3 - 13 - 13 - 12 - 15 - 6 - 5 - 6 - 3 - 6 - 5 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 89 - 99 - 76 - - 2 - 2 - 1 - 1 - 0 - 64 - 39 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 1 - 0 - 0 - 50 - 99 - 0 - 0 - 0 - 0 - 0 - - BC1 GlassV - 4 - - - FOURTH - 7 - - TRIANGL - 28 - 0 - 0 - 0 - off - - - 5 - 3 - on - off - off - off - 0 - 0 - 0 - 0 - 2 - 1 - 2 - 1 - - - 1.49 - 3 - 2.99 - 6 - no - no - no - no - 9 - 8 - 10 - 8 - - W1 - W1 - W1 - W1 - 0 - -3 - 3 - -2 - - 14 - 31 - 31 - 31 - 8 - 25 - 17 - 19 - 14 - 13 - 9 - 13 - 0 - 0 - 13 - 17 - 7 - 7 - 9 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 79 - 92 - 85 - - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - - - -19 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 16 - 46 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Botl.Shff* - 5 - - - FIFTH - 0 - - TRIANGL - 21 - 0 - 10 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 0 - 2 - 0 - - - 1.5 - 20.99 - 1.51 - 1.5 - no - no - no - no - 16 - 14 - 14 - 16 - - W1 - W1 - W1 - W2 - 0 - 0 - -3 - 3 - - 31 - 31 - 31 - 31 - 7 - 15 - 30 - 8 - 11 - 11 - 14 - 14 - 7 - 10 - 6 - 6 - 10 - 11 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 61 - 99 - 83 - - 1 - 1 - 1 - 1 - 0 - 0 - 0 - 20 - - - -19 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Cairo * - 6 - - - SEVENTH - 7 - - TRIANGL - 26 - 0 - 5 - 1 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 1 - 3 - 2 - 0 - 0 - 0 - - - 1.5 - 1.49 - 1.51 - 20.86 - no - no - no - no - 16 - 9 - 14 - 9 - - W5 - W2 - W5 - W3 - -3 - 3 - 1 - 3 - - 14 - 11 - 15 - 31 - 0 - 2 - 2 - 0 - 0 - 0 - 10 - 15 - 1 - 3 - 4 - 0 - 6 - 4 - 3 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 80 - 85 - 65 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -7 - POLY - 12 - FINGER - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Celestial - 7 - - - FIFTH - 5 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 4 - 4 - - - 2 - 0.5 - 10 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 3 - -1 - 0 - - 15 - 31 - 31 - 31 - 31 - 31 - 9 - 9 - 15 - 15 - 8 - 8 - 0 - 0 - 4 - 4 - 4 - 3 - 4 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 94 - 91 - 87 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - ChimeStrig - 8 - - - EIGHTH - 0 - - TRIANGL - 42 - 72 - 1 - 75 - off - - - 0 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 6 - 5 - 6 - 4 - - - 1 - 1 - 5 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 16 - 31 - 31 - 31 - 10 - 10 - 18 - 27 - 0 - 0 - 0 - 0 - 10 - 7 - 7 - 7 - 4 - 6 - 6 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 82 - 83 - 84 - - 0 - 2 - 0 - 0 - 0 - 0 - 0 - 10 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Deep Space - 9 - - - FIFTH - 3 - - TRIANGL - 33 - 35 - 9 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 2 - - - 2 - 2 - 2 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 2 - -3 - 3 - -1 - - 9 - 11 - 10 - 12 - 16 - 3 - 8 - 6 - 15 - 8 - 15 - 14 - 3 - 3 - 3 - 2 - 5 - 5 - 7 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 71 - 99 - 63 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - EleChamber - 10 - - - EIGHTH - 0 - - SQUARE - 20 - 79 - 30 - 2 - on - - - 1 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 4 - - - 1 - 1 - 1 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 31 - 10 - 13 - 12 - 10 - 10 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 6 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Enc3rdKind - 11 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 50 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 9 - 6 - 3 - 6 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W3 - W1 - W4 - 0 - 0 - 0 - 0 - - 20 - 31 - 20 - 31 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 5 - 3 - 5 - 3 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 86 - 60 - 86 - 66 - - 0 - 0 - 0 - 0 - 30 - 0 - 30 - 0 - - - -19 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Etherial - 12 - - - FOURTH - 7 - - TRIANGL - 32 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - - - 1.5 - 1.51 - 10.22 - 1.58 - no - no - no - no - 16 - 14 - 12 - 10 - - W1 - W4 - W1 - W8 - -1 - 1 - 2 - -3 - - 15 - 24 - 31 - 24 - 20 - 7 - 31 - 31 - 15 - 7 - 15 - 15 - 0 - 0 - 21 - 22 - 15 - 15 - 15 - 15 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 95 - 69 - 99 - 99 - - 0 - 1 - 0 - 0 - 5 - 27 - 3 - 0 - - - -12 - POLY - 2 - FINGER - 0 - POR - 99 - 0 - 0 - 19 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 6 - - Floot Base - 13 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0.5 - 0.5 - 2 - 10 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - -3 - -3 - -1 - - 12 - 24 - 15 - 22 - 0 - 0 - 0 - 0 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 5 - 5 - 8 - 10 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 91 - 99 - 57 - - 2 - 2 - 2 - 0 - 0 - 91 - 0 - 0 - - - -12 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 0 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Full Ranks - 14 - - - FIFTH - 4 - - TRIANGL - 31 - 0 - 6 - 0 - on - - - 4 - 2 - off - off - off - on - 0 - 0 - 0 - 0 - 3 - 0 - 3 - 0 - - - 1.5 - 1.5 - 1.5 - 1.49 - no - no - no - no - 16 - 16 - 16 - 97 - - W4 - W4 - W1 - W4 - 3 - -3 - 3 - -3 - - 19 - 20 - 15 - 31 - 8 - 8 - 7 - 6 - 15 - 15 - 14 - 15 - 4 - 7 - 3 - 6 - 5 - 5 - 7 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 71 - 99 - 64 - - 0 - 0 - 0 - 0 - 0 - 5 - 8 - 0 - - - -19 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - FuzzyPad - 15 - - - EIGHTH - 6 - - TRIANGL - 82 - 0 - 7 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 4 - 4 - 4 - - - 1 - 2.64 - 5.12 - 8.87 - no - no - no - no - 8 - 19 - 10 - 22 - - W1 - W1 - W1 - W2 - -3 - 3 - 3 - 3 - - 31 - 31 - 24 - 21 - 18 - 14 - 19 - 19 - 13 - 12 - 12 - 10 - 3 - 4 - 3 - 5 - 6 - 6 - 8 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 74 - 89 - 84 - - 0 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Gender Gam - 16 - - - SEVENTH - 5 - - SHOLD - 99 - 0 - 0 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 3 - 3 - 2 - - - 0.5 - 4 - 0.5 - 6.92 - no - no - no - yes - 8 - 8 - 8 - 112 - - W1 - W2 - W1 - W1 - 1 - -1 - -1 - -1 - - 15 - 31 - 15 - 28 - 12 - 10 - 12 - 10 - 15 - 0 - 0 - 0 - 0 - 0 - 10 - 0 - 6 - 5 - 6 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 78 - 99 - 80 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 3 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - GlassHarp1 - 17 - - - FIFTH - 1 - - TRIANGL - 30 - 24 - 3 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 7 - 5 - 4 - 5 - 4 - - - 1 - 5 - 2 - 8 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -3 - -3 - 0 - - 9 - 12 - 11 - 9 - 6 - 12 - 10 - 3 - 13 - 13 - 12 - 15 - 6 - 5 - 6 - 3 - 6 - 5 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 92 - 79 - 99 - 64 - - 2 - 2 - 1 - 1 - 0 - 64 - 39 - 0 - - - 0 - POLY - 7 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 1 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - GlassHarp2 - 18 - - - SEVENTH - 5 - - SHOLD - 99 - 0 - 0 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 4 - 4 - 4 - - - 5 - 15 - 5 - 14.43 - no - no - no - yes - 8 - 8 - 8 - 119 - - W3 - W3 - W1 - W1 - -3 - 2 - 3 - 0 - - 10 - 7 - 12 - 12 - 8 - 7 - 6 - 7 - 12 - 9 - 3 - 10 - 5 - 4 - 7 - 4 - 5 - 4 - 7 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 39 - 99 - 62 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - GlassHarp3 - 19 - - - FIFTH - 0 - - TRIANGL - 28 - 14 - 28 - 0 - off - - - 3 - 1 - off - off - off - on - 0 - 0 - 0 - 0 - 1 - 3 - 1 - 3 - - - 1.5 - 1.5 - 1.49 - 1.49 - no - no - no - no - 120 - 16 - 9 - 65 - - W4 - W5 - W4 - W5 - -3 - -3 - 3 - 3 - - 11 - 10 - 11 - 10 - 31 - 31 - 31 - 31 - 15 - 15 - 15 - 15 - 0 - 2 - 0 - 2 - 4 - 5 - 4 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 79 - 99 - 77 - - 1 - 0 - 1 - 0 - 0 - 39 - 0 - 39 - - - -19 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 4 - - HarmoPad - 20 - - - FIFTH - 2 - - TRIANGL - 32 - 59 - 2 - 0 - off - - - 0 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 5 - 6 - - - 0.5 - 0.5 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W2 - W2 - W1 - 0 - 0 - 0 - 0 - - 22 - 9 - 22 - 9 - 7 - 21 - 7 - 21 - 15 - 15 - 15 - 15 - 4 - 4 - 4 - 4 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 67 - 99 - 80 - - 0 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Impression - 21 - - - FIFTH - 6 - - TRIANGL - 38 - 2 - 13 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 3 - - - 1 - 2 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W1 - W1 - -2 - 0 - 0 - 0 - - 21 - 18 - 21 - 18 - 12 - 4 - 3 - 3 - 14 - 14 - 14 - 14 - 3 - 1 - 2 - 1 - 9 - 4 - 9 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 77 - 99 - 84 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Jump.....1 - 22 - - - FIFTH - 5 - - TRIANGL - 38 - 33 - 32 - 0 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 5 - 3 - - - 2 - 2 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W4 - W1 - W2 - 0 - 0 - 0 - 0 - - 31 - 31 - 31 - 18 - 22 - 22 - 22 - 3 - 12 - 12 - 14 - 14 - 0 - 24 - 0 - 7 - 9 - 9 - 9 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 87 - - 0 - 3 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Jump.....2 - 23 - - - SEVENTH - 7 - - TRIANGL - 34 - 0 - 15 - 0 - on - - - 4 - 2 - off - off - off - on - 0 - 0 - 0 - 0 - 3 - 0 - 0 - 0 - - - 1.51 - 1.5 - 1.49 - 8.63 - no - no - no - no - 14 - 16 - 9 - 16 - - W5 - W4 - W1 - W4 - -3 - 3 - 3 - -3 - - 14 - 11 - 15 - 31 - 8 - 8 - 7 - 0 - 15 - 15 - 15 - 15 - 4 - 7 - 8 - 6 - 5 - 7 - 7 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 89 - 67 - - 0 - 0 - 0 - 0 - 0 - 5 - 8 - 0 - - - 5 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - KrstlChoir - 24 - - - EIGHTH - 7 - - TRIANGL - 34 - 0 - 15 - 0 - on - - - 2 - 1 - off - off - off - on - 0 - 0 - 0 - 0 - 3 - 1 - 1 - 5 - - - 1.51 - 1.5 - 1.49 - 9.16 - no - no - no - no - 14 - 16 - 9 - 16 - - W3 - W2 - W3 - W4 - -3 - 0 - 3 - -3 - - 14 - 11 - 15 - 31 - 8 - 8 - 7 - 17 - 15 - 15 - 15 - 15 - 4 - 7 - 8 - 6 - 5 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 98 - 98 - 79 - - 0 - 0 - 0 - 0 - 0 - 5 - 8 - 0 - - - -7 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - KrystlPad1 - 25 - - - FOURTH - 6 - - TRIANGL - 26 - 9 - 7 - 31 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 2 - 3 - 3 - - - 1.5 - 2.99 - 3 - 3.08 - no - no - no - no - 16 - 10 - 8 - 11 - - W1 - W1 - W1 - W4 - -3 - 3 - -3 - -3 - - 12 - 19 - 28 - 12 - 9 - 28 - 31 - 31 - 13 - 11 - 15 - 1 - 1 - 3 - 1 - 6 - 8 - 5 - 5 - 5 - VOF - VOF - VOF - V24 - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 83 - 70 - 63 - - 0 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - -19 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 25 - 31 - 16 - 30 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - MilkBottle - 26 - - - FIFTH - 4 - - SQUARE - 24 - 57 - 9 - 25 - on - - - 3 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 6 - 3 - 4 - 3 - - - 1 - 1 - 8 - 14 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 2 - 1 - -1 - -3 - - 31 - 31 - 31 - 10 - 9 - 9 - 9 - 9 - 15 - 15 - 11 - 11 - 6 - 5 - 5 - 3 - 6 - 3 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 66 - - 0 - 0 - 1 - 2 - 0 - 0 - 0 - 0 - - - -24 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Movement.1 - 27 - - - FIFTH - 7 - - SHOLD - 37 - 0 - 0 - 39 - on - - - 3 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 5 - 4 - 3 - 3 - - - 2 - 2 - 2 - 9 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 2 - -2 - -1 - -3 - - 31 - 31 - 31 - 11 - 9 - 9 - 9 - 9 - 15 - 15 - 14 - 14 - 0 - 0 - 1 - 0 - 6 - 3 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 83 - 99 - 62 - - 2 - 0 - 0 - 3 - 0 - 0 - 0 - 0 - - - -24 - POLY - 0 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Movement.2 - 28 - - - FIFTH - 0 - - TRIANGL - 4 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 15.89 - 17.17 - 2 - 10 - yes - yes - no - no - 34 - 79 - 8 - 8 - - W1 - W1 - W1 - W2 - 0 - 0 - -3 - 3 - - 27 - 31 - 31 - 31 - 22 - 31 - 28 - 26 - 0 - 0 - 11 - 9 - 31 - 31 - 10 - 1 - 15 - 15 - 4 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 82 - 94 - 99 - 75 - - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Musicbox * - 29 - - - EIGHTH - 7 - - TRIANGL - 26 - 0 - 5 - 1 - on - - - 6 - 0 - off - off - off - off - 0 - 0 - 1 - 3 - 2 - 0 - 0 - 0 - - - 1.5 - 1.49 - 1.51 - 20.86 - no - no - no - no - 16 - 9 - 14 - 9 - - W5 - W2 - W5 - W3 - -3 - 3 - 1 - 3 - - 2 - 2 - 2 - 2 - 13 - 2 - 2 - 29 - 0 - 0 - 10 - 15 - 1 - 3 - 4 - 0 - 6 - 4 - 3 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 80 - 85 - 65 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -7 - POLY - 12 - FINGER - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Obelisk - 30 - - - FIFTH - 5 - - TRIANGL - 72 - 42 - 10 - 39 - on - - - 3 - 1 - on - on - on - on - 0 - 0 - 0 - 0 - 4 - 2 - 5 - 2 - - - 1 - 18.37 - 11 - 14 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 1 - 2 - - 31 - 31 - 31 - 31 - 4 - 5 - 3 - 3 - 4 - 4 - 4 - 4 - 0 - 0 - 0 - 0 - 6 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 71 - 93 - 80 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Ornt E.T. - 31 - - - EIGHTH - 7 - - TRIANGL - 21 - 0 - 21 - 35 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 4 - 3 - - - 1 - 4 - 8 - 25.95 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 18 - 10 - 9 - 6 - 31 - 31 - 8 - 15 - 15 - 15 - 5 - 3 - 14 - 9 - 31 - 15 - 15 - 15 - 9 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 97 - 99 - 94 - 99 - - 0 - 0 - 0 - 3 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Ornt Quest - 32 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 2 - 5 - 2 - - - 2 - 18.37 - 2 - 4 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 1 - -1 - -1 - - 19 - 31 - 18 - 18 - 3 - 19 - 2 - 6 - 13 - 10 - 0 - 0 - 21 - 29 - 0 - 0 - 9 - 9 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 93 - 99 - 99 - 70 - - 0 - 0 - 3 - 3 - 0 - 0 - 46 - 46 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntFlight - 33 - - - EIGHTH - 6 - - TRIANGL - 56 - 68 - 0 - 63 - on - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 3 - 3 - 2 - - - 1 - 2 - 3 - 3 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 0 - 0 - 0 - - 6 - 31 - 31 - 9 - 5 - 10 - 18 - 3 - 0 - 0 - 0 - 0 - 0 - 3 - 4 - 2 - 5 - 5 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 84 - 99 - 64 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntSound1 - 34 - - - FIFTH - 6 - - SQUARE - 56 - 68 - 0 - 63 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 2 - 5 - 2 - - - 1 - 1 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 3 - 0 - 0 - 0 - - 22 - 9 - 22 - 9 - 6 - 13 - 15 - 3 - 12 - 12 - 12 - 12 - 1 - 3 - 4 - 9 - 7 - 2 - 5 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 84 - 99 - 64 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - OrntSound2 - 35 - - - SEVENTH - 7 - - TRIANGL - 26 - 0 - 5 - 0 - off - - - 4 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 0 - 2 - 2 - 2 - - - 7 - 7 - 3.5 - 10.5 - no - no - no - no - 8 - 8 - 16 - 16 - - W4 - W2 - W1 - W4 - 2 - -2 - 2 - -2 - - 14 - 19 - 31 - 31 - 15 - 11 - 9 - 10 - 13 - 10 - 10 - 11 - 12 - 12 - 12 - 11 - 7 - 7 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 84 - 75 - - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - ParisDream - 36 - - - FIFTH - 7 - - TRIANGL - 35 - 0 - 14 - 0 - on - - - 3 - 1 - on - off - off - off - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 4 - - - 1 - 2 - 1 - 10 - no - no - no - no - 8 - 8 - 8 - 8 - - W4 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 8 - 10 - 31 - 31 - 14 - 31 - 7 - 10 - 15 - 15 - 7 - 6 - 0 - 0 - 7 - 14 - 6 - 3 - 5 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 76 - 99 - 77 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 99 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 2 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - PianoVoice - 37 - - - FIFTH - 7 - - TRIANGL - 31 - 6 - 10 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 1 - 2 - - - 3 - 3 - 2.99 - 2.99 - no - no - no - no - 8 - 8 - 34 - 10 - - W4 - W1 - W4 - W1 - -3 - -3 - 3 - 3 - - 31 - 31 - 31 - 31 - 31 - 28 - 31 - 28 - 15 - 15 - 15 - 15 - 0 - 0 - 0 - 0 - 5 - 4 - 5 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 67 - 99 - 67 - - 0 - 0 - 0 - 0 - 30 - 30 - 30 - 30 - - - -19 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - PianoStrng - 38 - - - FOURTH - 0 - - TRIANGL - 27 - 11 - 5 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 4 - 2 - 4 - - - 1 - 1 - 1 - 15.7 - no - no - no - no - 112 - 8 - 8 - 8 - - W5 - W6 - W6 - W4 - 3 - -3 - -3 - 3 - - 31 - 31 - 31 - 31 - 11 - 18 - 15 - 20 - 11 - 6 - 11 - 4 - 3 - 4 - 3 - 14 - 6 - 10 - 5 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 97 - 94 - 91 - - 2 - 2 - 2 - 2 - 0 - 0 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 50 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - PlasticHit - 39 - - - FIFTH - 5 - - TRIANGL - 33 - 35 - 15 - 0 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 7 - 4 - - - 2 - 2 - 1 - 14 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W1 - W1 - 2 - -3 - 3 - -1 - - 9 - 24 - 31 - 31 - 16 - 3 - 8 - 7 - 15 - 8 - 7 - 7 - 3 - 3 - 6 - 7 - 5 - 5 - 6 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 94 - 88 - 99 - 67 - - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Pno String - 40 - - - SEVENTH - 0 - - TRIANGL - 28 - 14 - 9 - 46 - off - - - 4 - 2 - off - off - off - on - 4 - 4 - 0 - 0 - 4 - 4 - 4 - 5 - - - 8.98 - 9.07 - 1.5 - 1.49 - no - no - no - no - 14 - 15 - 16 - 97 - - W6 - W6 - W8 - W5 - 3 - -3 - 0 - -1 - - 7 - 6 - 31 - 31 - 7 - 11 - 31 - 31 - 14 - 14 - 15 - 15 - 1 - 1 - 8 - 8 - 4 - 4 - 5 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 78 - 78 - 99 - 71 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 23 - - - -19 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 7 - 0 - 50 - 57 - 0 - 0 - 0 - 0 - 0 - - PnoClouds - 41 - - - FOURTH - 6 - - TRIANGL - 20 - 0 - 0 - 0 - off - - - 6 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 3 - 4 - 4 - 4 - - - 1 - 1 - 2 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - -3 - -3 - -1 - - 26 - 31 - 31 - 31 - 23 - 2 - 18 - 12 - 12 - 14 - 14 - 6 - 8 - 3 - 6 - 6 - 8 - 11 - 8 - 11 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 97 - 96 - 86 - - 0 - 2 - 0 - 0 - 0 - 67 - 0 - 0 - - - 0 - POLY - 1 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 50 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - PopPercuss - 42 - - - EIGHTH - 7 - - TRIANGL - 34 - 0 - 15 - 0 - on - - - 3 - 1 - on - on - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 1 - - - 1.5 - 1.49 - 1.49 - 1.51 - no - no - no - no - 16 - 9 - 9 - 14 - - W4 - W4 - W4 - W4 - 3 - -3 - -3 - 3 - - 14 - 14 - 14 - 14 - 8 - 8 - 8 - 8 - 15 - 15 - 15 - 14 - 4 - 7 - 5 - 6 - 5 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 98 - 98 - 99 - - 0 - 0 - 0 - 0 - 20 - 22 - 29 - 29 - - - -19 - POLY - 2 - FINGER - 3 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Sawsy Pad1 - 43 - - - EIGHTH - 0 - - TRIANGL - 35 - 19 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 4 - 4 - 4 - 4 - - - 8 - 6 - 5.65 - 5.65 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 3 - -3 - -3 - - 31 - 13 - 12 - 10 - 27 - 27 - 27 - 27 - 15 - 15 - 15 - 15 - 13 - 13 - 13 - 13 - 6 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 67 - 55 - 49 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -12 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Solstice - 44 - - - FIFTH - 7 - - TRIANGL - 31 - 0 - 6 - 0 - on - - - 4 - 2 - off - off - off - on - 0 - 0 - 0 - 0 - 3 - 0 - 3 - 0 - - - 1.51 - 1.49 - 0.75 - 9 - no - no - no - no - 14 - 9 - 12 - 96 - - W6 - W8 - W1 - W8 - 3 - -3 - 3 - -3 - - 19 - 19 - 31 - 30 - 12 - 12 - 7 - 11 - 10 - 11 - 15 - 7 - 4 - 7 - 2 - 15 - 5 - 7 - 7 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 87 - 84 - 92 - 67 - - 0 - 0 - 0 - 0 - 0 - 5 - 8 - 0 - - - -7 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SpoonChoir - 45 - - - FIFTH - 4 - - TRIANGL - 30 - 0 - 0 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 5 - 4 - 2 - - - 1 - 1 - 1 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 21 - 24 - 21 - 16 - 29 - 18 - 7 - 10 - 15 - 0 - 12 - 12 - 6 - 6 - 6 - 6 - 15 - 10 - 8 - 8 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 90 - 99 - 89 - - 0 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - - - -24 - POLY - 5 - FULL - 0 - POR - 99 - 0 - 0 - 99 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - SpreadThin - 46 - - - FIFTH - 7 - - TRIANGL - 27 - 40 - 16 - 0 - off - - - 2 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 7 - 3 - 4 - 4 - - - 2 - 14 - 0.5 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W1 - W5 - W3 - 0 - 0 - 1 - -1 - - 31 - 31 - 12 - 31 - 12 - 31 - 12 - 0 - 15 - 15 - 15 - 15 - 6 - 12 - 6 - 0 - 5 - 5 - 5 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 83 - 99 - 76 - - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - St Nick..1 - 47 - - - SEVENTH - 6 - - TRIANGL - 34 - 40 - 43 - 0 - off - - - 1 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 3 - 4 - 2 - - - 1 - 3 - 1 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W2 - W2 - W2 - W3 - 0 - 0 - 3 - -3 - - 25 - 25 - 12 - 31 - 12 - 31 - 12 - 0 - 15 - 15 - 15 - 15 - 6 - 12 - 6 - 0 - 5 - 5 - 5 - 1 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 90 - 76 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - St Nick..2 - 48 - - - THIRD - 7 - - SHOLD - 99 - 99 - 6 - 0 - on - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 4 - 6 - 5 - - - 1 - 1 - 0.5 - 2 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 3 - -3 - -3 - - 5 - 4 - 4 - 4 - 14 - 13 - 14 - 15 - 15 - 15 - 15 - 15 - 7 - 7 - 7 - 7 - 6 - 6 - 6 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 56 - 77 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - -24 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - StonedCycl - 49 - - - EIGHTH - 5 - - SHOLD - 50 - 0 - 99 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 1 - 2 - 0 - - - 1 - 1 - 4 - 0.5 - no - no - no - no - 8 - 8 - 8 - 8 - - W6 - W5 - W7 - W6 - 3 - -3 - 3 - -3 - - 31 - 27 - 15 - 12 - 0 - 0 - 0 - 15 - 15 - 15 - 15 - 15 - 13 - 13 - 13 - 13 - 7 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 12 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Texture * - 50 - - - FIFTH - 0 - - TRIANGL - 29 - 18 - 30 - 0 - off - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 2 - 5 - 2 - 2 - - - 1.5 - 20.99 - 1.51 - 1.49 - no - no - no - no - 16 - 14 - 14 - 9 - - W1 - W1 - W1 - W1 - 0 - -3 - 1 - -2 - - 27 - 30 - 30 - 30 - 6 - 7 - 6 - 2 - 0 - 11 - 0 - 0 - 31 - 10 - 10 - 7 - 11 - 8 - 7 - 5 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 96 - 89 - 99 - 94 - - 2 - 3 - 1 - 3 - 0 - 0 - 0 - 0 - - - -19 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 99 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - That Girl* - 51 - - - FIFTH - 0 - - TRIANGL - 35 - 0 - 0 - 0 - on - - - 3 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 6 - 2 - 5 - 4 - - - 1 - 1.73 - 4.24 - 1 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 31 - 31 - 27 - 31 - 9 - 15 - 3 - 18 - 13 - 14 - 14 - 14 - 15 - 12 - 1 - 12 - 6 - 4 - 2 - 6 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 80 - 81 - 95 - - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 1 - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - Up We Go - 52 - - - FIFTH - 0 - - TRIANGL - 8 - 0 - 8 - 34 - off - - - 3 - 3 - on - on - on - off - 0 - 0 - 0 - 0 - 2 - 1 - 4 - 1 - - - 2 - 8 - 2 - 12 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - -3 - 3 - 3 - -3 - - 3 - 8 - 8 - 3 - 1 - 7 - 9 - 5 - 12 - 12 - 12 - 0 - 0 - 1 - 0 - 5 - 4 - 4 - 4 - 4 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 91 - 52 - 99 - 53 - - 3 - 1 - 3 - 1 - 50 - 64 - 50 - 64 - - - 0 - POLY - 4 - FULL - 0 - POR - 99 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 96 - 0 - 0 - 0 - 0 - 5 - - WineGlass* - 53 - - - FIFTH - 6 - - TRIANGL - 26 - 9 - 5 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 5 - 6 - 5 - 7 - - - 4 - 15.25 - 4.02 - 8.04 - no - yes - no - no - 8 - 84 - 17 - 10 - - W5 - W8 - W7 - W4 - -3 - 3 - -3 - -1 - - 16 - 25 - 18 - 20 - 9 - 9 - 7 - 25 - 13 - 0 - 12 - 0 - 7 - 0 - 7 - 3 - 5 - 5 - 5 - 5 - VOF - V48 - VOF - V24 - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 62 - 99 - 93 - - 1 - 2 - 1 - 2 - 0 - 31 - 0 - 0 - - - -24 - POLY - 2 - FULL - 0 - POR - 99 - 0 - 0 - 25 - 0 - 16 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - WireWaves - 54 - - - SEVENTH - 7 - - TRIANGL - 35 - 0 - 0 - 0 - off - - - 5 - 0 - off - off - off - off - 0 - 0 - 0 - 0 - 1 - 2 - 2 - 6 - - - 1 - 3 - 3 - 12 - no - no - no - no - 8 - 8 - 8 - 8 - - W1 - W1 - W1 - W1 - 0 - 0 - 0 - 0 - - 22 - 26 - 23 - 31 - 31 - 24 - 31 - 22 - 15 - 5 - 15 - 7 - 10 - 12 - 13 - 14 - 5 - 7 - 7 - 7 - VOF - VOF - VOF - VOF - - - 99 - 99 - 99 - 50 - 50 - 50 - - 99 - 99 - 99 - 99 - - 1 - 1 - 1 - 1 - 0 - 12 - 0 - 21 - - - 0 - POLY - 2 - FULL - 0 - POR - 40 - 0 - 0 - 50 - 0 - 0 - 0 - 50 - 0 - 0 - 0 - 0 - 0 - 0 - - XyloSynth - 55 - - - - diff --git a/muse/synti/deicsonze/TODO b/muse/synti/deicsonze/TODO deleted file mode 100644 index f7d486f1..00000000 --- a/muse/synti/deicsonze/TODO +++ /dev/null @@ -1,13 +0,0 @@ -- Fix sync -- Eg Rate Scaling -- Foot Control, Modulation Wheel, Breath Control, After Touch -- analogue reverb -- Change presetName subcategoryName category with SysEx -- Internal restructure, private vs public, add comment, etc -- Optimize the code -- Remember the last directory -- Pan per voices -- Load BUMP preset -- calibrate portamento and pitch envelope to fit real DX11 -- make deicsonze loadable as standalone by mus -- It seems that there is still a bug on the note on, on some presets diff --git a/muse/synti/deicsonze/deicsonze.cpp b/muse/synti/deicsonze/deicsonze.cpp deleted file mode 100644 index 2f630a15..00000000 --- a/muse/synti/deicsonze/deicsonze.cpp +++ /dev/null @@ -1,4356 +0,0 @@ -//=========================================================================== -// -// DeicsOnze an emulator of the YAMAHA DX11 synthesizer -// -// Version 0.5.5 -// -// -// -// -// Copyright (c) 2004-2006 Nil Geisweiller -// -// -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -// 02111-1307, USA or point your web browser to http://www.gnu.org. -//=========================================================================== - -// #include -#include - -// #include - -#include "muse/midi.h" -#include "libsynti/mess.h" -#include "plugin.h" -#include "muse/midictrl.h" -#include "deicsonze.h" -#include "config.h" - -#define ABS(x) (x>=0?x:-x) - - -float DeicsOnze::waveTable[NBRWAVES][RESOLUTION]; -int DeicsOnze::useCount = 0; - -//--------------------------------------------------------- -// DeicsOnze -//--------------------------------------------------------- - -DeicsOnze::DeicsOnze() : Mess(2) { - if (useCount++ == 0) { - // create sinus wave table, W1 - for(int i = 0; i < RESOLUTION; i++) - waveTable[W1][i] = - (float)(sin((i * 2.0 * M_PI) / (double)RESOLUTION)); - // create sinus*abs(sinus) wave table, W2 - for(int i = 0; i < RESOLUTION; i++){ - double t = (i * 2.0 * M_PI) / (double)RESOLUTION; - waveTable[W2][i] = (float)(ABS(sin(t))*sin(t));} - // create halfsinus_ wave table, W3 - for(int i = 0; i < RESOLUTION; i++) - waveTable[W3][i] = (float) - (ihide(); // to avoid flicker during MusE startup - _gui->setWindowTitle(QString("DeicsOnze")); - - //FX - Plugin* p; - p = plugins.find("freeverb", "freeverb1"); - _pluginIReverb = NULL; - if(p) initPluginReverb(p); - _pluginIChorus = NULL; - p = plugins.find("doublechorus", "doublechorus1"); - if(p) initPluginChorus(p); - _pluginIDelay = NULL; - p = plugins.find("pandelay", "pandelay"); - if(p) initPluginDelay(p); - - //Filter - _dryFilter = new LowFilter(); - _chorusFilter = new LowFilter(); - _reverbFilter = new LowFilter(); - _delayFilter = new LowFilter(); - - //Load configuration - QString defaultConf = - (QString(getenv("HOME")) + QString("/." DEICSONZESTR ".dco")); - FILE* f; - f = fopen(defaultConf.toAscii().data(), "r"); - if(f) { - fclose(f); - loadConfiguration(defaultConf); - } - - //load Set - _set=new Set("Initial Bank"); - if(_isInitSet) loadSet(_initSetPath); - - //loadSutulaPresets(); - - _initialPreset = new - Preset(new Subcategory(new Category(NULL, "NONE", 0), "NONE", 0), 0); - for(int c = 0; c < NBRCHANNELS; c++) { - _preset[c]=_initialPreset; - setPreset(c); - } - //update display gui - //update mastervol - unsigned char dataMasterVol[2]; - dataMasterVol[0]=SYSEX_MASTERVOL; - dataMasterVol[1]=getMasterVol(); - MidiEvent evSysexMasterVol(0, ME_SYSEX, - (const unsigned char*)dataMasterVol, - 2); - _gui->writeEvent(evSysexMasterVol); - //update return fx - unsigned char *dataReverbRet = new unsigned char[2]; - dataReverbRet[0]=SYSEX_REVERBRETURN; - dataReverbRet[1]=(unsigned char)getReverbReturn(); - MidiEvent evReverbRet(0,ME_SYSEX,(const unsigned char*)dataReverbRet, 2); - _gui->writeEvent(evReverbRet); - unsigned char *dataChorusRet = new unsigned char[2]; - dataChorusRet[0]=SYSEX_CHORUSRETURN; - dataChorusRet[1]=(unsigned char)getChorusReturn(); - MidiEvent evChorusRet(0,ME_SYSEX,(const unsigned char*)dataChorusRet, 2); - _gui->writeEvent(evChorusRet); - unsigned char *dataDelayRet = new unsigned char[2]; - dataDelayRet[0]=SYSEX_DELAYRETURN; - dataDelayRet[1]=(unsigned char)getDelayReturn(); - //printf("DELAY RET = %d, REVERB RET = %d\n", - //getDelayReturn(), getReverbReturn()); - MidiEvent evDelayRet(0,ME_SYSEX,(const unsigned char*)dataDelayRet, 2); - _gui->writeEvent(evDelayRet); - //update font size - unsigned char *dataFontSize = new unsigned char[2]; - dataFontSize[0]=SYSEX_FONTSIZE; - dataFontSize[1]=(unsigned char)_global.fontSize; - MidiEvent evFontSize(0, ME_SYSEX, (const unsigned char*)dataFontSize, 2); - _gui->writeEvent(evFontSize); - //display load preset - unsigned char dataUpdateGuiSet[1]; - dataUpdateGuiSet[0]=SYSEX_UPDATESETGUI; - MidiEvent evSysexUpdateGuiSet(0, ME_SYSEX, - (const unsigned char*)dataUpdateGuiSet, - 1); - _gui->writeEvent(evSysexUpdateGuiSet); -} - -//--------------------------------------------------------- -// ~DeicsOnze -//--------------------------------------------------------- - -DeicsOnze::~DeicsOnze() -{ - //if (--useCount == 0) - //delete[] sine_table; - //dealloc temp buffers chorus and reverb - for(int i = 0; i < NBRFXINPUTS; i++) free(tempInputChorus[i]); - free(tempInputChorus); - for(int i = 0; i < NBRFXOUTPUTS; i++) free(tempOutputChorus[i]); - free(tempOutputChorus); - for(int i = 0; i < NBRFXINPUTS; i++) free(tempInputReverb[i]); - free(tempInputReverb); - for(int i = 0; i < NBRFXOUTPUTS; i++) free(tempOutputReverb[i]); - free(tempOutputReverb); - for(int i = 0; i < NBRFXINPUTS; i++) free(tempInputDelay[i]); - free(tempInputDelay); - for(int i = 0; i < NBRFXOUTPUTS; i++) free(tempOutputDelay[i]); - free(tempOutputDelay); -} - -//--------------------------------------------------------- -// getSinusWaveTable -//--------------------------------------------------------- -float* DeicsOnze::getSinusWaveTable() { - return waveTable[W1]; -} - -//--------------------------------------------------------- -// guiVisible -//--------------------------------------------------------- -bool DeicsOnze::guiVisible() const -{ - return _gui->isVisible(); -} - -//--------------------------------------------------------- -// showGui -//--------------------------------------------------------- -void DeicsOnze::showGui(bool val) -{ - _gui->setShown(val); -} - -//--------------------------------------------------------- -// getGeometry -//--------------------------------------------------------- - -void DeicsOnze::getGeometry(int* x, int* y, int* w, int* h) const { - QPoint pos(_gui->pos()); - QSize size(_gui->size()); - *x = pos.x(); - *y = pos.y(); - *w = size.width(); - *h = size.height(); -} - -void DeicsOnze::setSampleRate(int sr) { - Mess::setSampleRate(sr); - _dryFilter->setSamplerate(sr); - _chorusFilter->setSamplerate(sr); - _reverbFilter->setSamplerate(sr); - _delayFilter->setSamplerate(sr); - setQuality(_global.quality); -} - -//--------------------------------------------------------- -// setGeometry -//--------------------------------------------------------- - -void DeicsOnze::setGeometry(int x, int y, int w, int h) { - _gui->resize(QSize(w, h)); - _gui->move(QPoint(x, y)); -} - -//--------------------------------------------------------- -// initCtrls -//--------------------------------------------------------- -void DeicsOnze::initCtrls() { - int i=0; - for(int k=0; kfindPreset(hbank, lbank, prog); -} -Subcategory* DeicsOnze::findSubcategory(int hbank, int lbank) const { - return _set->findSubcategory(hbank, lbank); -} -Category* DeicsOnze::findCategory(int hbank) const { - return _set->findCategory(hbank); -} -//--------------------------------------------------------- -// isPitchEnv -// return true iff all levels are in the middle -//--------------------------------------------------------- -inline bool isPitchEnv(PitchEg* pe) { - return(pe->pl1 != 50 || pe->pl2 != 50 || pe->pl3 != 50); -} -//--------------------------------------------------------- -// getPitchEnvCoefInct -// returns the coefInct according to level pl -//--------------------------------------------------------- -inline double getPitchEnvCoefInct(int pl) { - /* - pl = 0 <--> -4oct, pl = 50 <--> 0oct, pl = 100 <--> 4oct - - y = a * exp((pl - 50)/b) - 1.0 = a*exp(0) ==> a = 1.0 - 8.0 = exp(50/b) ==> log 8.0 = 50/b ==> b = 50/log(8.0) - */ - double b = 50.0/log(8.0); - return exp((pl-50.0)/b); -} - -//--------------------------------------------------------- -// getPitchEnvCoefInctInct -//--------------------------------------------------------- -inline double getPitchEnvCoefInctInct(int pl1, int pl2, int pr, double sr) { - //TODO : depending on the sampleRate - int a = pr; - double c = 1.0 + COEFPITCHENV*((double)(a*a)+1.0); - double inctInct = exp(log(c)*48000.0/sr); - if(pl1pl2) - return(1.0/inctInct); - else return 1.0; -} - -//--------------------------------------------------------- -// existsKeyOn -//--------------------------------------------------------- -bool DeicsOnze::existsKeyOn(int ch) { - return !_global.channel[ch].lastVoiceKeyOn.empty(); -} - -//--------------------------------------------------------- -// note2Amp -// return the Amp of a note depending on the level scaling -//--------------------------------------------------------- -inline double note2Amp(double note, int ls) -{ - if(ls==0) return(1.0); - else return((noteMAXNBRVOICES?MAXNBRVOICES:(nv<1?1:nv)); - //we assume that any voices - //that is not included in the active voices is properly initialized - for(int v=nv; v<_global.channel[c].nbrVoices; v++) - initVoice(c, v); - _global.channel[c].nbrVoices=nv; -} - -//---------------------------------------------------------------- -// setMasterVol -//---------------------------------------------------------------- -void DeicsOnze::setMasterVol(int mv) { - _global.masterVolume=level2amp(mv); //watch out that MAXMASTERVOLUME==255 -} -//---------------------------------------------------------------- -// setChannelEnable -//---------------------------------------------------------------- -void DeicsOnze::setChannelEnable(int c, bool e) { - _global.channel[c].isEnable = e; - setLfo(c); -} - -//---------------------------------------------------------------- -// setChannelVol -//---------------------------------------------------------------- -void DeicsOnze::setChannelVol(int c, int v) { - _global.channel[c].volume = v; -} - -void DeicsOnze::applyChannelAmp(int c) { - _global.channel[c].ampLeft = - level2amp(_global.channel[c].volume) - * ((double)(MAXCHANNELPAN - _global.channel[c].pan) - /(double)(2*MAXCHANNELPAN)); - _global.channel[c].ampRight = - level2amp(_global.channel[c].volume) - * ((double)(MAXCHANNELPAN + _global.channel[c].pan) - /(double)(2*MAXCHANNELPAN)); -} - -//---------------------------------------------------------------- -// setChannelPan -//---------------------------------------------------------------- -void DeicsOnze::setChannelPan(int c, int p) { - _global.channel[c].pan = p; -} -//---------------------------------------------------------------- -// setChannelDetune -//---------------------------------------------------------------- -void DeicsOnze::setChannelDetune(int c, int p) { - _global.channel[c].detune = p; -} -//---------------------------------------------------------------- -// setChannelBrightness -//---------------------------------------------------------------- -void DeicsOnze::setChannelBrightness(int c, int b) { - _global.channel[c].brightness = b; -} -//---------------------------------------------------------------- -// setChannelModulation -//---------------------------------------------------------------- -void DeicsOnze::setChannelModulation(int c, int m) { - _global.channel[c].modulation = m; -} -//---------------------------------------------------------------- -// setChannelAttack -//---------------------------------------------------------------- -void DeicsOnze::setChannelAttack(int c, int a) { - _global.channel[c].attack = a; -} -//---------------------------------------------------------------- -// setChannelRelease -//---------------------------------------------------------------- -void DeicsOnze::setChannelRelease(int c, int r) { - _global.channel[c].release = r; -} -//---------------------------------------------------------------- -// setChannelReverb -//---------------------------------------------------------------- -void DeicsOnze::setChannelReverb(int c, int r) { - _global.channel[c].reverbAmount = (float)lowlevel2amp(r); -} -//---------------------------------------------------------------- -// setChannelChorus -//---------------------------------------------------------------- -void DeicsOnze::setChannelChorus(int c, int val) { - _global.channel[c].chorusAmount = (float)lowlevel2amp(val); -} -//---------------------------------------------------------------- -// setChannelDelay -//---------------------------------------------------------------- -void DeicsOnze::setChannelDelay(int c, int val) { - _global.channel[c].delayAmount = (float)lowlevel2amp(val); -} - -//---------------------------------------------------------------- -// setChorusReturn -//---------------------------------------------------------------- -void DeicsOnze::setChorusReturn(int val) { - _global.chorusReturn = 2.0*(float)level2amp(val); //beware MAXFXRETURN==255 -} - -//---------------------------------------------------------------- -// setReverbReturn -//---------------------------------------------------------------- -void DeicsOnze::setReverbReturn(int val) { - _global.reverbReturn = 2.0*(float)level2amp(val); //beware MAXFXRETURN==255 -} - -//---------------------------------------------------------------- -// setDelayReturn -//---------------------------------------------------------------- -void DeicsOnze::setDelayReturn(int val) { - _global.delayReturn = 2.0*(float)level2amp(val); //beware MAXFXRETURN==255 -} - -//---------------------------------------------------------------- -// getNbrVoices -//---------------------------------------------------------------- -int DeicsOnze::getNbrVoices(int c) const { - return(_global.channel[c].nbrVoices); -} -//---------------------------------------------------------------- -// getMasterVol -//---------------------------------------------------------------- -int DeicsOnze::getMasterVol(void) const { - return(amp2level(_global.masterVolume)); -} -//---------------------------------------------------------------- -// getFilter -//---------------------------------------------------------------- -bool DeicsOnze::getFilter(void) const { - return _global.filter; -} -//---------------------------------------------------------------- -// getChannelEnable -//---------------------------------------------------------------- -bool DeicsOnze::getChannelEnable(int c) const { - return _global.channel[c].isEnable; -} - -//---------------------------------------------------------------- -// getChannelVol -//---------------------------------------------------------------- -int DeicsOnze::getChannelVol(int c) const { //TODO : to see if correct - //return((int)(MAX(_global.channel[c].ampLeft, _global.channel[c].ampRight) - //*(double)MAXCHANNELVOLUME)); - return(_global.channel[c].volume); -} -//---------------------------------------------------------------- -// getChannelPan -//---------------------------------------------------------------- -int DeicsOnze::getChannelPan(int c) const { - return(_global.channel[c].pan); -} -//---------------------------------------------------------------- -// setChannelDetune -//---------------------------------------------------------------- -int DeicsOnze::getChannelDetune(int c) const { - return _global.channel[c].detune; -} -//---------------------------------------------------------------- -// getChannelBrightness -//---------------------------------------------------------------- -int DeicsOnze::getChannelBrightness(int c) const { - return(_global.channel[c].brightness); -} -//---------------------------------------------------------------- -// getChannelModulation -//---------------------------------------------------------------- -int DeicsOnze::getChannelModulation(int c) const { - return(_global.channel[c].modulation); -} -//---------------------------------------------------------------- -// getChannelAttack -//---------------------------------------------------------------- -int DeicsOnze::getChannelAttack(int c) const { - return(_global.channel[c].attack); -} -//---------------------------------------------------------------- -// getChannelRelease -//---------------------------------------------------------------- -int DeicsOnze::getChannelRelease(int c) const { - return(_global.channel[c].release); -} -//---------------------------------------------------------------- -// getChannelReverb -//---------------------------------------------------------------- -int DeicsOnze::getChannelReverb(int c) const { - return(amp2lowlevel(_global.channel[c].reverbAmount)); -} -//---------------------------------------------------------------- -// getChannelChorus -//---------------------------------------------------------------- -int DeicsOnze::getChannelChorus(int c) const { - return(amp2lowlevel(_global.channel[c].chorusAmount)); -} -//---------------------------------------------------------------- -// getChannelDelay -//---------------------------------------------------------------- -int DeicsOnze::getChannelDelay(int c) const { - return(amp2lowlevel(_global.channel[c].delayAmount)); -} -//---------------------------------------------------------------- -// getChorusReturn -//---------------------------------------------------------------- -int DeicsOnze::getChorusReturn() const { - return(amp2level(_global.chorusReturn/2.0)); -} -//---------------------------------------------------------------- -// getReverbReturn -//---------------------------------------------------------------- -int DeicsOnze::getReverbReturn() const { - return(amp2level(_global.reverbReturn/2.0)); -} -//---------------------------------------------------------------- -// getReverbReturn -//---------------------------------------------------------------- -int DeicsOnze::getDelayReturn() const { - return(amp2level(_global.delayReturn/2.0)); -} - -//---------------------------------------------------------------- -// setLfo -//---------------------------------------------------------------- -void DeicsOnze::setLfo(int c/*channel*/) -{ - double x; - x=(double)_preset[c]->lfo.speed; - // lfoSpeed to Hz, obtained by fitting the actual curve by a polynomial - _global.channel[c].lfoFreq = - -1.9389e-08*x*x*x*x*x+2.8826e-06*x*x*x*x-9.0316e-05*x*x*x - +4.7453e-03*x*x-1.2295e-02*x+7.0347e-02;//a revoir - //Pitch LFO - _global.channel[c].lfoMaxIndex = - (_global.channel[c].lfoFreq==0?0:(int)((1.0/_global.channel[c].lfoFreq) - *(double)_global.deiSampleRate)); - double totalpDepth = - ((double)_preset[c]->lfo.pModDepth + - (((double)_global.channel[c].modulation)/127.0) - * ((double)(MAXPMODDEPTH - _preset[c]->lfo.pModDepth)) - )/(double)MAXPMODDEPTH; - _global.channel[c].lfoPitch = - totalpDepth * (COEFPLFO(_preset[c]->sensitivity.pitch)); - //Amplitude LFO - double totalaDepth = - ((double)_preset[c]->lfo.aModDepth + - (((double)_global.channel[c].modulation)/127.0) - * ((double)(MAXAMODDEPTH - _preset[c]->lfo.aModDepth)) - )/(double)MAXAMODDEPTH; - _global.channel[c].lfoMaxAmp = - totalaDepth * (COEFALFO(_preset[c]->sensitivity.amplitude)); - //index is concidered on the half of the frequency of the LFO - _global.channel[c].lfoDelayMaxIndex = - delay2Time(_preset[c]->lfo.delay)*_global.channel[c].lfoFreq*2; - _global.channel[c].lfoDelayInct = - (double)(RESOLUTION/4)/_global.channel[c].lfoDelayMaxIndex; - - //update the actuall values controlling the modulation now - if(_global.channel[c].lfoDelayIndex<(double)(RESOLUTION/4)) { - double delayCoef = - (double)waveTable[W2][(int)_global.channel[c].lfoDelayIndex]; - _global.channel[c].lfoMaxCoefInct = - exp((log(2.0)/12.0)*_global.channel[c].lfoPitch*delayCoef); - _global.channel[c].lfoCoefInctInct = - exp((log(2.0)/12.0)*((2*_global.channel[c].lfoPitch*delayCoef) - /_global.channel[c].lfoMaxIndex)); - _global.channel[c].lfoMaxDAmp = delayCoef*_global.channel[c].lfoMaxAmp; - } - else - if(_global.channel[c].delayPassed) { - _global.channel[c].lfoMaxCoefInct = - exp((log(2.0)/12.0)*_global.channel[c].lfoPitch); - _global.channel[c].lfoCoefInctInct= - exp((log(2.0)/12.0)*((2*_global.channel[c].lfoPitch) - /_global.channel[c].lfoMaxIndex)); - _global.channel[c].lfoMaxDAmp=_global.channel[c].lfoMaxAmp; - } -} - -//----------------------------------------------------------------- -// setOutLevel -//----------------------------------------------------------------- -void DeicsOnze::setOutLevel(int c, int k) { - for(int v=0; v<_global.channel[c].nbrVoices; v++) { - if(_global.channel[c].voices[v].op[k].envState!=OFF) { - _global.channel[c].voices[v].op[k].amp = - outLevel2Amp(_preset[c]->outLevel[k]) - * _global.channel[c].voices[v].op[k].ampVeloNote - * brightness2Amp(c, k); - } - } -} -void DeicsOnze::setOutLevel(int c) { - for(int k=0; keg[k].ar==0?0: - (double)(RESOLUTION/4)/(envAR2s(_preset[c]->eg[k].ar) - *_global.deiSampleRate)) - *coefAttack(_global.channel[c].attack); -} -void DeicsOnze::setEnvAttack(int c, int k) { - for(int v=0; v<_global.channel[c].nbrVoices; v++) setEnvAttack(c, v, k); -} -void DeicsOnze::setEnvAttack(int c) { - for(int k=0; keg[k].rr, _global.deiSampleRate, - _global.channel[c].release); -} -void DeicsOnze::setEnvRelease(int c, int k) { - for(int v=0; v<_global.channel[c].nbrVoices; v++) setEnvRelease(c, v, k); -} -void DeicsOnze::setEnvRelease(int c) { - for(int k=0; kpitchEg)) { - if(_global.channel[c].voices[v].pitchEnvCoefInct - > _global.channel[c].voices[v].pitchEnvCoefInctPhase1) { - _global.channel[c].voices[v].pitchEnvCoefInctInct = - getPitchEnvCoefInctInct(1, 0, _preset[c]->pitchEg.pr3, - _global.deiSampleRate); - _global.channel[c].voices[v].pitchEnvState = RELEASE_PE; - } - else if(_global.channel[c].voices[v].pitchEnvCoefInct - < _global.channel[c].voices[v].pitchEnvCoefInctPhase1) { - _global.channel[c].voices[v].pitchEnvCoefInctInct = - getPitchEnvCoefInctInct(0, 1, _preset[c]->pitchEg.pr3, - _global.deiSampleRate); - _global.channel[c].voices[v].pitchEnvState = RELEASE_PE; - } - else { - _global.channel[c].voices[v].pitchEnvCoefInctInct = 1.0; - _global.channel[c].voices[v].pitchEnvState = OFF_PE; - } - } -} - -//----------------------------------------------------------------- -// setQuality -//----------------------------------------------------------------- -void DeicsOnze::setQuality(Quality q) { - _global.quality = q; - switch(q) { - case high : - _global.qualityCounterTop = 1; - break; - case middle : - _global.qualityCounterTop = 2; - break; - case low : - _global.qualityCounterTop = 4; - break; - case ultralow : - _global.qualityCounterTop = 6; - break; - default : printf("Error switch setQuality : out of value\n"); - break; - } - //calculate _global.deiSampleRate - _global.deiSampleRate = (double)sampleRate() - / (double)_global.qualityCounterTop; - _global.qualityCounter = 0; - //update lfo to consider the new samplerate - for(int c = 0; c < 16; c++) if(_global.channel[c].isEnable) setLfo(c); - //update the cutoffs of the filters - _dryFilter->setCutoff(_global.deiSampleRate/4.0); - _reverbFilter->setCutoff(_global.deiSampleRate/4.0); - _chorusFilter->setCutoff(_global.deiSampleRate/4.0); - _delayFilter->setCutoff(_global.deiSampleRate/4.0); -} - -//----------------------------------------------------------------- -// setFilter -//----------------------------------------------------------------- -void DeicsOnze::setFilter(bool f) { - _global.filter = f; -} -//----------------------------------------------------------------- -// brightness2Amp -//----------------------------------------------------------------- -double DeicsOnze::brightness2Amp(int c, int k) { - if( - (k==1 && (_preset[c]->algorithm!=SIXTH || _preset[c]->algorithm!=SEVENTH - || _preset[c]->algorithm!=EIGHTH)) - || - (k==2 && (_preset[c]->algorithm==FIRST || _preset[c]->algorithm==SECOND - || _preset[c]->algorithm==THIRD || _preset[c]->algorithm==FOURTH)) - || - (k==3 && (_preset[c]->algorithm!=EIGHTH)) - ) { - double x = 2.0*(double)_global.channel[c].brightness - / (double)MAXFINEBRIGHTNESS; - double square_x = x*x; - return(square_x*x); - } - else return(1.0); -} -//----------------------------------------------------------------- -// setFeedback -//----------------------------------------------------------------- -void DeicsOnze::setFeedback(int c) { - _global.channel[c].feedbackAmp = - COEFFEEDBACK*exp(log(2)*(double)(_preset[c]->feedback-MAXFEEDBACK)); -} - -//----------------------------------------------------------------- -// setPreset -//----------------------------------------------------------------- - -void DeicsOnze::setPreset(int c) { - setFeedback(c); - setLfo(c); - setEnvAttack(c); - setEnvRelease(c); - setOutLevel(c); -} - - -inline double coarseFine2Ratio(int c,int f) { - double tab[64][16]= - { - {0.50,0.56,0.62,0.68,0.75,0.81,0.87,0.93,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}, - {0.71,0.79,0.88,0.96,1.05,1.14,1.23,1.32,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}, - {0.78,0.88,0.98,1.07,1.17,1.27,1.37,1.47,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}, - {0.87,0.97,1.08,1.18,1.29,1.40,1.51,1.62,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}, - {1.00,1.06,1.12,1.18,1.25,1.31,1.37,1.43,1.50,1.56,1.62,1.68,1.75,1.81,1.87,1.93}, - {1.41,1.49,1.58,1.67,1.76,1.85,1.93,2.02,2.11,2.20,2.29,2.37,2.46,2.55,2.64,2.73}, - {1.57,1.66,1.76,1.86,1.96,2.06,2.15,2.25,2.35,2.45,2.55,2.64,2.74,2.84,2.94,3.04}, - {1.73,1.83,1.94,2.05,2.16,2.27,2.37,2.48,2.59,2.70,2.81,2.91,3.02,3.13,3.24,3.35}, - {2.00,2.06,2.12,2.18,2.25,2.31,2.37,2.43,2.50,2.56,2.62,2.68,2.75,2.81,2.87,2.93}, - {2.82,2.90,2.99,3.08,3.17,3.26,3.34,3.43,3.52,3.61,3.70,3.78,3.87,3.96,4.05,3.14}, - {3.00,3.06,3.12,3.18,3.25,3.31,3.37,3.43,3.50,3.56,3.62,3.68,3.75,3.81,3.87,3.93} , - {3.14,3.23,3.33,3.43,3.53,3.63,3.72,3.82,3.92,4.02,4.12,4.21,4.31,4.41,4.51,4.61}, - {3.46,3.56,3.67,3.78,3.89,4.00,4.10,4.21,4.32,4.43,4.54,4.64,4.75,4.86,4.97,5.08}, - {4.00,4.06,4.12,4.18,4.25,4.31,4.37,4.43,4.50,4.56,4.62,4.68,4.75,4.81,4.87,4.93}, - {4.24,4.31,4.40,4.49,4.58,4.67,4.75,4.84,4.93,5.02,5.11,5.19,5.28,5.37,5.46,5.55}, - {4.71,4.80,4.90,5.00,5.10,5.20,5.29,5.39,5.49,5.59,5.69,5.78,5.88,5.98,6.08,6.18}, - {5.00,5.06,5.12,5.18,5.25,5.31,5.37,5.43,5.50,5.56,5.62,5.68,5.75,5.81,5.87,5.93}, - {5.19,5.29,5.40,5.51,5.62,5.73,5.83,5.94,6.05,6.16,6.27,6.37,6.48,6.59,6.70,6.81}, - {5.65,5.72,5.81,5.90,5.99,6.08,6.16,6.25,6.34,6.43,6.52,6.60,6.69,6.78,6.87,6.96}, - {6.00,6.06,6.12,6.18,6.25,6.31,6.37,6.43,6.50,6.56,6.62,6.68,6.75,6.81,6.87,6.93}, - {6.28,6.37,6.47,6.57,6.67,6.77,6.86,6.96,7.06,7.16,7.26,7.35,7.45,7.55,7.65,7.75}, - {6.92,7.02,7.13,7.24,7.35,7.46,7.56,7.67,7.78,7.89,8.00,8.10,8.21,8.32,8.43,8.54}, - {7.00,7.06,7.12,7.18,7.25,7.31,7.37,7.43,7.50,7.56,7.62,7.68,7.75,7.81,7.87,7.93}, - {7.07,7.13,7.22,7.31,7.40,7.49,7.57,7.66,7.75,7.84,7.93,8.01,8.10,8.19,8.28,8.37}, - {7.85,7.94,8.04,8.14,8.24,8.34,8.43,8.53,8.63,8.73,8.83,8.92,9.02,9.12,9.22,9.32}, - {8.00,8.06,8.12,8.18,8.25,8.31,8.37,8.43,8.50,8.56,8.62,8.68,8.75,8.81,8.87,8.93}, - {8.48,8.54,8.63,8.72,8.81,8.90,8.98,9.07,9.16,9.25,9.34,9.42,9.51,9.60,9.69,9.78}, - {8.65,8.75,8.86,8.97,9.08,9.19,9.29,9.40,9.51,9.62,9.73,9.83,9.94,10.05,10.16,10.27}, - {9.00,9.06,9.12,9.18,9.25,9.31,9.37,9.43,9.50,9.56,9.62,9.68,9.75,9.81,9.87,9.93}, - {9.42,9.51,9.61,9.71,9.81,9.91,10.00,10.10,10.20,10.30,10.40,10.49,10.59,10.69,10.79,10.89}, - {9.89,9.95,10.04,10.13,10.22,10.31,10.39,10.48,10.57,10.66,10.75,10.83,10.92,11.01,11.10,11.19}, - {10.00,10.06,10.12,10.18,10.25,10.31,10.37,10.43,10.50,10.56,10.62,10.68,10.75,10.81,10.87,10.93}, - {10.38,10.48,10.59,10.70,10.81,10.92,11.02,11.13,11.24,11.35,11.46,11.56,11.67,11.78,11.89,12.00}, - {10.99,11.08,11.18,11.28,11.38,11.48,11.57,11.67,11.77,11.87,11.97,12.06,12.16,12.26,12.36,12.46}, - {11.00,11.06,11.12,11.18,11.25,11.31,11.37,11.43,11.50,11.56,11.62,11.68,11.75,11.81,11.87,11.93}, - {11.30,11.36,11.45,11.54,11.63,11.72,11.80,11.89,11.98,12.07,12.16,12.24,12.33,12.42,12.51,12.60}, - {12.00,12.06,12.12,12.18,12.25,12.31,12.37,12.43,12.50,12.56,12.62,12.68,12.75,12.81,12.87,12.93}, - {12.11,12.21,12.32,12.43,12.54,12.65,12.75,12.86,12.97,13.08,13.19,13.29,13.40,13.51,13.62,13.73}, - {12.56,12.65,12.75,12.85,12.95,13.05,13.14,13.24,13.34,13.44,13.54,13.63,13.73,13.83,13.93,14.03}, - {12.72,12.77,12.86,12.95,13.04,13.13,13.21,13.30,13.39,13.48,13.57,13.65,13.74,13.83,13.92,14.01}, - {13.00,13.06,13.12,13.18,13.25,13.31,13.37,13.43,13.50,13.56,13.62,13.68,13.75,13.81,13.87,13.93}, - {13.84,13.94,14.05,14.16,14.27,14.38,14.48,14.59,14.70,14.81,14.92,15.02,15.13,15.24,15.35,15.46}, - {14.00,14.06,14.12,14.18,14.25,14.31,14.37,14.43,14.50,14.56,14.62,14.68,14.75,14.81,14.87,14.93}, - {14.10,14.18,14.27,14.36,14.45,14.54,14.62,14.71,14.80,14.89,14.98,15.06,15.15,15.24,15.33,15.42}, - {14.13,14.22,14.32,14.42,14.52,14.62,14.71,14.81,14.91,15.01,15.11,15.20,15.30,15.40,15.50,15.60}, - {15.00,15.06,15.12,15.18,15.25,15.31,15.37,15.43,15.50,15.56,15.62,15.68,15.75,15.81,15.87,15.93}, - {15.55,15.59,15.68,15.77,15.86,15.95,16.03,16.12,16.21,16.30,16.39,16.47,16.56,16.65,16.74,16.83}, - {15.57,15.67,15.78,15.89,16.00,16.11,16.21,16.32,16.43,16.54,16.65,16.75,16.86,16.97,17.08,17.19}, - {15.70,15.79,15.89,15.99,16.09,16.19,16.28,16.38,16.48,16.58,16.68,16.77,16.87,16.97,17.07,17.17}, - {16.96,17.00,17.09,17.18,17.27,17.36,17.44,17.53,17.62,17.71,17.80,17.88,17.97,18.06,18.15,18.24}, - {17.27,17.36,17.46,17.56,17.66,17.76,17.85,17.95,18.05,18.15,18.25,18.34,18.44,18.54,18.64,18.74}, - {17.30,17.40,17.51,17.62,17.73,17.84,17.94,18.05,18.16,18.27,18.38,18.48,18.59,18.70,18.81,18.92}, - {18.37,18.41,18.50,18.59,18.68,18.77,18.85,18.94,19.03,19.12,19.21,19.29,19.38,19.47,19.56,19.65}, - {18.84,18.93,19.03,19.13,19.23,19.33,19.42,19.52,19.62,19.72,19.82,19.91,20.01,20.11,20.21,20.31}, - {19.03,19.13,19.24,19.35,19.46,19.57,19.67,19.78,19.89,20.00,20.11,20.21,20.32,20.43,20.54,20.65}, - {19.78,19.82,19.91,20.00,20.09,20.18,20.26,20.35,20.44,20.53,20.62,20.70,20.79,20.88,20.97,21.06}, - {20.41,20.50,20.60,20.70,20.80,20.90,20.99,21.09,21.19,21.29,21.39,21.48,21.58,21.68,21.78,21.88}, - {20.76,20.86,20.97,21.08,21.19,21.30,21.40,21.51,21.62,21.73,21.84,21.94,22.05,22.16,22.27,22.38}, - {21.20,21.23,21.32,21.41,21.50,21.59,21.67,21.76,21.85,21.94,22.03,22.11,22.20,22.29,22.38,22.47}, - {21.98,22.07,22.17,22.17,22.37,22.47,22.56,22.66,22.76,22.86,22.96,23.05,23.15,23.25,23.35,23.45}, - {22.49,22.59,22.70,22.81,22.92,23.03,23.13,13.24,13.35,13.46,13.57,13.67,13.78,13.89,24.00,24.11}, - {23.55,23.64,23.74,23.84,23.94,24.04,24.13,24.23,24.33,24.43,24.53,24.62,24.72,24.82,24.92,25.02}, - {24.22,24.32,24.43,24.54,24.65,24.76,24.86,24.97,25.08,25.19,25.30,25.40,25.51,25.62,25.73,25.84}, - {25.95,26.05,26.16,26.27,26.38,26.49,26.59,26.70,26.81,26.92,27.03,27.13,27.24,27.35,27.46,27.57} - }; - return(tab[c][f]); -} - -//--------------------------------------------------------------- -// loadSet -//--------------------------------------------------------------- -void DeicsOnze::loadSet(QString fileName) { - // read the XML file and create DOM tree - if(!fileName.isEmpty()) { - QFile deicsonzeFile(fileName); - if(!deicsonzeFile.open(QIODevice::ReadOnly)) { - printf("Critical Error Cannot open file %s\n", - fileName.toAscii().data()); - return; - } - QDomDocument domTree; - if (!domTree.setContent(&deicsonzeFile )) { - printf("Critical Error Parsing error for file %s\n", - fileName.toAscii().data()); - deicsonzeFile.close(); - return; - } - deicsonzeFile.close(); - - QDomNode node = domTree.documentElement(); - while (!node.isNull()) { - QDomElement e = node.toElement(); - if (e.isNull()) - continue; - if (e.tagName() == "deicsOnzeSet") { - QString version = e.attribute(QString("version")); - if (version == "1.0") { - for(int c = 0; c_categoryVector.empty()) - delete(*_set->_categoryVector.begin()); - _set->readSet(node.firstChild()); - //display load preset - unsigned char dataUpdateGuiSet[1]; - dataUpdateGuiSet[0]=SYSEX_UPDATESETGUI; - MidiEvent evSysexUpdateGuiSet(0, ME_SYSEX, - (const unsigned char*)dataUpdateGuiSet, - 1); - _gui->writeEvent(evSysexUpdateGuiSet); - } - else printf("unsupported *.dei file version %s\n", - version.toLatin1().data()); - } - else printf("DeicsOnze: %s not supported\n", - e.tagName().toLatin1().data()); - node = node.nextSibling(); - } - } -} -//--------------------------------------------------------------- -// loadSutulaPreset -//--------------------------------------------------------------- - -void DeicsOnze::loadSutulaPresets() -{ - FILE* file; - int v; - int crs[NBROP], fin[NBROP]; //coarse ratio, fine ratio - char s[500]; - char sname[LENGTHNAME+1]; - char scategory[LENGTHCATEGORY+1]; - char ssubcategory[LENGTHSUBCATEGORY+1]; - int k; - int nhBank, nlBank, nPreset; - Preset* presetTemp; - Subcategory* subcategoryTemp = NULL; - Category* categoryTemp = NULL; - - if(!_set) _set=new Set("Sutula Bank"); - - nhBank=0; - nlBank=0; - nPreset=0; - - //QString presetPath(INSTPREFIX); - //presetPath += "/share/" PACKAGEVERSION "/presets/deicsonze/ARCH_ALIN"; - - QString presetPath("/home/a-lin/sources/svnMusEDev/lmuse/muse/synti/deicsonze/ARCH_ALIN"); - - file = fopen (presetPath.toLatin1().data(), "rt"); - if (file == NULL) { - printf("can't open "); - printf(presetPath.toLatin1().data()); - printf("\n"); - } - else - { - while(fgets(s, 500, file) && !strstr(s, "** Source:")) - { - if (strstr(s,"* CATEGORY")) - { - sscanf(s, "* CATEGORY %s", scategory); - categoryTemp=new Category(_set, scategory,0); - } - if (strstr(s,"* SUBCATEGORY")) - { - sscanf(s, "* SUBCATEGORY %s", ssubcategory); - subcategoryTemp=new Subcategory(categoryTemp,ssubcategory,0); - nlBank++; - } - } - while(!feof(file)) - { - - presetTemp=new Preset(subcategoryTemp); - // Fill the preset - //OP.4 to OP.1 - for(int kaka=(NBROP-1); kaka>=0; kaka--) - { - k=(kaka==2?1:(kaka==1?2:kaka)); - - fscanf(file, "%x", &v);//0 - presetTemp->eg[k].ar=v; - fscanf(file, "%x", &v);//1 - presetTemp->eg[k].d1r=v; - fscanf(file, "%x", &v);//2 - presetTemp->eg[k].d2r=v; - fscanf(file, "%x", &v);//3 - presetTemp->eg[k].rr=v; - fscanf(file, "%x", &v);//4 - presetTemp->eg[k].d1l=v; - fscanf(file, "%x", &v);//5 - presetTemp->scaling.level[k]=v; - fscanf(file, "%x", &v);//6 - presetTemp->sensitivity.keyVelocity[k]= - v & 0x7; - presetTemp->sensitivity.egBias[k]= - (v & 0x38)>>3; - presetTemp->sensitivity.ampOn[k]= - (v & 0x40)>>6; - fscanf(file, "%x", &v);//7 - presetTemp->outLevel[k]=v; - fscanf(file, "%x", &v);//8 - crs[k]=v; - fscanf(file, "%x", &v);//9 - presetTemp->detune[k]=(v & 0x7)-3; - presetTemp->scaling.rate[k]=(v & 0x18)>>3; - } - fscanf(file, "%x", &v);//40 - presetTemp->algorithm= - ((v & 0x7)==0?FIRST: - ((v & 0x7)==1?SECOND: - ((v & 0x7)==2?THIRD: - ((v & 0x7)==3?FOURTH: - ((v & 0x7)==4?FIFTH: - ((v & 0x7)==5?SIXTH: - ((v & 0x7)==6?SEVENTH:EIGHTH))))))); - presetTemp->feedback=(v & 0x38)>>3; - presetTemp->lfo.sync=(v & 0x40)>>6; - fscanf(file, "%x", &v);//41 - presetTemp->lfo.speed=v; - fscanf(file, "%x", &v);//42 - presetTemp->lfo.delay=v; - fscanf(file, "%x", &v);//43 - presetTemp->lfo.pModDepth=v; - fscanf(file, "%x", &v);//44 - presetTemp->lfo.aModDepth=v; - fscanf(file, "%x", &v);//45 - presetTemp->lfo.wave= - ((v & 0x3)==0?SAWUP: - ((v & 0x3)==1?SQUARE: - ((v & 0x3)==2?TRIANGL:SHOLD))); - presetTemp->sensitivity.amplitude=(v & 0xc)>>2; - presetTemp->sensitivity.pitch=(v & 0x70)>>4; - fscanf(file, "%x", &v);//46 - presetTemp->function.transpose=v-24; - fscanf(file, "%x", &v);//47 - presetTemp->function.pBendRange=v; - fscanf(file, "%x", &v);//48 - presetTemp->function.portamento= - ((v & 0x1)==0?FULL:FINGER); - presetTemp->function.footSw= - ((v & 0x4)==0?SUS:POR); - presetTemp->function.mode= - ((v & 0x8)==0?POLY:MONO); - fscanf(file, "%x", &v);//49 - presetTemp->function.portamentoTime=v; - fscanf(file, "%x", &v);//50 - presetTemp->function.fcVolume=v; - fscanf(file, "%x", &v);//51 - presetTemp->function.mwPitch=v; - fscanf(file, "%x", &v);//52 - presetTemp->function.mwAmplitude=v; - fscanf(file, "%x", &v);//53 - presetTemp->function.bcPitch=v; - fscanf(file, "%x", &v);//54 - presetTemp->function.bcAmplitude=v; - fscanf(file, "%x", &v);//55 - presetTemp->function.bcPitchBias=v; - fscanf(file, "%x", &v);//56 - presetTemp->function.bcEgBias=v; - for(int l=0; l<10; l++) - { - fscanf(file, "%x", &v);//57 to 66 - sname[l]=(char)v; - } - sname[10]='\0'; - presetTemp->name=sname; - fscanf(file, "%x", &v);//67 - presetTemp->pitchEg.pr1=v; - fscanf(file, "%x", &v);//68 - presetTemp->pitchEg.pr2=v; - fscanf(file, "%x", &v);//69 - presetTemp->pitchEg.pr3=v; - fscanf(file, "%x", &v);//70 - presetTemp->pitchEg.pl1=v; - fscanf(file, "%x", &v);//71 - presetTemp->pitchEg.pl1=v; - fscanf(file, "%x", &v);//72 - presetTemp->pitchEg.pl1=v; - for(int kaka=(NBROP-1); kaka>=0; kaka--) - { - k=(kaka==2?1:(kaka==1?2:kaka)); - - fscanf(file, "%x", &v);//73, 75, 77, 79 - presetTemp->frequency[k].isFix=(v & 0x8)>>3; - presetTemp->frequency[k].freq=((v & 0x7)==0?8:(v & 0x7)*16); - presetTemp->eg[k].egShift= - (((v & 0x30)>>4)==0?VOF: - (((v & 0x30)>>4)==1?V48: - (((v & 0x30)>>4)==2?V24:V12))); - fscanf(file, "%x", &v);//74, 76, 78, 80 - fin[k]=v & 0xF; - presetTemp->frequency[k].freq+=fin[k]; - presetTemp->frequency[k].ratio= - coarseFine2Ratio(crs[k],fin[k]); - presetTemp->oscWave[k]= - (((v & 0x70)>>4)==0?W1: - (((v & 0x70)>>4)==1?W2: - (((v & 0x70)>>4)==2?W3: - (((v & 0x70)>>4)==3?W4: - (((v & 0x70)>>4)==4?W5: - (((v & 0x70)>>4)==5?W6: - (((v & 0x70)>>4)==6?W7:W8))))))); - } - fscanf(file, "%x", &v);//81 - presetTemp->function.reverbRate=v; - fscanf(file, "%x", &v);//82 - presetTemp->function.fcPitch=v; - fscanf(file, "%x", &v);//83 - presetTemp->function.fcAmplitude=v; - //presetTemp->globalDetune=0; - presetTemp->prog=nPreset; - // End of filling the preset - - nPreset++; - while(fgets(s, 500, file) && !strstr(s, "** Source:")) - { - if (strstr(s,"* CATEGORY")) - { - sscanf(s, "* CATEGORY %s", scategory); - nhBank++; - categoryTemp=new Category(_set,scategory,nhBank); - nlBank=0; - } - if (strstr(s,"* SUBCATEGORY")) - { - sscanf(s, "* SUBCATEGORY %s", ssubcategory); - subcategoryTemp=new - Subcategory(categoryTemp,ssubcategory,nlBank); - nlBank++; - nPreset=0; - } - } - } - } - fclose(file); -} - -//--------------------------------------------------------- -// minVolu2Voice -// return the number of the voice which is the least aloud -// and is not is the ATTACK state -//--------------------------------------------------------- -int DeicsOnze::minVolu2Voice(int c) { - int minVoice=0; - double min=MAXVOLUME; - for(int i=0; i<_global.channel[c].nbrVoices; i++) - { - min=((min>_global.channel[c].voices[i].volume - && _global.channel[c].voices[i].op[0].envState!=ATTACK - && _global.channel[c].voices[i].op[1].envState!=ATTACK - && _global.channel[c].voices[i].op[2].envState!=ATTACK - && _global.channel[c].voices[i].op[3].envState!=ATTACK)? - _global.channel[c].voices[i].volume:min); - minVoice=(min==_global.channel[c].voices[i].volume?i:minVoice); - } - return minVoice; -} - -//--------------------------------------------------------- -// noteOff2Voice -// return the number of one off voice, MAXNBRVOICES otherwise -//--------------------------------------------------------- -int DeicsOnze::noteOff2Voice(int c) { - int offVoice=MAXNBRVOICES; - for(int i=0; i<_global.channel[c].nbrVoices; i++) - offVoice = (_global.channel[c].voices[i].isOn - || _global.channel[c].voices[i].keyOn? - offVoice:i); - return offVoice; -} - -//--------------------------------------------------------- -// pitchOn2Voice -// return the number of the voice which has the input -// pitch and is keyOn -//--------------------------------------------------------- -int DeicsOnze::pitchOn2Voice(int c, int pitch) { - int pitchVoice=MAXNBRVOICES; - for(int i=0; i<_global.channel[c].nbrVoices; i++) { - if(_global.channel[c].voices[i].pitch== - pitch && _global.channel[c].voices[i].keyOn - && !_global.channel[c].voices[i].isSustained) { - pitchVoice = i; - return pitchVoice; - } - } - return pitchVoice; -} - -//--------------------------------------------------------- -// getAttractor -//--------------------------------------------------------- -inline double getAttractor(int portamentoTime, double sr) { - /* some explanations - - c(48000) = c > 1 - - f_sr(0) = 1000, f_sr(t) = 2000 - - f_sr*2(0) = 1000, f_sr*2(t*2) = 2000 - - f_sr(t) = exp(t*ln(c(sr))) * 1000 - - 2000 = exp(t*ln(c(48000))) * 1000 - - 2000 = exp(t*2*ln(c(48000*2))) * 1000 - - t*ln(c(48000)) = t*2*ln(c(48000*2)) - - c(48000*m) = exp(ln(c)/m) - - sr = 48000*m - */ - double c; - c = 1.0 + COEFPORTA/(double)(portamentoTime*portamentoTime); - return(exp(log(c)*48000.0/sr)); -} - -//--------------------------------------------------------- -// pitch2freq -//--------------------------------------------------------- -inline double pitch2freq(double p) { - return(LOWERNOTEFREQ*exp(p*log(2.0)/12.0)); -} - -//--------------------------------------------------------- -// lfoUpdate -// update the coefficent which multiplies the current inct -// in order to -// get the right current frequency with respect to the lfo -// update the coefficent which multiplies the amplitude. -//--------------------------------------------------------- -inline void lfoUpdate(Preset* p, Channel* p_c, float* wt) { - double delayCoef; - - //Manage LFO delay - if(!p_c->delayPassed) { - if(p_c->lfoIndex==0 || p_c->lfoIndex==p_c->lfoMaxIndex/2) { - if(p_c->lfoDelayIndex<(double)(RESOLUTION/4)) { - delayCoef=(double)wt[(int)p_c->lfoDelayIndex]; - p_c->lfoMaxCoefInct=exp((log(2.0)/12.0)*p_c->lfoPitch*delayCoef); - p_c->lfoCoefInctInct= - exp((log(2.0)/12.0)*((2*p_c->lfoPitch*delayCoef)/p_c->lfoMaxIndex)); - p_c->lfoDelayIndex+=p_c->lfoDelayInct; - p_c->lfoMaxDAmp=delayCoef*p_c->lfoMaxAmp; - } - else { - p_c->lfoMaxCoefInct=exp((log(2.0)/12.0)*p_c->lfoPitch); - p_c->lfoCoefInctInct= - exp((log(2.0)/12.0)*((2*p_c->lfoPitch)/p_c->lfoMaxIndex)); - p_c->delayPassed=true; - p_c->lfoMaxDAmp=p_c->lfoMaxAmp; - } - } - } - switch(p->lfo.wave) { - case SAWUP : - if(p_c->lfoIndex==0) { - p_c->lfoCoefInct=1.0/(p_c->lfoMaxCoefInct); - p_c->lfoCoefAmp=p_c->lfoMaxDAmp/(double)p_c->lfoMaxIndex; - p_c->lfoAmp=1.0; - } - else { - p_c->lfoCoefInct*=p_c->lfoCoefInctInct; - p_c->lfoAmp-=p_c->lfoCoefAmp; - } - break; - case SQUARE : - if(p_c->lfoIndex==0) { - p_c->lfoCoefInct=p_c->lfoMaxCoefInct; - p_c->lfoAmp=1.0; - } - if(p_c->lfoIndex==(p_c->lfoMaxIndex/2)) { - p_c->lfoCoefInct=1.0/p_c->lfoMaxCoefInct; - p_c->lfoAmp=1.0-p_c->lfoMaxDAmp; - } - break; - case TRIANGL : - if(p_c->lfoIndex==0) { - p_c->lfoCoefInct=1.0; - p_c->lfoCoefAmp=p_c->lfoMaxDAmp - /(double)(p_c->lfoMaxIndex/2); - p_c->lfoAmp=1.0-p_c->lfoMaxDAmp/2.0; - } - else if(p_c->lfoIndex<(p_c->lfoMaxIndex/4)) { - p_c->lfoCoefInct*=p_c->lfoCoefInctInct; - p_c->lfoAmp-=p_c->lfoCoefAmp; - } - else if(p_c->lfoIndex<((3*p_c->lfoMaxIndex)/4)) { - p_c->lfoCoefInct/=p_c->lfoCoefInctInct; - p_c->lfoAmp+=p_c->lfoCoefAmp; - } - else if(p_c->lfoIndexlfoMaxIndex) { - p_c->lfoCoefInct*=p_c->lfoCoefInctInct; - p_c->lfoAmp-=p_c->lfoCoefAmp; - } - break; - case SHOLD : - if(p_c->lfoIndex==0||p_c->lfoIndex==(p_c->lfoMaxIndex/2)) { - double r;//uniform random between -1.0 and 1.0 - r = (double)(2*rand()-RAND_MAX)/(double)RAND_MAX; - p_c->lfoCoefInct=(r>=0.0?1.0+r*(p_c->lfoMaxCoefInct-1.0) - :1.0/(1.0-r*(p_c->lfoMaxCoefInct-1.0))); - p_c->lfoAmp=1.0-(r/2.0+0.5)*p_c->lfoMaxDAmp; - } - break; - default : printf("Error : lfo wave does not exist\n"); - break; - } - p_c->lfoIndex=(p_c->lfoIndexlfoMaxIndex?p_c->lfoIndex+1:0); -} - -//--------------------------------------------------------- -// portamento update -//--------------------------------------------------------- -inline void portamentoUpdate(Channel* p_c, Voice* p_v) { - double inctTemp; - bool allTargetReached; - if(p_v->hasAttractor) { - allTargetReached = true; - for(int k = 0; kop[k].inct < p_v->op[k].targetInct) { - inctTemp = p_v->op[k].inct * p_v->attractor; - if(inctTemp < p_v->op[k].targetInct) { - allTargetReached = false; - p_v->op[k].inct = inctTemp; - } - else p_v->op[k].inct = p_v->op[k].targetInct; - } - else if(p_v->op[k].inct > p_v->op[k].targetInct) { - inctTemp = p_v->op[k].inct / p_v->attractor; - if(inctTemp > p_v->op[k].targetInct) { - allTargetReached = false; - p_v->op[k].inct = inctTemp; - } - else p_v->op[k].inct = p_v->op[k].targetInct; - } - p_c->lastInc[k] = p_v->op[k].inct; - } - if(allTargetReached) p_v->hasAttractor = false; - } -} - - -//--------------------------------------------------------- -// pitchEnvelopeUpdate -//--------------------------------------------------------- -inline void pitchEnvelopeUpdate(Voice* v, PitchEg* pe, double sr) { - if(v->pitchEnvState != OFF_PE) { - switch(v->pitchEnvState) { - case PHASE1 : - if( //change to phase2 - (v->pitchEnvCoefInctInct == 1.0) - || (v->pitchEnvCoefInctInct > 1.0 && - v->pitchEnvCoefInct > v->pitchEnvCoefInctPhase2) - || (v->pitchEnvCoefInctInct < 1.0 && - v->pitchEnvCoefInct < v->pitchEnvCoefInctPhase2) - ) { - v->pitchEnvState = PHASE2; - v->pitchEnvCoefInct = getPitchEnvCoefInct(pe->pl2); - v->pitchEnvCoefInctInct = - getPitchEnvCoefInctInct(pe->pl2, pe->pl3, pe->pr2, sr); - } - else v->pitchEnvCoefInct *= v->pitchEnvCoefInctInct; - break; - case PHASE2 : - if( //change to off (temporarely) - (v->pitchEnvCoefInctInct == 1.0) - || (v->pitchEnvCoefInctInct > 1.0 && - v->pitchEnvCoefInct > v->pitchEnvCoefInctPhase3) - || (v->pitchEnvCoefInctInct < 1.0 && - v->pitchEnvCoefInct < v->pitchEnvCoefInctPhase3) - ) { - v->pitchEnvState = OFF_PE; - v->pitchEnvCoefInct = getPitchEnvCoefInct(pe->pl3); - v->pitchEnvCoefInctInct = 1.0; - } - else v->pitchEnvCoefInct *= v->pitchEnvCoefInctInct; - break; - case RELEASE_PE : - if( //change to release2 - (v->pitchEnvCoefInctInct == 1.0) - || (v->pitchEnvCoefInctInct > 1.0 && - v->pitchEnvCoefInct > v->pitchEnvCoefInctPhase1) - || (v->pitchEnvCoefInctInct < 1.0 && - v->pitchEnvCoefInct < v->pitchEnvCoefInctPhase1) - ) { - v->pitchEnvState = OFF_PE; - v->pitchEnvCoefInct = getPitchEnvCoefInct(pe->pl1); - v->pitchEnvCoefInctInct = 1.0; - } - else v->pitchEnvCoefInct *= v->pitchEnvCoefInctInct; - break; - case OFF_PE : - //do nothing, should not appear anyway - break; - default : - printf("Error switch pitchEnvelopeUpdate, no such case\n"); - break; - } - } -} - -//--------------------------------------------------------- -// outLevel2Amp, Amp for amplitude //between 0.0 and 2.0 or more -// 100->2.0, 90->1.0, 80->0.5 ... -//--------------------------------------------------------- -inline double outLevel2Amp(int ol) { - double a; - double b; - a = log(2)/10.0; - b = -a*DB0LEVEL; - return exp(a*(double)ol+b); -} - -//--------------------------------------------------------- -// lowlevel2amp, -// 127->0dB->1.0, 0->-25dB->0 -//--------------------------------------------------------- -inline double lowlevel2amp(int l) { - double a, b, c, db; - if(l==0) return 0.0; - else { - a = DB_MIN/127.0; - b = -DB_MIN; - db = a*l+b; - c = -log(2)/3; - return exp(-c*db); - } -} - -//--------------------------------------------------------- -// level2amp, -// 255->0dB->1.0, 0->-25dB->0 -//--------------------------------------------------------- -inline double level2amp(int l) { - double a, b, c, db; - if(l==0) return 0.0; - else { - a = DB_MIN/255.0; - b = -DB_MIN; - db = a*l+b; - c = -log(2.0)/3.0; - return exp(-c*db); - } -} - -//--------------------------------------------------------- -// amp2level -// 1.0->0dB->255, 0->-25dB->0 -//--------------------------------------------------------- -inline int amp2level(double amp){ - double a, b, c; - a = 255.0/DB_MIN; - b = 255.0; - c = log(2.0)/3.0; - return (int)(a*(log(amp)/c)+b); -} - -//--------------------------------------------------------- -// amp2lowlevel -// 1.0->0dB->127, 0->-25dB->0 -//--------------------------------------------------------- -inline int amp2lowlevel(double amp){ - double a, b, c; - a = 127.0/DB_MIN; - b = 127.0; - c = log(2.0)/3.0; - return (int)(a*(log(amp)/c)+b); -} - -//--------------------------------------------------------- -// velo2RAmp, AmpR between 0.0 and 1.0 -// return an amplitude ratio with respect to _preset->sensitivity.keyVelocity -//--------------------------------------------------------- -inline double velo2AmpR(int velo, int kvs) { - double lev; - lev = exp(-log(2)*kvs); - return (lev+(1.0-lev)*((double)velo/(double)MAXVELO)); -} - -//--------------------------------------------------------- -// envAR2s -// return the time in second of the ATTACK duration -//--------------------------------------------------------- -inline double envAR2s(int ar) { - //determined using the fitting feature of gnuplot - return 10.4423*exp(-0.353767*ar); -} - -//--------------------------------------------------------- -// envD1R2coef -// return the coefficient for the exponential decrease -// with respect to d1r and sampleRate, sr -//--------------------------------------------------------- -inline double envD1R2coef(int d1r, double sr) { - double dt;//such that amp(t+dt)=amp(t)/2 - double alpha;//such that amp(t)=exp(alpha*t) - - if(d1r==0) return 1.0; - else - { - //dt has been determined with the fitting function of gnuplot - dt=9.80715*exp(-0.356053*(double)d1r); - - //amp(0)=1 - //amp(t+dt)=amp(t)/2 - //amp(t)=exp(alpha*t) - //amp(t+mt) - //following the above equational system we found : - alpha=-log(2)/dt; - return exp(alpha/sr); - } -} - -//--------------------------------------------------------- -// coefRelease -// convert the release value to a coef for coefVLevel -//--------------------------------------------------------- -inline double coefRelease(unsigned char release) { - double x = COEFGRELEASE*(double)release/(double)MIDRELEASE+1.0-COEFGRELEASE; - double square_x = x*x; - return(1.0/(square_x*x)); -} - -//--------------------------------------------------------- -// envRR2coef -// return the coefficient for the exponential decrease -// with respect to rr and sampleRate, sr -//--------------------------------------------------------- -inline double envRR2coef(int rr, double sr, unsigned char release) { - double dt;//such that amp(t+dt)=amp(t)/2 - double alpha;//such that amp(t)=exp(alpha*t) - - //dt has been determined with the fitting function of gnuplot - dt=7.06636*exp(-0.697606*(double)rr); - - dt*=coefRelease(release); - //printf("demi life = %e\n", dt); - //amp(0)=1 - //amp(t+dt)=amp(t)/2 - //amp(t)=exp(alpha*t) - //amp(t+mt) - //following the above equational system we found : - alpha=-log(2)/dt; - return exp(alpha/sr); -} - -//--------------------------------------------------------- -// coefAttack -// convert the attack value to a coef for envInct -//--------------------------------------------------------- -inline double coefAttack(unsigned char attack) { - double x = COEFGATTACK*(double)attack/(double)MIDATTACK + 1.0-COEFGATTACK; - double square_x = x*x; - return(square_x*square_x*x); -} - -//--------------------------------------------------------- -// env2RAmp -// return the amplitude ratio with respect to an envelope and an -// envelope state, making evoluate the envelope -// sr is the sample rate and st the sine_table -//--------------------------------------------------------- -inline double env2AmpR(double sr, float* wt, Eg eg, OpVoice* p_opVoice) { - switch(p_opVoice->envState) { - case ATTACK: - p_opVoice->envIndex+=p_opVoice->envInct; - if (p_opVoice->envIndex<(RESOLUTION/4)) { - p_opVoice->envLevel=wt[(int)p_opVoice->envIndex]; - } - else { - p_opVoice->envState=DECAY; - p_opVoice->envLevel=1.0; - p_opVoice->coefVLevel=envD1R2coef(eg.d1r, sr); - } - return p_opVoice->envLevel; - break; - case DECAY: - if (p_opVoice->envLevel>((double)eg.d1l/(double)MAXD1L)+COEFERRDECSUS) { - p_opVoice->envLevel*=p_opVoice->coefVLevel; - } - else { - p_opVoice->envState=SUSTAIN; - p_opVoice->envLevel=((double)eg.d1l/(double)MAXD1L); - p_opVoice->coefVLevel=envD1R2coef(eg.d2r, sr);//probably the same - } - return p_opVoice->envLevel; - break; - case SUSTAIN: - if (p_opVoice->envLevel>COEFERRSUSREL) { - p_opVoice->envLevel*=p_opVoice->coefVLevel; - } - else { - p_opVoice->envState=OFF; - p_opVoice->envLevel=0.0; - } - return p_opVoice->envLevel; - break; - case RELEASE: - if (p_opVoice->envLevel > COEFERRSUSREL) { - p_opVoice->envLevel*=p_opVoice->coefVLevel; - } - else { - p_opVoice->envState=OFF; - p_opVoice->envLevel=0.0; - } - return p_opVoice->envLevel; - break; - case OFF: return 0.0; - break; - default: printf("Error case envelopeState"); - break; - } - return p_opVoice->envLevel; -} - -//--------------------------------------------------------- -// programSelect -//--------------------------------------------------------- - -void DeicsOnze::programSelect(int c, int hbank, int lbank, int prog) { - Preset* foundPreset; - foundPreset=findPreset(hbank, lbank, prog); - if (foundPreset) _preset[c]=foundPreset; - else { - _preset[c]=_initialPreset; - _preset[c]->prog=prog; - _preset[c]->_subcategory->_lbank=lbank; //TODO : real link - _preset[c]->_subcategory->_category->_hbank=hbank; - } - setPreset(c); -} - -//--------------------------------------------------------- -// setModulation -//--------------------------------------------------------- -void DeicsOnze::setModulation(int c, int val) { - _global.channel[c].modulation = (unsigned char) val; - setLfo(c); -} -//--------------------------------------------------------- -// setPitchBendCoef -//--------------------------------------------------------- -void DeicsOnze::setPitchBendCoef(int c, int val) { - _global.channel[c].pitchBendCoef = - exp(log(2)*((double)_preset[c]->function.pBendRange - /(double)MAXPBENDRANGE) - *((double)val/(double)MAXPITCHBENDVALUE)); -} - -//--------------------------------------------------------- -// setSustain -//--------------------------------------------------------- -void DeicsOnze::setSustain(int c, int val) { - _global.channel[c].sustain=(val>64); - if(!_global.channel[c].sustain) - for(int i=0; i<_global.channel[c].nbrVoices; i++) - if(_global.channel[c].voices[i].isSustained) { - for(int j=0; jwriteEvent(evNbrVoices); - }*/ - //channelNum - /* - if(qdEl.tagName()==CHANNELNUMSTR) { - _global.channelNum = (qdEl.text()==ALLSTR?-1:qdEl.text().toInt()-1); - unsigned char *dataChannelNum = new unsigned char[2]; - dataChannelNum[0]=SYSEX_CHANNELNUM; - dataChannelNum[1]=(unsigned char)_global.channelNum; - MidiEvent - evChannelNum(0, ME_SYSEX, (const unsigned char*)dataChannelNum, 2); - _gui->writeEvent(evChannelNum); - }*/ - //quality - if(qdEl.tagName()==QUALITYSTR) { - _global.quality = (qdEl.text()==HIGHSTR?high: - (qdEl.text()==MIDDLESTR?middle: - (qdEl.text()==LOWSTR?low:ultralow))); - setQuality(_global.quality); - unsigned char *dataQuality = new unsigned char[2]; - dataQuality[0]=SYSEX_QUALITY; - dataQuality[1]=(unsigned char)_global.quality; - MidiEvent evQuality(0, ME_SYSEX, (const unsigned char*)dataQuality, 2); - _gui->writeEvent(evQuality); - } - //filter - if(qdEl.tagName()==FILTERSTR) { - setFilter(qdEl.text()==YESSTRDEI?true:false); - unsigned char *dataFilter = new unsigned char[2]; - dataFilter[0]=SYSEX_FILTER; - dataFilter[1]=(unsigned char)getFilter(); - MidiEvent evFilter(0, ME_SYSEX, (const unsigned char*)dataFilter, 2); - _gui->writeEvent(evFilter); - } - //font size - if(qdEl.tagName()==FONTSIZESTR) { - _global.fontSize = qdEl.text().toInt(); - unsigned char *dataFontSize = new unsigned char[2]; - dataFontSize[0]=SYSEX_FONTSIZE; - dataFontSize[1]=(unsigned char)_global.fontSize; - MidiEvent evFontSize(0, ME_SYSEX, (const unsigned char*)dataFontSize, 2); - _gui->writeEvent(evFontSize); - } - //saveConfig - if(qdEl.tagName()==SAVECONFIGSTR) { - _saveConfig = (qdEl.text()==YESSTRDEI?true:false); - unsigned char *dataSaveConfig = new unsigned char[2]; - dataSaveConfig[0]=SYSEX_SAVECONFIG; - dataSaveConfig[1]=(unsigned char)_saveConfig; - MidiEvent - evSaveConfig(0, ME_SYSEX, (const unsigned char*)dataSaveConfig, 2); - _gui->writeEvent(evSaveConfig); - } - //saveOnlyUsed - if(qdEl.tagName()==SAVEONLYUSEDSTR) { - _saveOnlyUsed = (qdEl.text()==YESSTRDEI?true:false); - unsigned char *dataSaveOnlyUsed = new unsigned char[2]; - dataSaveOnlyUsed[0]=SYSEX_SAVEONLYUSED; - dataSaveOnlyUsed[1]=(unsigned char)_saveOnlyUsed; - MidiEvent - evSaveOnlyUsed(0, ME_SYSEX, (const unsigned char*)dataSaveOnlyUsed, 2); - _gui->writeEvent(evSaveOnlyUsed); - } - //colors - if(qdEl.tagName()==TEXTCOLORSTR) textColor = readColor(qdn); - if(qdEl.tagName()==BACKGROUNDCOLORSTR) backgroundColor = readColor(qdn); - if(qdEl.tagName()==EDITTEXTCOLORSTR) editTextColor = readColor(qdn); - if(qdEl.tagName()==EDITBACKGROUNDCOLORSTR) - editBackgroundColor = readColor(qdn); - - //must insert load image, later - - //load init set - if(qdEl.tagName()==ISINITSETSTR) { - _isInitSet = (qdEl.text()==YESSTRDEI?true:false); - unsigned char *dataIsInitSet = new unsigned char[2]; - dataIsInitSet[0]=SYSEX_ISINITSET; - dataIsInitSet[1]=(unsigned char)_isInitSet; - MidiEvent - evIsInitSet(0, ME_SYSEX, (const unsigned char*)dataIsInitSet, 2); - _gui->writeEvent(evIsInitSet); - } - if(qdEl.tagName()==INITSETPATHSTR) { - _initSetPath = qdEl.text(); - unsigned char *dataInitSetPath = - new unsigned char[1+MAXSTRLENGTHINITSETPATH]; - dataInitSetPath[0]=SYSEX_INITSETPATH; - strncpy((char*)&dataInitSetPath[1], _initSetPath.toLatin1().data(), - MAXSTRLENGTHINITSETPATH); - MidiEvent - evInitSetPath(0, ME_SYSEX, (const unsigned char*)dataInitSetPath, - 1+MAXSTRLENGTHINITSETPATH); - _gui->writeEvent(evInitSetPath); - } - //load background pix - if(qdEl.tagName()==ISBACKGROUNDPIXSTR) { - _isBackgroundPix = (qdEl.text()==YESSTRDEI?true:false); - unsigned char *dataIsBackgroundPix = new unsigned char[2]; - dataIsBackgroundPix[0]=SYSEX_ISBACKGROUNDPIX; - dataIsBackgroundPix[1]=(unsigned char)_isBackgroundPix; - MidiEvent - evIsBackgroundPix(0, ME_SYSEX, - (const unsigned char*)dataIsBackgroundPix, 2); - _gui->writeEvent(evIsBackgroundPix); - } - if(qdEl.tagName()==BACKGROUNDPIXPATHSTR) { - _backgroundPixPath = qdEl.text(); - unsigned char *dataBackgroundPixPath = - new unsigned char[1+MAXSTRLENGTHBACKGROUNDPIXPATH]; - dataBackgroundPixPath[0]=SYSEX_BACKGROUNDPIXPATH; - strncpy((char*)&dataBackgroundPixPath[1], - _backgroundPixPath.toLatin1().data(), - MAXSTRLENGTHBACKGROUNDPIXPATH); - MidiEvent - evBackgroundPixPath(0, ME_SYSEX, - (const unsigned char*)dataBackgroundPixPath, - 1+MAXSTRLENGTHBACKGROUNDPIXPATH); - _gui->writeEvent(evBackgroundPixPath); - } - qdn = qdn.nextSibling(); - } - //send colors - unsigned char dataColorGui[COLORSYSEXLENGTH+1]; - dataColorGui[0]=SYSEX_COLORGUI; - dataColorGui[1]=(unsigned char)textColor.red(); - dataColorGui[2]=(unsigned char)textColor.green(); - dataColorGui[3]=(unsigned char)textColor.blue(); - dataColorGui[4]=(unsigned char)backgroundColor.red(); - dataColorGui[5]=(unsigned char)backgroundColor.green(); - dataColorGui[6]=(unsigned char)backgroundColor.blue(); - dataColorGui[7]=(unsigned char)editTextColor.red(); - dataColorGui[8]=(unsigned char)editTextColor.green(); - dataColorGui[9]=(unsigned char)editTextColor.blue(); - dataColorGui[10]=(unsigned char)editBackgroundColor.red(); - dataColorGui[11]=(unsigned char)editBackgroundColor.green(); - dataColorGui[12]=(unsigned char)editBackgroundColor.blue(); - MidiEvent evSysexColor(0, ME_SYSEX, (const unsigned char*)dataColorGui, - COLORSYSEXLENGTH+1); - _gui->writeEvent(evSysexColor); -} - -//----------------------------------------------------------- -// loadConfiguration -//----------------------------------------------------------- -void DeicsOnze::loadConfiguration(QString fileName) { - // read the XML file and create DOM tree - if(!fileName.isEmpty()) { - QFile confFile(fileName); - if(!confFile.open(QIODevice::ReadOnly)) { - printf("Critical Error. Cannot open file %s\n", - fileName.toAscii().data()); - return; - } - QDomDocument domTree; - if (!domTree.setContent(&confFile )) { - printf("Critical Error. Parsing error for file %s\n", - fileName.toAscii().data()); - confFile.close(); - return; - } - - confFile.close(); - - QDomNode node = domTree.documentElement(); - while (!node.isNull()) { - QDomElement e = node.toElement(); - if (e.isNull()) - continue; - if (e.tagName() == DEICSONZECONFIGURATIONSTR) { - QString version = e.attribute(QString("version")); - if (version == "1.0") { - readConfiguration(node.firstChild()); - } - else printf("unsupported *.dco file version %s\n", - version.toLatin1().data()); - } - else printf("DeicsOnze: %s not supported\n", - e.tagName().toLatin1().data()); - node = node.nextSibling(); - } - } -} - -//--------------------------------------------------------- -// writeConfiguration -//--------------------------------------------------------- -void DeicsOnze::writeConfiguration(AL::Xml* xml) { - QString str; - xml->stag("deicsOnzeConfiguation version=\"1.0\""); - //xml->intTag(NBRVOICESSTR, (int)_global.nbrVoices); - //xml->strTag(CHANNELNUMSTR, (_global.channelNum==-1?ALLSTR: - // str.setNum(_global.channelNum+1))); - xml->tag(QUALITYSTR, QString((_global.quality==high?HIGHSTR: - (_global.quality==middle?MIDDLESTR: - (_global.quality==low?LOWSTR:ULTRALOWSTR))))); - xml->tag(FILTERSTR, QString(getFilter()==true?YESSTRDEI:NOSTRDEI)); - xml->tag(FONTSIZESTR, _global.fontSize); - xml->tag(SAVECONFIGSTR, QString((_saveConfig?YESSTRDEI:NOSTRDEI))); - xml->tag(SAVEONLYUSEDSTR, QString((_saveOnlyUsed?YESSTRDEI:NOSTRDEI))); - xml->tag(TEXTCOLORSTR, - reinterpret_cast(*_gui->tColor)); - xml->tag(BACKGROUNDCOLORSTR, - reinterpret_cast(*_gui->bColor)); - xml->tag(EDITTEXTCOLORSTR, - reinterpret_cast(*_gui->etColor)); - xml->tag(EDITBACKGROUNDCOLORSTR, - reinterpret_cast(*_gui->ebColor)); - xml->tag(ISINITSETSTR, QString((_isInitSet?YESSTRDEI:NOSTRDEI))); - xml->tag(INITSETPATHSTR, QString(_initSetPath)); - xml->tag(ISBACKGROUNDPIXSTR, QString((_isBackgroundPix?YESSTRDEI:NOSTRDEI))); - xml->tag(BACKGROUNDPIXPATHSTR, _backgroundPixPath); - - xml->etag(DEICSONZECONFIGURATIONSTR); -} - -//--------------------------------------------------------- -// getInitData -//--------------------------------------------------------- -void DeicsOnze::getInitData(int* length, const unsigned char** data) { - - //write the set in a temporary file and in a QByteArray - QTemporaryFile file; - file.open(); - AL::Xml* xml=new AL::Xml(&file); - xml->header(); - _set->writeSet(xml, _saveOnlyUsed); - file.reset(); //seek the start of the file - QByteArray ba = file.readAll(); - file.close(); - - //compress the QByteArray at default rate - QByteArray baComp = qCompress(ba); - - //save the set - *length = NUM_CONFIGLENGTH - + (_pluginIReverb?sizeof(float)*_pluginIReverb->plugin()->parameter():0) - + (_pluginIChorus?sizeof(float)*_pluginIChorus->plugin()->parameter():0) - + baComp.size(); - - unsigned char* buffer = new unsigned char[*length]; - //save init data - buffer[0]=SYSEX_INIT_DATA; - buffer[1]=SYSEX_INIT_DATA_VERSION; - //save global data - buffer[NUM_MASTERVOL] = (unsigned char) getMasterVol(); - for(int c = 0; c < NBRCHANNELS; c++) { - buffer[NUM_CHANNEL_ENABLE + c] = (unsigned char) getChannelEnable(c); - buffer[NUM_CHANNEL_VOL + c] = (unsigned char) getChannelVol(c); - buffer[NUM_CHANNEL_PAN + c] = (unsigned char) getChannelPan(c); - int b = getChannelBrightness(c); - buffer[NUM_CHANNEL_BRIGHTNESS + 2*c] = (unsigned char) (b%256); - buffer[NUM_CHANNEL_BRIGHTNESS + 2*c + 1] = (unsigned char) (b/256); - buffer[NUM_CHANNEL_MODULATION + c] = - (unsigned char) getChannelModulation(c); - buffer[NUM_CHANNEL_DETUNE + c] = - (unsigned char) getChannelDetune(c) + MAXCHANNELDETUNE; - buffer[NUM_CHANNEL_ATTACK + c] = (unsigned char) getChannelAttack(c); - buffer[NUM_CHANNEL_RELEASE + c] = (unsigned char) getChannelRelease(c); - buffer[NUM_CHANNEL_REVERB + c] = (unsigned char) getChannelReverb(c); - buffer[NUM_CHANNEL_CHORUS + c] = (unsigned char) getChannelChorus(c); - buffer[NUM_CHANNEL_DELAY + c] = (unsigned char) getChannelDelay(c); - buffer[NUM_CURRENTPROG + c] = (unsigned char) _preset[c]->prog; - buffer[NUM_CURRENTLBANK + c] = - (unsigned char) _preset[c]->_subcategory->_lbank; - buffer[NUM_CURRENTHBANK + c] = - (unsigned char) _preset[c]->_subcategory->_category->_hbank; - buffer[NUM_NBRVOICES + c] = (unsigned char) getNbrVoices(c); - } - buffer[NUM_SAVEONLYUSED]=(unsigned char) _saveOnlyUsed; - buffer[NUM_SAVECONFIG]=(unsigned char) _saveConfig; - //save config data - if(_saveConfig) { - buffer[NUM_QUALITY]=(unsigned char)_global.quality; - buffer[NUM_FILTER]=(unsigned char)getFilter(); - buffer[NUM_FONTSIZE]=(unsigned char)_global.fontSize; - buffer[NUM_RED_TEXT]=(unsigned char)_gui->tColor->red(); - buffer[NUM_GREEN_TEXT]=(unsigned char)_gui->tColor->green(); - buffer[NUM_BLUE_TEXT]=(unsigned char)_gui->tColor->blue(); - buffer[NUM_RED_BACKGROUND]=(unsigned char)_gui->bColor->red(); - buffer[NUM_GREEN_BACKGROUND]=(unsigned char)_gui->bColor->green(); - buffer[NUM_BLUE_BACKGROUND]=(unsigned char)_gui->bColor->blue(); - buffer[NUM_RED_EDITTEXT]=(unsigned char)_gui->etColor->red(); - buffer[NUM_GREEN_EDITTEXT]=(unsigned char)_gui->etColor->green(); - buffer[NUM_BLUE_EDITTEXT]=(unsigned char)_gui->etColor->blue(); - buffer[NUM_RED_EDITBACKGROUND]=(unsigned char)_gui->ebColor->red(); - buffer[NUM_GREEN_EDITBACKGROUND]=(unsigned char)_gui->ebColor->green(); - buffer[NUM_BLUE_EDITBACKGROUND]=(unsigned char)_gui->ebColor->blue(); - buffer[NUM_ISINITSET]=(unsigned char)_isInitSet; - strncpy((char*)&buffer[NUM_INITSETPATH], - _initSetPath.toLatin1().data(), MAXSTRLENGTHINITSETPATH); - buffer[NUM_ISBACKGROUNDPIX]=(unsigned char)_isBackgroundPix; - strncpy((char*)&buffer[NUM_BACKGROUNDPIXPATH], - _backgroundPixPath.toLatin1().data(), - MAXSTRLENGTHBACKGROUNDPIXPATH); - } - //FX - //reverb - buffer[NUM_IS_REVERB_ON]=(unsigned char)_global.isReverbActivated; - buffer[NUM_REVERB_RETURN]=(unsigned char)getReverbReturn(); - buffer[NUM_REVERB_PARAM_NBR]= - (_pluginIReverb?(unsigned char)_pluginIReverb->plugin()->parameter() : 0); - strncpy((char*)&buffer[NUM_REVERB_LIB], - (_pluginIReverb? - _pluginIReverb->plugin()->lib().toLatin1().data() : "\0"), - MAXSTRLENGTHFXLIB); - strncpy((char*)&buffer[NUM_REVERB_LABEL], - (_pluginIReverb? - _pluginIReverb->plugin()->label().toLatin1().data() : "\0"), - MAXSTRLENGTHFXLABEL); - //chorus - buffer[NUM_IS_CHORUS_ON]=(unsigned char)_global.isChorusActivated; - buffer[NUM_CHORUS_RETURN]=(unsigned char)getChorusReturn(); - buffer[NUM_CHORUS_PARAM_NBR]= - (_pluginIChorus?(unsigned char)_pluginIChorus->plugin()->parameter() : 0); - strncpy((char*)&buffer[NUM_CHORUS_LIB], - (_pluginIChorus? - _pluginIChorus->plugin()->lib().toLatin1().data() : "\0"), - MAXSTRLENGTHFXLIB); - strncpy((char*)&buffer[NUM_CHORUS_LABEL], - (_pluginIChorus? - _pluginIChorus->plugin()->label().toLatin1().data() : "\0"), - MAXSTRLENGTHFXLABEL); - //delay - buffer[NUM_IS_DELAY_ON]=(unsigned char)_global.isDelayActivated; - buffer[NUM_DELAY_RETURN]=(unsigned char)getDelayReturn(); - //save FX parameters - //reverb - for(int i = 0; i < (int)buffer[NUM_REVERB_PARAM_NBR]; i++) { - float val = (float)getReverbParam(i); - memcpy(&buffer[NUM_CONFIGLENGTH + sizeof(float)*i], &val, sizeof(float)); - } - //chorus - for(int i = 0; i < (int)buffer[NUM_CHORUS_PARAM_NBR]; i++) { - float val = (float)getChorusParam(i); - memcpy(&buffer[NUM_CONFIGLENGTH - + sizeof(float)*(int)buffer[NUM_REVERB_PARAM_NBR] - + sizeof(float)*i], &val, sizeof(float)); - } - //delay - float delayfloat; - delayfloat = getDelayBPM(); - memcpy(&buffer[NUM_DELAY_BPM], &delayfloat, 4); - delayfloat = getDelayBeatRatio(); - memcpy(&buffer[NUM_DELAY_BEATRATIO], &delayfloat, sizeof(float)); - delayfloat = getDelayFeedback(); - memcpy(&buffer[NUM_DELAY_FEEDBACK], &delayfloat, sizeof(float)); - delayfloat = getDelayLFOFreq(); - memcpy(&buffer[NUM_DELAY_LFO_FREQ], &delayfloat, sizeof(float)); - delayfloat = getDelayLFODepth(); - memcpy(&buffer[NUM_DELAY_LFO_DEPTH], &delayfloat, sizeof(float)); - - //save set data - int offset = - NUM_CONFIGLENGTH - + sizeof(float)*(int)buffer[NUM_REVERB_PARAM_NBR] - + sizeof(float)*(int)buffer[NUM_CHORUS_PARAM_NBR]; - for(int i = offset; i < *length; i++) - buffer[i]=(unsigned char)baComp.at(i - offset); - - *data=buffer; -} -//--------------------------------------------------------- -// parseInitData -//--------------------------------------------------------- -void DeicsOnze::parseInitData(int length, const unsigned char* data) { - if(data[1]==SYSEX_INIT_DATA_VERSION) { - //load global parameters - //master volume - setMasterVol(data[NUM_MASTERVOL]); - unsigned char *dataMasterVol = new unsigned char[2]; - dataMasterVol[0]=SYSEX_MASTERVOL; - dataMasterVol[1]=(unsigned char) getMasterVol(); - MidiEvent - evMasterVol(0, ME_SYSEX, (const unsigned char*)dataMasterVol, 2); - _gui->writeEvent(evMasterVol); - //channel configuration - for(int c = 0; c < NBRCHANNELS; c++) { - //isEnable - setChannelEnable(c, data[NUM_CHANNEL_ENABLE + c]); - MidiEvent - evChEnable(0, c, ME_CONTROLLER, - CTRL_CHANNELENABLE, data[NUM_CHANNEL_ENABLE + c]); - _gui->writeEvent(evChEnable); - //nbrVoices - setNbrVoices(c, data[NUM_NBRVOICES + c]); - MidiEvent - evNbrVoices(0,c,ME_CONTROLLER,CTRL_NBRVOICES, data[NUM_NBRVOICES + c]); - _gui->writeEvent(evNbrVoices); - //channel volume - setChannelVol(c, data[NUM_CHANNEL_VOL + c]); - MidiEvent - evChVol(0, c, ME_CONTROLLER, - CTRL_CHANNELVOLUME, data[NUM_CHANNEL_VOL + c]); - _gui->writeEvent(evChVol); - //channel pan - setChannelPan(c, data[NUM_CHANNEL_PAN + c]); - MidiEvent - evChPan(0, c, ME_CONTROLLER, CTRL_CHANNELPAN, - data[NUM_CHANNEL_PAN + c]); - _gui->writeEvent(evChPan); - if(getChannelEnable(c)) applyChannelAmp(c); - //channel detune - setChannelDetune(c, data[NUM_CHANNEL_DETUNE + c]-MAXCHANNELDETUNE); - MidiEvent - evChDetune(0, c, ME_CONTROLLER, CTRL_CHANNELDETUNE, - data[NUM_CHANNEL_DETUNE + c]-MAXCHANNELDETUNE); - _gui->writeEvent(evChDetune); - //channel brightness - setChannelBrightness(c, - data[NUM_CHANNEL_BRIGHTNESS + 2*c] - + data[NUM_CHANNEL_BRIGHTNESS + 2*c + 1] * 256); - MidiEvent - evChBrightness(0, c, ME_CONTROLLER, - CTRL_FINEBRIGHTNESS, getChannelBrightness(c)); - _gui->writeEvent(evChBrightness); - //channel modulation - setChannelModulation(c, data[NUM_CHANNEL_MODULATION + c]); - MidiEvent - evChMod(0, c, ME_CONTROLLER, - CTRL_MODULATION, data[NUM_CHANNEL_MODULATION + c]); - _gui->writeEvent(evChMod); - //channel attack - setChannelAttack(c, data[NUM_CHANNEL_ATTACK + c]); - MidiEvent - evChAttack(0, c, ME_CONTROLLER, - CTRL_ATTACK_TIME, data[NUM_CHANNEL_ATTACK + c]); - _gui->writeEvent(evChAttack); - //channel release - setChannelRelease(c, data[NUM_CHANNEL_RELEASE + c]); - MidiEvent - evChRelease(0, c, ME_CONTROLLER, - CTRL_RELEASE_TIME, data[NUM_CHANNEL_RELEASE + c]); - _gui->writeEvent(evChRelease); - //channel reverb - setChannelReverb(c, data[NUM_CHANNEL_REVERB + c]); - MidiEvent - evChReverb(0, c, ME_CONTROLLER, - CTRL_REVERB_SEND, data[NUM_CHANNEL_REVERB + c]); - _gui->writeEvent(evChReverb); - //channel chorus - setChannelChorus(c, data[NUM_CHANNEL_CHORUS + c]); - MidiEvent - evChChorus(0, c, ME_CONTROLLER, - CTRL_CHORUS_SEND, data[NUM_CHANNEL_CHORUS + c]); - _gui->writeEvent(evChChorus); - //channel delay - setChannelDelay(c, data[NUM_CHANNEL_DELAY + c]); - MidiEvent - evChDelay(0, c, ME_CONTROLLER, - CTRL_VARIATION_SEND, data[NUM_CHANNEL_DELAY + c]); - _gui->writeEvent(evChDelay); - } - //load configuration - _saveConfig = (bool)data[NUM_SAVECONFIG]; - unsigned char *dataSaveConfig = new unsigned char[2]; - dataSaveConfig[0]=SYSEX_SAVECONFIG; - dataSaveConfig[1]=(unsigned char)_saveConfig; - MidiEvent - evSaveConfig(0, ME_SYSEX, (const unsigned char*)dataSaveConfig, 2); - _gui->writeEvent(evSaveConfig); - if(_saveConfig) { - //saveOnlyUsed - _saveOnlyUsed = (bool)data[NUM_SAVEONLYUSED]; - unsigned char *dataSaveOnlyUsed = new unsigned char[2]; - dataSaveOnlyUsed[0]=SYSEX_SAVEONLYUSED; - dataSaveOnlyUsed[1]=(unsigned char)_saveOnlyUsed; - MidiEvent - evSaveOnlyUsed(0, ME_SYSEX, (const unsigned char*)dataSaveOnlyUsed, 2); - _gui->writeEvent(evSaveOnlyUsed); - //colors - unsigned char dataColorGui[COLORSYSEXLENGTH+1]; - dataColorGui[0]=SYSEX_COLORGUI; - for (int i=0; iwriteEvent(evSysexColor); - //quality - unsigned char dataQuality[2]; - dataQuality[0]=SYSEX_QUALITY; - dataQuality[1]=data[NUM_QUALITY]; - setQuality((Quality)data[NUM_QUALITY]); - MidiEvent evQuality(0, ME_SYSEX, (const unsigned char*)dataQuality, 2); - _gui->writeEvent(evQuality); - //filter - unsigned char dataFilter[2]; - dataFilter[0]=SYSEX_FILTER; - dataFilter[1]=data[NUM_FILTER]; - setFilter((bool)data[NUM_FILTER]); - MidiEvent evFilter(0, ME_SYSEX, (const unsigned char*)dataFilter, 2); - _gui->writeEvent(evFilter); - //font size - unsigned char dataFontSize[2]; - dataFontSize[0]=SYSEX_FONTSIZE; - dataFontSize[1]=data[NUM_FONTSIZE]; - MidiEvent evFontSize(0, ME_SYSEX, (const unsigned char*)dataFontSize, 2); - _gui->writeEvent(evFontSize); - //load init set - unsigned char dataIsInitSet[2]; - dataIsInitSet[0]=SYSEX_ISINITSET; - dataIsInitSet[1]=data[NUM_ISINITSET]; - MidiEvent evIsInitSet(0, ME_SYSEX, - (const unsigned char*)dataIsInitSet, 2); - _gui->writeEvent(evIsInitSet); - unsigned char dataInitSetPath[1+MAXSTRLENGTHINITSETPATH]; - dataInitSetPath[0]=SYSEX_INITSETPATH; - for(int a = 0; a < MAXSTRLENGTHINITSETPATH; a++) - dataInitSetPath[a+1] = data[a+NUM_INITSETPATH]; - MidiEvent evInitSetPath(0,ME_SYSEX,(const unsigned char*)dataInitSetPath, - 1+MAXSTRLENGTHINITSETPATH); - _gui->writeEvent(evInitSetPath); - //load background pix - unsigned char dataIsBackgroundPix[2]; - dataIsBackgroundPix[0]=SYSEX_ISBACKGROUNDPIX; - dataIsBackgroundPix[1]=data[NUM_ISBACKGROUNDPIX]; - MidiEvent evIsBackgroundPix(0, ME_SYSEX, - (const unsigned char*)dataIsBackgroundPix, 2); - _gui->writeEvent(evIsBackgroundPix); - unsigned char dataBackgroundPixPath[1+MAXSTRLENGTHBACKGROUNDPIXPATH]; - dataBackgroundPixPath[0]=SYSEX_BACKGROUNDPIXPATH; - for(int a = 0; a < MAXSTRLENGTHBACKGROUNDPIXPATH; a++) - dataBackgroundPixPath[a+1] = data[a+NUM_BACKGROUNDPIXPATH]; - MidiEvent evBackgroundPixPath(0,ME_SYSEX, - (const unsigned char*)dataBackgroundPixPath, - 1+MAXSTRLENGTHBACKGROUNDPIXPATH); - _gui->writeEvent(evBackgroundPixPath); - } - else _gui->saveConfigCheckBox->setChecked(false); - //load FX - //reverb - _global.isReverbActivated = (bool)data[NUM_IS_REVERB_ON]; - unsigned char *dataReverbAct = new unsigned char[2]; - dataReverbAct[0]=SYSEX_REVERBACTIV; - dataReverbAct[1]=(unsigned char)_global.isReverbActivated; - MidiEvent evReverbAct(0,ME_SYSEX,(const unsigned char*)dataReverbAct, 2); - _gui->writeEvent(evReverbAct); - setReverbReturn((int)data[NUM_REVERB_RETURN]); - unsigned char *dataReverbRet = new unsigned char[2]; - dataReverbRet[0]=SYSEX_REVERBRETURN; - dataReverbRet[1]=(unsigned char)getReverbReturn(); - MidiEvent evReverbRet(0,ME_SYSEX,(const unsigned char*)dataReverbRet, 2); - _gui->writeEvent(evReverbRet); - Plugin* p; - p = plugins.find((const char*)&data[NUM_REVERB_LIB], - (const char*)&data[NUM_REVERB_LABEL]); - if(p) { - initPluginReverb(p); - for(int i = 0; i < _pluginIReverb->plugin()->parameter(); i++) { - float val; - memcpy(&val, &data[NUM_CONFIGLENGTH + sizeof(float)*i], sizeof(float)); - setReverbParam(i, (double)val); - } - char dataBuildRev; - dataBuildRev = SYSEX_BUILDGUIREVERB; - MidiEvent evSysexBuildRev(0,ME_SYSEX, - (const unsigned char*)&dataBuildRev, 1); - _gui->writeEvent(evSysexBuildRev); - } - else _pluginIReverb = NULL; - //chorus - _global.isChorusActivated = (bool)data[NUM_IS_CHORUS_ON]; - unsigned char *dataChorusAct = new unsigned char[2]; - dataChorusAct[0]=SYSEX_CHORUSACTIV; - dataChorusAct[1]=(unsigned char)_global.isChorusActivated; - MidiEvent evChorusAct(0,ME_SYSEX,(const unsigned char*)dataChorusAct, 2); - _gui->writeEvent(evChorusAct); - setChorusReturn((int)data[NUM_CHORUS_RETURN]); - unsigned char *dataChorusRet = new unsigned char[2]; - dataChorusRet[0]=SYSEX_CHORUSRETURN; - dataChorusRet[1]=(unsigned char)getChorusReturn(); - MidiEvent evChorusRet(0,ME_SYSEX,(const unsigned char*)dataChorusRet, 2); - _gui->writeEvent(evChorusRet); - p = plugins.find((const char*)&data[NUM_CHORUS_LIB], - (const char*)&data[NUM_CHORUS_LABEL]); - if(p) { - initPluginChorus(p); - for(int i = 0; i < _pluginIChorus->plugin()->parameter(); i++) { - float val; - memcpy(&val, &data[NUM_CONFIGLENGTH - + sizeof(float)*(int)data[NUM_REVERB_PARAM_NBR] - + sizeof(float)*i], - sizeof(float)); - setChorusParam(i, (double)val); - } - char dataBuildCho; - dataBuildCho = SYSEX_BUILDGUICHORUS; - MidiEvent evSysexBuildCho(0,ME_SYSEX, - (const unsigned char*)&dataBuildCho, 1); - _gui->writeEvent(evSysexBuildCho); - } - else _pluginIChorus = NULL; - //delay - _global.isDelayActivated = (bool)data[NUM_IS_DELAY_ON]; - unsigned char *dataDelayAct = new unsigned char[2]; - dataDelayAct[0]=SYSEX_DELAYACTIV; - dataDelayAct[1]=(unsigned char)_global.isDelayActivated; - MidiEvent evDelayAct(0,ME_SYSEX,(const unsigned char*)dataDelayAct, 2); - _gui->writeEvent(evDelayAct); - setDelayReturn((int)data[NUM_DELAY_RETURN]); - unsigned char *dataDelayRet = new unsigned char[2]; - dataDelayRet[0]=SYSEX_DELAYRETURN; - dataDelayRet[1]=(unsigned char)getDelayReturn(); - MidiEvent evDelayRet(0,ME_SYSEX,(const unsigned char*)dataDelayRet, 2); - _gui->writeEvent(evDelayRet); - //initPluginDelay(plugins.find("pandelay", "pandelay")); - float delayfloat; - memcpy(&delayfloat, &data[NUM_DELAY_BPM], sizeof(float)); - setDelayBPM(delayfloat); - char dataDelayBPM[sizeof(float)+1]; - dataDelayBPM[0] = SYSEX_DELAYBPM; - memcpy(&dataDelayBPM[1], &delayfloat, sizeof(float)); - MidiEvent evSysexDelayBPM(0,ME_SYSEX, - (const unsigned char*)dataDelayBPM, - sizeof(float)+1); - _gui->writeEvent(evSysexDelayBPM); - memcpy(&delayfloat, &data[NUM_DELAY_BEATRATIO], sizeof(float)); - setDelayBeatRatio(delayfloat); - char dataDelayBeatRatio[sizeof(float)+1]; - dataDelayBeatRatio[0] = SYSEX_DELAYBEATRATIO; - memcpy(&dataDelayBeatRatio[1], &delayfloat, sizeof(float)); - MidiEvent evSysexDelayBeatRatio(0,ME_SYSEX, - (const unsigned char*)dataDelayBeatRatio, - sizeof(float)+1); - _gui->writeEvent(evSysexDelayBeatRatio); - memcpy(&delayfloat, &data[NUM_DELAY_FEEDBACK], sizeof(float)); - setDelayFeedback(delayfloat); - char dataDelayFeedback[sizeof(float)+1]; - dataDelayFeedback[0] = SYSEX_DELAYFEEDBACK; - memcpy(&dataDelayFeedback[1], &delayfloat, sizeof(float)); - MidiEvent evSysexDelayFeedback(0,ME_SYSEX, - (const unsigned char*)dataDelayFeedback, - sizeof(float)+1); - _gui->writeEvent(evSysexDelayFeedback); - memcpy(&delayfloat, &data[NUM_DELAY_LFO_FREQ], sizeof(float)); - setDelayLFOFreq(delayfloat); - char dataDelayLFOFreq[sizeof(float)+1]; - dataDelayLFOFreq[0] = SYSEX_DELAYLFOFREQ; - memcpy(&dataDelayLFOFreq[1], &delayfloat, sizeof(float)); - MidiEvent evSysexDelayLFOFreq(0,ME_SYSEX, - (const unsigned char*)dataDelayLFOFreq, - sizeof(float)+1); - _gui->writeEvent(evSysexDelayLFOFreq); - memcpy(&delayfloat, &data[NUM_DELAY_LFO_DEPTH], sizeof(float)); - setDelayLFODepth(delayfloat); - char dataDelayLFODepth[sizeof(float)+1]; - dataDelayLFODepth[0] = SYSEX_DELAYLFODEPTH; - memcpy(&dataDelayLFODepth[1], &delayfloat, sizeof(float)); - MidiEvent evSysexDelayLFODepth(0,ME_SYSEX, - (const unsigned char*)dataDelayLFODepth, - sizeof(float)+1); - _gui->writeEvent(evSysexDelayLFODepth); - - //load the set compressed - int offset = - NUM_CONFIGLENGTH - + sizeof(float)*(int)data[NUM_REVERB_PARAM_NBR] - + sizeof(float)*(int)data[NUM_CHORUS_PARAM_NBR]; - QByteArray baComp = QByteArray((const char*)&data[offset], length-offset); - - //uncompress the set - QByteArray baUncomp = qUncompress(baComp); - - //save the set in a temporary file and - // read the XML file and create DOM tree - QTemporaryFile file; - file.open(); - file.write(baUncomp); - QDomDocument domTree; - file.reset(); //seek the start of the file - domTree.setContent(&file); - file.close(); - QDomNode node = domTree.documentElement(); - - while (!node.isNull()) { - QDomElement e = node.toElement(); - if (e.isNull()) - continue; - if (e.tagName() == "deicsOnzeSet") { - QString version = e.attribute(QString("version")); - if (version == "1.0") { - for(int c = 0; c < NBRCHANNELS; c++) _preset[c]=_initialPreset; - //read the set - if((bool)data[NUM_SAVEONLYUSED]) { - //printf("Mini\n"); - //updateSaveOnlyUsed(true); - } - else { - //printf("Huge\n"); - while(!_set->_categoryVector.empty()) - delete(*_set->_categoryVector.begin()); - //updateSaveOnlyUsed(false); - } - _set->readSet(node.firstChild()); - //display load preset - //setSet(); - } - else printf("Wrong set version : %s\n", - version.toLatin1().data()); - } - node = node.nextSibling(); - } - //send sysex to the gui to load the set (actually not because it doesn't - //work -the code is just zapped in the middle???-, so it is done above - //int dL=2+baUncomp.size(); - int dL = 2; - char dataSend[dL]; - dataSend[0]=SYSEX_LOADSET; - dataSend[1]=data[NUM_SAVEONLYUSED]; - //for(int i=2; iwriteEvent(evSysex); - - //select programs per channel - for(int c = 0; c < NBRCHANNELS; c++) { - int hbank=(int)data[NUM_CURRENTHBANK+c]; - int lbank=(int)data[NUM_CURRENTLBANK+c]; - int prog=(int)data[NUM_CURRENTPROG+c]; - programSelect(c, hbank, lbank, prog); - int val=prog+(lbank<<8)+(hbank<<16); - MidiEvent evProgSel(0, c, ME_CONTROLLER, CTRL_PROGRAM, val); - _gui->writeEvent(evProgSel); - } - - } -} -//--------------------------------------------------------- -// sysex -//--------------------------------------------------------- -bool DeicsOnze::sysex(int length, const unsigned char* data) { - sysex(length, data, false); - return false; -} -bool DeicsOnze::sysex(int length, const unsigned char* data, bool fromGui) { - int cmd=data[0]; - int index; - float f; - switch(cmd) { - case SYSEX_INIT_DATA: - parseInitData(length, data); - break; - case SYSEX_MASTERVOL: - setMasterVol((int)data[1]); - if(!fromGui) { - MidiEvent evSysex(0, ME_SYSEX, data, length); - _gui->writeEvent(evSysex); - } - break; - //case SYSEX_CHANNELNUM: - //_global.channelNum = (char)data[1]; - //if(!fromGui) { - // MidiEvent evSysex(0, ME_SYSEX, data, length); - // _gui->writeEvent(evSysex); - //} - //break; - case SYSEX_QUALITY: - setQuality((Quality)data[1]); - if(!fromGui) { - MidiEvent evSysex(0, ME_SYSEX, data, length); - _gui->writeEvent(evSysex); - } - break; - case SYSEX_FILTER: - setFilter((bool)data[1]); - if(!fromGui) { - MidiEvent evSysex(0, ME_SYSEX, data, length); - _gui->writeEvent(evSysex); - } - break; - case SYSEX_FONTSIZE: - _global.fontSize = (int)data[1]; - if(!fromGui) { - MidiEvent evSysex(0, ME_SYSEX, data, length); - _gui->writeEvent(evSysex); - } - break; - case SYSEX_SAVECONFIG: - _saveConfig = (bool)data[1]; - if(!fromGui) { - MidiEvent evSysex(0, ME_SYSEX, data, length); - _gui->writeEvent(evSysex); - } - break; - case SYSEX_SAVEONLYUSED: - _saveOnlyUsed = (bool)data[1]; - if(!fromGui) { - MidiEvent evSysex(0, ME_SYSEX, data, length); - _gui->writeEvent(evSysex); - } - break; - case SYSEX_ISINITSET: - _isInitSet = (bool)data[1]; - if(!fromGui) { - MidiEvent evSysex(0, ME_SYSEX, data, length); - _gui->writeEvent(evSysex); - } - break; - case SYSEX_INITSETPATH: - _initSetPath = (char*)&data[1]; - if(!fromGui) { - MidiEvent evSysex(0, ME_SYSEX, data, length); - _gui->writeEvent(evSysex); - } - break; - case SYSEX_ISBACKGROUNDPIX: - _isBackgroundPix = (bool)data[1]; - if(!fromGui) { - MidiEvent evSysex(0, ME_SYSEX, data, length); - _gui->writeEvent(evSysex); - } - break; - case SYSEX_BACKGROUNDPIXPATH: - _backgroundPixPath = (char*)&data[1]; - if(!fromGui) { - MidiEvent evSysex(0, ME_SYSEX, data, length); - _gui->writeEvent(evSysex); - } - break; - case SYSEX_PANIC: - resetVoices(); - break; - case SYSEX_CHORUSACTIV: - _global.isChorusActivated = (bool)data[1]; - if(!fromGui) { - MidiEvent evSysex(0, ME_SYSEX, data, length); - _gui->writeEvent(evSysex); - } - break; - case SYSEX_CHORUSPARAM: - index = (int)data[1]; - memcpy(&f, &data[2], sizeof(float)); - setChorusParam(index, (double)f); - if(!fromGui) { - MidiEvent evSysex(0, ME_SYSEX, data, length); - _gui->writeEvent(evSysex); - } - break; - case SYSEX_REVERBACTIV: - _global.isReverbActivated = (bool)data[1]; - if(!fromGui) { - MidiEvent evSysex(0, ME_SYSEX, data, length); - _gui->writeEvent(evSysex); - } - break; - case SYSEX_REVERBPARAM: - index = (int)data[1]; - memcpy(&f, &data[2], sizeof(float)); - setReverbParam(index, (double)f); - if(!fromGui) { - MidiEvent evSysex(0, ME_SYSEX, data, length); - _gui->writeEvent(evSysex); - } - break; - case SYSEX_DELAYACTIV: - _global.isDelayActivated = (bool)data[1]; - if(!fromGui) { - MidiEvent evSysex(0, ME_SYSEX, data, length); - _gui->writeEvent(evSysex); - } - break; - case SYSEX_CHORUSRETURN: - setChorusReturn((int)data[1]); - if(!fromGui) { - MidiEvent evSysex(0, ME_SYSEX, data, length); - _gui->writeEvent(evSysex); - } - break; - case SYSEX_REVERBRETURN: - setReverbReturn((int)data[1]); - if(!fromGui) { - MidiEvent evSysex(0, ME_SYSEX, data, length); - _gui->writeEvent(evSysex); - } - break; - case SYSEX_DELAYRETURN: - setDelayReturn((int)data[1]); - if(!fromGui) { - MidiEvent evSysex(0, ME_SYSEX, data, length); - _gui->writeEvent(evSysex); - } - break; - case SYSEX_SELECTREVERB: - Plugin* pluginReverb; - memcpy(&pluginReverb, &data[1], sizeof(Plugin*)); - initPluginReverb(pluginReverb); - break; - case SYSEX_SELECTCHORUS: - Plugin* pluginChorus; - memcpy(&pluginChorus, &data[1], sizeof(Plugin*)); - initPluginChorus(pluginChorus); - break; - case SYSEX_DELAYBPM: - memcpy(&f, &data[1], sizeof(float)); - setDelayBPM(f); - if(!fromGui) { - MidiEvent evSysex(0, ME_SYSEX, data, length); - _gui->writeEvent(evSysex); - } - break; - case SYSEX_DELAYBEATRATIO: - memcpy(&f, &data[1], sizeof(float)); - setDelayBeatRatio(f); - if(!fromGui) { - MidiEvent evSysex(0, ME_SYSEX, data, length); - _gui->writeEvent(evSysex); - } - break; - case SYSEX_DELAYFEEDBACK: - memcpy(&f, &data[1], sizeof(float)); - setDelayFeedback(f); - if(!fromGui) { - MidiEvent evSysex(0, ME_SYSEX, data, length); - _gui->writeEvent(evSysex); - } - break; - case SYSEX_DELAYLFOFREQ: - memcpy(&f, &data[1], sizeof(float)); - setDelayLFOFreq(f); - if(!fromGui) { - MidiEvent evSysex(0, ME_SYSEX, data, length); - _gui->writeEvent(evSysex); - } - break; - case SYSEX_DELAYLFODEPTH: - memcpy(&f, &data[1], sizeof(float)); - setDelayLFODepth(f); - if(!fromGui) { - MidiEvent evSysex(0, ME_SYSEX, data, length); - _gui->writeEvent(evSysex); - } - break; - default: - break; - } - return false; -} -//--------------------------------------------------------- -// setController -//--------------------------------------------------------- -bool DeicsOnze::setController(int channel, int id, int val) { - setController(channel, id, val, false); - return false; -} -bool DeicsOnze::setController(int ch, int ctrl, int val, bool fromGui) { - int deiPan, k=0; - if(_global.channel[ch].isEnable || ctrl==CTRL_CHANNELENABLE) { - if(ctrl>=CTRL_AR && ctrlCTRL_PL3 && ctrlsetIsUsed(true); - _preset[ch]->eg[k].ar=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_AR+k*DECAPAR1,val); - _gui->writeEvent(ev); - } - break; - case CTRL_D1R: - _preset[ch]->setIsUsed(true); - _preset[ch]->eg[k].d1r=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_D1R+k*DECAPAR1,val); - _gui->writeEvent(ev); - } - break; - case CTRL_D2R: - _preset[ch]->setIsUsed(true); - _preset[ch]->eg[k].d2r=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_D2R+k*DECAPAR1,val); - _gui->writeEvent(ev); - } - break; - case CTRL_RR: - _preset[ch]->setIsUsed(true); - _preset[ch]->eg[k].rr=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_RR+k*DECAPAR1,val); - _gui->writeEvent(ev); - } - break; - case CTRL_D1L: - _preset[ch]->setIsUsed(true); - _preset[ch]->eg[k].d1l=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_D1L+k*DECAPAR1,val); - _gui->writeEvent(ev); - } - break; - case CTRL_LS: - _preset[ch]->setIsUsed(true); - _preset[ch]->scaling.level[k]=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_LS+k*DECAPAR1,val); - _gui->writeEvent(ev); - } - break; - case CTRL_RS: - _preset[ch]->setIsUsed(true); - _preset[ch]->scaling.rate[k]=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_RS+k*DECAPAR1,val); - _gui->writeEvent(ev); - } - break; - case CTRL_EBS: - _preset[ch]->setIsUsed(true); - _preset[ch]->sensitivity.egBias[k]=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_EBS+k*DECAPAR1,val); - _gui->writeEvent(ev); - } - break; - case CTRL_AME: - _preset[ch]->setIsUsed(true); - _preset[ch]->sensitivity.ampOn[k]=val==1; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_AME+k*DECAPAR1,val); - _gui->writeEvent(ev); - } - break; - case CTRL_KVS: - _preset[ch]->setIsUsed(true); - _preset[ch]->sensitivity.keyVelocity[k]=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_KVS+k*DECAPAR1,val); - _gui->writeEvent(ev); - } - break; - case CTRL_OUT: - _preset[ch]->setIsUsed(true); - _preset[ch]->outLevel[k]=val; - setOutLevel(k); - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_OUT+k*DECAPAR1,val); - _gui->writeEvent(ev); - } - break; - case CTRL_RATIO: - _preset[ch]->setIsUsed(true); - _preset[ch]->frequency[k].ratio=((double)val)/100.0; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER, - CTRL_RATIO+k*DECAPAR1,val); - _gui->writeEvent(ev); - } - break; - case CTRL_DET: - _preset[ch]->setIsUsed(true); - _preset[ch]->detune[k]=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_DET+k*DECAPAR1,val); - _gui->writeEvent(ev); - } - break; - case CTRL_ALG: - _preset[ch]->setIsUsed(true); - _preset[ch]->algorithm=(Algorithm)val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_ALG,val); - _gui->writeEvent(ev); - } - break; - case CTRL_FEEDBACK: - _preset[ch]->setIsUsed(true); - _preset[ch]->feedback=val; - setFeedback(ch); - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_FEEDBACK,val); - _gui->writeEvent(ev); - } - break; - case CTRL_SPEED: - _preset[ch]->setIsUsed(true); - _preset[ch]->lfo.speed=val; - setLfo(ch); - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_SPEED,val); - _gui->writeEvent(ev); - } - break; - case CTRL_DELAY: - _preset[ch]->setIsUsed(true); - _preset[ch]->lfo.delay=val; - setLfo(ch); - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_DELAY,val); - _gui->writeEvent(ev); - } - break; - case CTRL_PMODDEPTH: - _preset[ch]->setIsUsed(true); - _preset[ch]->lfo.pModDepth=val; - setLfo(ch); - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_PMODDEPTH,val); - _gui->writeEvent(ev); - } - break; - case CTRL_AMODDEPTH: - _preset[ch]->setIsUsed(true); - _preset[ch]->lfo.aModDepth=val; - setLfo(ch); - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_AMODDEPTH,val); - _gui->writeEvent(ev); - } - break; - case CTRL_SYNC: - _preset[ch]->setIsUsed(true); - _preset[ch]->lfo.sync=val==1; - setLfo(ch); - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_SYNC,val); - _gui->writeEvent(ev); - } - break; - case CTRL_WAVE: - _preset[ch]->setIsUsed(true); - _preset[ch]->lfo.wave=(Wave)val; - setLfo(ch); - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_WAVE,val); - _gui->writeEvent(ev); - } - break; - case CTRL_PMODSENS: - _preset[ch]->setIsUsed(true); - _preset[ch]->sensitivity.pitch=val; - setLfo(ch); - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_PMODSENS,val); - _gui->writeEvent(ev); - } - break; - case CTRL_AMS: - _preset[ch]->setIsUsed(true); - _preset[ch]->sensitivity.amplitude=val; - setLfo(ch); - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_AMS,val); - _gui->writeEvent(ev); - } - break; - case CTRL_TRANSPOSE: - _preset[ch]->setIsUsed(true); - _preset[ch]->function.transpose=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_TRANSPOSE,val); - _gui->writeEvent(ev); - } - break; - case CTRL_POLYMODE: - _preset[ch]->setIsUsed(true); - _preset[ch]->function.mode=(Mode)val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_POLYMODE,val); - _gui->writeEvent(ev); - } - break; - case CTRL_PBENDRANGE: - _preset[ch]->setIsUsed(true); - _preset[ch]->function.pBendRange=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_PBENDRANGE,val); - _gui->writeEvent(ev); - } - break; - case CTRL_PORTAMODE: - _preset[ch]->setIsUsed(true); - _preset[ch]->function.portamento=(Portamento)val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_PORTAMODE,val); - _gui->writeEvent(ev); - } - break; - case CTRL_PORTATIME: - _preset[ch]->setIsUsed(true); - _preset[ch]->function.portamentoTime=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_PORTATIME,val); - _gui->writeEvent(ev); - } - break; - case CTRL_FCVOLUME: - _preset[ch]->setIsUsed(true); - _preset[ch]->function.fcVolume=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_FCVOLUME,val); - _gui->writeEvent(ev); - } - break; - case CTRL_FSW: - _preset[ch]->setIsUsed(true); - _preset[ch]->function.footSw=(FootSw)val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_FSW,val); - _gui->writeEvent(ev); - } - break; - case CTRL_MWPITCH: - _preset[ch]->setIsUsed(true); - _preset[ch]->function.mwPitch=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_MWPITCH,val); - _gui->writeEvent(ev); - } - break; - case CTRL_MWAMPLITUDE: - _preset[ch]->setIsUsed(true); - _preset[ch]->function.mwAmplitude=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_MWAMPLITUDE,val); - _gui->writeEvent(ev); - } - break; - case CTRL_BCPITCH: - _preset[ch]->setIsUsed(true); - _preset[ch]->function.bcPitch=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_BCPITCH,val); - _gui->writeEvent(ev); - } - break; - case CTRL_BCAMPLITUDE: - _preset[ch]->setIsUsed(true); - _preset[ch]->function.bcAmplitude=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_BCAMPLITUDE,val); - _gui->writeEvent(ev); - } - break; - case CTRL_BCPITCHBIAS: - _preset[ch]->setIsUsed(true); - _preset[ch]->function.bcPitchBias=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_BCPITCHBIAS,val); - _gui->writeEvent(ev); - } - break; - case CTRL_BCEGBIAS: - _preset[ch]->setIsUsed(true); - _preset[ch]->function.bcEgBias=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_BCEGBIAS,val); - _gui->writeEvent(ev); - } - break; - case CTRL_ATPITCH: - _preset[ch]->setIsUsed(true); - _preset[ch]->function.atPitch=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_ATPITCH,val); - _gui->writeEvent(ev); - } - break; - case CTRL_ATAMPLITUDE: - _preset[ch]->setIsUsed(true); - _preset[ch]->function.atAmplitude=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_ATAMPLITUDE,val); - _gui->writeEvent(ev); - } - break; - case CTRL_ATPITCHBIAS: - _preset[ch]->setIsUsed(true); - _preset[ch]->function.atPitchBias=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_ATPITCHBIAS,val); - _gui->writeEvent(ev); - } - break; - case CTRL_ATEGBIAS: - _preset[ch]->setIsUsed(true); - _preset[ch]->function.atEgBias=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_ATEGBIAS,val); - _gui->writeEvent(ev); - } - break; - case CTRL_PR1: - _preset[ch]->setIsUsed(true); - _preset[ch]->pitchEg.pr1=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_PR1,val); - _gui->writeEvent(ev); - } - break; - case CTRL_PR2: - _preset[ch]->setIsUsed(true); - _preset[ch]->pitchEg.pr2=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_PR2,val); - _gui->writeEvent(ev); - } - break; - case CTRL_PR3: - _preset[ch]->setIsUsed(true); - _preset[ch]->pitchEg.pr3=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_PR3,val); - _gui->writeEvent(ev); - } - break; - case CTRL_PL1: - _preset[ch]->setIsUsed(true); - _preset[ch]->pitchEg.pl1=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_PL1,val); - _gui->writeEvent(ev); - } - break; - case CTRL_PL2: - _preset[ch]->setIsUsed(true); - _preset[ch]->pitchEg.pl2=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_PL2,val); - _gui->writeEvent(ev); - } - break; - case CTRL_PL3: - _preset[ch]->setIsUsed(true); - _preset[ch]->pitchEg.pl3=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_PL3,val); - _gui->writeEvent(ev); - } - break; - case CTRL_FIX: - _preset[ch]->setIsUsed(true); - _preset[ch]->frequency[k].isFix=val==1; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_FIX+k*DECAPAR2,val); - _gui->writeEvent(ev); - } - break; - case CTRL_FIXRANGE: - _preset[ch]->setIsUsed(true); - _preset[ch]->frequency[k].freq=((double)val)/100.0; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER, - CTRL_FIXRANGE+k*DECAPAR2,val); - _gui->writeEvent(ev); - } - break; - case CTRL_OSW: - _preset[ch]->setIsUsed(true); - _preset[ch]->oscWave[k]=(OscWave)val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_OSW+k*DECAPAR2,val); - _gui->writeEvent(ev); - } - break; - case CTRL_SHFT: - _preset[ch]->setIsUsed(true); - _preset[ch]->eg[k].egShift=(egShiftValue)val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_SHFT+k*DECAPAR2,val); - _gui->writeEvent(ev); - } - break; - case CTRL_REVERBRATE: - _preset[ch]->setIsUsed(true); - _preset[ch]->function.reverbRate=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_REVERBRATE,val); - _gui->writeEvent(ev); - } - break; - case CTRL_FCPITCH: - _preset[ch]->setIsUsed(true); - _preset[ch]->function.fcPitch=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_FCPITCH,val); - _gui->writeEvent(ev); - } - break; - case CTRL_FCAMPLITUDE: - _preset[ch]->setIsUsed(true); - _preset[ch]->function.fcAmplitude=val; - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_FCAMPLITUDE,val); - _gui->writeEvent(ev); - } - break; - case CTRL_CHANNELENABLE: - setChannelEnable(ch, (bool)val); - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_CHANNELENABLE,val); - _gui->writeEvent(ev); - } - break; - case CTRL_CHANNELDETUNE: - _preset[ch]->setIsUsed(true); - setChannelDetune(ch, val); - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_CHANNELDETUNE,val); - _gui->writeEvent(ev); - } - break; - case CTRL_CHANNELVOLUME: - setChannelVol(ch, val); - applyChannelAmp(ch); - if(!fromGui) { - MidiEvent ev(0,ch,ME_CONTROLLER,CTRL_CHANNELVOLUME,val); - _gui->writeEvent(ev); - } - break; - case CTRL_NBRVOICES: - setNbrVoices(ch, val); - if(!fromGui) { - MidiEvent ev(0, ch, ME_CONTROLLER, CTRL_NBRVOICES, val); - _gui->writeEvent(ev); - } - break; - case CTRL_PROGRAM: { - int hbank = (val & 0xff0000) >> 16; - int lbank = (val & 0xff00) >> 8; - int prog = val & 0x7f; - if (hbank > 127) // map "dont care" to 0 - hbank = 0; - if (lbank > 127) - lbank = 0; - programSelect(ch, hbank, lbank, prog); - _preset[ch]->setIsUsed(true);//TODO : not sure to put that - if(!fromGui) { - MidiEvent ev(0, ch, ME_CONTROLLER, CTRL_PROGRAM, val); - _gui->writeEvent(ev); - } - } break; - case CTRL_MODULATION: - setModulation(ch, val); - if(!fromGui) { - MidiEvent ev(0, ch, ME_CONTROLLER, CTRL_MODULATION, val); - _gui->writeEvent(ev); - } - break; - case CTRL_PITCH: - setPitchBendCoef(ch, val); - break; - case CTRL_PANPOT: - _preset[ch]->setIsUsed(true); - deiPan = val*2*MAXCHANNELPAN/127-MAXCHANNELPAN; - setChannelPan(ch, deiPan); - applyChannelAmp(ch); - if(!fromGui) { - MidiEvent ev(0, ch, ME_CONTROLLER, CTRL_CHANNELPAN, deiPan); - _gui->writeEvent(ev); - } - break; - case CTRL_CHANNELPAN: - _preset[ch]->setIsUsed(true); - setChannelPan(ch, val); - applyChannelAmp(ch); - if(!fromGui) { - MidiEvent ev(0, ch, ME_CONTROLLER, CTRL_CHANNELPAN, val); - _gui->writeEvent(ev); - } - break; - case CTRL_FINEBRIGHTNESS: - _preset[ch]->setIsUsed(true); - setChannelBrightness(ch, val); - setOutLevel(ch); - if(!fromGui) { - MidiEvent ev(0,ch, ME_CONTROLLER, CTRL_FINEBRIGHTNESS, val); - _gui->writeEvent(ev); - } - break; - case CTRL_BRIGHTNESS: - _preset[ch]->setIsUsed(true); - setChannelBrightness(ch, val*(MIDFINEBRIGHTNESS/MIDBRIGHTNESS)); - setOutLevel(ch); - if(!fromGui) { - MidiEvent - ev(0,ch,ME_CONTROLLER,CTRL_FINEBRIGHTNESS,getChannelBrightness(ch)); - _gui->writeEvent(ev); - } - break; - case CTRL_ATTACK_TIME: - _preset[ch]->setIsUsed(true); - setChannelAttack(ch, val); - setEnvAttack(ch); - if(!fromGui) { - MidiEvent ev(0,ch, ME_CONTROLLER, CTRL_ATTACK_TIME, val); - _gui->writeEvent(ev); - } - break; - case CTRL_RELEASE_TIME: - _preset[ch]->setIsUsed(true); - setChannelRelease(ch, val); - setEnvRelease(ch); - if(!fromGui) { - MidiEvent ev(0,ch, ME_CONTROLLER, CTRL_RELEASE_TIME, val); - _gui->writeEvent(ev); - } - break; - case CTRL_REVERB_SEND: - setChannelReverb(ch, val); - if(!fromGui) { - MidiEvent ev(0,ch, ME_CONTROLLER, CTRL_REVERB_SEND, val); - _gui->writeEvent(ev); - } - break; - case CTRL_CHORUS_SEND: - setChannelChorus(ch, val); - if(!fromGui) { - MidiEvent ev(0,ch, ME_CONTROLLER, CTRL_CHORUS_SEND, val); - _gui->writeEvent(ev); - } - break; - case CTRL_VARIATION_SEND: - setChannelDelay(ch, val); - if(!fromGui) { - MidiEvent ev(0,ch, ME_CONTROLLER, CTRL_VARIATION_SEND, val); - _gui->writeEvent(ev); - } - break; - case CTRL_SUSTAIN: - setSustain(ch, val); - break; - case CTRL_VOLUME: - setChannelVol(ch, val*(MAXCHANNELVOLUME/127)); - applyChannelAmp(ch); - if(!fromGui) { - MidiEvent - ev(0, ch, ME_CONTROLLER, CTRL_CHANNELVOLUME, getChannelVol(ch)); - _gui->writeEvent(ev); - } - break; - case CTRL_ALL_SOUNDS_OFF: - resetVoices(); - default: - break; - } - } - return false; -} - -//--------------------------------------------------------- -// getPatchName -//--------------------------------------------------------- - -const char* DeicsOnze::getPatchName(int ch, int val, int) const { - if(_global.channel[ch].isEnable) { - Preset* p_preset; - int hbank = (val & 0xff0000) >> 16; - int lbank = (val & 0xff00) >> 8; - if (hbank > 127) - hbank = 0; - if (lbank > 127) - lbank = 0; - if (lbank == 127) // drum HACK - lbank = 128; - int prog = val & 0x7f; - char* tempName="INITVOICE"; - p_preset=_set->findPreset(hbank, lbank, prog); - if (p_preset) tempName=const_cast(p_preset->name.c_str()); - return tempName; - } - return " "; -} - -//--------------------------------------------------------- -// getPatchInfo -//--------------------------------------------------------- -const MidiPatch* DeicsOnze::getPatchInfo(int /*ch*/, const MidiPatch* p) const { - Preset* preset = NULL; - Subcategory* sub = NULL; - Category* cat = NULL; - if(p) { - _patch.hbank = p->hbank; - _patch.lbank = p->lbank; - _patch.prog = p->prog; - switch(p->typ) { - case MP_TYPE_HBANK : - sub = findSubcategory(_patch.hbank, _patch.lbank); - if(sub) { - _patch.name = sub->_subcategoryName.c_str(); - _patch.typ = MP_TYPE_LBANK; - return &_patch; - } - else { - if(_patch.lbank + 1 < LBANK_NBR) { - _patch.lbank++; - return getPatchInfo(0, &_patch); - } - else { - _patch.prog = PROG_NBR - 1; //hack to go faster - _patch.typ = 0; - return getPatchInfo(0, &_patch); - } - } - break; - case MP_TYPE_LBANK : - preset = findPreset(_patch.hbank, _patch.lbank, _patch.prog); - _patch.typ = 0; - if(preset) { - _patch.name = preset->name.c_str(); - return &_patch; - } - else return getPatchInfo(0, &_patch); - break; - default : - if(_patch.prog + 1 < PROG_NBR) { - _patch.prog++; - preset = findPreset(_patch.hbank, _patch.lbank, _patch.prog); - if(preset) { - _patch.name = preset->name.c_str(); - return &_patch; - } - else return getPatchInfo(0, &_patch); - } - else { - _patch.prog = 0; - if(_patch.lbank + 1 < LBANK_NBR) { - _patch.lbank++; - _patch.typ = MP_TYPE_HBANK; - return getPatchInfo(0, &_patch); - } - else { - _patch.lbank = 0; - if(_patch.hbank + 1 < HBANK_NBR) { - _patch.hbank++; - _patch.typ = MP_TYPE_HBANK; - cat = findCategory(_patch.hbank); - if(cat) { - _patch.name = cat->_categoryName.c_str(); - return &_patch; - } - return getPatchInfo(0, &_patch); - } - else return NULL; - } - } - } - } - else { - _patch.typ = MP_TYPE_HBANK; - _patch.hbank = 0; - _patch.lbank = 0; - _patch.prog = 0; - cat = findCategory(_patch.hbank); - if(cat) { - _patch.name = cat->_categoryName.c_str(); - return &_patch; - } - else { - _patch.hbank++; - return getPatchInfo(0, &_patch); - } - } -} - -//--------------------------------------------------------- -// getControllerInfo -/*! - \fn SimpleSynth::getControllerInfo - \brief Called from host to collect info about which controllers - the synth supports - \param index current controller number - \param name pointer where name is stored - \param controller int pointer where muse controller number is stored - \param min int pointer where controller min value is stored - \param max int pointer where controller max value is stored - \return 0 when done, otherwise return next desired controller index -*/ -//--------------------------------------------------------- -int DeicsOnze::getControllerInfo(int index, const char** name, - int* controller, int* min, int* max) -{ - if (index >= nbrCtrl) { - return 0; - } - - *name = _ctrl[index].name.c_str(); - *controller = _ctrl[index].num; - *min = _ctrl[index].min; - *max = _ctrl[index].max; - return (index +1); -} - -//--------------------------------------------------------- -// playNote -// process note on -//--------------------------------------------------------- -bool DeicsOnze::playNote(int ch, int pitch, int velo) { - int newVoice; - int nO2V; - int p2V; - double tempTargetFreq; - if(_global.channel[ch].isEnable) { - if(velo==0) {//Note off - p2V=pitchOn2Voice(ch, pitch); - //printf("Note Off : pitchOn2Voice = %d\n", p2V); - if(p2V<_global.channel[ch].nbrVoices) { - if(_global.channel[ch].sustain) - _global.channel[ch].voices[p2V].isSustained = true; - else { - _global.channel[ch].voices[p2V].keyOn = false; - _global.channel[ch].lastVoiceKeyOff = p2V; - _global.channel[ch].lastVoiceKeyOn.remove(p2V); - if(_preset[ch]->function.mode == MONO && existsKeyOn(ch) - && _global.channel[ch].voices[p2V].isOn) { - newVoice = _global.channel[ch].lastVoiceKeyOn.back(); - //portamento - if(_preset[ch]->function.portamentoTime!=0) { - _global.channel[ch].voices[newVoice].hasAttractor = true; - _global.channel[ch].voices[newVoice].attractor = - getAttractor(_preset[ch]->function.portamentoTime, - _global.deiSampleRate); - } - else _global.channel[ch].voices[newVoice].hasAttractor = false; - //feedback - _global.channel[ch].voices[newVoice].sampleFeedback = - _global.channel[ch].voices[p2V].sampleFeedback; - //on/off - _global.channel[ch].voices[p2V].isOn = false; - _global.channel[ch].voices[newVoice].isOn = true; - //per op - for(int i = 0; i < NBROP; i++) { - _global.channel[ch].voices[newVoice].op[i].index = - _global.channel[ch].voices[p2V].op[i].index; - _global.channel[ch].voices[newVoice].op[i].envState = - _global.channel[ch].voices[p2V].op[i].envState; - _global.channel[ch].voices[newVoice].op[i].envIndex = - _global.channel[ch].voices[p2V].op[i].envIndex; - _global.channel[ch].voices[newVoice].op[i].envInct = - _global.channel[ch].voices[p2V].op[i].envInct; - _global.channel[ch].voices[newVoice].op[i].envLevel = - _global.channel[ch].voices[p2V].op[i].envLevel; - _global.channel[ch].voices[newVoice].op[i].coefVLevel = - _global.channel[ch].voices[p2V].op[i].coefVLevel; - if(_global.channel[ch].voices[newVoice].hasAttractor) - _global.channel[ch].voices[newVoice].op[i].inct = - _global.channel[ch].voices[p2V].op[i].inct; - } - } - else { - setPitchEnvRelease(ch, p2V); - for(int i=0; ifunction.portamentoTime!=0 - && _global.channel[ch].isLastNote && - (_preset[ch]->function.portamento==FULL) || - (_preset[ch]->function.portamento==FINGER && existsKeyOn(ch))) { - _global.channel[ch].voices[newVoice].hasAttractor = true; - _global.channel[ch].voices[newVoice].attractor = - getAttractor(_preset[ch]->function.portamentoTime, - _global.deiSampleRate); - } - else _global.channel[ch].voices[newVoice].hasAttractor = false; - - if(_preset[ch]->lfo.sync) _global.channel[ch].lfoIndex=0; - - _global.channel[ch].lfoDelayIndex = - (_preset[ch]->lfo.delay==0?(double)(RESOLUTION/4):0.0); - _global.channel[ch].delayPassed = false; - - //-------------- - //PITCH ENVELOPE - //-------------- - if(isPitchEnv(&_preset[ch]->pitchEg)) { - _global.channel[ch].voices[newVoice].pitchEnvState = PHASE1; - _global.channel[ch].voices[newVoice].pitchEnvCoefInctPhase1 = - getPitchEnvCoefInct(_preset[ch]->pitchEg.pl1); - _global.channel[ch].voices[newVoice].pitchEnvCoefInctPhase2 = - getPitchEnvCoefInct(_preset[ch]->pitchEg.pl2); - _global.channel[ch].voices[newVoice].pitchEnvCoefInctPhase3 = - getPitchEnvCoefInct(_preset[ch]->pitchEg.pl3); - _global.channel[ch].voices[newVoice].pitchEnvCoefInct = - _global.channel[ch].voices[newVoice].pitchEnvCoefInctPhase1; - _global.channel[ch].voices[newVoice].pitchEnvCoefInctInct = - getPitchEnvCoefInctInct(_preset[ch]->pitchEg.pl1, - _preset[ch]->pitchEg.pl2, - _preset[ch]->pitchEg.pr1, - _global.deiSampleRate); - } - else { - _global.channel[ch].voices[newVoice].pitchEnvState = OFF_PE; - _global.channel[ch].voices[newVoice].pitchEnvCoefInct = 1.0; - } - //per operator - for(int i=0; isensitivity.keyVelocity[i]) - *note2Amp((double) (pitch+_preset[ch]->function.transpose), - _preset[ch]->scaling.level[i]); - _global.channel[ch].voices[newVoice].op[i].amp = - outLevel2Amp(_preset[ch]->outLevel[i]) - *_global.channel[ch].voices[newVoice].op[i].ampVeloNote - * brightness2Amp(ch, i); - //---------------- - //INDEX & ENVELOPE - //---------------- - //if index get 0.0, it means that the offset is 0 - if(existsKeyOn(ch)) { - int lastVoice = _global.channel[ch].lastVoiceKeyOn.back(); - if(_preset[ch]->function.mode == MONO) { - _global.channel[ch].voices[newVoice].op[i].index = - _global.channel[ch].voices[lastVoice].op[i].index; - _global.channel[ch].voices[newVoice].sampleFeedback = - _global.channel[ch].voices[lastVoice].sampleFeedback; - _global.channel[ch].voices[newVoice].op[i].envState = - _global.channel[ch].voices[lastVoice].op[i].envState; - _global.channel[ch].voices[newVoice].op[i].envIndex = - _global.channel[ch].voices[lastVoice].op[i].envIndex; - _global.channel[ch].voices[newVoice].op[i].envInct = - _global.channel[ch].voices[lastVoice].op[i].envInct; - _global.channel[ch].voices[newVoice].op[i].envLevel = - _global.channel[ch].voices[lastVoice].op[i].envLevel; - _global.channel[ch].voices[newVoice].op[i].coefVLevel = - _global.channel[ch].voices[lastVoice].op[i].coefVLevel; - _global.channel[ch].voices[lastVoice].isOn = false; - } - else { - _global.channel[ch].voices[newVoice].op[i].index = 0.0; - _global.channel[ch].voices[newVoice].sampleFeedback = 0.0; - _global.channel[ch].voices[newVoice].op[i].envState = ATTACK; - _global.channel[ch].voices[newVoice].op[i].envIndex = 0.0; - setEnvAttack(ch, newVoice, i); - } - } - else { - _global.channel[ch].voices[newVoice].op[i].index = 0.0; - _global.channel[ch].voices[newVoice].sampleFeedback = 0.0; - _global.channel[ch].voices[newVoice].op[i].envState = ATTACK; - _global.channel[ch].voices[newVoice].op[i].envIndex = 0.0; - setEnvAttack(ch, newVoice, i); - if(_preset[ch]->function.mode == MONO && - _global.channel[ch].isLastNote) { - _global.channel[ch].voices[_global.channel[ch].lastVoiceKeyOff] - .isOn = false; - } - } - - //---- - //FREQ - //---- - //the frequence for each operator is calculated - //and is used later to calculate inct - tempTargetFreq = - (pitch2freq((double)getChannelDetune(ch) - /(double)MAXCHANNELDETUNE) - /LOWERNOTEFREQ)* - (_preset[ch]->frequency[i].isFix? - _preset[ch]->frequency[i].freq: - (_preset[ch]->frequency[i].ratio - *pitch2freq((double)(pitch+_preset[ch]->function.transpose) - +(double)_preset[ch]->detune[i]*COEFDETUNE))); - //---- - //INCT - //---- - //compute inct - _global.channel[ch].voices[newVoice].op[i].targetInct = - (double)RESOLUTION / ( _global.deiSampleRate / tempTargetFreq ); - if(_global.channel[ch].voices[newVoice].hasAttractor && - !_preset[ch]->frequency[i].isFix) - _global.channel[ch].voices[newVoice].op[i].inct = - _global.channel[ch].lastInc[i]; - else _global.channel[ch].voices[newVoice].op[i].inct = - _global.channel[ch].voices[newVoice].op[i].targetInct; - } - //-------------------- - //some initializations - //-------------------- - _global.channel[ch].voices[newVoice].keyOn = true; - _global.channel[ch].voices[newVoice].isSustained = false; - _global.channel[ch].voices[newVoice].isOn = true; - _global.channel[ch].voices[newVoice].pitch = pitch; - _global.channel[ch].isLastNote = true; - _global.channel[ch].lastVoiceKeyOn.push_back(newVoice); - for(int k = 0; k < NBROP; k++) - _global.channel[ch].lastInc[k] = - _global.channel[ch].voices[newVoice].op[k].inct; - return false; - } - } - return false; -} - -//--------------------------------------------------------- -// plusMod -// add two doubles modulo RESOLUTION -//--------------------------------------------------------- -inline double plusMod(double x, double y) { - double res; - res=x+y; - if (res>=0) while (res >= (double)RESOLUTION) res-=(double)RESOLUTION; - else while (res < 0) res+=(double)RESOLUTION; - return res; -} - - -//--------------------------------------------------------- -// write -// synthesize n samples into buffer+offset -//--------------------------------------------------------- -void DeicsOnze::process(float** buffer, int offset, int n) { - //Process messages from the gui - while (_gui->fifoSize()) { - MidiEvent ev = _gui->readEvent(); - if (ev.type() == ME_SYSEX) { - sysex(ev.len(), ev.data(), true); - sendEvent(ev); - } - else if (ev.type() == ME_CONTROLLER) { - setController(ev.channel(), ev.dataA(), ev.dataB(), true); - sendEvent(ev); - } - } - float* leftOutput = buffer[0] + offset; - float* rightOutput = buffer[1] + offset; - - float sample[MAXNBRVOICES]; - float tempLeftOutput; - float tempRightOutput; - float tempChannelOutput; - float tempChannelLeftOutput; - float tempChannelRightOutput; - float tempIncChannel; //for optimization - float sampleOp[NBROP]; - for(int i = 0; i < NBROP; i++) sampleOp[i] = 0.0; - float ampOp[NBROP]; - for(int i = 0; i < n; i++) { - if(_global.qualityCounter == 0) { - tempLeftOutput = 0.0; - tempRightOutput = 0.0; - _global.lastInputLeftChorusSample = 0.0; - _global.lastInputRightChorusSample = 0.0; - _global.lastInputLeftReverbSample = 0.0; - _global.lastInputRightReverbSample = 0.0; - _global.lastInputLeftDelaySample = 0.0; - _global.lastInputRightDelaySample = 0.0; - //per channel - for(int c = 0; c < NBRCHANNELS; c++) { - tempChannelOutput = 0.0; - if(_global.channel[c].isEnable) { - //lfo, trick : we use the first quater of the wave W2 - lfoUpdate(_preset[c], &_global.channel[c], waveTable[W2]); - - //optimization - tempIncChannel = - _global.channel[c].lfoCoefInct * _global.channel[c].pitchBendCoef; - - //per voice - for(int j=0; j<_global.channel[c].nbrVoices; j++) { - if (_global.channel[c].voices[j].isOn) { - //portamento - portamentoUpdate(&_global.channel[c], - &_global.channel[c].voices[j]); - //pitch envelope - pitchEnvelopeUpdate(&_global.channel[c].voices[j], - &_preset[c]->pitchEg, _global.deiSampleRate); - //per op - for(int k=0; ksensitivity.ampOn[k]? - _global.channel[c].lfoAmp:1.0) - *env2AmpR(_global.deiSampleRate, waveTable[W2], - _preset[c]->eg[k], - &_global.channel[c].voices[j].op[k]); - } - switch(_preset[c]->algorithm) { - case FIRST : - sampleOp[3]=ampOp[3] - *waveTable[_preset[c]->oscWave[3]] - [(int)plusMod(_global.channel[c].voices[j].op[3].index, - (float)RESOLUTION - *_global.channel[c].voices[j].sampleFeedback)]; - sampleOp[2]=ampOp[2] - *waveTable[_preset[c]->oscWave[2]] - [(int)plusMod(_global.channel[c].voices[j].op[2].index, - (float)RESOLUTION*sampleOp[3])]; - sampleOp[1]=ampOp[1] - *waveTable[_preset[c]->oscWave[1]] - [(int)plusMod(_global.channel[c].voices[j].op[1].index, - (float)RESOLUTION*sampleOp[2])]; - sampleOp[0]=ampOp[0] - *waveTable[_preset[c]->oscWave[0]] - [(int)plusMod(_global.channel[c].voices[j].op[0].index, - (float)RESOLUTION*sampleOp[1])]; - - sample[j]=sampleOp[0];///COEFLEVEL; - - _global.channel[c].voices[j].isOn = - (_global.channel[c].voices[j].op[0].envState!=OFF); - break; - case SECOND : - sampleOp[3]=ampOp[3] - *waveTable[_preset[c]->oscWave[3]] - [(int)plusMod(_global.channel[c].voices[j].op[3].index, - (float)RESOLUTION - *_global.channel[c].voices[j].sampleFeedback)]; - sampleOp[2]=ampOp[2] - *waveTable[_preset[c]->oscWave[2]] - [(int)_global.channel[c].voices[j].op[2].index]; - sampleOp[1]=ampOp[1] - *waveTable[_preset[c]->oscWave[1]] - [(int)plusMod(_global.channel[c].voices[j].op[1].index, - (float)RESOLUTION - *(sampleOp[2]+sampleOp[3])/2.0)]; - sampleOp[0]=ampOp[0] - *waveTable[_preset[c]->oscWave[0]] - [(int)plusMod(_global.channel[c].voices[j].op[0].index, - (float)RESOLUTION - *sampleOp[1])]; - - sample[j]=sampleOp[0];///COEFLEVEL; - - _global.channel[c].voices[j].isOn = - (_global.channel[c].voices[j].op[0].envState!=OFF); - break; - case THIRD : - sampleOp[3]=ampOp[3] - *waveTable[_preset[c]->oscWave[3]] - [(int)plusMod(_global.channel[c].voices[j].op[3].index, - (float)RESOLUTION - *_global.channel[c].voices[j].sampleFeedback)]; - sampleOp[2]=ampOp[2] - *waveTable[_preset[c]->oscWave[2]] - [(int)_global.channel[c].voices[j].op[2].index]; - sampleOp[1]=ampOp[1] - *waveTable[_preset[c]->oscWave[1]] - [(int)plusMod(_global.channel[c].voices[j].op[1].index, - (float)RESOLUTION*sampleOp[2])]; - sampleOp[0]=ampOp[0] - *waveTable[_preset[c]->oscWave[0]] - [(int)plusMod(_global.channel[c].voices[j].op[0].index, - (float)RESOLUTION - *(sampleOp[3]+sampleOp[1])/2.0)]; - - sample[j]=sampleOp[0];///COEFLEVEL; - - _global.channel[c].voices[j].isOn = - (_global.channel[c].voices[j].op[0].envState!=OFF); - break; - case FOURTH : - sampleOp[3]=ampOp[3] - *waveTable[_preset[c]->oscWave[3]] - [(int)plusMod(_global.channel[c].voices[j].op[3].index, - (float)RESOLUTION - *_global.channel[c].voices[j].sampleFeedback)]; - sampleOp[2]=ampOp[2] - *waveTable[_preset[c]->oscWave[2]] - [(int)plusMod(_global.channel[c].voices[j].op[2].index, - (float)RESOLUTION - *sampleOp[3])]; - sampleOp[1]=ampOp[1] - *waveTable[_preset[c]->oscWave[1]] - [(int)_global.channel[c].voices[j].op[1].index]; - sampleOp[0]=ampOp[0] - *waveTable[_preset[c]->oscWave[0]] - [(int)plusMod(_global.channel[c].voices[j].op[0].index, - (float)RESOLUTION - *(sampleOp[1]+sampleOp[2])/2.0)]; - - sample[j]=sampleOp[0];///COEFLEVEL; - - _global.channel[c].voices[j].isOn = - (_global.channel[c].voices[j].op[0].envState!=OFF); - break; - case FIFTH : - sampleOp[3]=ampOp[3] - *waveTable[_preset[c]->oscWave[3]] - [(int)plusMod(_global.channel[c].voices[j].op[3].index, - (float)RESOLUTION - *_global.channel[c].voices[j].sampleFeedback)]; - sampleOp[2]=ampOp[2] - *waveTable[_preset[c]->oscWave[2]] - [(int)plusMod(_global.channel[c].voices[j].op[2].index, - (float)RESOLUTION*sampleOp[3])]; - sampleOp[1]=ampOp[1] - *waveTable[_preset[c]->oscWave[1]] - [(int)_global.channel[c].voices[j].op[1].index]; - sampleOp[0]=ampOp[0] - *waveTable[_preset[c]->oscWave[0]] - [(int)plusMod(_global.channel[c].voices[j].op[0].index, - (float)RESOLUTION*sampleOp[1])]; - - sample[j]=(sampleOp[0]+sampleOp[2])/2.0;///COEFLEVEL; - - _global.channel[c].voices[j].isOn = - (_global.channel[c].voices[j].op[0].envState!=OFF - ||_global.channel[c].voices[j].op[2].envState!=OFF); - break; - case SIXTH : - sampleOp[3]=ampOp[3] - *waveTable[_preset[c]->oscWave[3]] - [(int)plusMod(_global.channel[c].voices[j].op[3].index, - (float)RESOLUTION - *_global.channel[c].voices[j].sampleFeedback)]; - sampleOp[2]=ampOp[2] - *waveTable[_preset[c]->oscWave[2]] - [(int)plusMod(_global.channel[c].voices[j].op[2].index, - (float)RESOLUTION*sampleOp[3])]; - sampleOp[1]=ampOp[1] - *waveTable[_preset[c]->oscWave[1]] - [(int)plusMod(_global.channel[c].voices[j].op[1].index, - (float)RESOLUTION*sampleOp[3])]; - sampleOp[0]=ampOp[0] - *waveTable[_preset[c]->oscWave[0]] - [(int)plusMod(_global.channel[c].voices[j].op[0].index, - (float)RESOLUTION*sampleOp[3])]; - - sample[j]=(sampleOp[0]+sampleOp[1]+sampleOp[2])/3.0; - - _global.channel[c].voices[j].isOn = - (_global.channel[c].voices[j].op[0].envState!=OFF); - break; - case SEVENTH : - sampleOp[3]=ampOp[3] - *waveTable[_preset[c]->oscWave[3]] - [(int)plusMod(_global.channel[c].voices[j].op[3].index, - (float)RESOLUTION - *_global.channel[c].voices[j].sampleFeedback)]; - sampleOp[2]=ampOp[2] - *waveTable[_preset[c]->oscWave[2]] - [(int)plusMod(_global.channel[c].voices[j].op[2].index, - (float)RESOLUTION*sampleOp[3])]; - sampleOp[1]=ampOp[1] - *waveTable[_preset[c]->oscWave[1]] - [(int)_global.channel[c].voices[j].op[1].index]; - sampleOp[0]=ampOp[0]*waveTable[_preset[c]->oscWave[0]] - [(int)_global.channel[c].voices[j].op[0].index]; - - sample[j]=(sampleOp[0]+sampleOp[1]+sampleOp[2])/3.0; - - _global.channel[c].voices[j].isOn = - (_global.channel[c].voices[j].op[0].envState!=OFF); - break; - case EIGHTH : - sampleOp[3]=ampOp[3] - *waveTable[_preset[c]->oscWave[3]] - [(int)plusMod(_global.channel[c].voices[j].op[3].index, - (float)RESOLUTION - *_global.channel[c].voices[j].sampleFeedback)]; - sampleOp[2]=ampOp[2] - *waveTable[_preset[c]->oscWave[2]] - [(int)_global.channel[c].voices[j].op[2].index]; - sampleOp[1]=ampOp[1] - *waveTable[_preset[c]->oscWave[1]] - [(int)_global.channel[c].voices[j].op[1].index]; - sampleOp[0]=ampOp[0] - *waveTable[_preset[c]->oscWave[0]] - [(int)_global.channel[c].voices[j].op[0].index]; - - sample[j]= - (sampleOp[0]+sampleOp[1]+sampleOp[2]+sampleOp[3]) - /4.0; - - _global.channel[c].voices[j].isOn = - (_global.channel[c].voices[j].op[0].envState!=OFF - || _global.channel[c].voices[j].op[1].envState!=OFF - || _global.channel[c].voices[j].op[2].envState!=OFF - || _global.channel[c].voices[j].op[3].envState!=OFF); - break; - default : printf("Error : No algorithm"); - break; - } - - _global.channel[c].voices[j].volume= - ampOp[0]+ampOp[1]+ampOp[2]+ampOp[3]; - - _global.channel[c].voices[j].sampleFeedback = - sampleOp[3]*_global.channel[c].feedbackAmp; - - tempChannelOutput += sample[j]; - } - } - //printf("left out = %f, temp out = %f, left amp = %f\n", - //tempLeftOutput, tempChannelOutput, _global.channel[c].ampLeft); - - tempChannelLeftOutput = tempChannelOutput*_global.channel[c].ampLeft; - tempChannelRightOutput=tempChannelOutput*_global.channel[c].ampRight; - - if(_global.isChorusActivated) { - _global.lastInputLeftChorusSample += tempChannelLeftOutput * - _global.channel[c].chorusAmount; - _global.lastInputRightChorusSample += tempChannelRightOutput * - _global.channel[c].chorusAmount; - } - if(_global.isReverbActivated) { - _global.lastInputLeftReverbSample += tempChannelLeftOutput * - _global.channel[c].reverbAmount; - _global.lastInputRightReverbSample += tempChannelRightOutput * - _global.channel[c].reverbAmount; - } - if(_global.isDelayActivated) { - _global.lastInputLeftDelaySample += tempChannelLeftOutput * - _global.channel[c].delayAmount; - _global.lastInputRightDelaySample += tempChannelRightOutput * - _global.channel[c].delayAmount; - } - tempLeftOutput += tempChannelLeftOutput; - tempRightOutput += tempChannelRightOutput; - } - } - _global.lastLeftSample = tempLeftOutput * _global.masterVolume; - _global.lastRightSample = tempRightOutput * _global.masterVolume; - } - leftOutput[i] += _global.lastLeftSample; - rightOutput[i] += _global.lastRightSample; - - if(_global.isChorusActivated) { - tempInputChorus[0][i] = _global.lastInputLeftChorusSample; - tempInputChorus[1][i] = _global.lastInputRightChorusSample; - } - if(_global.isReverbActivated) { - tempInputReverb[0][i] = _global.lastInputLeftReverbSample; - tempInputReverb[1][i] = _global.lastInputRightReverbSample; - } - if(_global.isDelayActivated) { - tempInputDelay[0][i] = _global.lastInputLeftDelaySample; - tempInputDelay[1][i] = _global.lastInputRightDelaySample; - } - - _global.qualityCounter++; - _global.qualityCounter %= _global.qualityCounterTop; - } - //apply Filter - if(_global.filter) _dryFilter->process(leftOutput, rightOutput, n); - //Chorus - if(_pluginIChorus && _global.isChorusActivated) { - //apply Filter - if(_global.filter) _chorusFilter->process(tempOutputChorus[0], - tempOutputChorus[1], n); - //apply Chorus - _pluginIChorus->apply(n, 2, tempInputChorus, tempOutputChorus); - for(int i = 0; i < n; i++) { - leftOutput[i] += - tempOutputChorus[0][i] * _global.chorusReturn * _global.masterVolume; - rightOutput[i] += - tempOutputChorus[1][i] * _global.chorusReturn * _global.masterVolume; - } - } - //Reverb - if(_pluginIReverb && _global.isReverbActivated) { - //apply Filter - if(_global.filter) _reverbFilter->process(tempOutputReverb[0], - tempOutputReverb[1], n); - //apply Reverb - _pluginIReverb->apply(n, 2, tempInputReverb, tempOutputReverb); - for(int i = 0; i < n; i++) { - leftOutput[i] += - tempOutputReverb[0][i] * _global.reverbReturn * _global.masterVolume; - rightOutput[i] += - tempOutputReverb[1][i] * _global.reverbReturn * _global.masterVolume; - } - } - //Delay - if(_pluginIDelay && _global.isDelayActivated) { - //apply Filter - if(_global.filter) _delayFilter->process(tempOutputDelay[0], - tempOutputDelay[1], n); - //apply Delay - _pluginIDelay->apply(n, 2, tempInputDelay, tempOutputDelay); - for(int i = 0; i < n; i++) { - leftOutput[i] += - tempOutputDelay[0][i] * _global.delayReturn * _global.masterVolume; - rightOutput[i] += - tempOutputDelay[1][i] * _global.delayReturn * _global.masterVolume; - } - } -} - - -//--------------------------------------------------------- -// inst -//--------------------------------------------------------- - -class QWidget; - -static Mess* instantiate(int sr, const char*) -{ - DeicsOnze* deicsonze = new DeicsOnze(); - deicsonze->setSampleRate(sr); - return deicsonze; -} - -extern "C" { - static MESS descriptor = { - "DeicsOnze", - "DeicsOnze FM DX11/TX81Z emulator", - "0.5.5", // version string - MESS_MAJOR_VERSION, MESS_MINOR_VERSION, - instantiate - }; - - const MESS* mess_descriptor() { return &descriptor; } -} - diff --git a/muse/synti/deicsonze/deicsonze.h b/muse/synti/deicsonze/deicsonze.h deleted file mode 100644 index 26316690..00000000 --- a/muse/synti/deicsonze/deicsonze.h +++ /dev/null @@ -1,603 +0,0 @@ -//=========================================================================== -// -// DeicsOnze an emulator of the YAMAHA DX11 synthesizer -// -// Version 0.5.5 -// -// -// -// -// Copyright (c) 2004-2006 Nil Geisweiller -// -// -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -// 02111-1307, USA or point your web browser to http://www.gnu.org. -//=========================================================================== - - -#ifndef __DEICSONZE_H -#define __DEICSONZE_H - -#include - -#include "deicsonzepreset.h" -#include "deicsonzegui.h" -#include "deicsonzeplugin.h" -#include "deicsonzefilter.h" -#include "libsynti/mess.h" -#include "plugin.h" - -#define DEICSONZESTR "deicsonze" - -#define MAXPITCHBENDVALUE 8191 - -#define RESOLUTION 96000 - -#define MAXFXBUFFERSIZE 48000 -#define NBRFXINPUTS 2 -#define NBRFXOUTPUTS 2 - -#define NBRCTRLS 127 - -#define NBRPRESETS 128 - -#define LOWERNOTEFREQ 8.176 - -#define DB0LEVEL 90 - -#define LENGTHNAME 20 -#define LENGTHCATEGORY 20 -#define LENGTHSUBCATEGORY 20 - -#define MAXVELO 127 -#define MAXVOLUME 100.0 -#define MAXSTRLENGTHINITSETPATH 256 -#define MAXSTRLENGTHBACKGROUNDPIXPATH 256 -#define MAXSTRLENGTHFXLIB 256 -#define MAXSTRLENGTHFXLABEL 256 - -#define DB_MIN 25.0 - -//coef determined by ear to sound like the YAMAHA DX11 -#define COEFFEEDBACK 0.3 -#define COEFPLFO(x) (x==0?0.0:(x==1?0.06:(x==2?0.12:(x==3?0.25:(x==4?0.5:(x==5?0.9:(x==6?3.9:7.9))))))) //return pitch amplitude with respect to sensitivity pitch -#define COEFALFO(x) (x==0?0.0:(x==1?0.4:(x==2?0.9:1.0))) -#define MAX(x,y) (x2.0, 90->1.0, 80->0.5 ... -//--------------------------------------------------------- -inline double outLevel2Amp(int ol); - -//--------------------------------------------------------- -// level2amp, -// 255->0dB->1.0, 0->-27dB->0 -//--------------------------------------------------------- -inline double level2amp(int l); - -//--------------------------------------------------------- -// amp2level -// 1.0->0dB->255, 0->-27dB->0 -//--------------------------------------------------------- -inline int amp2level(double amp); - -//--------------------------------------------------------- -// amp2lowlevel -// 1.0->0dB->127, 0->-27dB->0 -//--------------------------------------------------------- -inline int amp2lowlevel(double amp); - -//--------------------------------------------------------- -// lowlevel2amp, -// 127->0dB->1.0, 0->-27dB->0 -//--------------------------------------------------------- -inline double lowlevel2amp(int l); - -//--------------------------------------------------------- -// envAR2s -// return the time in second of the ATTACK duration -//--------------------------------------------------------- -inline double envAR2s(int ar); - -//--------------------------------------------------------- -// coefAttack -// convert the attack value to a coef for envInct -//--------------------------------------------------------- -inline double coefAttack(unsigned char attack); - -//--------------------------------------------------------- -// envRR2coef -// return the coefficient for the exponential decrease -// with respect to rr and sampleRate, sr -//--------------------------------------------------------- -inline double envRR2coef(int rr, double sr, unsigned char release); - -//-------------------------------------------------------- -// DeicsOnzeCtrl -//-------------------------------------------------------- -struct DeicsOnzeCtlr -{ - std::string name; - int num; - int min, max; -}; - -//--------------------------------------------------------- -// EnvState -//--------------------------------------------------------- - -enum EnvState{ - ATTACK, - DECAY, - SUSTAIN, - RELEASE, - OFF -}; - -//--------------------------------------------------------- -// OpVoice -//--------------------------------------------------------- - -struct OpVoice { - double index; - double inct; - double targetInct; //used if portamento - double amp; //between 0 and 1 - double ampVeloNote; //keeps the ratio amplitude from velo2AmpR and note2Amp - //in order to change independently the output level - //after pressing the note - EnvState envState; - double envIndex; - double envInct; - double envLevel; - double coefVLevel; -}; - -//--------------------------------------------------------- -// PitchEnvState -//--------------------------------------------------------- -enum PitchEnvState{ - PHASE1, - PHASE2, - RELEASE_PE, - OFF_PE -}; - -//--------------------------------------------------------- -// Voice -//--------------------------------------------------------- - -struct Voice { - bool hasAttractor;//true iff the voice has an attractor (portamento occuring) - double attractor; //contains some coeficent for portamento TODO - PitchEnvState pitchEnvState; - double pitchEnvCoefInct; - double pitchEnvCoefInctPhase1; - double pitchEnvCoefInctPhase2; - double pitchEnvCoefInctPhase3; - double pitchEnvCoefInctRelease; - double pitchEnvCoefInctInct; - bool isOn; - bool keyOn; - bool isSustained; - int pitch; //number of the note - double volume; - OpVoice op[NBROP]; - float sampleFeedback; -}; - -//--------------------------------------------------------- -// Channel -//--------------------------------------------------------- -struct Channel { - bool isEnable; - float ampLeft; - float ampRight; - int volume; //0 to 255 - int pan; //TODO -63 +64 or -127 +128 - int modulation;//0 to 127 - int detune;//-31 to 31 - int brightness; //0 to 4095 - int attack; //0 to 127 - int release; //0 to 127 - float feedbackAmp; - float lfoFreq; - float lfoPitch; - float lfoMaxCoefInct; - float lfoCoefInct; - float lfoCoefInctInct; - unsigned int lfoIndex; - unsigned int lfoMaxIndex; - float lfoMaxAmp; - float lfoMaxDAmp; - float lfoAmp; - float lfoCoefAmp; - double lfoDelayIndex; - double lfoDelayInct; - double lfoDelayMaxIndex; - bool delayPassed; - bool sustain; - double pitchBendCoef;//speed coef to read the sample - unsigned char nbrVoices; - Voice voices[MAXNBRVOICES]; - double lastInc[NBROP]; - std::list lastVoiceKeyOn; //stack of the voice number - int lastVoiceKeyOff; - bool isLastNote; - //FX - float chorusAmount; //between 0.0 and 1.0 - float reverbAmount; //between 0.0 and 1.0 - float delayAmount; //between 0.0 and 1.0 -}; - -//--------------------------------------------------------- -// Global -//--------------------------------------------------------- -enum Quality { - high, - middle, - low, - ultralow -}; - -struct Global { - float masterVolume; - Quality quality; //high, middle, low - int qualityCounter; //counter to skip some sample depending on quality - int qualityCounterTop; //number of sample - 1 to skip - double deiSampleRate; //depending on quality deicsOnze sample rate varies - bool filter; //low passe filter used when the sampling is low - int fontSize; - float lastLeftSample; - float lastRightSample; - float lastInputLeftChorusSample; - float lastInputRightChorusSample; - float lastInputLeftReverbSample; - float lastInputRightReverbSample; - float lastInputLeftDelaySample; - float lastInputRightDelaySample; - Channel channel[NBRCHANNELS]; - bool isChorusActivated; - float chorusReturn; - bool isReverbActivated; - float reverbReturn; - bool isDelayActivated; - float delayReturn; -}; - -//--------------------------------------------------------- -// DeicsOnze : DX11 emulator -//--------------------------------------------------------- - -class DeicsOnze : public Mess { - DeicsOnzeGui* _gui; - - static int useCount; - static float waveTable[NBRWAVES][RESOLUTION]; - - private: - void parseInitData(int length, const unsigned char* data); - void loadConfiguration(QString fileName); - - public: - float** tempInputChorus; - float** tempOutputChorus; - float** tempInputReverb; - float** tempOutputReverb; - float** tempInputDelay; - float** tempOutputDelay; - - float* getSinusWaveTable(); - - int nbrCtrl; - - QString _initSetPath; - bool _isInitSet; - QString _backgroundPixPath; - bool _isBackgroundPix; - bool _saveOnlyUsed; - bool _saveConfig; - DeicsOnzeCtlr _ctrl[NBRCTRLS]; - Global _global; - Preset* _preset[NBRCHANNELS]; - Preset* _initialPreset; - - //FX - PluginI* _pluginIReverb; - PluginI* _pluginIChorus; - PluginI* _pluginIDelay; - - void initPluginReverb(Plugin*); - void initPluginChorus(Plugin*); - void initPluginDelay(Plugin*); - - void setReverbParam(int i, double val); - double getReverbParam(int i); - void setChorusParam(int i, double val); - double getChorusParam(int i); - void setDelayBPM(float val); - void setDelayBeatRatio(float val); - void setDelayFeedback(float val); - void setDelayLFOFreq(float val); - void setDelayLFODepth(float val); - void setDelayDryWet(float val); - float getDelayBPM(); - float getDelayBeatRatio(); - float getDelayFeedback(); - float getDelayLFOFreq(); - float getDelayLFODepth(); - - //Filter - LowFilter* _dryFilter; - LowFilter* _chorusFilter; - LowFilter* _reverbFilter; - LowFilter* _delayFilter; - - mutable MidiPatch _patch; - mutable int _numPatchProg; //used by getPatchInfo - - //preset tree - Set* _set; - - void setSampleRate(int sr); - Preset* findPreset(int hbank, int lbank, int prog) const; - Subcategory* findSubcategory(int hbank, int lbank) const; - Category* findCategory(int hbank) const; - void initCtrls(); - void initGlobal(); - void initChannels(); - void initChannel(int c); - void resetVoices(); //when panic is pressed - void initVoice(int c, int v); - void initVoices(int c); - void setPreset(int c); - void setFeedback(int c); - void setLfo(int c); - void setOutLevel(int c, int k); //set the output level of the op k - void setOutLevel(int c); //do the same for all operators - void setEnvAttack(int c, int v, int k); //set envInct of voice v and op k - void setEnvAttack(int c, int k); //do the same for all voices of operator k - void setEnvAttack(int c); //do the same for all voices all operators - void setEnvRelease(int c, int v, int k); //set coefVLevel of voice v and op k - void setEnvRelease(int c, int k); //do the same for all voices of operator k - void setEnvRelease(int c); //do the same for all voices all operators - void setPitchEnvRelease(int c, int v); - void setQuality(Quality q); - void setFilter(bool f); - double brightness2Amp(int c, int k); //get the brightness of the operator k - void loadSutulaPresets(); - void loadSet(QString s); - int noteOff2Voice(int c); //return the first free voice - int minVolu2Voice(int c); - int pitchOn2Voice(int c, int pitch); - void programSelect(int c, int hbank, int lbank, int prog); - bool existsKeyOn(int ch); - void setNbrVoices(int c, int nv); - void setMasterVol(int v); - void setChannelEnable(int c, bool e); - void setChannelVol(int c, int v); - void setChannelPan(int c, int v); - void applyChannelAmp(int c); - void setChannelDetune(int c, int d); - void setChannelBrightness(int c, int b); - void setChannelModulation(int c, int m); - void setChannelAttack(int c, int a); - void setChannelRelease(int c, int r); - void setChannelReverb(int c, int r); - void setChannelChorus(int c, int val); - void setChannelDelay(int c, int val); - void setChorusReturn(int val); - void setReverbReturn(int val); - void setDelayReturn(int val); - bool getChannelEnable(int c) const; - int getNbrVoices(int c) const; - int getMasterVol(void) const; - bool getFilter(void) const; - int getChannelVol(int c) const; - int getChannelPan(int c) const; - int getChannelDetune(int c) const; - int getChannelBrightness(int c) const; - int getChannelModulation(int c) const; - int getChannelAttack(int c) const; - int getChannelRelease(int c) const; - int getChannelReverb(int c) const; - int getChannelChorus(int c) const; - int getChannelDelay(int c) const; - int getChorusReturn(void) const; - int getReverbReturn(void) const; - int getDelayReturn(void) const; - void setPitchBendCoef(int c, int val); - void setModulation(int c, int val); //TODO check between setChannelModulation - void setSustain(int c, int val); - - void readConfiguration(QDomNode qdn); - void writeConfiguration(AL::Xml* xml); - - bool setController(int ch, int ctrl, int val, bool fromGui); - virtual bool setController(int ch, int ctrl, int val); - bool sysex(int length, const unsigned char* data, bool fromGui); - virtual bool sysex(int length, const unsigned char* data); - - virtual const char* getPatchName(int ch, int number, int) const; - virtual const MidiPatch* getPatchInfo(int, const MidiPatch *) const; - - virtual int getControllerInfo(int arg1, const char** arg2, - int* arg3, int* arg4, int* arg5); - virtual void getInitData(int* length, const unsigned char** data); - virtual bool playNote(int channel, int pitch, int velo); - virtual void process(float** buffer, int offset, int n); - - // GUI interface routines - virtual bool hasGui() const { return true; } - virtual bool guiVisible() const; - virtual void showGui(bool); - virtual void getGeometry(int* x, int* y, int* w, int* h) const; - virtual void setGeometry(int, int, int, int); - - DeicsOnze(); - ~DeicsOnze(); -}; - - -#endif /* __DEICSONZE_H */ diff --git a/muse/synti/deicsonze/deicsonzefilter.cpp b/muse/synti/deicsonze/deicsonzefilter.cpp deleted file mode 100644 index d4bef946..00000000 --- a/muse/synti/deicsonze/deicsonzefilter.cpp +++ /dev/null @@ -1,67 +0,0 @@ -//=========================================================================== -// -// DeicsOnze an emulator of the YAMAHA DX11 synthesizer -// -// Version 0.5.5 -// -// deicsonzefilter.cpp -// -// -// Copyright (c) 2004-2006 Nil Geisweiller -// -// -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -// 02111-1307, USA or point your web browser to http://www.gnu.org. -//=========================================================================== - -#include "deicsonzefilter.h" - -LowFilter::LowFilter() { - _li = 0.0; - _ri = 0.0; - _lo = 0.0; - _ro = 0.0; -} - -void LowFilter::setSamplerate(int sr) { - _samplerate = sr; -} - -void LowFilter::setCutoff(double cut) { - _cutoff = cut; - float w = 2.0 * (float)_samplerate; - float fCut = _cutoff * 2.0 * M_PI; - float norm = 1.0 / (fCut + w); - _a = fCut * norm; - _b = (w - fCut) * norm; -} - -void LowFilter::process(float* leftSamples, float* rightSamples, unsigned n) { - float cl, cr; - for(unsigned i = 0; i < n; i++) { - cl = leftSamples[i]; - cr = rightSamples[i]; - - leftSamples[i] = _a * (cl + _li) + _b * _lo; - rightSamples[i] = _a * (cr + _ri) + _b * _ro; - - _li = cl; - _ri = cr; - _lo = leftSamples[i]; - _ro = rightSamples[i]; - } -} - diff --git a/muse/synti/deicsonze/deicsonzefilter.h b/muse/synti/deicsonze/deicsonzefilter.h deleted file mode 100644 index fc92142a..00000000 --- a/muse/synti/deicsonze/deicsonzefilter.h +++ /dev/null @@ -1,59 +0,0 @@ -//=========================================================================== -// -// DeicsOnze an emulator of the YAMAHA DX11 synthesizer -// -// Version 0.5.5 -// -// deicsonzefilter.h -// -// -// Copyright (c) 2004-2006 Nil Geisweiller -// -// -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -// 02111-1307, USA or point your web browser to http://www.gnu.org. -//=========================================================================== - -#ifndef __DEICSONZEFILTER_H -#define __DEICSONZEFILTER_H - -#include - -class LowFilter { - private: - int _samplerate; - - double _cutoff; //frequency cutoff - float _a; - float _b; - - float _li; //last left input sample - float _ri; //last right input sample - float _lo; //last left output sample - float _ro; //last right output sample - public: - LowFilter(); - ~LowFilter() {} - - void setSamplerate(int sr); - void setCutoff(double cut); - //int getSamplerate(); - //double getCutoff(); - - void process(float* leftSamples, float* RightSamples, unsigned n); -}; - -#endif /* __DEICSONZEFILTER_H */ diff --git a/muse/synti/deicsonze/deicsonzegui.cpp b/muse/synti/deicsonze/deicsonzegui.cpp deleted file mode 100644 index a651bcb1..00000000 --- a/muse/synti/deicsonze/deicsonzegui.cpp +++ /dev/null @@ -1,4545 +0,0 @@ -//=========================================================================== -// -// DeicsOnze an emulator of the YAMAHA DX11 synthesizer -// -// Version 0.5.5 -// -// deicsonzegui.cpp -// -// -// Copyright (c) 2004-2006 Nil Geisweiller -// -// -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -// 02111-1307, USA or point your web browser to http://www.gnu.org. -//=========================================================================== - -#include "muse/midi.h" -#include "muse/midictrl.h" -#include "config.h" -#include "plugin.h" -#include "plugingui.h" -#include "plugins/pandelay/pandelaymodel.h" - -#include "deicsonzegui.h" - -class PluginDialog; - -DeicsOnzeGui::DeicsOnzeGui(DeicsOnze* deicsOnze) - : QDialog(0), - MessGui() -{ - setupUi(this); - _deicsOnze = deicsOnze; - lastDir = QDir::currentPath(); - - _currentChannel = 0; - - //FX - _chorusSuperWidget = NULL; - _reverbSuperWidget = NULL; - - tColor = new TCOLOR; - bColor = new BCOLOR; - etColor = new ETCOLOR; - ebColor = new EBCOLOR; - curColor = new QColor(0, 0, 0); - - pitchEnvelopeGraph = new QFramePitchEnvelope(pitchEnvFrame, this); - - envelopeGraph[0] = new QFrameEnvelope(envelope1Frame, this, 0); - envelopeGraph[1] = new QFrameEnvelope(envelope2Frame, this, 1); - envelopeGraph[2] = new QFrameEnvelope(envelope3Frame, this, 2); - envelopeGraph[3] = new QFrameEnvelope(envelope4Frame, this, 3); - - //change/enable channel - connect(ChannelCheckBox, SIGNAL(toggled(bool)), this, - SLOT(setEnabledChannel(bool))); - connect(ChannelNumSpinBox, SIGNAL(valueChanged(int)), this, - SLOT(setChangeChannel(int))); - //MasterVolume - connect(masterVolKnob, SIGNAL(valueChanged(double, int)), - this, SLOT(setMasterVolKnob(double))); - //Panic - connect(panicButton, SIGNAL(pressed()), this, SLOT(setPanic())); - //reset Ctrls - connect(resCtrlButton, SIGNAL(pressed()), this, SLOT(setResCtrl())); - //FX - connect(chorusActivCheckBox, SIGNAL(toggled(bool)), - this, SLOT(setChorusActiv(bool))); - connect(chChorusSlider, SIGNAL(valueChanged(int)), - this, SLOT(setChannelChorus(int))); - connect(returnChorusSlider, SIGNAL(valueChanged(int)), - this, SLOT(setChorusReturn(int))); - connect(selectLadspaChorusPushButton, SIGNAL(pressed()), - this, SLOT(setSelectChorusPlugin())); - /*connect(panChorus1Knob, SIGNAL(valueChanged(double, int)), - this, SLOT(setPanChorus1(double))); - connect(LFOFreqChorus1Knob, SIGNAL(valueChanged(double, int)), - this, SLOT(setLFOFreqChorus1(double))); - connect(depthChorus1Knob, SIGNAL(valueChanged(double, int)), - this, SLOT(setDepthChorus1(double))); - connect(panChorus2Knob, SIGNAL(valueChanged(double, int)), - this, SLOT(setPanChorus2(double))); - connect(LFOFreqChorus2Knob, SIGNAL(valueChanged(double, int)), - this, SLOT(setLFOFreqChorus2(double))); - connect(depthChorus2Knob, SIGNAL(valueChanged(double, int)), - this, SLOT(setDepthChorus2(double)));*/ - connect(reverbActivCheckBox, SIGNAL(toggled(bool)), - this, SLOT(setReverbActiv(bool))); - connect(chReverbSlider, SIGNAL(valueChanged(int)), - this, SLOT(setChannelReverb(int))); - connect(returnReverbSlider, SIGNAL(valueChanged(int)), - this, SLOT(setReverbReturn(int))); - connect(selectLadspaReverbPushButton, SIGNAL(pressed()), - this, SLOT(setSelectReverbPlugin())); - //Quick edit - connect(channelVolumeKnob, SIGNAL(valueChanged(double, int)), - this, SLOT(setChannelVolKnob(double))); - connect(channelPanKnob, SIGNAL(valueChanged(double, int)), - this, SLOT(setChannelPan(double))); - connect(brightnessKnob, SIGNAL(valueChanged(double, int)), - this, SLOT(setBrightnessKnob(double))); - connect(modulationKnob, SIGNAL(valueChanged(double, int)), - this, SLOT(setModulationKnob(double))); - connect(detuneKnob, SIGNAL(valueChanged(double, int)), - this, SLOT(setDetuneKnob(double))); - connect(attackKnob, SIGNAL(valueChanged(double, int)), - this, SLOT(setAttackKnob(double))); - connect(releaseKnob, SIGNAL(valueChanged(double, int)), - this, SLOT(setReleaseKnob(double))); - //nbr of voices - connect(nbrVoicesSpinBox, SIGNAL(valueChanged(int)), - this, SLOT(setNbrVoices(int))); - //quality - connect(qualityComboBox, SIGNAL(activated(const QString&)), - this, SLOT(setQuality(const QString&))); - connect(filterCheckBox, SIGNAL(toggled(bool)), - this, SLOT(setFilter(bool))); - //change font size - connect(fontSizeSpinBox, SIGNAL(valueChanged(int)), - this, SLOT(setFontSize(int))); - //load save configuration - connect(saveConfPushButton, SIGNAL(pressed()), - this, SLOT(saveConfiguration())); - connect(loadConfPushButton, SIGNAL(pressed()), - this, SLOT(loadConfiguration())); - connect(saveDefaultPushButton, SIGNAL(pressed()), - this, SLOT(saveDefaultConfiguration())); - //load init set - connect(initSetCheckBox, SIGNAL(toggled(bool)), - this, SLOT(setIsInitSet(bool))); - connect(initSetPathLineEdit, SIGNAL(textChanged(const QString&)), - this, SLOT(setInitSetPath(const QString&))); - connect(initSetBrowsePushButton, SIGNAL(pressed()), - this, SLOT(setBrowseInitSetPath())); - //load background pix - connect(imageCheckBox, SIGNAL(toggled(bool)), - this, SLOT(setIsBackgroundPix(bool))); - connect(imagePathLineEdit, SIGNAL(textChanged(const QString&)), - this, SLOT(setBackgroundPixPath(const QString&))); - connect(imageBrowsePushButton, SIGNAL(pressed()), - this, SLOT(setBrowseBackgroundPixPath())); - - //Midi in channel - //connect(MidiInChComboBox, SIGNAL(activated(int)), - // this, SLOT(setMidiInCh(int))); - //Save mode ratio button - connect(minSaveRadioButton, SIGNAL(toggled(bool)), - this, SLOT(setSaveOnlyUsed(bool))); - connect(hugeSaveRadioButton, SIGNAL(toggled(bool)), - this, SLOT(setSaveOnlyUsedComp(bool))); - connect(saveConfigCheckBox, SIGNAL(toggled(bool)), - this, SLOT(setSaveConfig(bool))); - //Colors - connect(redSlider, SIGNAL(valueChanged(int)), - this, SLOT(setRedColor(int))); - connect(greenSlider, SIGNAL(valueChanged(int)), - this, SLOT(setGreenColor(int))); - connect(blueSlider, SIGNAL(valueChanged(int)), - this, SLOT(setBlueColor(int))); - connect(colorListBox, - SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), - this, SLOT(setRGBSliders(QListWidgetItem*))); - //PopupMenu Category Subcategory Preset - connect(categoryListView, - SIGNAL(customContextMenuRequested(const QPoint&)), - this, SLOT(categoryPopupMenu(const QPoint&))); - connect(subcategoryListView, - SIGNAL(customContextMenuRequested(const QPoint&)), - this, SLOT(subcategoryPopupMenu(const QPoint&))); - connect(presetListView, - SIGNAL(customContextMenuRequested(const QPoint &)), - this, SLOT(presetPopupMenu(const QPoint &))); - //Preset and bank - connect(presetLineEdit, SIGNAL(textChanged(const QString&)), - this, SLOT(setPresetName(const QString&))); - connect(subcategoryLineEdit, SIGNAL(textChanged(const QString&)), - this, SLOT(setSubcategoryName(const QString&))); - connect(categoryLineEdit, SIGNAL(textChanged(const QString&)), - this, SLOT(setCategoryName(const QString&))); - connect(hbankSpinBox, SIGNAL(valueChanged(int)), - this, SLOT(setHBank(int))); - connect(lbankSpinBox, SIGNAL(valueChanged(int)), - this, SLOT(setLBank(int))); - connect(progSpinBox, SIGNAL(valueChanged(int)), this, SLOT(setProg(int))); - //Global - //connect(channelPanSlider, SIGNAL(valueChanged(int)), - //this, SLOT(setChannelPan(int))); - connect(feedbackSlider, SIGNAL(valueChanged(int)), - this, SLOT(setFeedback(int))); - connect(LFOWaveComboBox, SIGNAL(activated(int)), - this, SLOT(setLfoWave(int))); - connect(LFOSpeedSlider, SIGNAL(valueChanged(int)), - this, SLOT(setLfoSpeed(int))); - connect(LFODelaySlider, SIGNAL(valueChanged(int)), - this, SLOT(setLfoDelay(int))); - connect(PModDepthSlider, SIGNAL(valueChanged(int)), - this, SLOT(setLfoPModDepth(int))); - connect(PModSensSlider, SIGNAL(valueChanged(int)), - this, SLOT(setLfoPitchSens(int))); - connect(AModDepthSlider, SIGNAL(valueChanged(int)), - this, SLOT(setLfoAModDepth(int))); - connect(AModSensSlider, SIGNAL(valueChanged(int)), - this, SLOT(setLfoAmpSens(int))); - connect(transposeSlider, SIGNAL(valueChanged(int)), - this, SLOT(setTranspose(int))); - //connect(channelDetuneSlider, SIGNAL(valueChanged(int)), - // this, SLOT(setChannelDetune(int))); - connect(algorithmComboBox, SIGNAL(activated(int)), - this, SLOT(setAlgorithm(int))); - connect(pitchBendRangeSlider, SIGNAL(valueChanged(int)), - this, SLOT(setPitchBendRange(int))); - //Pitch Envelope - connect(PL1SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setPL1(int))); - connect(PL2SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setPL2(int))); - connect(PL3SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setPL3(int))); - connect(PR1SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setPR1(int))); - connect(PR2SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setPR2(int))); - connect(PR3SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setPR3(int))); - //Function - connect(fcVolumeSpinBox, SIGNAL(valueChanged(int)), - this, SLOT(setFcVolume(int))); - connect(fcPitchSpinBox, SIGNAL(valueChanged(int)), - this, SLOT(setFcPitch(int))); - connect(fcAmplitudeSpinBox, SIGNAL(valueChanged(int)), - this, SLOT(setFcAmplitude(int))); - connect(mwPitchSpinBox, SIGNAL(valueChanged(int)), - this, SLOT(setMwPitch(int))); - connect(mwAmplitudeSpinBox, SIGNAL(valueChanged(int)), - this, SLOT(setMwAmplitude(int))); - connect(bcPitchSpinBox, SIGNAL(valueChanged(int)), - this, SLOT(setBcPitch(int))); - connect(bcAmplitudeSpinBox, SIGNAL(valueChanged(int)), - this, SLOT(setBcAmplitude(int))); - connect(bcPitchBiasSpinBox, SIGNAL(valueChanged(int)), - this, SLOT(setBcPitchBias(int))); - connect(bcEgBiasSpinBox, SIGNAL(valueChanged(int)), - this, SLOT(setBcEgBias(int))); - connect(atPitchSpinBox, SIGNAL(valueChanged(int)), - this, SLOT(setAtPitch(int))); - connect(atAmplitudeSpinBox, SIGNAL(valueChanged(int)), - this, SLOT(setAtAmplitude(int))); - connect(atPitchBiasSpinBox, SIGNAL(valueChanged(int)), - this, SLOT(setAtPitchBias(int))); - connect(atEgBiasSpinBox, SIGNAL(valueChanged(int)), - this, SLOT(setAtEgBias(int))); - //connect(reverbSpinBox, SIGNAL(valueChanged(int)), - // this, SLOT(setReverbRate(int))); - connect(polyMonoComboBox, SIGNAL(activated(int)), - this, SLOT(setPolyMode(int))); - connect(PortFingerFullComboBox, SIGNAL(activated(int)), - this, SLOT(setPortFingerFull(int))); - connect(PortamentoTimeSlider, SIGNAL(valueChanged(int)), - this, SLOT(setPortaTime(int))); - //envelope - connect(AR1SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setAR1(int))); - connect(D1R1SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setD1R1(int))); - connect(D1L1SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setD1L1(int))); - connect(D2R1SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setD2R1(int))); - connect(RR1SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setRR1(int))); - connect(AR2SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setAR2(int))); - connect(D1R2SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setD1R2(int))); - connect(D1L2SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setD1L2(int))); - connect(D2R2SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setD2R2(int))); - connect(RR2SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setRR2(int))); - connect(AR3SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setAR3(int))); - connect(D1R3SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setD1R3(int))); - connect(D1L3SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setD1L3(int))); - connect(D2R3SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setD2R3(int))); - connect(RR3SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setRR3(int))); - connect(AR4SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setAR4(int))); - connect(D1R4SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setD1R4(int))); - connect(D1L4SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setD1L4(int))); - connect(D2R4SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setD2R4(int))); - connect(RR4SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setRR4(int))); - //Scaling - connect(LS1Slider, SIGNAL(valueChanged(int)), this, SLOT(setLS1(int))); - connect(RS1Slider, SIGNAL(valueChanged(int)), this, SLOT(setRS1(int))); - connect(LS2Slider, SIGNAL(valueChanged(int)), this, SLOT(setLS2(int))); - connect(RS2Slider, SIGNAL(valueChanged(int)), this, SLOT(setRS2(int))); - connect(LS3Slider, SIGNAL(valueChanged(int)), this, SLOT(setLS3(int))); - connect(RS3Slider, SIGNAL(valueChanged(int)), this, SLOT(setRS3(int))); - connect(LS4Slider, SIGNAL(valueChanged(int)), this, SLOT(setLS4(int))); - connect(RS4Slider, SIGNAL(valueChanged(int)), this, SLOT(setRS4(int))); - //Volume - connect(OUT1Slider, SIGNAL(valueChanged(int)), this, SLOT(setVol1(int))); - connect(OUT2Slider, SIGNAL(valueChanged(int)), this, SLOT(setVol2(int))); - connect(OUT3Slider, SIGNAL(valueChanged(int)), this, SLOT(setVol3(int))); - connect(OUT4Slider, SIGNAL(valueChanged(int)), this, SLOT(setVol4(int))); - //Ratio and Frequency - connect(CoarseRatio1SpinBox, SIGNAL(valueChanged(int)), - this, SLOT(setCoarseRatio1(int))); - connect(FineRatio1SpinBox, SIGNAL(valueChanged(int)), - this, SLOT(setFineRatio1(int))); - connect(Freq1SpinBox, SIGNAL(valueChanged(int)), - this, SLOT(setFreq1(int))); - connect(Fix1CheckBox, SIGNAL(toggled(bool)), this, SLOT(setFix1(bool))); - connect(CoarseRatio2SpinBox, SIGNAL(valueChanged(int)), - this, SLOT(setCoarseRatio2(int))); - connect(FineRatio2SpinBox, SIGNAL(valueChanged(int)), - this, SLOT(setFineRatio2(int))); - connect(Freq2SpinBox, SIGNAL(valueChanged(int)), - this, SLOT(setFreq2(int))); - connect(Fix2CheckBox, SIGNAL(toggled(bool)), this, SLOT(setFix2(bool))); - connect(CoarseRatio3SpinBox, SIGNAL(valueChanged(int)), - this, SLOT(setCoarseRatio3(int))); - connect(FineRatio3SpinBox, SIGNAL(valueChanged(int)), - this, SLOT(setFineRatio3(int))); - connect(Freq3SpinBox, SIGNAL(valueChanged(int)), - this, SLOT(setFreq3(int))); - connect(Fix3CheckBox, SIGNAL(toggled(bool)), this, SLOT(setFix3(bool))); - connect(CoarseRatio4SpinBox, SIGNAL(valueChanged(int)), - this, SLOT(setCoarseRatio4(int))); - connect(FineRatio4SpinBox, SIGNAL(valueChanged(int)), - this, SLOT(setFineRatio4(int))); - connect(Freq4SpinBox, SIGNAL(valueChanged(int)), - this, SLOT(setFreq4(int))); - connect(Fix4CheckBox, SIGNAL(toggled(bool)), this, SLOT(setFix4(bool))); - //Sensitivity - connect(AME1CheckBox, SIGNAL(toggled(bool)), this, SLOT(setAME1(bool))); - connect(EBS1Slider, SIGNAL(valueChanged(int)), this, SLOT(setEBS1(int))); - connect(KVS1Slider, SIGNAL(valueChanged(int)), this, SLOT(setKVS1(int))); - connect(AME2CheckBox, SIGNAL(toggled(bool)), this, SLOT(setAME2(bool))); - connect(EBS2Slider, SIGNAL(valueChanged(int)), this, SLOT(setEBS2(int))); - connect(KVS2Slider, SIGNAL(valueChanged(int)), this, SLOT(setKVS2(int))); - connect(AME3CheckBox, SIGNAL(toggled(bool)), this, SLOT(setAME3(bool))); - connect(EBS3Slider, SIGNAL(valueChanged(int)), this, SLOT(setEBS3(int))); - connect(KVS3Slider, SIGNAL(valueChanged(int)), this, SLOT(setKVS3(int))); - connect(AME4CheckBox, SIGNAL(toggled(bool)), this, SLOT(setAME4(bool))); - connect(EBS4Slider, SIGNAL(valueChanged(int)), this, SLOT(setEBS4(int))); - connect(KVS4Slider, SIGNAL(valueChanged(int)), this, SLOT(setKVS4(int))); - //detune - connect(DET1Slider, SIGNAL(valueChanged(int)), this, SLOT(setDET1(int))); - connect(DET2Slider, SIGNAL(valueChanged(int)), this, SLOT(setDET2(int))); - connect(DET3Slider, SIGNAL(valueChanged(int)), this, SLOT(setDET3(int))); - connect(DET4Slider, SIGNAL(valueChanged(int)), this, SLOT(setDET4(int))); - //WaveForm - connect(WaveForm1ComboBox, SIGNAL(activated(int)), - this, SLOT(setWaveForm1(int))); - connect(WaveForm2ComboBox, SIGNAL(activated(int)), - this, SLOT(setWaveForm2(int))); - connect(WaveForm3ComboBox, SIGNAL(activated(int)), - this, SLOT(setWaveForm3(int))); - connect(WaveForm4ComboBox, SIGNAL(activated(int)), - this, SLOT(setWaveForm4(int))); - //PanDelay - connect(delayActivCheckBox, SIGNAL(toggled(bool)), this, - SLOT(setActivDelay(bool))); - connect(delayReturnSlider, SIGNAL(valueChanged(int)), this, - SLOT(setDelayReturn(int))); - connect(chDelaySlider, SIGNAL(valueChanged(int)), this, - SLOT(setChannelDelay(int))); - connect(delayBPMFloatentry, SIGNAL(valueChanged(double, int)), this, - SLOT(setDelayBPM(double))); - connect(delayBPMKnob, SIGNAL(valueChanged(double, int)), this, - SLOT(setDelayBPM(double))); - connect(delayBeatRatioFloatentry, SIGNAL(valueChanged(double, int)), this, - SLOT(setDelayBeatRatio(double))); - connect(delayBeatRatioKnob, SIGNAL(valueChanged(double, int)), this, - SLOT(setDelayBeatRatio(double))); - connect(delayFeedbackFloatentry, SIGNAL(valueChanged(double, int)), this, - SLOT(setDelayFeedback(double))); - connect(delayFeedbackKnob, SIGNAL(valueChanged(double, int)), this, - SLOT(setDelayFeedback(double))); - connect(delayPanLFOFreqFloatentry, SIGNAL(valueChanged(double, int)), this, - SLOT(setDelayPanLFOFreq(double))); - connect(delayPanLFOFreqKnob, SIGNAL(valueChanged(double, int)), this, - SLOT(setDelayPanLFOFreq(double))); - delayPanLFOFreqKnob->setMinLogValue(0.1); - delayPanLFOFreqKnob->setMaxLogValue(10.0); - connect(delayPanLFODepthFloatentry, SIGNAL(valueChanged(double, int)), this, - SLOT(setDelayPanLFODepth(double))); - connect(delayPanLFODepthKnob, SIGNAL(valueChanged(double, int)), this, - SLOT(setDelayPanLFODepth(double))); - //category subcategory preset - connect(categoryListView, - SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), - this, SLOT(setCategory(QTreeWidgetItem*))); - connect(categoryListView, SIGNAL(itemClicked(QTreeWidgetItem*,int)), - this, SLOT(setCategory(QTreeWidgetItem*))); - connect(subcategoryListView, - SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), - this, SLOT(setSubcategory(QTreeWidgetItem*))); - connect(subcategoryListView, SIGNAL(itemClicked(QTreeWidgetItem*,int)), - this, SLOT(setSubcategory(QTreeWidgetItem*))); - connect(presetListView, - SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), - this, SLOT(setPreset(QTreeWidgetItem*))); - connect(presetListView, SIGNAL(itemClicked(QTreeWidgetItem*,int)), - this, SLOT(setPreset(QTreeWidgetItem*))); - //Connect socketnotifier to fifo - QSocketNotifier* s = new QSocketNotifier(readFd, QSocketNotifier::Read); - connect(s, SIGNAL(activated(int)), SLOT(readMessage(int))); - - setTextColor(reinterpret_cast(*tColor)); - setBackgroundColor(reinterpret_cast(*bColor)); - setEditTextColor(reinterpret_cast(*etColor)); - setEditBackgroundColor(reinterpret_cast(*ebColor)); - - //select the first item in the color list - colorListBox->setCurrentItem(colorListBox->item(0)); - - //color the colorFrame with the color of the text - QPalette p = colorFrame->palette(); - p.setColor(QPalette::Window, (reinterpret_cast(*tColor))); - colorFrame->setPalette(p); - - //update maaster volume - //updateMasterVolume(INITMASTERVOL); - //update Quick edit - updateQuickEdit(); - - //updatePreset(); - _enabledPreset = true; - setEnabledPreset(false); - - updateInitSetPath - (INSTPREFIX "/share/muse-" VERSION "/presets/deicsonze/SutulaBank.dei"); - //"/usr/local/share/muse-1.0pre1/presets/deicsonze/SutulaBank.dei") - //); - updateBackgroundPixPath - (INSTPREFIX "/share/muse-" VERSION "/wallpapers/paper2.jpg"); - updateBackgroundPixCheckBox(true); - applyBackgroundPix(); -} - -//----------------------------------------------------------- -// setEnabledChannel -//----------------------------------------------------------- -void DeicsOnzeGui::setEnabledChannel(bool e) { - sendController(_currentChannel, CTRL_CHANNELENABLE, (int)e); - updateEnabledChannel(e); -} -//----------------------------------------------------------- -// setUpdateEnabledChannelCheckBox -//----------------------------------------------------------- -void DeicsOnzeGui::updateChannelCheckBox(bool b) { - ChannelCheckBox->blockSignals(true); - ChannelCheckBox->setChecked(b); - ChannelCheckBox->blockSignals(false); -} - -//----------------------------------------------------------- -// setChangeChannel -//----------------------------------------------------------- -void DeicsOnzeGui::setChangeChannel(int c) { - _currentChannel = c-1; - updateChannelEnable(_deicsOnze->getChannelEnable(_currentChannel)); - updateNbrVoices(_deicsOnze->getNbrVoices(_currentChannel)); - //update quick edit - updateQuickEdit(); - //update preset - int p, l, h; - _deicsOnze->_preset[_currentChannel]->getHBankLBankProg(&h, &l, &p); - updateSelectPreset(h, l, p); - updatePreset(); -} -//----------------------------------------------------------- -// setPanic -//----------------------------------------------------------- -void DeicsOnzeGui::setPanic() { - unsigned char* message = new unsigned char[1]; - message[0]=SYSEX_PANIC; - sendSysex(message, 1); -} - -//----------------------------------------------------------- -// setResCtrl -//----------------------------------------------------------- -void DeicsOnzeGui::setResCtrl() { - //Detune - updateChannelDetune(0); - sendController(_currentChannel, CTRL_CHANNELDETUNE, 0); - //Brightness - updateBrightness(MIDFINEBRIGHTNESS); - sendController(_currentChannel, CTRL_FINEBRIGHTNESS, MIDFINEBRIGHTNESS); - //Attack - updateAttack(MIDATTACK); - sendController(_currentChannel, CTRL_ATTACK_TIME, MIDATTACK); - //Release - updateRelease(MIDRELEASE); - sendController(_currentChannel, CTRL_RELEASE_TIME, MIDRELEASE); -} - -//----------------------------------------------------------- -// setNbrVoices -//----------------------------------------------------------- -void DeicsOnzeGui::setNbrVoices(int nv) { - sendController(_currentChannel, CTRL_NBRVOICES, nv); -} - -//---------------------------------------------------------- -// setMidiInCh -//---------------------------------------------------------- -//void DeicsOnzeGui::setMidiInCh(int m) { -// unsigned char* message = new unsigned char[2]; -// message[0]=SYSEX_CHANNELNUM; -// message[1]=(unsigned char)(m-1); -// sendSysex(message, 2); -//} - -//----------------------------------------------------------- -// saveConfiguration -//----------------------------------------------------------- -void DeicsOnzeGui::saveConfiguration() { - QString filename = - QFileDialog::getSaveFileName( - this, - tr("Save configuration"), - lastDir, - QString("*.dco")); - if(!filename.isEmpty()) { - QFileInfo fi(filename); - lastDir = fi.path(); - if(!filename.endsWith(".dco")) filename+=".dco"; - QFile f(filename); - f.open(QIODevice::WriteOnly); - AL::Xml* xml = new AL::Xml(&f); - xml->header(); - _deicsOnze->writeConfiguration(xml); - f.close(); - } -} - -//----------------------------------------------------------- -// saveDefaultConfiguration -//----------------------------------------------------------- -void DeicsOnzeGui::saveDefaultConfiguration() { - QString filename = QString(getenv("HOME")) + QString("/." DEICSONZESTR ".dco"); - if(!filename.isEmpty()) { - QFile f(filename); - f.open(QIODevice::WriteOnly); - - AL::Xml* xml = new AL::Xml(&f); - xml->header(); - _deicsOnze->writeConfiguration(xml); - f.close(); - } -} - -//----------------------------------------------------------- -// loadConfiguration -//----------------------------------------------------------- -void DeicsOnzeGui::loadConfiguration(QString fileName) { - // read the XML file and create DOM tree - if(!fileName.isEmpty()) { - QFile confFile(fileName); - if(!confFile.open(QIODevice::ReadOnly)) { - QMessageBox::critical(0, - tr("Critical Error"), - tr("Cannot open file %1").arg(fileName)); - return; - } - QDomDocument domTree; - if (!domTree.setContent(&confFile )) { - QMessageBox::critical - (0, tr("Critical Error"), - tr("Parsing error for file %1").arg(fileName)); - confFile.close(); - return; - } - - confFile.close(); - - QDomNode node = domTree.documentElement(); - while (!node.isNull()) { - QDomElement e = node.toElement(); - if (e.isNull()) - continue; - if (e.tagName() == DEICSONZECONFIGURATIONSTR) { - QString version = e.attribute(QString("version")); - if (version == "1.0") { - _deicsOnze->readConfiguration(node.firstChild()); - } - else printf("unsupported *.dco file version %s\n", - version.toLatin1().data()); - } - else printf("DeicsOnze: %s not supported\n", - e.tagName().toLatin1().data()); - node = node.nextSibling(); - } - } -} - -//----------------------------------------------------------- -// loadConfiguration -//----------------------------------------------------------- -void DeicsOnzeGui::loadConfiguration() { - QString fileName = - QFileDialog::getOpenFileName( - this, - tr("Load category dialog"), - lastDir, - QString("*.dco")); - QFileInfo fi(fileName); - lastDir = fi.path(); - loadConfiguration(fileName); -} - -//----------------------------------------------------------- -// setQuality -//----------------------------------------------------------- -void DeicsOnzeGui::setQuality(const QString& q) { - unsigned char* message = new unsigned char[2]; - message[0]=SYSEX_QUALITY; - message[1]=(unsigned char)(q=="High"? - high:(q=="Middle"? - middle:(q=="Low"?low:ultralow))); - sendSysex(message, 2); -} -//----------------------------------------------------------- -// setFilter -//----------------------------------------------------------- -void DeicsOnzeGui::setFilter(bool f) { - unsigned char* message = new unsigned char[2]; - message[0]=SYSEX_FILTER; - message[1]=(unsigned char)f; - sendSysex(message, 2); -} -//----------------------------------------------------------- -// setFontSize -//----------------------------------------------------------- -void DeicsOnzeGui::setFontSize(int fs) { - applyFontSize(fs); - unsigned char* message = new unsigned char[2]; - message[0]=SYSEX_FONTSIZE; - message[1]=(unsigned char)fs; - sendSysex(message, 2); -} -//----------------------------------------------------------- -// setSaveOnlyUsed -//----------------------------------------------------------- -void DeicsOnzeGui::setSaveOnlyUsed(bool sou) { - unsigned char* message = new unsigned char[2]; - message[0]=SYSEX_SAVEONLYUSED; - message[1]=(unsigned char)sou; - sendSysex(message, 2); - updateSaveOnlyUsed(sou); -} -void DeicsOnzeGui::setSaveOnlyUsedComp(bool souc) { - unsigned char* message = new unsigned char[2]; - message[0]=SYSEX_SAVEONLYUSED; - message[1]=(unsigned char)!souc; - sendSysex(message, 2); - updateSaveOnlyUsed(!souc); -} -//----------------------------------------------------------- -// setSaveConfig -//----------------------------------------------------------- -void DeicsOnzeGui::setSaveConfig(bool ssc) { - unsigned char* message = new unsigned char[2]; - message[0]=SYSEX_SAVECONFIG; - message[1]=(unsigned char)ssc; - sendSysex(message, 2); -} -//----------------------------------------------------------- -// setColor -//----------------------------------------------------------- -void DeicsOnzeGui::setRedColor(int r) { - QListWidgetItem* i=colorListBox->selectedItems().at(0); - if(i){ - curColor->setRgb(r, curColor->green(), curColor->blue()); - if(i->text()==QString("Text")) { - tColor->setRgb(curColor->rgb()); - setTextColor(reinterpret_cast(*curColor)); - } - else if(i->text()==QString("Background")) { - bColor->setRgb(curColor->rgb()); - setBackgroundColor(reinterpret_cast(*curColor)); - } - else if(i->text()==QString("Edit Text")) { - etColor->setRgb(curColor->rgb()); - setEditTextColor(reinterpret_cast(*curColor)); - } - else if(i->text()==QString("Edit Background")) { - ebColor->setRgb(curColor->rgb()); - setEditBackgroundColor(reinterpret_cast(*curColor)); - } - QPalette p = colorFrame->palette(); - p.setColor(QPalette::Window, - (reinterpret_cast(*curColor))); - colorFrame->setPalette(p); - } -} -void DeicsOnzeGui::setGreenColor(int g) { - QListWidgetItem* i=colorListBox->selectedItems().at(0); - if(i) { - curColor->setRgb(curColor->red(), g, curColor->blue()); - if(i->text()==QString("Text")) { - tColor->setRgb(curColor->rgb()); - setTextColor(reinterpret_cast(*curColor)); - } - else if(i->text()==QString("Background")) { - bColor->setRgb(curColor->rgb()); - setBackgroundColor(reinterpret_cast(*curColor)); - } - else if(i->text()==QString("Edit Text")) { - etColor->setRgb(curColor->rgb()); - setEditTextColor(reinterpret_cast(*curColor)); - } - else if(i->text()==QString("Edit Background")) { - ebColor->setRgb(curColor->rgb()); - setEditBackgroundColor(reinterpret_cast(*curColor)); - } - QPalette p = colorFrame->palette(); - p.setColor(QPalette::Window, (reinterpret_cast(*curColor))); - colorFrame->setPalette(p); - } -} -void DeicsOnzeGui::setBlueColor(int b) { - QListWidgetItem* i=colorListBox->selectedItems().at(0); - if(i) { - curColor->setRgb(curColor->red(), curColor->green(), b); - if(i->text()==QString("Text")) { - tColor->setRgb(curColor->rgb()); - setTextColor(reinterpret_cast(*curColor)); - } - else if(i->text()==QString("Background")) { - bColor->setRgb(curColor->rgb()); - setBackgroundColor(reinterpret_cast(*curColor)); - } - else if(i->text()==QString("Edit Text")) { - etColor->setRgb(curColor->rgb()); - setEditTextColor(reinterpret_cast(*curColor)); - } - else if(i->text()==QString("Edit Background")) { - ebColor->setRgb(curColor->rgb()); - setEditBackgroundColor(reinterpret_cast(*curColor)); - } - QPalette p = colorFrame->palette(); - p.setColor(QPalette::Window, (reinterpret_cast(*curColor))); - colorFrame->setPalette(p); - } -} -void DeicsOnzeGui::setRGBSliders(QListWidgetItem* i) { - if(i->text()==QString("Text")) - curColor->setRgb(tColor->red(), tColor->green(), tColor->blue()); - else if(i->text()==QString("Background")) - curColor->setRgb(bColor->red(), bColor->green(), bColor->blue()); - else if(i->text()==QString("Edit Text")) - curColor->setRgb(etColor->red(), etColor->green(), etColor->blue()); - else if(i->text()==QString("Edit Background")) - curColor->setRgb(ebColor->red(), ebColor->green(), ebColor->blue()); - - redSlider->blockSignals(true); - redSlider->setValue(curColor->red()); - redSlider->blockSignals(false); - redSpinBox->blockSignals(true); - redSpinBox->setValue(curColor->red()); - redSpinBox->blockSignals(false); - greenSlider->blockSignals(true); - greenSlider->setValue(curColor->green()); - greenSlider->blockSignals(false); - greenSpinBox->blockSignals(true); - greenSpinBox->setValue(curColor->green()); - greenSpinBox->blockSignals(false); - blueSlider->blockSignals(true); - blueSlider->setValue(curColor->blue()); - blueSlider->blockSignals(false); - blueSpinBox->blockSignals(true); - blueSpinBox->setValue(curColor->blue()); - blueSpinBox->blockSignals(false); - QPalette p = colorFrame->palette(); - p.setColor(QPalette::Window, (reinterpret_cast(*curColor))); - colorFrame->setPalette(p); -} -void DeicsOnzeGui::setTextColor(const QColor & c) { - QPalette p = this->palette(); - p.setColor(QPalette::WindowText, c); - this->setPalette(p); - channelCtrlGroupBox->setPalette(p); - //channelPanGroupBox->setPalette(p); - FeedbackGroupBox->setPalette(p); - LFOGroupBox->setPalette(p); - ModulationMatrixGroupBox->setPalette(p); - FeedbackGroupBox->setPalette(p); - pitchEnvGroupBox->setPalette(p); - Frequency1groupBox->setPalette(p); - OUT1groupBox->setPalette(p); - Env1GroupBox->setPalette(p); - Scaling1GroupBox->setPalette(p); - DetWaveEGS1GroupBox->setPalette(p); - sensitivity1groupBox->setPalette(p); - Frequency2groupBox->setPalette(p); - OUT2groupBox->setPalette(p); - Env2GroupBox->setPalette(p); - Scaling2GroupBox->setPalette(p); - DetWaveEGS2GroupBox->setPalette(p); - sensitivity2groupBox->setPalette(p); - Frequency3groupBox->setPalette(p); - OUT3groupBox->setPalette(p); - Env3GroupBox->setPalette(p); - Scaling3GroupBox->setPalette(p); - DetWaveEGS3GroupBox->setPalette(p); - sensitivity3groupBox->setPalette(p); - Frequency4groupBox->setPalette(p); - OUT4groupBox->setPalette(p); - Env4GroupBox->setPalette(p); - Scaling4GroupBox->setPalette(p); - DetWaveEGS4GroupBox->setPalette(p); - sensitivity4groupBox->setPalette(p); - transposeGroupBox->setPalette(p); - //detuneGroupBox->setPalette(p); - //footSWGroupBox->setPalette(p); - pitchBendRangeGroupBox->setPalette(p); - //reverbGroupBox->setPalette(p); - modeGroupBox->setPalette(p); - portamentoGroupBox->setPalette(p); - colorGroupBox->setPalette(p); - pathGroupBox->setPalette(p); - qualityGroupBox->setPalette(p); - saveModeButtonGroup->setPalette(p); - fileGroupBox->setPalette(p); - onReverbGroupBox->setPalette(p); - selectLadspaReverbGroupBox->setPalette(p); - channelReverbGroupBox->setPalette(p); - parametersReverbGroupBox->setPalette(p); - onChorusGroupBox->setPalette(p); - selectLadspaChorusGroupBox->setPalette(p); - channelChorusGroupBox->setPalette(p); - parametersChorusGroupBox->setPalette(p); - fontSizeGroupBox->setPalette(p); - delayBPMGroupBox->setPalette(p); - delayBeatRatioGroupBox->setPalette(p); - delayFeedbackGroupBox->setPalette(p); - delayPanLFOGroupBox->setPalette(p); - delayPanDepthGroupBox->setPalette(p); - delayReturnGroupBox->setPalette(p); - channelDelayGroupBox->setPalette(p); -} - -void DeicsOnzeGui::setBackgroundColor(const QColor & c) { - if(imageCheckBox->checkState()==Qt::Unchecked) { - QPalette p = this->palette(); - p.setColor(QPalette::Window, c); - this->setPalette(p); - } -} -void DeicsOnzeGui::setEditTextColor(const QColor & c) { - QPalette p = this->palette(); - p.setColor(QPalette::Text, c); - this->setPalette(p); - channelCtrlGroupBox->setPalette(p); - //channelPanGroupBox->setPalette(p); - FeedbackGroupBox->setPalette(p); - LFOGroupBox->setPalette(p); - ModulationMatrixGroupBox->setPalette(p); - FeedbackGroupBox->setPalette(p); - pitchEnvGroupBox->setPalette(p); - Frequency1groupBox->setPalette(p); - OUT1groupBox->setPalette(p); - Env1GroupBox->setPalette(p); - Scaling1GroupBox->setPalette(p); - DetWaveEGS1GroupBox->setPalette(p); - sensitivity1groupBox->setPalette(p); - Frequency2groupBox->setPalette(p); - OUT2groupBox->setPalette(p); - Env2GroupBox->setPalette(p); - Scaling2GroupBox->setPalette(p); - DetWaveEGS2GroupBox->setPalette(p); - sensitivity2groupBox->setPalette(p); - Frequency3groupBox->setPalette(p); - OUT3groupBox->setPalette(p); - Env3GroupBox->setPalette(p); - Scaling3GroupBox->setPalette(p); - DetWaveEGS3GroupBox->setPalette(p); - sensitivity3groupBox->setPalette(p); - Frequency4groupBox->setPalette(p); - OUT4groupBox->setPalette(p); - Env4GroupBox->setPalette(p); - Scaling4GroupBox->setPalette(p); - DetWaveEGS4GroupBox->setPalette(p); - sensitivity4groupBox->setPalette(p); - transposeGroupBox->setPalette(p); - //detuneGroupBox->setPalette(p); - //footSWGroupBox->setPalette(p); - pitchBendRangeGroupBox->setPalette(p); - //reverbGroupBox->setPalette(p); - modeGroupBox->setPalette(p); - portamentoGroupBox->setPalette(p); - colorGroupBox->setPalette(p); - pathGroupBox->setPalette(p); - qualityGroupBox->setPalette(p); - saveModeButtonGroup->setPalette(p); - fileGroupBox->setPalette(p); - masterVolKnob->setScaleValueColor(c); - channelVolumeKnob->setScaleValueColor(c); - channelPanKnob->setScaleValueColor(c); - brightnessKnob->setScaleValueColor(c); - modulationKnob->setScaleValueColor(c); - detuneKnob->setScaleValueColor(c); - attackKnob->setScaleValueColor(c); - releaseKnob->setScaleValueColor(c); - channelChorusGroupBox->setPalette(p); - selectLadspaChorusGroupBox->setPalette(p); - parametersChorusGroupBox->setPalette(p); - for(int i=0; i < (int)_chorusSliderVector.size(); i++) - if(_chorusSliderVector[i]) _chorusSliderVector[i]->setScaleValueColor(c); - channelReverbGroupBox->setPalette(p); - selectLadspaReverbGroupBox->setPalette(p); - parametersReverbGroupBox->setPalette(p); - for(int i=0; i < (int)_reverbSliderVector.size(); i++) - if(_reverbSliderVector[i]) _reverbSliderVector[i]->setScaleValueColor(c); - channelDelayGroupBox->setPalette(p); - delayBPMKnob->setScaleValueColor(c); - delayBPMGroupBox->setPalette(p); - delayBeatRatioKnob->setScaleValueColor(c); - delayBeatRatioGroupBox->setPalette(p); - delayFeedbackKnob->setScaleValueColor(c); - delayFeedbackGroupBox->setPalette(p); - delayPanLFOFreqKnob->setScaleValueColor(c); - delayPanLFOGroupBox->setPalette(p); - delayPanLFODepthKnob->setScaleValueColor(c); - delayPanDepthGroupBox->setPalette(p); - fontSizeGroupBox->setPalette(p); -} -void DeicsOnzeGui::setEditBackgroundColor(const QColor & c) { - QPalette p = this->palette(); - p.setColor(QPalette::Base, c); - this->setPalette(p); - channelCtrlGroupBox->setPalette(p); - //channelPanGroupBox->setPalette(p); - FeedbackGroupBox->setPalette(p); - LFOGroupBox->setPalette(p); - ModulationMatrixGroupBox->setPalette(p); - FeedbackGroupBox->setPalette(p); - pitchEnvGroupBox->setPalette(p); - Frequency1groupBox->setPalette(p); - OUT1groupBox->setPalette(p); - Env1GroupBox->setPalette(p); - Scaling1GroupBox->setPalette(p); - DetWaveEGS1GroupBox->setPalette(p); - sensitivity1groupBox->setPalette(p); - Frequency2groupBox->setPalette(p); - OUT2groupBox->setPalette(p); - Env2GroupBox->setPalette(p); - Scaling2GroupBox->setPalette(p); - DetWaveEGS2GroupBox->setPalette(p); - sensitivity2groupBox->setPalette(p); - Frequency3groupBox->setPalette(p); - OUT3groupBox->setPalette(p); - Env3GroupBox->setPalette(p); - Scaling3GroupBox->setPalette(p); - DetWaveEGS3GroupBox->setPalette(p); - sensitivity3groupBox->setPalette(p); - Frequency4groupBox->setPalette(p); - OUT4groupBox->setPalette(p); - Env4GroupBox->setPalette(p); - Scaling4GroupBox->setPalette(p); - DetWaveEGS4GroupBox->setPalette(p); - sensitivity4groupBox->setPalette(p); - transposeGroupBox->setPalette(p); - //detuneGroupBox->setPalette(p); - //footSWGroupBox->setPalette(p); - pitchBendRangeGroupBox->setPalette(p); - //reverbGroupBox->setPalette(p); - modeGroupBox->setPalette(p); - portamentoGroupBox->setPalette(p); - colorGroupBox->setPalette(p); - pathGroupBox->setPalette(p); - qualityGroupBox->setPalette(p); - saveModeButtonGroup->setPalette(p); - fileGroupBox->setPalette(p); - p = pitchEnvFrame->palette(); - p.setColor(QPalette::Window, c); - pitchEnvFrame->setPalette(p); - p = envelope1Frame->palette(); - p.setColor(QPalette::Window, c); - envelope1Frame->setPalette(p); - p = envelope2Frame->palette(); - p.setColor(QPalette::Window, c); - envelope2Frame->setPalette(p); - p = envelope3Frame->palette(); - p.setColor(QPalette::Window, c); - envelope3Frame->setPalette(p); - p = envelope4Frame->palette(); - p.setColor(QPalette::Window, c); - envelope4Frame->setPalette(p); - masterVolKnob->setScaleColor(c); - channelVolumeKnob->setScaleColor(c); - channelPanKnob->setScaleColor(c); - brightnessKnob->setScaleColor(c); - modulationKnob->setScaleColor(c); - detuneKnob->setScaleColor(c); - attackKnob->setScaleColor(c); - releaseKnob->setScaleColor(c); - channelChorusGroupBox->setPalette(p); - selectLadspaChorusGroupBox->setPalette(p); - parametersChorusGroupBox->setPalette(p); - for(int i=0; i < (int)_chorusSliderVector.size(); i++) - if(_chorusSliderVector[i]) _chorusSliderVector[i]->setScaleColor(c); - channelReverbGroupBox->setPalette(p); - selectLadspaReverbGroupBox->setPalette(p); - parametersReverbGroupBox->setPalette(p); - for(int i=0; i < (int)_reverbSliderVector.size(); i++) - if(_reverbSliderVector[i]) _reverbSliderVector[i]->setScaleColor(c); - channelDelayGroupBox->setPalette(p); - delayBPMKnob->setScaleColor(c); - delayBPMGroupBox->setPalette(p); - delayBeatRatioKnob->setScaleColor(c); - delayBeatRatioGroupBox->setPalette(p); - delayFeedbackKnob->setScaleColor(c); - delayFeedbackGroupBox->setPalette(p); - delayPanLFOFreqKnob->setScaleColor(c); - delayPanLFOGroupBox->setPalette(p); - delayPanLFODepthKnob->setScaleColor(c); - delayPanDepthGroupBox->setPalette(p); - fontSizeGroupBox->setPalette(p); -} - -//----------------------------------------------------------- -// QFramePitchEnvelope -//----------------------------------------------------------- -void QFramePitchEnvelope::paintEvent(QPaintEvent* /*e*/) { - QPainter paint(this); - QPen pen; - pen.setColor(*(_deicsOnzeGui->etColor)); - //if the size of pitchEnvFrame is different than QFramePitchEnvelope resize - //and update the envelope - if(_deicsOnzeGui->pitchEnvFrame->width()!=width() || - _deicsOnzeGui->pitchEnvFrame->height()!=height()) { - resize(_deicsOnzeGui->pitchEnvFrame->width(), - _deicsOnzeGui->pitchEnvFrame->height()); - //update the positions of the envelope - PitchEg* pe = &_deicsOnzeGui->_deicsOnze - ->_preset[_deicsOnzeGui->_currentChannel]->pitchEg; - env2Points(pe->pl1, pe->pl2, pe->pl3, pe->pr1, pe->pr2, pe->pr3); - } - //Draw the verticale line on the release time - pen.setWidth(1); - pen.setStyle(Qt::DotLine); - paint.setPen(pen); - paint.drawLine(P2linkP3.x(), height(), P2linkP3.x(), 0); - //Draw the horisontal line for the center of the pitch - pen.setStyle(Qt::DashDotLine); - paint.setPen(pen); - paint.drawLine(0, height()/2-DOTWIDTH/2, width(), height()/2-DOTWIDTH/2); - //Draw the pitch envelope - pen.setWidth(PENWIDTH); - pen.setStyle(Qt::SolidLine); - paint.setPen(pen); - paint.drawRect(startlinkP1.x()-DOTWIDTH/2, startlinkP1.y()-DOTWIDTH/2, - DOTWIDTH, DOTWIDTH); - paint.drawRect(P1linkP2.x()-DOTWIDTH/2, P1linkP2.y()-DOTWIDTH/2, - DOTWIDTH, DOTWIDTH); - paint.drawRect(P2linkP3.x()-DOTWIDTH/2, P2linkP3.y()-DOTWIDTH/2, - DOTWIDTH, DOTWIDTH); - paint.drawRect(P3linkEnd.x()-DOTWIDTH/2, P3linkEnd.y()-DOTWIDTH/2, - DOTWIDTH, DOTWIDTH); - paint.drawLine(startlinkP1,P1linkP2); - paint.drawLine(P1linkP2, P2linkP3); - paint.drawLine(P2linkP3, P3linkEnd); -} -void QFramePitchEnvelope::mousePressEvent(QMouseEvent * e) { - //startlinkP1 - if(e->x()x()>startlinkP1.x()-DRAGWIDTH - && e->y()y()>startlinkP1.y()-DRAGWIDTH) - isStartlinkP1Edit=true; - //P1linkP2 - if(e->x()x()>P1linkP2.x()-DRAGWIDTH - && e->y()y()>P1linkP2.y()-DRAGWIDTH) - isP1linkP2Edit=true; - //P2linkP3 - if(e->x()x()>P2linkP3.x()-DRAGWIDTH - && e->y()y()>P2linkP3.y()-DRAGWIDTH) - isP2linkP3Edit=true; - //P3linkEnd - if(e->x()x()>P3linkEnd.x()-DRAGWIDTH - && e->y()y()>P3linkEnd.y()-DRAGWIDTH) - isP3linkEndEdit=true; -} -void QFramePitchEnvelope::mouseReleaseEvent(QMouseEvent* /*e*/) { - isStartlinkP1Edit=false; - isP1linkP2Edit=false; - isP2linkP3Edit=false; - isP3linkEndEdit=false; -} -void QFramePitchEnvelope::mouseMoveEvent(QMouseEvent* e) { - if(isStartlinkP1Edit) { - if(e->y()>startlinkP1.y()) _deicsOnzeGui->PL1SpinBox->stepDown(); - if(e->y()PL1SpinBox->stepUp(); - } - if(isP1linkP2Edit) { - if(e->x()>P1linkP2.x()) _deicsOnzeGui->PR1SpinBox->stepDown(); - if(e->x()PR1SpinBox->stepUp(); - if(e->y()>P1linkP2.y()) _deicsOnzeGui->PL2SpinBox->stepDown(); - if(e->y()PL2SpinBox->stepUp(); - } - if(isP2linkP3Edit) { - if(e->x()>P2linkP3.x()) _deicsOnzeGui->PR2SpinBox->stepDown(); - if(e->x()PR2SpinBox->stepUp(); - if(e->y()>P2linkP3.y()) _deicsOnzeGui->PL3SpinBox->stepDown(); - if(e->y()PL3SpinBox->stepUp(); - } - if(isP3linkEndEdit) { - if(e->x()>P3linkEnd.x()) _deicsOnzeGui->PR3SpinBox->stepDown(); - if(e->x()PR3SpinBox->stepUp(); - if(e->y()>P3linkEnd.y()) _deicsOnzeGui->PL1SpinBox->stepDown(); - if(e->y()PL1SpinBox->stepUp(); - } -} -//----------------------------------------------------------- -// env2Points -// assigns the right coordinates to the points -// to draw the pitch envelope -//----------------------------------------------------------- -void QFramePitchEnvelope::env2Points(int pl1, int pl2, int pl3, - int pr1, int pr2, int pr3) { - startlinkP1.setY(YOFFSET+MAXPHEIGHT - -PENWIDTH-((PL1HEIGHT-PENWIDTH)*pl1)/MAXPL); - startlinkP1.setX(XOFFSET); - P1linkP2.setY(YOFFSET+MAXPHEIGHT-PENWIDTH-((PL2HEIGHT-PENWIDTH)*pl2)/MAXPL); - P1linkP2.setX(XOFFSET+WALLWIDTH+PR1WIDTH-(PR1WIDTH*pr1)/MAXPR); - P2linkP3.setY(YOFFSET+MAXPHEIGHT-PENWIDTH-((PL3HEIGHT-PENWIDTH)*pl3)/MAXPL); - P2linkP3.setX(P1linkP2.x()+WALLWIDTH+PR2WIDTH-(PR2WIDTH*pr2)/MAXPR); - P3linkEnd.setY(YOFFSET+MAXPHEIGHT-PENWIDTH-((PL1HEIGHT-PENWIDTH)*pl1)/MAXPL); - P3linkEnd.setX(P2linkP3.x()+WALLWIDTH+PR3WIDTH-(PR3WIDTH*pr3)/MAXPR); -} -//----------------------------------------------------------- -// QFrameEnvelope -//----------------------------------------------------------- -void QFrameEnvelope::paintEvent(QPaintEvent* /*e*/) { - QPainter paint(this); - QPen pen; - pen.setColor(*(_deicsOnzeGui->etColor)); - //if the size of pitchEnvFrame is different than QFramePitchEnvelope resize - //and update the envelope - int op = _deicsOnzeGui->deicsOnzeTabWidget->currentIndex()-2; - //-2 because of the presetsTab and globalTab - Eg* eg=&(_deicsOnzeGui->_deicsOnze-> - _preset[_deicsOnzeGui->_currentChannel]->eg[op]); - switch(op) { - case 0 : - if(_deicsOnzeGui->envelope1Frame->width()!=width() || - _deicsOnzeGui->envelope1Frame->height()!=height()) { - resize(_deicsOnzeGui->envelope1Frame->width(), - _deicsOnzeGui->envelope1Frame->height()); - //update the positions of the envelope - env2Points(eg->ar, eg->d1r, eg->d1l, eg->d2r, eg->rr); - } - break; - case 1 : - if(_deicsOnzeGui->envelope2Frame->width()!=width() || - _deicsOnzeGui->envelope2Frame->height()!=height()) { - resize(_deicsOnzeGui->envelope2Frame->width(), - _deicsOnzeGui->envelope2Frame->height()); - //update the positions of the envelope - env2Points(eg->ar, eg->d1r, eg->d1l, eg->d2r, eg->rr); - } - break; - case 2 : - if(_deicsOnzeGui->envelope3Frame->width()!=width() || - _deicsOnzeGui->envelope3Frame->height()!=height()) { - resize(_deicsOnzeGui->envelope3Frame->width(), - _deicsOnzeGui->envelope3Frame->height()); - //update the positions of the envelope - env2Points(eg->ar, eg->d1r, eg->d1l, eg->d2r, eg->rr); - } - break; - case 3 : - if(_deicsOnzeGui->envelope4Frame->width()!=width() || - _deicsOnzeGui->envelope4Frame->height()!=height()) { - resize(_deicsOnzeGui->envelope4Frame->width(), - _deicsOnzeGui->envelope4Frame->height()); - //update the positions of the envelope - env2Points(eg->ar, eg->d1r, eg->d1l, eg->d2r, eg->rr); - } - break; - default : - printf("QFrameEnvelope::paintEvent switch case error\n"); - break; - } - //Draw the vertical line of the release note - pen.setWidth(1); - pen.setStyle(Qt::DotLine); - paint.setPen(pen); - paint.drawLine(D2linkRR.x(), MAXHEIGHT, D2linkRR.x(), YOFFSET); - //Draw the volume envelope - pen.setWidth(PENWIDTH); - pen.setStyle(Qt::SolidLine); - paint.setPen(pen); - paint.drawRect(startlinkAR.x()-DOTWIDTH/2, startlinkAR.y()-DOTWIDTH/2, - DOTWIDTH, DOTWIDTH); - paint.drawRect(ARlinkD1.x()-DOTWIDTH/2, ARlinkD1.y()-DOTWIDTH/2, - DOTWIDTH, DOTWIDTH); - paint.drawRect(D1linkD2.x()-DOTWIDTH/2, D1linkD2.y()-DOTWIDTH/2, - DOTWIDTH, DOTWIDTH); - paint.drawRect(D2linkRR.x()-DOTWIDTH/2, D2linkRR.y()-DOTWIDTH/2, - DOTWIDTH, DOTWIDTH); - paint.drawRect(RRlinkEnd.x()-DOTWIDTH/2, RRlinkEnd.y()-DOTWIDTH/2, - DOTWIDTH, DOTWIDTH); - paint.drawLine(startlinkAR,ARlinkD1); - paint.drawLine(ARlinkD1, D1linkD2); - paint.drawLine(D1linkD2, D2linkRR); - paint.drawLine(D2linkRR, RRlinkEnd); -} -void QFrameEnvelope::mousePressEvent(QMouseEvent * e) { - //ARlinkD1 - if(e->x()x()>ARlinkD1.x()-DRAGWIDTH - && e->y()y()>ARlinkD1.y()-DRAGWIDTH) - isARlinkD1Edit=true; - //D1linkD2 - if(e->x()x()>D1linkD2.x()-DRAGWIDTH - && e->y()y()>D1linkD2.y()-DRAGWIDTH) - isD1linkD2Edit=true; - //D2linkRR - if(e->x()x()>D2linkRR.x()-DRAGWIDTH - && e->y()y()>D2linkRR.y()-DRAGWIDTH) - isD2linkRREdit=true; - //RRlinkEnd - if(e->x()x()>RRlinkEnd.x()-DRAGWIDTH - && e->y()y()>RRlinkEnd.y()-DRAGWIDTH) - isRRlinkEndEdit=true; -} -void QFrameEnvelope::mouseReleaseEvent(QMouseEvent* /*e*/) { - isARlinkD1Edit=false; - isD1linkD2Edit=false; - isD2linkRREdit=false; - isRRlinkEndEdit=false; -} -void QFrameEnvelope::mouseMoveEvent(QMouseEvent* e) { - if(isARlinkD1Edit) - { - switch(op) { - case 0 : - if(e->x()>ARlinkD1.x()) _deicsOnzeGui->AR1SpinBox->stepDown(); - if(e->x()AR1SpinBox->stepUp(); - break; - case 1 : - if(e->x()>ARlinkD1.x()) _deicsOnzeGui->AR2SpinBox->stepDown(); - if(e->x()AR2SpinBox->stepUp(); - break; - case 2 : - if(e->x()>ARlinkD1.x()) _deicsOnzeGui->AR3SpinBox->stepDown(); - if(e->x()AR3SpinBox->stepUp(); - break; - case 3 : - if(e->x()>ARlinkD1.x()) _deicsOnzeGui->AR4SpinBox->stepDown(); - if(e->x()AR4SpinBox->stepUp(); - break; - default : - break; - } - } - if(isD1linkD2Edit) - { - switch(op) { - case 0 : - if(e->x()>D1linkD2.x()) _deicsOnzeGui->D1R1SpinBox->stepDown(); - if(e->x()D1R1SpinBox->stepUp(); - if(e->y()>D1linkD2.y()) _deicsOnzeGui->D1L1SpinBox->stepDown(); - if(e->y()D1L1SpinBox->stepUp(); - break; - case 1 : - if(e->x()>D1linkD2.x()) _deicsOnzeGui->D1R2SpinBox->stepDown(); - if(e->x()D1R2SpinBox->stepUp(); - if(e->y()>D1linkD2.y()) _deicsOnzeGui->D1L2SpinBox->stepDown(); - if(e->y()D1L2SpinBox->stepUp(); - break; - case 2 : - if(e->x()>D1linkD2.x()) _deicsOnzeGui->D1R3SpinBox->stepDown(); - if(e->x()D1R3SpinBox->stepUp(); - if(e->y()>D1linkD2.y()) _deicsOnzeGui->D1L3SpinBox->stepDown(); - if(e->y()D1L3SpinBox->stepUp(); - break; - case 3 : - if(e->x()>D1linkD2.x()) _deicsOnzeGui->D1R4SpinBox->stepDown(); - if(e->x()D1R4SpinBox->stepUp(); - if(e->y()>D1linkD2.y()) _deicsOnzeGui->D1L4SpinBox->stepDown(); - if(e->y()D1L4SpinBox->stepUp(); - break; - default : - break; - } - } - if(isD2linkRREdit) - { - switch(op) { - case 0 : - if(e->x()>D2linkRR.x() /*&& e->y()D2R1SpinBox->stepDown(); - if(e->x()y()>D2linkRR.y()*/) - _deicsOnzeGui->D2R1SpinBox->stepUp(); - break; - case 1 : - if(e->x()>D2linkRR.x() /*&& e->y()D2R2SpinBox->stepDown(); - if(e->x()y()>D2linkRR.y()*/) - _deicsOnzeGui->D2R2SpinBox->stepUp(); - break; - case 2 : - if(e->x()>D2linkRR.x() /*&& e->y()D2R3SpinBox->stepDown(); - if(e->x()y()>D2linkRR.y()*/) - _deicsOnzeGui->D2R3SpinBox->stepUp(); - break; - case 3 : - if(e->x()>D2linkRR.x() /*&& e->y()D2R4SpinBox->stepDown(); - if(e->x()y()>D2linkRR.y()*/) - _deicsOnzeGui->D2R4SpinBox->stepUp(); - break; - default : - break; - } - } - if(isRRlinkEndEdit) - { - switch(op) { - case 0 : - if(e->x()>RRlinkEnd.x()) _deicsOnzeGui->RR1SpinBox->stepDown(); - if(e->x()RR1SpinBox->stepUp(); - break; - case 1 : - if(e->x()>RRlinkEnd.x()) _deicsOnzeGui->RR2SpinBox->stepDown(); - if(e->x()RR2SpinBox->stepUp(); - break; - case 2 : - if(e->x()>RRlinkEnd.x()) _deicsOnzeGui->RR3SpinBox->stepDown(); - if(e->x()RR3SpinBox->stepUp(); - break; - case 3 : - if(e->x()>RRlinkEnd.x()) _deicsOnzeGui->RR4SpinBox->stepDown(); - if(e->x()RR4SpinBox->stepUp(); - break; - default : - break; - } - } -} -//----------------------------------------------------------- -// env2Points -// assigns the right coordinates to the points -// to draw the envelope -//----------------------------------------------------------- -void QFrameEnvelope::env2Points(int ar, int d1r, int d1l, int d2r, int rr) { - startlinkAR.setY(MAXHEIGHT-PENWIDTH); - startlinkAR.setX(PENWIDTH); - ARlinkD1.setY(PENWIDTH); - ARlinkD1.setX(PENWIDTH+ARWIDTH-(ARWIDTH*ar)/MAXAR); - D1linkD2.setY(PENWIDTH+ - (D1LHEIGHT-2*PENWIDTH-((D1LHEIGHT-2*PENWIDTH)*d1l)/MAXD1L)); - D1linkD2.setX(ARlinkD1.x()+D1RWIDTH-(D1RWIDTH*d1r)/MAXD1R); - D2linkRR.setY(D1linkD2.y() - +((D1LHEIGHT-2*PENWIDTH-D1linkD2.y())*d2r)/MAXD2R); - D2linkRR.setX(D1linkD2.x()+D2RWIDTH-(D2RWIDTH*d2r)/MAXD2R); - RRlinkEnd.setY(MAXHEIGHT-PENWIDTH); - RRlinkEnd.setX(D2linkRR.x() - +(RRWIDTH-PENWIDTH-((RRWIDTH-PENWIDTH)*rr)/MAXRR)); -} - -//----------------------------------------------------------- -// processEvent(const MidiEvent&); -//----------------------------------------------------------- -void DeicsOnzeGui::processEvent(const MidiEvent& ev) { - //Controler - if (ev.type() == ME_CONTROLLER) { - //printf("ME_CONTROLLER\n"); - int id=ev.dataA(); - int ch=ev.channel(); - int val=ev.dataB(); - if(ch == _currentChannel || id == CTRL_CHANNELENABLE) { - switch(id) { - case CTRL_AR: updateAR(0, val); break; - case CTRL_D1R: updateD1R(0, val); break; - case CTRL_D2R: updateD2R(0, val); break; - case CTRL_RR: updateRR(0, val); break; - case CTRL_D1L: updateD1L(0, val); break; - case CTRL_LS: updateLS(0, val); break; - case CTRL_RS: updateRS(0, val); break; - case CTRL_EBS: updateEBS(0, val); break; - case CTRL_AME: updateAME(0, val==1); break; - case CTRL_KVS: updateKVS(0, val); break; - case CTRL_OUT: updateOUT(0, val); break; - case CTRL_RATIO: updateRATIO(0, val); break; - case CTRL_DET: updateDET(0, val); break; - case CTRL_AR+DECAPAR1: updateAR(1, val); break; - case CTRL_D1R+DECAPAR1: updateD1R(1, val); break; - case CTRL_D2R+DECAPAR1: updateD2R(1, val); break; - case CTRL_RR+DECAPAR1: updateRR(1, val); break; - case CTRL_D1L+DECAPAR1: updateD1L(1, val); break; - case CTRL_LS+DECAPAR1: updateLS(1, val); break; - case CTRL_RS+DECAPAR1: updateRS(1, val); break; - case CTRL_EBS+DECAPAR1: updateEBS(1, val); break; - case CTRL_AME+DECAPAR1: updateAME(1, val==1); break; - case CTRL_KVS+DECAPAR1: updateKVS(1, val); break; - case CTRL_OUT+DECAPAR1: updateOUT(1, val); break; - case CTRL_RATIO+DECAPAR1: updateRATIO(1, val); break; - case CTRL_DET+DECAPAR1: updateDET(1, val); break; - case CTRL_AR+2*DECAPAR1: updateAR(2, val); break; - case CTRL_D1R+2*DECAPAR1: updateD1R(2, val); break; - case CTRL_D2R+2*DECAPAR1: updateD2R(2, val); break; - case CTRL_RR+2*DECAPAR1: updateRR(2, val); break; - case CTRL_D1L+2*DECAPAR1: updateD1L(2, val); break; - case CTRL_LS+2*DECAPAR1: updateLS(2, val); break; - case CTRL_RS+2*DECAPAR1: updateRS(2, val); break; - case CTRL_EBS+2*DECAPAR1: updateEBS(2, val); break; - case CTRL_AME+2*DECAPAR1: updateAME(2, val==1); break; - case CTRL_KVS+2*DECAPAR1: updateKVS(2, val); break; - case CTRL_OUT+2*DECAPAR1: updateOUT(2, val); break; - case CTRL_RATIO+2*DECAPAR1: updateRATIO(2, val); break; - case CTRL_DET+2*DECAPAR1: updateDET(2, val); break; - case CTRL_AR+3*DECAPAR1: updateAR(3, val); break; - case CTRL_D1R+3*DECAPAR1: updateD1R(3, val); break; - case CTRL_D2R+3*DECAPAR1: updateD2R(3, val); break; - case CTRL_RR+3*DECAPAR1: updateRR(3, val); break; - case CTRL_D1L+3*DECAPAR1: updateD1L(3, val); break; - case CTRL_LS+3*DECAPAR1: updateLS(3, val); break; - case CTRL_RS+3*DECAPAR1: updateRS(3, val); break; - case CTRL_EBS+3*DECAPAR1: updateEBS(3, val); break; - case CTRL_AME+3*DECAPAR1: updateAME(3, val==1); break; - case CTRL_KVS+3*DECAPAR1: updateKVS(3, val); break; - case CTRL_OUT+3*DECAPAR1: updateOUT(3, val); break; - case CTRL_RATIO+3*DECAPAR1: updateRATIO(3, val); break; - case CTRL_DET+3*DECAPAR1: updateDET(3, val); break; - case CTRL_ALG: updateALG(val); break; - case CTRL_FEEDBACK: updateFEEDBACK(val); break; - case CTRL_SPEED: updateSPEED(val); break; - case CTRL_DELAY: updateDELAY(val); break; - case CTRL_PMODDEPTH: updatePMODDEPTH(val); break; - case CTRL_AMODDEPTH: updateAMODDEPTH(val); break; - case CTRL_SYNC: updateSYNC(val==1); break; - case CTRL_WAVE: updateWAVE(val); break; - case CTRL_PMODSENS: updatePMODSENS(val); break; - case CTRL_AMS: updateAMS(val); break; - case CTRL_TRANSPOSE: updateTRANSPOSE(val); break; - case CTRL_POLYMODE: updatePOLYMODE(val); break; - case CTRL_PBENDRANGE: updatePBENDRANGE(val); break; - case CTRL_PORTAMODE: updatePORTAMODE(val); break; - case CTRL_PORTATIME: updatePORTATIME(val); break; - case CTRL_FCVOLUME: updateFcVolume(val); break; - case CTRL_FSW: - break; - case CTRL_MWPITCH: updateMwPitch(val); break; - case CTRL_MWAMPLITUDE: updateMwAmplitude(val); break; - case CTRL_BCPITCH: updateBcPitch(val); break; - case CTRL_BCAMPLITUDE: updateBcAmplitude(val); break; - case CTRL_BCPITCHBIAS: updateBcPitchBias(val); break; - case CTRL_BCEGBIAS: updateBcEgBias(val); break; - case CTRL_PR1: updatePR1(val); break; - case CTRL_PR2: updatePR2(val); break; - case CTRL_PR3: updatePR3(val); break; - case CTRL_PL1: updatePL1(val); break; - case CTRL_PL2: updatePL2(val); break; - case CTRL_PL3: updatePL3(val); break; - case CTRL_FIX: updateFIX(0, val==1); break; - case CTRL_FIXRANGE: updateFIXRANGE(0, val); break; - case CTRL_OSW: updateOSW(0, val); break; - case CTRL_SHFT: updateSHFT(0, val); break; - case CTRL_FIX+DECAPAR2: updateFIX(1, val==1); break; - case CTRL_FIXRANGE+DECAPAR2: updateFIXRANGE(1, val); break; - case CTRL_OSW+DECAPAR2: updateOSW(1, val); break; - case CTRL_SHFT+DECAPAR2: updateSHFT(1, val); break; - case CTRL_FIX+2*DECAPAR2: updateFIX(2, val==1); break; - case CTRL_FIXRANGE+2*DECAPAR2: updateFIXRANGE(2, val); break; - case CTRL_OSW+2*DECAPAR2: updateOSW(2, val); break; - case CTRL_SHFT+2*DECAPAR2: updateSHFT(2, val); break; - case CTRL_FIX+3*DECAPAR2: updateFIX(3, val==1); break; - case CTRL_FIXRANGE+3*DECAPAR2: updateFIXRANGE(3, val); break; - case CTRL_OSW+3*DECAPAR2: updateOSW(3, val); break; - case CTRL_SHFT+3*DECAPAR2: updateSHFT(3, val); break; - case CTRL_REVERBRATE: /*updateReverbRate(val);*/ break; - case CTRL_FCPITCH: updateFcPitch(val); break; - case CTRL_FCAMPLITUDE: updateFcAmplitude(val); break; - case CTRL_CHANNELENABLE: - if(ch == _currentChannel) updateChannelEnable(val); - break; - case CTRL_CHANNELDETUNE: updateChannelDetune(val); break; - case CTRL_CHANNELPAN: updateChannelPan(val); break; - case CTRL_CHANNELVOLUME: updateChannelVolume(val); break; - case CTRL_NBRVOICES: updateNbrVoices(val); break; - case CTRL_FINEBRIGHTNESS: updateBrightness(val); break; - case CTRL_ATTACK_TIME: updateAttack(val); break; - case CTRL_RELEASE_TIME: updateRelease(val); break; - case CTRL_CHORUS_SEND: updateChannelChorus(val); break; - case CTRL_REVERB_SEND: updateChannelReverb(val); break; - case CTRL_VARIATION_SEND: updateChannelDelay(val); break; - case CTRL_MODULATION: updateModulation(val); break; - case CTRL_PROGRAM : - int hbank = (val & 0xff0000) >> 16; - int lbank = (val & 0xff00) >> 8; - if (hbank > 127) // map "dont care" to 0 - hbank = 0; - if (lbank > 127) - lbank = 0; - int prog = val & 0x7f; - //printf("GUI program : ch = %d, hbank = %d, lbank = %d, prog = %d\n", - // ch, hbank, lbank, prog); - //change the _deicsonze preset - //to update the right preset - _deicsOnze->programSelect(ch, hbank, lbank, prog); - //only display _deicsonze preset - updateSelectPreset(hbank, lbank, prog); - updatePreset(); - break; - } - } - } - // Sysexes - else if (ev.type() == ME_SYSEX) { - //printf("ME_SYSEX\n"); - unsigned char* data = ev.data(); - int cmd = *data; - float f; - switch (cmd) { - case SYSEX_CHORUSACTIV : - updateChorusActiv((bool)data[1]); - break; - case SYSEX_CHORUSRETURN : - updateChorusReturn((int)data[1]); - break; - case SYSEX_REVERBACTIV : - updateReverbActiv((bool)data[1]); - break; - case SYSEX_REVERBRETURN : - updateReverbReturn((int)data[1]); - break; - /*case SYSEX_CHORUS1PAN : - updatePanChorus1((int)data[1]); - break; - case SYSEX_CHORUS1LFOFREQ : - updateLFOFreqChorus1((int)data[1]); - break; - case SYSEX_CHORUS1DEPTH : - updateDepthChorus1((int)data[1]); - break; - case SYSEX_CHORUS2PAN : - updatePanChorus2((int)data[1]); - break; - case SYSEX_CHORUS2LFOFREQ : - updateLFOFreqChorus2((int)data[1]); - break; - case SYSEX_CHORUS2DEPTH : - updateDepthChorus2((int)data[1]); - break;*/ - case SYSEX_DELAYACTIV : - updateDelayActiv((bool)data[1]); - break; - case SYSEX_DELAYRETURN : - updateDelayReturn((int)data[1]); - break; - case SYSEX_DELAYBPM : - memcpy(&f, &data[1], sizeof(float)); - updateDelayBPM(f); - break; - case SYSEX_DELAYBEATRATIO : - memcpy(&f, &data[1], sizeof(float)); - updateDelayBeatRatio(f); - break; - case SYSEX_DELAYFEEDBACK : - memcpy(&f, &data[1], sizeof(float)); - updateDelayFeedback(f); - break; - case SYSEX_DELAYLFOFREQ : - memcpy(&f, &data[1], sizeof(float)); - updateDelayPanLFOFreq(f); - break; - case SYSEX_DELAYLFODEPTH : - memcpy(&f, &data[1], sizeof(float)); - updateDelayPanLFODepth(f); - break; - case SYSEX_QUALITY : - updateQuality((int)data[1]); - break; - case SYSEX_FILTER : - updateFilter((bool)data[1]); - break; - case SYSEX_FONTSIZE : - updateFontSize((int)data[1]); - applyFontSize((int)data[1]); - break; - case SYSEX_MASTERVOL : - updateMasterVolume((int)data[1]); - break; - case SYSEX_SAVECONFIG : - updateSaveConfig((bool)data[1]); - break; - case SYSEX_SAVEONLYUSED : - updateSaveOnlyUsed((bool)data[1]); - break; - case SYSEX_COLORGUI : - tColor->setRgb(data[1], data[2], data[3]); - bColor->setRgb(data[4], data[5], data[6]); - etColor->setRgb(data[7], data[8], data[9]); - ebColor->setRgb(data[10], data[11], data[12]); - setTextColor(reinterpret_cast(*tColor)); - setBackgroundColor(reinterpret_cast(*bColor)); - setEditTextColor(reinterpret_cast(*etColor)); - setEditBackgroundColor(reinterpret_cast(*ebColor)); - setRGBSliders(colorListBox->currentItem()); - break; - case SYSEX_ISINITSET : - updateInitSetCheckBox((bool)data[1]); - break; - case SYSEX_INITSETPATH : - updateInitSetPath(QString((char*)&data[1])); - break; - case SYSEX_ISBACKGROUNDPIX : - updateBackgroundPixCheckBox((bool)data[1]); - if((bool)data[1]) applyBackgroundPix(); - break; - case SYSEX_BACKGROUNDPIXPATH : - updateBackgroundPixPath(QString((char*)&data[1])); - applyBackgroundPix(); - break; - case SYSEX_UPDATESETGUI : - setSet(); - subcategoryListView->clear(); - presetListView->clear(); - updateCategoryName("NONE", false); - hbankSpinBox->setEnabled(false); - updatePreset(); - updateSubcategoryName("NONE", false); - progSpinBox->setEnabled(false); - updatePresetName("INITVOICE", false); - break; - case SYSEX_BUILDGUIREVERB : - buildGuiReverb(); - break; - case SYSEX_BUILDGUICHORUS : - buildGuiChorus(); - break; - case SYSEX_LOADSET : - //printf("LoadSet\n"); - // read the XML file and create DOM tree - /*QString filename = (const char*) (data+2); - QFile deicsonzeFile(filename); - deicsonzeFile.open(IO_ReadOnly); - QDomDocument domTree; - domTree.setContent(&deicsonzeFile); - deicsonzeFile.close(); - QDomNode node = domTree.documentElement(); - - printf("After XML\n"); - while (!node.isNull()) { - QDomElement e = node.toElement(); - if (e.isNull()) - continue; - if (e.tagName() == "deicsOnzeSet") { - QString version = e.attribute(QString("version")); - if (version == "1.0") { - _deicsOnze->_preset=_deicsOnze->_initialPreset;*/ - //read the set - if((bool)data[1]) { - //printf("Mini\n"); - updateSaveOnlyUsed(true); - } - else { - //printf("Huge\n"); - //while(!_deicsOnze->_set->_categoryVector.empty()) - // delete(*_deicsOnze->_set->_categoryVector.begin()); - updateSaveOnlyUsed(false); - } - //_deicsOnze->_set->readSet(node.firstChild()); - //display load preset - setSet(); - /*} - else printf("Wrong set version : %s\n", - version.toLatin1().data()); - } - node = node.nextSibling(); - } - break; - // delete the temporary file created - QString rmfile; - rmfile="rm "; - rmfile+=filename; - system(rmfile); - printf("Finit\n");*/ - } - } -} - -/*! - \fn SimpleSynthGui::readMessage(int) - */ -void DeicsOnzeGui::readMessage(int) -{ - MessGui::readMessage(); -} - -//----------------------------------------------------------- -// num3Digits(int n) -//----------------------------------------------------------- -QString DeicsOnzeGui::num3Digits(int n) { - QString sn=QString::number(n); - return(sn.length()==1?"00"+sn:(sn.length()==2?"0"+sn:sn)); -} - -//----------------------------------------------------------- -// deleteSet -//----------------------------------------------------------- -void DeicsOnzeGui::deleteSetDialog() { - //TODO : maybe to put this in sysex to deicsonze.cpp - for(int c = 0; c < NBRCHANNELS; c++) - _deicsOnze->_preset[c]=_deicsOnze->_initialPreset; - while(!_deicsOnze->_set->_categoryVector.empty()) - delete(*_deicsOnze->_set->_categoryVector.begin()); - setSet(); - //_currentQLVCategory = NULL; - presetListView->clear(); - subcategoryListView->clear(); - updateCategoryName("NONE", false); - hbankSpinBox->setEnabled(false); - updateSubcategoryName("NONE", false); - lbankSpinBox->setEnabled(false); - updatePresetName("INITVOICE", false); - progSpinBox->setEnabled(false); - updatePreset(); -} -//----------------------------------------------------------- -// loadSetDialog -//----------------------------------------------------------- -void DeicsOnzeGui::loadSetDialog() { - QString fileName = - QFileDialog::getOpenFileName( - this, - tr("Load set dialog"), - lastDir, - QString("*.dei") - ); - - // read the XML file and create DOM tree - if(!fileName.isEmpty()) { - QFileInfo fi(fileName); - lastDir = fi.path(); - QFile deicsonzeFile(fileName); - if(!deicsonzeFile.open(QIODevice::ReadOnly)) { - QMessageBox::critical(0, - tr("Critical Error"), - tr("Cannot open file %1").arg(fileName)); - return; - } - QDomDocument domTree; - if (!domTree.setContent(&deicsonzeFile )) { - QMessageBox::critical - (0, tr("Critical Error"), - tr("Parsing error for file %1").arg(fileName)); - deicsonzeFile.close(); - return; - } - deicsonzeFile.close(); - - QDomNode node = domTree.documentElement(); - while (!node.isNull()) { - QDomElement e = node.toElement(); - if (e.isNull()) - continue; - if (e.tagName() == "deicsOnzeSet") { - QString version = e.attribute(QString("version")); - if (version == "1.0") { - for(int c = 0; c < NBRCHANNELS; c++) - _deicsOnze->_preset[c]=_deicsOnze->_initialPreset; - while(!_deicsOnze->_set->_categoryVector.empty()) - delete(*_deicsOnze->_set->_categoryVector.begin()); - _deicsOnze->_set->readSet(node.firstChild()); - //display load preset - setSet(); - subcategoryListView->clear(); - presetListView->clear(); - updateCategoryName("NONE", false); - hbankSpinBox->setEnabled(false); - updatePreset(); - updateSubcategoryName("NONE", false); - progSpinBox->setEnabled(false); - updatePresetName("INITVOICE", false); - } - else printf("unsupported *.dei file version %s\n", - version.toLatin1().data()); - } - else printf("DeicsOnze: %s not supported\n", - e.tagName().toLatin1().data()); - node = node.nextSibling(); - } - } -} - -//----------------------------------------------------------- -// saveSetDialog -//----------------------------------------------------------- -void DeicsOnzeGui::saveSetDialog() { - QString filename = - QFileDialog::getSaveFileName( - this, - tr("Save set dialog"), - lastDir, - QString("*.dei")); - if(!filename.isEmpty()) { - QFileInfo fi(filename); - lastDir = fi.path(); - if(!filename.endsWith(".dei")) filename+=".dei"; - QFile f(filename); - f.open(QIODevice::WriteOnly); - - AL::Xml* xml = new AL::Xml(&f); - xml->header(); - _deicsOnze->_set->writeSet(xml, false); - - f.close(); - } -} - -//----------------------------------------------------------- -// popupMenuCategory -//----------------------------------------------------------- -void DeicsOnzeGui::categoryPopupMenu(const QPoint&) { - QTreeWidgetItem* cat = categoryListView->currentItem(); - QMenu *categoryMenu = new QMenu; - categoryMenu->addAction(tr("New category"), - this, SLOT(newCategoryDialog())); - QAction* deleteItem = categoryMenu->addAction(tr("Delete category"), this, - SLOT(deleteCategoryDialog())); - categoryMenu->addAction(tr("Load category"), - this, SLOT(loadCategoryDialog())); - QAction* saveItem = categoryMenu->addAction(tr("Save category"), this, - SLOT(saveCategoryDialog())); - if(!cat || !categoryListView->isItemSelected(cat)) { - deleteItem->setEnabled(false); - saveItem->setEnabled(false); - } - categoryMenu->addSeparator(); - categoryMenu->addAction(tr("Load set"), - this, SLOT(loadSetDialog()));; - categoryMenu->addAction(tr("Save set"), - this, SLOT(saveSetDialog()));; - categoryMenu->addAction(tr("Delete set"), - this, SLOT(deleteSetDialog()));; - categoryMenu->exec(QCursor::pos()); -} -void DeicsOnzeGui::subcategoryPopupMenu(const QPoint&) { - QTreeWidgetItem* sub = subcategoryListView->currentItem(); - QMenu *subcategoryMenu = new QMenu; - QAction* newItem = - subcategoryMenu->addAction(tr("New subcategory"), this, - SLOT(newSubcategoryDialog())); - QAction* deleteItem = - subcategoryMenu->addAction(tr("Delete subcategory"), - this, SLOT(deleteSubcategoryDialog())); - QAction* loadItem = - subcategoryMenu->addAction(tr("Load subcategory"), this, - SLOT(loadSubcategoryDialog())); - QAction* saveItem = - subcategoryMenu->addAction(tr("Save subcategory"), this, - SLOT(saveSubcategoryDialog())); - if(!sub || !subcategoryListView->isItemSelected(sub)) { - deleteItem->setEnabled(false); - saveItem->setEnabled(false); - } - if(!categoryListView->currentItem() - || !categoryListView->isItemSelected(categoryListView->currentItem())) { - newItem->setEnabled(false); - loadItem->setEnabled(false); - } - subcategoryMenu->exec(QCursor::pos()); -} -void DeicsOnzeGui::presetPopupMenu(const QPoint&) { - QTreeWidgetItem* pre = presetListView->currentItem(); - QMenu *presetMenu = new QMenu; - QAction* newItem = presetMenu->addAction(tr("New preset"), this, - SLOT(newPresetDialog())); - QAction* deleteItem = presetMenu->addAction(tr("Delete preset"), this, - SLOT(deletePresetDialog())); - QAction* loadItem = presetMenu->addAction(tr("Load preset"), this, - SLOT(loadPresetDialog())); - QAction* saveItem = presetMenu->addAction(tr("Save preset"), this, - SLOT(savePresetDialog())); - if(!pre || !presetListView->isItemSelected(pre)) { - deleteItem->setEnabled(false); - saveItem->setEnabled(false); - } - if(!subcategoryListView->currentItem() || - !subcategoryListView->isItemSelected(subcategoryListView->currentItem())){ - newItem->setEnabled(false); - loadItem->setEnabled(false); - } - presetMenu->exec(QCursor::pos()); -} - -//----------------------------------------------------------- -// newCategoryDialog -//----------------------------------------------------------- -void DeicsOnzeGui::newCategoryDialog() { - int nhbank=_deicsOnze->_set->firstFreeHBank(); - if(nhbank==-1) - QMessageBox::information(this, - tr("No more category supported"), - tr("You can not add more categories"), - QMessageBox::Ok); - else { - new Category(_deicsOnze->_set, "NEWCAT", nhbank); - setSet(); - QTreeWidgetItem* ci= - categoryListView->findItems(num3Digits(nhbank+1), Qt::MatchExactly).at(0); - categoryListView->setItemSelected(ci, true); - categoryListView->setCurrentItem(ci); - setCategory(ci); - categoryListView->scrollToItem(ci); - } -} - -//----------------------------------------------------------- -// deleteCategoryDialog -//----------------------------------------------------------- -void DeicsOnzeGui::deleteCategoryDialog() { - QTreeCategory* cat = (QTreeCategory*) categoryListView->currentItem(); - if(cat && categoryListView->isItemSelected(cat)) { - if(!QMessageBox::question( - this, - tr("Delete category"), - tr("Do you really want to delete %1 ?") - .arg(cat->_category->_categoryName.c_str()), - tr("&Yes"), tr("&No"), - QString::null, 0, 1 )) - { - for(int c = 0; c < NBRCHANNELS; c++) - _deicsOnze->_preset[c]=_deicsOnze->_initialPreset; - delete(cat->_category); - delete(cat); - subcategoryListView->clear(); - presetListView->clear(); - updateCategoryName("NONE", false); - hbankSpinBox->setEnabled(false); - updatePreset(); - updateSubcategoryName("NONE", false); - progSpinBox->setEnabled(false); - updatePresetName("INITVOICE", false); - } - } - else QMessageBox::warning(this, tr("No category selected"), - tr("You must first select a category.")); -} - -//----------------------------------------------------------- -// loadCategoryDialog -//----------------------------------------------------------- -void DeicsOnzeGui::loadCategoryDialog() { - QString buffstr; - QString fileName = - QFileDialog::getOpenFileName( - this, - tr("Load category dialog"), - lastDir, - QString("*.dec")); - - // read the XML file and create DOM tree - if(!fileName.isEmpty()) { - QFileInfo fi(fileName); - lastDir = fi.path(); - QFile deicsonzeFile(fileName); - if(!deicsonzeFile.open(QIODevice::ReadOnly)) { - QMessageBox::critical(0, - tr("Critical Error"), - tr("Cannot open file %1").arg(fileName)); - return; - } - QDomDocument domTree; - if (!domTree.setContent(&deicsonzeFile )) { - QMessageBox::critical - (0, tr("Critical Error"), - tr("Parsing error for file %1").arg(fileName)); - deicsonzeFile.close(); - return; - } - deicsonzeFile.close(); - - QDomNode node = domTree.documentElement(); - while (!node.isNull()) { - QDomElement e = node.toElement(); - if (e.isNull()) - continue; - if (e.tagName() == "deicsOnzeCategory") { - QString version = e.attribute(QString("version")); - if (version == "1.0") { - Category* lCategory = new Category(); - lCategory->readCategory(node.firstChild()); - if (!_deicsOnze->_set->isFreeHBank(lCategory->_hbank)) { - if(!QMessageBox::question( - this, - tr("Replace or add"), - tr("%1 is supposed to be affected to the hbank number %2, but there is already one on this slot.\n Do you want to replace it or to add it in the next free slot ?") - .arg((lCategory->_categoryName).c_str()) - .arg(buffstr.setNum(lCategory->_hbank+1)), - tr("&Replace"), tr("&Add"), - QString::null, 0, 1 )) { - delete(_deicsOnze->_set - ->findCategory(lCategory->_hbank)); - lCategory->linkSet(_deicsOnze->_set); - } - else { - int ffhb=_deicsOnze->_set->firstFreeHBank(); - if(ffhb==-1) - QMessageBox::warning - (this, tr("Download error"), - tr("There is no more free category slot.")); - else lCategory->_hbank=ffhb; - lCategory->linkSet(_deicsOnze->_set); - } - } - else lCategory->linkSet(_deicsOnze->_set); - //display category - setSet(); - } - else printf("unsupported *.dec file version %s\n", - version.toLatin1().data()); - } - else printf("DeicsOnze: %s not supported\n", - e.tagName().toLatin1().data()); - node = node.nextSibling(); - } - } -} - -//----------------------------------------------------------- -// saveCategoryDialog -//----------------------------------------------------------- -void DeicsOnzeGui::saveCategoryDialog() { - QTreeCategory* cat = (QTreeCategory*) categoryListView->currentItem(); - if(cat) { - QString filename = - QFileDialog::getSaveFileName( - this, - tr("Save category dialog"), - lastDir, - QString("*.dec")); - - if(!filename.isEmpty()) { - QFileInfo fi(filename); - lastDir = fi.path(); - if(!filename.endsWith(".dec")) filename+=".dec"; - QFile f(filename); - f.open(QIODevice::WriteOnly); - AL::Xml* xml = new AL::Xml(&f); - xml->header(); - cat->_category->writeCategory(xml, false); - - f.close(); - } - } - else QMessageBox::warning(this, tr("No category selected"), - tr("You must first select a category.")); -} - -//----------------------------------------------------------- -// newSubcategoryDialog -//----------------------------------------------------------- -void DeicsOnzeGui::newSubcategoryDialog() { - QTreeCategory* cat = (QTreeCategory*) categoryListView->currentItem(); - if(cat && categoryListView->isItemSelected(cat)) { - int nlbank=cat->_category->firstFreeLBank(); - if(nlbank==-1) - QMessageBox::information(this, - tr("No more subcategory supported"), - tr("You can not add more subcategories"), - QMessageBox::Ok); - else { - new Subcategory(cat->_category, "NEWSUB", nlbank); - setCategory(cat); - QTreeWidgetItem* si= - subcategoryListView->findItems(num3Digits(nlbank+1), - Qt::MatchExactly).at(0); - subcategoryListView->setItemSelected(si, true); - subcategoryListView->setCurrentItem(si); - setSubcategory(si); - subcategoryListView->scrollToItem(si); - } - } -} - -//----------------------------------------------------------- -// deleteSubcategoryDialog -//----------------------------------------------------------- -void DeicsOnzeGui::deleteSubcategoryDialog() { - QTreeSubcategory* sub = - (QTreeSubcategory*) subcategoryListView->currentItem(); - if(sub && subcategoryListView->isItemSelected(sub)) { - if(!QMessageBox::question( - this, - tr("Delete subcategory"), - tr("Do you really want to delete %1 ?") - .arg(sub->_subcategory - ->_subcategoryName.c_str()), - tr("&Yes"), tr("&No"), - QString::null, 0, 1 )) { - for(int c = 0; c < NBRCHANNELS; c++) - _deicsOnze->_preset[c]=_deicsOnze->_initialPreset; - delete(sub->_subcategory); - delete(sub); - presetListView->clear(); - //subcategoryLineEdit->setEnabled(false); - updateSubcategoryName("NONE", false); - lbankSpinBox->setEnabled(false); - updatePreset(); - } - } - else QMessageBox::warning(this, tr("No subcategory selected"), - tr("You must first select a subcategory.")); -} - -//----------------------------------------------------------- -// loadSubcategoryDialog -//----------------------------------------------------------- -void DeicsOnzeGui::loadSubcategoryDialog() { - QTreeCategory* cat = (QTreeCategory*) categoryListView->currentItem(); - QString buffstr; - QString fileName = - QFileDialog::getOpenFileName( - this, - tr("Load subcategory dialog"), - lastDir, - QString("*.des")); - - // read the XML file and create DOM tree - if(!fileName.isEmpty()) { - QFileInfo fi(fileName); - lastDir = fi.path(); - QFile deicsonzeFile(fileName); - if(!deicsonzeFile.open(QIODevice::ReadOnly)) { - QMessageBox::critical(0, - tr("Critical Error"), - tr("Cannot open file %1").arg(fileName)); - return; - } - QDomDocument domTree; - if (!domTree.setContent(&deicsonzeFile )) { - QMessageBox::critical - (0, tr("Critical Error"), - tr("Parsing error for file %1").arg(fileName)); - deicsonzeFile.close(); - return; - } - deicsonzeFile.close(); - - QDomNode node = domTree.documentElement(); - while (!node.isNull()) { - QDomElement e = node.toElement(); - if (e.isNull()) - continue; - if (e.tagName() == "deicsOnzeSubcategory") { - QString version = e.attribute(QString("version")); - if (version == "1.0") { - Subcategory* lSubcategory = new Subcategory(); - lSubcategory->readSubcategory(node.firstChild()); - if (!cat->_category->isFreeLBank(lSubcategory->_lbank)) { - if(!QMessageBox::question( - this, - tr("Replace or add"), - tr("%1 is supposed to be affected to the lbank number %2, but there is already one on this slot.\n Do you want to replace it or to add it in the next free slot ?") - .arg((lSubcategory->_subcategoryName) - .c_str()) - .arg(buffstr.setNum(lSubcategory->_lbank+1)), - tr("&Replace"), tr("&Add"), - QString::null, 0, 1 )) { - delete(cat->_category->findSubcategory(lSubcategory->_lbank)); - lSubcategory->linkCategory(cat->_category); - } - else { - int fflb=cat->_category->firstFreeLBank(); - if(fflb==-1) - QMessageBox::warning - (this, tr("Download error"), - tr("There is no more free subcategory slot.")); - else lSubcategory->_lbank=fflb; - lSubcategory->linkCategory(cat->_category); - } - } - else lSubcategory->linkCategory(cat->_category); - //display subcategory - setCategory(cat); - } - else printf("unsupported *.des file version %s\n", - version.toLatin1().data()); - } - else printf("DeicsOnze: %s not supported\n", - e.tagName().toLatin1().data()); - node = node.nextSibling(); - } - } -} - -//----------------------------------------------------------- -// saveSubcategoryDialog -//----------------------------------------------------------- -void DeicsOnzeGui::saveSubcategoryDialog() { - QTreeSubcategory* sub = - (QTreeSubcategory*) subcategoryListView->currentItem(); - if(sub) { - QString filename = - QFileDialog::getSaveFileName( - this, - tr("Save subcategory dialog"), - lastDir, - QString("*.des")); - - if(!filename.isEmpty()) { - QFileInfo fi(filename); - lastDir = fi.path(); - if(!filename.endsWith(".des")) filename+=".des"; - QFile f(filename); - f.open(QIODevice::WriteOnly); - - AL::Xml* xml = new AL::Xml(&f); - xml->header(); - sub->_subcategory->writeSubcategory(xml, false); - - f.close(); - } - } - else QMessageBox::warning(this, tr("No subcategory selected"), - tr("You must first select a subcategory.")); -} - - -//----------------------------------------------------------- -// newPresetDialog -//----------------------------------------------------------- -void DeicsOnzeGui::newPresetDialog() { - QTreeSubcategory* sub = - (QTreeSubcategory*) subcategoryListView->currentItem(); - if(sub && subcategoryListView->isItemSelected(sub)) { - int nprog=sub->_subcategory->firstFreeProg(); - if(nprog==-1) - QMessageBox::information(this, - tr("No more preset supported"), - tr("You can not add more presets"), - QMessageBox::Ok); - else { - new Preset(sub->_subcategory, nprog); - setSubcategory(sub); - QTreeWidgetItem* pi= - presetListView->findItems(num3Digits(nprog+1), - Qt::MatchExactly).at(0); - presetListView->setItemSelected(pi, true); - presetListView->setCurrentItem(pi); - setPreset(pi); - presetListView->scrollToItem(pi); - } - } -} - -//----------------------------------------------------------- -// deletePresetDialog -//----------------------------------------------------------- -void DeicsOnzeGui::deletePresetDialog() { - QTreePreset* pre = (QTreePreset*) presetListView->currentItem(); - if(pre) { - if(presetListView->isItemSelected(pre)) { - if(!QMessageBox::question( - this, - tr("Delete preset"), - tr("Do you really want to delete %1 ?") - .arg(pre->_preset->name.c_str()), - tr("&Yes"), tr("&No"), - QString::null, 0, 1 )) { - for(int c = 0; c < NBRCHANNELS; c++) - _deicsOnze->_preset[c]=_deicsOnze->_initialPreset; - delete(pre->_preset); - delete(pre); - presetLineEdit->setEnabled(false); - progSpinBox->setEnabled(false); - updatePreset(); - } - } - else QMessageBox::warning(this, tr("No preset selected"), - tr("You must first select a preset.")); - } - else QMessageBox::warning(this, tr("No preset selected"), - tr("You must first select a preset.")); -} - -//----------------------------------------------------------- -// loadPresetDialog -//----------------------------------------------------------- -void DeicsOnzeGui::loadPresetDialog() { - QTreeSubcategory* sub = - (QTreeSubcategory*) subcategoryListView->currentItem(); - QString buffstr; - QString fileName = - QFileDialog::getOpenFileName( - this, - tr("Load preset dialog"), - lastDir, - QString("*.dep")); - - // read the XML file and create DOM tree - if(!fileName.isEmpty()) { - QFileInfo fi(fileName); - lastDir = fi.path(); - QFile deicsonzeFile(fileName); - if(!deicsonzeFile.open(QIODevice::ReadOnly)) { - QMessageBox::critical(0, - tr("Critical Error"), - tr("Cannot open file %1").arg(fileName)); - return; - } - QDomDocument domTree; - if (!domTree.setContent(&deicsonzeFile )) { - QMessageBox::critical - (0, tr("Critical Error"), - tr("Parsing error for file %1").arg(fileName)); - deicsonzeFile.close(); - return; - } - deicsonzeFile.close(); - - QDomNode node = domTree.documentElement(); - while (!node.isNull()) { - QDomElement e = node.toElement(); - if(e.isNull()) - continue; - if(e.tagName() == "deicsOnzePreset") { - QString version = e.attribute(QString("version")); - if (version == "1.0") { - Preset* lPreset = new Preset(); - lPreset->readPreset(node.firstChild()); - if(!sub->_subcategory->isFreeProg(lPreset->prog)) { - if(!QMessageBox::question( - this, - tr("Replace or add"), - tr("%1 is supposed to be affected to the prog number %2, but there is already one on this slot.\n Do you want to replace it or to add it in the next free slot ?") - .arg((lPreset->name).c_str()) - .arg(buffstr.setNum(lPreset->prog+1)), - tr("&Replace"), tr("&Add"), - QString::null, 0, 1 )) { - delete(sub->_subcategory->findPreset(lPreset->prog)); - lPreset->linkSubcategory(sub->_subcategory); - } - else { - int ffp=sub->_subcategory->firstFreeProg(); - if(ffp==-1) - QMessageBox::warning - (this, tr("Download error"), - tr("There is no more free preset slot.")); - else lPreset->prog=ffp; - lPreset->linkSubcategory(sub->_subcategory); - } - } - else lPreset->linkSubcategory(sub->_subcategory); - //display preset - setSubcategory(sub->_subcategory); - } - else printf("unsupported *.dep file version %s\n", - version.toLatin1().data()); - } - else printf("DeicsOnze: %s not supported\n", - e.tagName().toLatin1().data()); - node = node.nextSibling(); - } - } -} - - -//----------------------------------------------------------- -// savePresetDialog -//----------------------------------------------------------- -void DeicsOnzeGui::savePresetDialog() { - QTreePreset* pre = (QTreePreset*) presetListView->currentItem(); - if(pre) { - QString filename = - QFileDialog::getSaveFileName( - this, - tr("Save preset dialog"), - lastDir, - QString("*.dep")); - if(!filename.isEmpty()) { - QFileInfo fi(filename); - lastDir = fi.path(); - if(!filename.endsWith(".dep")) filename+=".dep"; - QFile f(filename); - f.open(QIODevice::WriteOnly); - AL::Xml* xml = new AL::Xml(&f); - - xml->header(); - pre->_preset->writePreset(xml, false); - f.close(); - } - } - else QMessageBox::warning(this, tr("No preset selected"), - tr("You must first select a preset.")); -} - -//----------------------------------------------------------- -// Preset and bank -//----------------------------------------------------------- -void DeicsOnzeGui::setPresetName(const QString& n) { - QTreeWidgetItem* pre = presetListView->currentItem(); - if(pre) { - //TODO : must be changed with SysEx - _deicsOnze->_preset[_currentChannel]->name = n.toAscii().data(); - pre->setText(1,n.toAscii().data()); - } -} -void DeicsOnzeGui::setSubcategoryName(const QString& s) { - QTreeSubcategory* sub = - (QTreeSubcategory*) subcategoryListView->currentItem(); - if(sub) {//must be changed with SysEx - sub->_subcategory->_subcategoryName=s.toAscii().data(); - sub->setText(1, s.toAscii().data()); - } -} -void DeicsOnzeGui::setCategoryName(const QString& c) { - QTreeCategory* cat = (QTreeCategory*) categoryListView->currentItem(); - if(cat) {//must be changed with SysEx - cat->_category->_categoryName=c.toAscii().data(); - cat->setText(1, c.toAscii().data()); - } -} -void DeicsOnzeGui::setHBank(int hb) { - QTreeCategory* cat = (QTreeCategory*) categoryListView->currentItem(); - if(cat) {//must be changed with SysEx - if(!_deicsOnze->_set->isFreeHBank(hb-1)) { - QTreeWidgetItem* qcat; - qcat=categoryListView->findItems(num3Digits(hb), Qt::MatchExactly).at(0); - ((QTreeCategory*)qcat)->_category->_hbank= - cat->_category->_hbank; - qcat->setText(0, num3Digits(((QTreeCategory*)qcat) - ->_category->_hbank+1)); - } - cat->_category->_hbank=hb-1; - cat->setText(0,num3Digits(hb)); - categoryListView->sortItems(0, Qt::AscendingOrder); - categoryListView->scrollToItem(cat); - } -} -void DeicsOnzeGui::setLBank(int lb) {//must be changed with SysEx - QTreeSubcategory* sub = - (QTreeSubcategory*) subcategoryListView->currentItem(); - if(sub) { - Category* currentCat=sub->_subcategory->_category; - if(!currentCat->isFreeLBank(lb-1)) { - QTreeWidgetItem* qsub; - qsub=subcategoryListView->findItems(num3Digits(lb), - Qt::MatchExactly).at(0); - ((QTreeSubcategory*)qsub)->_subcategory->_lbank= - sub->_subcategory->_lbank; - qsub->setText(0, num3Digits(((QTreeSubcategory*)qsub) - ->_subcategory->_lbank+1)); - } - sub->_subcategory->_lbank=lb-1; - sub->setText(0,num3Digits(lb)); - subcategoryListView->sortItems(0, Qt::AscendingOrder); - subcategoryListView->scrollToItem(sub); - } -} -void DeicsOnzeGui::setProg(int pr) {//must be changed with SysEx - QTreePreset* pre = (QTreePreset*) presetListView->currentItem(); - if(pre) { - Subcategory* currentSub=pre->_preset->_subcategory; - if(!currentSub->isFreeProg(pr-1)) { - QTreeWidgetItem* qpre; - qpre=presetListView->findItems(num3Digits(pr), Qt::MatchExactly).at(0); - ((QTreePreset*)qpre)->_preset->prog=pre->_preset->prog; - qpre->setText(0, num3Digits(((QTreePreset*)qpre)->_preset->prog+1)); - } - pre->_preset->prog=pr-1; - pre->setText(0,num3Digits(pr)); - presetListView->sortItems(0,Qt::AscendingOrder); - presetListView->scrollToItem(pre); - } -} -//----------------------------------------------------------- -// load init set -//----------------------------------------------------------- -void DeicsOnzeGui::setIsInitSet(bool b) { - initSetPathLineEdit->setEnabled(b); - initSetBrowsePushButton->setEnabled(b); - unsigned char* message = new unsigned char[2]; - message[0]=SYSEX_ISINITSET; - message[1]=(unsigned char)b; - sendSysex(message, 2); -} -void DeicsOnzeGui::setInitSetPath(const QString& s) { - unsigned char* message = new unsigned char[1+MAXSTRLENGTHINITSETPATH]; - message[0]=SYSEX_INITSETPATH; - strncpy((char*)&message[1], s.toAscii().data(), MAXSTRLENGTHINITSETPATH); - sendSysex(message, 1+MAXSTRLENGTHINITSETPATH); -} -void DeicsOnzeGui::setBrowseInitSetPath() { - QString fileName = - QFileDialog::getOpenFileName( - this, - tr("Browse set dialog"), - lastDir, - QString("*.dei")); - if(!fileName.isEmpty()) { - QFileInfo fi(fileName); - lastDir = fi.path(); - updateInitSetPath(fileName); - setInitSetPath(fileName); - } -} -//----------------------------------------------------------- -// load background pix -//----------------------------------------------------------- -void DeicsOnzeGui::setIsBackgroundPix(bool b) { - if(b && !imagePathLineEdit->text().isEmpty()) applyBackgroundPix(); - else setBackgroundColor(reinterpret_cast(*bColor)); - imagePathLineEdit->setEnabled(b); - imageBrowsePushButton->setEnabled(b); - unsigned char* message = new unsigned char[2]; - message[0]=SYSEX_ISBACKGROUNDPIX; - message[1]=(unsigned char)b; - sendSysex(message, 2); -} -void DeicsOnzeGui::setBackgroundPixPath(const QString& s) { - applyBackgroundPix(); - unsigned char* message = new unsigned char[1+MAXSTRLENGTHBACKGROUNDPIXPATH]; - message[0]=SYSEX_BACKGROUNDPIXPATH; - strncpy((char*)&message[1], s.toAscii().data(), - MAXSTRLENGTHBACKGROUNDPIXPATH); - sendSysex(message, 1+MAXSTRLENGTHBACKGROUNDPIXPATH); -} -void DeicsOnzeGui::setBrowseBackgroundPixPath() { - QString fileName = - QFileDialog::getOpenFileName( - this, - tr("Browse image dialog"), - lastDir, - QString("*.jpg *.png")); - if(!fileName.isEmpty()) { - QFileInfo fi(fileName); - lastDir = fi.path(); - updateBackgroundPixPath(fileName); - setBackgroundPixPath(fileName); - } -} -//----------------------------------------------------------- -// FX -//----------------------------------------------------------- -void DeicsOnzeGui::setChorusActiv(bool a) { - unsigned char* message = new unsigned char[2]; - message[0]=SYSEX_CHORUSACTIV; - message[1]=(unsigned char)a; - sendSysex(message, 2); -} -void DeicsOnzeGui::setChannelChorus(int c) { - sendController(_currentChannel, CTRL_CHORUS_SEND, c); -} -void DeicsOnzeGui::setChorusReturn(int val) { - unsigned char* message = new unsigned char[2]; - message[0]=SYSEX_CHORUSRETURN; - message[1]=(unsigned char)val; - sendSysex(message, 2); -} -void DeicsOnzeGui::setSelectChorusPlugin() { - Plugin* pluginChorus = PluginDialog::getPlugin(this); - if(pluginChorus) { - unsigned char* message = new unsigned char[1+sizeof(Plugin*)]; - message[0]=SYSEX_SELECTCHORUS; - memcpy(&message[1], &pluginChorus, sizeof(Plugin*)); - sendSysex(message, 1+sizeof(Plugin*)); - } -} -/*void DeicsOnzeGui::setPanChorus1(double i) { - unsigned char* message = new unsigned char[2]; - message[0]=SYSEX_CHORUS1PAN; - message[1]=(unsigned char)(i*(double)MAXCHORUSPARAM); - sendSysex(message, 2); -} -void DeicsOnzeGui::setLFOFreqChorus1(double i) { - unsigned char* message = new unsigned char[2]; - message[0]=SYSEX_CHORUS1LFOFREQ; - message[1]=(unsigned char)(i*(double)MAXCHORUSPARAM); - sendSysex(message, 2); -} -void DeicsOnzeGui::setDepthChorus1(double i) { - unsigned char* message = new unsigned char[2]; - message[0]=SYSEX_CHORUS1DEPTH; - message[1]=(unsigned char)(i*(double)MAXCHORUSPARAM); - sendSysex(message, 2); -} -void DeicsOnzeGui::setPanChorus2(double i) { - unsigned char* message = new unsigned char[2]; - message[0]=SYSEX_CHORUS2PAN; - message[1]=(unsigned char)(i*(double)MAXCHORUSPARAM); - sendSysex(message, 2); -} -void DeicsOnzeGui::setLFOFreqChorus2(double i) { - unsigned char* message = new unsigned char[2]; - message[0]=SYSEX_CHORUS2LFOFREQ; - message[1]=(unsigned char)(i*(double)MAXCHORUSPARAM); - sendSysex(message, 2); -} -void DeicsOnzeGui::setDepthChorus2(double i) { - unsigned char* message = new unsigned char[2]; - message[0]=SYSEX_CHORUS2DEPTH; - message[1]=(unsigned char)(i*(double)MAXCHORUSPARAM); - sendSysex(message, 2); - }*/ -void DeicsOnzeGui::setReverbActiv(bool a) { - unsigned char* message = new unsigned char[2]; - message[0]=SYSEX_REVERBACTIV; - message[1]=(unsigned char)a; - sendSysex(message, 2); -} -void DeicsOnzeGui::setChannelReverb(int r) { - sendController(_currentChannel, CTRL_REVERB_SEND, r); -} -void DeicsOnzeGui::setReverbReturn(int val) { - unsigned char* message = new unsigned char[2]; - message[0]=SYSEX_REVERBRETURN; - message[1]=(unsigned char)val; - sendSysex(message, 2); -} -void DeicsOnzeGui::setSelectReverbPlugin() { - Plugin* pluginReverb = PluginDialog::getPlugin(this); - if(pluginReverb) { - unsigned char* message = new unsigned char[1+sizeof(Plugin*)]; - message[0]=SYSEX_SELECTREVERB; - memcpy(&message[1], &pluginReverb, sizeof(Plugin*)); - sendSysex(message, 1+sizeof(Plugin*)); - } -} - -//----------------------------------------------------------- -// Quick Edit -//----------------------------------------------------------- -void DeicsOnzeGui::setChannelVolKnob(double val) { - sendController(_currentChannel, CTRL_CHANNELVOLUME, - (int)(val*(double)MAXCHANNELVOLUME)); -} -void DeicsOnzeGui::setBrightnessKnob(double val) { - sendController(_currentChannel, CTRL_FINEBRIGHTNESS, - (int)(val*(double)MAXFINEBRIGHTNESS)); -} -void DeicsOnzeGui::setModulationKnob(double val) { - sendController(_currentChannel, CTRL_MODULATION, - (int)(val*(double)MAXMODULATION)); -} -void DeicsOnzeGui::setDetuneKnob(double val) { - //channelDetuneSlider->setValue((int)((2.0*val-1.0)*(double)MAXCHANNELDETUNE)); - setChannelDetune((int)((2.0*val-1.0)*(double)MAXCHANNELDETUNE)); -} -void DeicsOnzeGui::setAttackKnob(double val) { - sendController(_currentChannel, CTRL_ATTACK_TIME, - (int)(val*(double)MAXATTACK)); -} -void DeicsOnzeGui::setReleaseKnob(double val) { - sendController(_currentChannel, CTRL_RELEASE_TIME, (int)(val*(double)MAXRELEASE)); -} -//----------------------------------------------------------- -// Global control -//----------------------------------------------------------- -void DeicsOnzeGui::setChannelPan(double mv) { - sendController(_currentChannel, CTRL_CHANNELPAN, - (int)((mv-0.5)*2*(double)MAXCHANNELPAN)); -} -void DeicsOnzeGui::setMasterVolKnob(double mv) { - setMasterVol((int)(mv*(double)MAXMASTERVOLUME)); -} -void DeicsOnzeGui::setMasterVol(int mv) { - unsigned char* message = new unsigned char[2]; - message[0]=SYSEX_MASTERVOL; - message[1]=(unsigned char)mv; - sendSysex(message, 2); -} - -void DeicsOnzeGui::setFeedback(int f) {sendController(_currentChannel, CTRL_FEEDBACK, f);} - -void DeicsOnzeGui::setLfoWave(int lw) {sendController(_currentChannel, CTRL_WAVE, lw);} - -void DeicsOnzeGui::setLfoSpeed(int ls) {sendController(_currentChannel, CTRL_SPEED, ls);} - -void DeicsOnzeGui::setLfoDelay(int ld) {sendController(_currentChannel, CTRL_DELAY, ld);} - -void DeicsOnzeGui::setLfoPModDepth(int lpmd) { - sendController(_currentChannel, CTRL_PMODDEPTH, lpmd); -} - -void DeicsOnzeGui::setLfoPitchSens(int lps) { - sendController(_currentChannel, CTRL_PMODSENS, lps); -} - -void DeicsOnzeGui::setLfoAModDepth(int lamd) { - sendController(_currentChannel, CTRL_AMODDEPTH, lamd); -} -void DeicsOnzeGui::setLfoAmpSens(int las) {sendController(_currentChannel, CTRL_AMS, las);} - -void DeicsOnzeGui::setTranspose(int t) {sendController(_currentChannel, CTRL_TRANSPOSE, t);} - -void DeicsOnzeGui::setChannelDetune(int d) { - sendController(_currentChannel, CTRL_CHANNELDETUNE, d); - updateChannelDetuneKnob(d); -} - -void DeicsOnzeGui::setAlgorithm(int a) { - sendController(_currentChannel, CTRL_ALG, (int) (a==0?FIRST: - (a==1?SECOND: - (a==2?THIRD: - (a==3?FOURTH: - (a==4?FIFTH: - (a==5?SIXTH: - (a==6?SEVENTH:EIGHTH)))))))); -} - -void DeicsOnzeGui::setPitchBendRange(int pbr) { - sendController(_currentChannel, CTRL_PBENDRANGE, pbr); -} - -//--------------------------------------------------------------- -// Pitch Envelope -//--------------------------------------------------------------- -void DeicsOnzeGui::setPL1(int val) { - PitchEg* pe=&_deicsOnze->_preset[_currentChannel]->pitchEg; - pitchEnvelopeGraph->env2Points(val, pe->pl2, pe->pl3, - pe->pr1, pe->pr2, pe->pr3); - pitchEnvelopeGraph->updateEnv(); - sendController(_currentChannel, CTRL_PL1, val); -} -void DeicsOnzeGui::setPL2(int val) { - PitchEg* pe=&_deicsOnze->_preset[_currentChannel]->pitchEg; - pitchEnvelopeGraph->env2Points(pe->pl1, val, pe->pl3, - pe->pr1, pe->pr2, pe->pr3); - pitchEnvelopeGraph->updateEnv(); - sendController(_currentChannel, CTRL_PL2, val); -} -void DeicsOnzeGui::setPL3(int val) { - PitchEg* pe=&_deicsOnze->_preset[_currentChannel]->pitchEg; - pitchEnvelopeGraph->env2Points(pe->pl1, pe->pl2, val, - pe->pr1, pe->pr2, pe->pr3); - pitchEnvelopeGraph->updateEnv(); - sendController(_currentChannel, CTRL_PL3, val); -} -void DeicsOnzeGui::setPR1(int val) { - PitchEg* pe=&_deicsOnze->_preset[_currentChannel]->pitchEg; - pitchEnvelopeGraph->env2Points(pe->pl1, pe->pl2, pe->pl3, - val, pe->pr2, pe->pr3); - pitchEnvelopeGraph->updateEnv(); - sendController(_currentChannel, CTRL_PR1, val); -} -void DeicsOnzeGui::setPR2(int val) { - PitchEg* pe=&_deicsOnze->_preset[_currentChannel]->pitchEg; - pitchEnvelopeGraph->env2Points(pe->pl1, pe->pl2, pe->pl3, - pe->pr1, val, pe->pr3); - pitchEnvelopeGraph->updateEnv(); - sendController(_currentChannel, CTRL_PR2, val); -} -void DeicsOnzeGui::setPR3(int val) { - PitchEg* pe=&_deicsOnze->_preset[_currentChannel]->pitchEg; - pitchEnvelopeGraph->env2Points(pe->pl1, pe->pl2, pe->pl3, - pe->pr1, pe->pr2, val); - pitchEnvelopeGraph->updateEnv(); - sendController(_currentChannel, CTRL_PR3, val); -} -//--------------------------------------------------------------- -// Function -//--------------------------------------------------------------- -void DeicsOnzeGui::setFcVolume(int val){sendController(_currentChannel, CTRL_FCVOLUME, val);} -void DeicsOnzeGui::setFcPitch(int val){sendController(_currentChannel, CTRL_FCPITCH, val);} -void DeicsOnzeGui::setFcAmplitude(int val) { - sendController(_currentChannel, CTRL_FCAMPLITUDE, val); -} -void DeicsOnzeGui::setMwPitch(int val){sendController(_currentChannel, CTRL_MWPITCH, val);} -void DeicsOnzeGui::setMwAmplitude(int val) { - sendController(_currentChannel, CTRL_MWAMPLITUDE, val); -} -void DeicsOnzeGui::setBcPitch(int val){sendController(_currentChannel, CTRL_BCPITCH, val);} -void DeicsOnzeGui::setBcAmplitude(int val) { - sendController(_currentChannel, CTRL_BCAMPLITUDE, val); -} -void DeicsOnzeGui::setBcPitchBias(int val) { - sendController(_currentChannel, CTRL_BCPITCHBIAS, val);} -void DeicsOnzeGui::setBcEgBias(int val) { - sendController(_currentChannel, CTRL_BCEGBIAS, val); -} -void DeicsOnzeGui::setAtPitch(int val){sendController(_currentChannel, CTRL_ATPITCH, val);} -void DeicsOnzeGui::setAtAmplitude(int val) { - sendController(_currentChannel, CTRL_ATAMPLITUDE, val); -} -void DeicsOnzeGui::setAtPitchBias(int val) { - sendController(_currentChannel, CTRL_ATPITCHBIAS, val);} -void DeicsOnzeGui::setAtEgBias(int val) { - sendController(_currentChannel, CTRL_ATEGBIAS, val); -} -void DeicsOnzeGui::setReverbRate(int val) { - sendController(_currentChannel, CTRL_REVERBRATE, val); -} -void DeicsOnzeGui::setPolyMode(int val) { - sendController(_currentChannel, CTRL_POLYMODE, val); -} -void DeicsOnzeGui::setPortFingerFull(int val) { - sendController(_currentChannel, CTRL_PORTAMODE, val); -} -void DeicsOnzeGui::setPortaTime(int val) { - sendController(_currentChannel, CTRL_PORTATIME, val); -} - -//--------------------------------------------------------------- -// envelope controle -//--------------------------------------------------------------- -void DeicsOnzeGui::setAR1(int val) { - Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[0]); - //printf("ar : %d, d1r : %d, d1l : %d, d2r : %d, rr : %d\n", - // val, _eg->d1r, _eg->d1l, _eg->d2r, _eg->rr); - envelopeGraph[0]->env2Points(val, _eg->d1r, _eg->d1l, _eg->d2r, _eg->rr); - envelopeGraph[0]->updateEnv(); - sendController(_currentChannel, CTRL_AR, val); -} -void DeicsOnzeGui::setD1R1(int val) { - Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[0]); - envelopeGraph[0]->env2Points(_eg->ar, val, _eg->d1l, _eg->d2r, _eg->rr); - envelopeGraph[0]->updateEnv(); - sendController(_currentChannel, CTRL_D1R, val); -} -void DeicsOnzeGui::setD1L1(int val) { - Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[0]); - envelopeGraph[0]->env2Points(_eg->ar, _eg->d1r, val, _eg->d2r, _eg->rr); - envelopeGraph[0]->updateEnv(); - sendController(_currentChannel, CTRL_D1L, val); -} -void DeicsOnzeGui::setD2R1(int val) { - Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[0]); - envelopeGraph[0]->env2Points(_eg->ar, _eg->d1r, _eg->d1l, val, _eg->rr); - envelopeGraph[0]->updateEnv(); - sendController(_currentChannel, CTRL_D2R, val); -} -void DeicsOnzeGui::setRR1(int val){ - Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[0]); - envelopeGraph[0]->env2Points(_eg->ar, _eg->d1r, _eg->d1l, _eg->d2r, val); - envelopeGraph[0]->updateEnv(); - sendController(_currentChannel, CTRL_RR, val); -} -void DeicsOnzeGui::setAR2(int val) { - Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[1]); - envelopeGraph[1]->env2Points(val, _eg->d1r, _eg->d1l, _eg->d2r, _eg->rr); - envelopeGraph[1]->updateEnv(); - sendController(_currentChannel, CTRL_AR+DECAPAR1, val); -} -void DeicsOnzeGui::setD1R2(int val) { - Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[1]); - envelopeGraph[1]->env2Points(_eg->ar, val, _eg->d1l, _eg->d2r, _eg->rr); - envelopeGraph[1]->updateEnv(); - sendController(_currentChannel, CTRL_D1R+DECAPAR1, val); -} -void DeicsOnzeGui::setD1L2(int val) { - Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[1]); - envelopeGraph[1]->env2Points(_eg->ar, _eg->d1r, val, _eg->d2r, _eg->rr); - envelopeGraph[1]->updateEnv(); - sendController(_currentChannel, CTRL_D1L+DECAPAR1, val); -} -void DeicsOnzeGui::setD2R2(int val) { - Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[1]); - envelopeGraph[1]->env2Points(_eg->ar, _eg->d1r, _eg->d1l, val, _eg->rr); - envelopeGraph[1]->updateEnv(); - sendController(_currentChannel, CTRL_D2R+DECAPAR1, val); -} -void DeicsOnzeGui::setRR2(int val){ - Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[1]); - envelopeGraph[1]->env2Points(_eg->ar, _eg->d1r, _eg->d1l, _eg->d2r, val); - envelopeGraph[1]->updateEnv(); - sendController(_currentChannel, CTRL_RR+DECAPAR1, val); -} -void DeicsOnzeGui::setAR3(int val) { - Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[2]); - envelopeGraph[2]->env2Points(val, _eg->d1r, _eg->d1l, _eg->d2r, _eg->rr); - envelopeGraph[2]->updateEnv(); - sendController(_currentChannel, CTRL_AR+2*DECAPAR1, val); -} -void DeicsOnzeGui::setD1R3(int val) { - Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[2]); - envelopeGraph[2]->env2Points(_eg->ar, val, _eg->d1l, _eg->d2r, _eg->rr); - envelopeGraph[2]->updateEnv(); - sendController(_currentChannel, CTRL_D1R+2*DECAPAR1, val); -} -void DeicsOnzeGui::setD1L3(int val) { - Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[2]); - envelopeGraph[2]->env2Points(_eg->ar, _eg->d1r, val, _eg->d2r, _eg->rr); - envelopeGraph[2]->updateEnv(); - sendController(_currentChannel, CTRL_D1L+2*DECAPAR1, val); -} -void DeicsOnzeGui::setD2R3(int val) { - Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[2]); - envelopeGraph[2]->env2Points(_eg->ar, _eg->d1r, _eg->d1l, val, _eg->rr); - envelopeGraph[2]->updateEnv(); - sendController(_currentChannel, CTRL_D2R+2*DECAPAR1, val); -} -void DeicsOnzeGui::setRR3(int val){ - Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[2]); - envelopeGraph[2]->env2Points(_eg->ar, _eg->d1r, _eg->d1l, _eg->d2r, val); - envelopeGraph[2]->updateEnv(); - sendController(_currentChannel, CTRL_RR+2*DECAPAR1, val); -} -void DeicsOnzeGui::setAR4(int val) { - Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[3]); - envelopeGraph[3]->env2Points(val, _eg->d1r, _eg->d1l, _eg->d2r, _eg->rr); - envelopeGraph[3]->updateEnv(); - sendController(_currentChannel, CTRL_AR+3*DECAPAR1, val); -} -void DeicsOnzeGui::setD1R4(int val) { - Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[3]); - envelopeGraph[3]->env2Points(_eg->ar, val, _eg->d1l, _eg->d2r, _eg->rr); - envelopeGraph[3]->updateEnv(); - sendController(_currentChannel, CTRL_D1R+3*DECAPAR1, val); -} -void DeicsOnzeGui::setD1L4(int val) { - Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[3]); - envelopeGraph[3]->env2Points(_eg->ar, _eg->d1r, val, _eg->d2r, _eg->rr); - envelopeGraph[3]->updateEnv(); - sendController(_currentChannel, CTRL_D1L+3*DECAPAR1, val); -} -void DeicsOnzeGui::setD2R4(int val) { - Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[3]); - envelopeGraph[3]->env2Points(_eg->ar, _eg->d1r, _eg->d1l, val, _eg->rr); - envelopeGraph[3]->updateEnv(); - sendController(_currentChannel, CTRL_D2R+3*DECAPAR1, val); -} -void DeicsOnzeGui::setRR4(int val){ - Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[3]); - envelopeGraph[3]->env2Points(_eg->ar, _eg->d1r, _eg->d1l, _eg->d2r, val); - envelopeGraph[3]->updateEnv(); - sendController(_currentChannel, CTRL_RR+3*DECAPAR1, val); -} - -//-------------------------------------------------------------- -// set Scaling -//-------------------------------------------------------------- -void DeicsOnzeGui::setLS1(int val){sendController(_currentChannel, CTRL_LS, val);} -void DeicsOnzeGui::setRS1(int val){sendController(_currentChannel, CTRL_RS, val);} -void DeicsOnzeGui::setLS2(int val){sendController(_currentChannel, CTRL_LS+DECAPAR1, val);} -void DeicsOnzeGui::setRS2(int val){sendController(_currentChannel, CTRL_RS+DECAPAR1, val);} -void DeicsOnzeGui::setLS3(int val){sendController(_currentChannel, CTRL_LS+2*DECAPAR1, val);} -void DeicsOnzeGui::setRS3(int val){sendController(_currentChannel, CTRL_RS+2*DECAPAR1, val);} -void DeicsOnzeGui::setLS4(int val){sendController(_currentChannel, CTRL_LS+3*DECAPAR1, val);} -void DeicsOnzeGui::setRS4(int val){sendController(_currentChannel, CTRL_RS+3*DECAPAR1, val);} - -//-------------------------------------------------------------- -// set Volume -//-------------------------------------------------------------- -void DeicsOnzeGui::setVol1(int val){sendController(_currentChannel, CTRL_OUT, val);} -void DeicsOnzeGui::setVol2(int val){sendController(_currentChannel, CTRL_OUT+DECAPAR1, val);} -void DeicsOnzeGui::setVol3(int val){sendController(_currentChannel,CTRL_OUT+2*DECAPAR1,val);} -void DeicsOnzeGui::setVol4(int val){sendController(_currentChannel,CTRL_OUT+3*DECAPAR1,val);} - -//-------------------------------------------------------------- -// set Ratio and Frequency -//-------------------------------------------------------------- -void DeicsOnzeGui::setCoarseRatio1(int val) { - sendController(_currentChannel, CTRL_RATIO, val*100+FineRatio1SpinBox->value()); -} -void DeicsOnzeGui::setFineRatio1(int val) { - sendController(_currentChannel, CTRL_RATIO, val+CoarseRatio1SpinBox->value()*100); -} -void DeicsOnzeGui::setFreq1(int val) { - sendController(_currentChannel,CTRL_FIXRANGE,val*100);} -void DeicsOnzeGui::setFix1(bool f) { - sendController(_currentChannel, CTRL_FIX, (f==false?0:1));} -void DeicsOnzeGui::setCoarseRatio2(int val) { - sendController(_currentChannel, CTRL_RATIO+DECAPAR1, val*100+FineRatio2SpinBox->value()); -} -void DeicsOnzeGui::setFineRatio2(int val) { - sendController(_currentChannel,CTRL_RATIO+DECAPAR1,val+CoarseRatio2SpinBox->value()*100); -} -void DeicsOnzeGui::setFreq2(int val) { - sendController(_currentChannel,CTRL_FIXRANGE+DECAPAR2,val*100);} -void DeicsOnzeGui::setFix2(bool f) { - sendController(_currentChannel, CTRL_FIX+DECAPAR2, (f==false?0:1));} -void DeicsOnzeGui::setCoarseRatio3(int val) { - sendController(_currentChannel,CTRL_RATIO+2*DECAPAR1,val*100+FineRatio3SpinBox->value()); -} -void DeicsOnzeGui::setFineRatio3(int val) { - sendController(_currentChannel,CTRL_RATIO+2*DECAPAR1, - val+CoarseRatio3SpinBox->value()*100); -} -void DeicsOnzeGui::setFreq3(int val) { - sendController(_currentChannel,CTRL_FIXRANGE+2*DECAPAR2,val*100);} -void DeicsOnzeGui::setFix3(bool f) { - sendController(_currentChannel, CTRL_FIX+2*DECAPAR2, (f==false?0:1));} -void DeicsOnzeGui::setCoarseRatio4(int val) { - sendController(_currentChannel,CTRL_RATIO+3*DECAPAR1,val*100+FineRatio4SpinBox->value()); -} -void DeicsOnzeGui::setFineRatio4(int val) { - sendController(_currentChannel,CTRL_RATIO+3*DECAPAR1, - val+CoarseRatio4SpinBox->value()*100); -} -void DeicsOnzeGui::setFreq4(int val) { - sendController(_currentChannel,CTRL_FIXRANGE+3*DECAPAR2,val*100);} -void DeicsOnzeGui::setFix4(bool f) { - sendController(_currentChannel, CTRL_FIX+3*DECAPAR2, (f==false?0:1));} - -//-------------------------------------------------------------- -// set Sensitivity -//-------------------------------------------------------------- -void DeicsOnzeGui::setAME1(bool val) {sendController(_currentChannel, CTRL_AME, val);} -void DeicsOnzeGui::setEBS1(int val) {sendController(_currentChannel, CTRL_EBS, val);} -void DeicsOnzeGui::setKVS1(int val) {sendController(_currentChannel, CTRL_KVS, val);} -void DeicsOnzeGui::setAME2(bool val) {sendController(_currentChannel,CTRL_AME+DECAPAR1,val);} -void DeicsOnzeGui::setEBS2(int val) {sendController(_currentChannel,CTRL_EBS+DECAPAR1,val);} -void DeicsOnzeGui::setKVS2(int val) {sendController(_currentChannel,CTRL_KVS+DECAPAR1,val);} -void DeicsOnzeGui::setAME3(bool val) { - sendController(_currentChannel,CTRL_AME+2*DECAPAR1,val);} -void DeicsOnzeGui::setEBS3(int val) { - sendController(_currentChannel, CTRL_EBS+2*DECAPAR1, val);} -void DeicsOnzeGui::setKVS3(int val) { - sendController(_currentChannel, CTRL_KVS+2*DECAPAR1, val);} -void DeicsOnzeGui::setAME4(bool val) { - sendController(_currentChannel, CTRL_AME+3*DECAPAR1, val);} -void DeicsOnzeGui::setEBS4(int val) { - sendController(_currentChannel, CTRL_EBS+3*DECAPAR1, val);} -void DeicsOnzeGui::setKVS4(int val) { - sendController(_currentChannel, CTRL_KVS+3*DECAPAR1, val);} - -//-------------------------------------------------------------- -// set detune -//-------------------------------------------------------------- -void DeicsOnzeGui::setDET1(int val){sendController(_currentChannel, CTRL_DET, val);} -void DeicsOnzeGui::setDET2(int val){sendController(_currentChannel, CTRL_DET+DECAPAR1, val);} -void DeicsOnzeGui::setDET3(int val){sendController(_currentChannel,CTRL_DET+2*DECAPAR1,val);} -void DeicsOnzeGui::setDET4(int val){sendController(_currentChannel,CTRL_DET+3*DECAPAR1,val);} - -//-------------------------------------------------------------- -// set WaveForm -//-------------------------------------------------------------- -void DeicsOnzeGui::setWaveForm1(int w) { - sendController(_currentChannel, CTRL_OSW, w); -} -void DeicsOnzeGui::setWaveForm2(int w) { - sendController(_currentChannel, CTRL_OSW+DECAPAR2, w); -} -void DeicsOnzeGui::setWaveForm3(int w) { - sendController(_currentChannel, CTRL_OSW+2*DECAPAR2, w); -} -void DeicsOnzeGui::setWaveForm4(int w) { - sendController(_currentChannel, CTRL_OSW+3*DECAPAR2, w); -} -//-------------------------------------------------------------- -// set delay -//-------------------------------------------------------------- -void DeicsOnzeGui::setActivDelay(bool a) { - unsigned char* message = new unsigned char[2]; - message[0]=SYSEX_DELAYACTIV; - message[1]=(unsigned char)a; - sendSysex(message, 2); -} -void DeicsOnzeGui::setDelayReturn(int r) { - unsigned char* message = new unsigned char[2]; - message[0]=SYSEX_DELAYRETURN; - message[1]=(unsigned char)r; - sendSysex(message, 2); -} -void DeicsOnzeGui::setChannelDelay(int d) { - sendController(_currentChannel, CTRL_VARIATION_SEND, (unsigned char)d); -} -//void DeicsOnzeGui::setDelayTime(int t) { -// unsigned char* message = new unsigned char[2]; -// message[0]=SYSEX_DELAYTIME; -// message[1]=(unsigned char)t; -// sendSysex(message, 2); -// updateDelayTime(t); -//} -void DeicsOnzeGui::setDelayBPM(double t) { - //int it = (int)(((t - MINDELAYTIME) / (MAXDELAYTIME - MINDELAYTIME))*255.0); - unsigned char* message = new unsigned char[sizeof(float)+1]; - message[0]=SYSEX_DELAYBPM; - float f = (float)t; - memcpy(&message[1], &f, sizeof(float)); - message[1]=(unsigned char)f; - sendSysex(message, sizeof(float)+1); - //updateDelayTime(it); -} -void DeicsOnzeGui::setDelayBeatRatio(double t) { - unsigned char* message = new unsigned char[sizeof(float)+1]; - message[0]=SYSEX_DELAYBEATRATIO; - float f = (float)t; - memcpy(&message[1], &f, sizeof(float)); - message[1]=(unsigned char)f; - sendSysex(message, sizeof(float)+1); -} -//void DeicsOnzeGui::setDelayFeedback(int f) { -// unsigned char* message = new unsigned char[2]; -// message[0]=SYSEX_DELAYFEEDBACK; -// message[1]=(unsigned char)f; -// sendSysex(message, 2); -// updateDelayFeedback(f); -//} -void DeicsOnzeGui::setDelayFeedback(double t) { - //int idf = (int)(f*128.0+128.0); - unsigned char* message = new unsigned char[sizeof(float)+1]; - message[0]=SYSEX_DELAYFEEDBACK; - float f = (float)t; - memcpy(&message[1], &f, sizeof(float)); - sendSysex(message, sizeof(float)+1); - //updateDelayFeedback(idf); -} -//void DeicsOnzeGui::setDelayPanLFOFreq(int pf) { -// unsigned char* message = new unsigned char[2]; -// message[0]=SYSEX_DELAYLFOFREQ; -// message[1]=(unsigned char)pf; -// sendSysex(message, 2); -// updateDelayPanLFOFreq(pf); -//} -void DeicsOnzeGui::setDelayPanLFOFreq(double pf) { - //int ipf = (int)(((pf - MINFREQ) / (MAXFREQ - MINFREQ))*255.0); - unsigned char* message = new unsigned char[sizeof(float)+1]; - message[0]=SYSEX_DELAYLFOFREQ; - float f = (float)pf; - memcpy(&message[1], &f, sizeof(float)); - sendSysex(message, sizeof(float)+1); - //updateDelayPanLFOFreq(ipf); -} -//void DeicsOnzeGui::setDelayPanLFODepth(int pd) { -// unsigned char* message = new unsigned char[2]; -// message[0]=SYSEX_DELAYLFODEPTH; -// message[1]=(unsigned char)pd; -// sendSysex(message, 2); -// updateDelayPanLFODepth(pd); -//} -void DeicsOnzeGui::setDelayPanLFODepth(double pd) { - //int ipd = (int)(pd*255.0); - unsigned char* message = new unsigned char[sizeof(float)+1]; - message[0]=SYSEX_DELAYLFODEPTH; - float f = (float)pd; - memcpy(&message[1], &f, sizeof(float)); - sendSysex(message, sizeof(float)+1); - //updateDelayPanLFODepth(ipd); -} - - -//-------------------------------------------------------------- -// setSet -// Display the set, that is the category list -//-------------------------------------------------------------- -void DeicsOnzeGui::setSet() { - categoryListView->clear(); - hbankSpinBox->setEnabled(false); - categoryLineEdit->setEnabled(false); - for(std::vector::iterator - i=_deicsOnze->_set->_categoryVector.begin(); - i!=_deicsOnze->_set->_categoryVector.end(); i++) - (void) new QTreeCategory - (categoryListView, num3Digits((*i)->_hbank+1), - (*i)->_categoryName.c_str(), *i); - categoryListView->resizeColumnToContents(0); - categoryListView->sortItems(0,Qt::AscendingOrder); -} - -//-------------------------------------------------------------- -// setCategory -//-------------------------------------------------------------- -void DeicsOnzeGui::setCategory(Category* cat) { - subcategoryListView->clear(); - lbankSpinBox->setEnabled(false); - subcategoryLineEdit->setEnabled(false); - for(std::vector::iterator i=cat->_subcategoryVector.begin(); - i!=cat->_subcategoryVector.end(); i++) - (void) new QTreeSubcategory(subcategoryListView, - num3Digits((*i)->_lbank+1), - (*i)->_subcategoryName.c_str(),*i); - subcategoryListView->resizeColumnToContents(0); - subcategoryListView->sortItems(0,Qt::AscendingOrder); -} -void DeicsOnzeGui::setCategory(QTreeWidgetItem* cat) { - QTreeCategory* ccat = (QTreeCategory*) categoryListView->currentItem(); - if(cat) { - categoryLineEdit->setEnabled(true); - hbankSpinBox->setEnabled(true); - categoryLineEdit - ->setText(((QTreeCategory*)cat)->_category->_categoryName.c_str()); - hbankSpinBox->setValue(((QTreeCategory*)cat)->_category->_hbank+1); - ccat=(QTreeCategory*)cat; - setCategory(ccat->_category); - } -} - -//-------------------------------------------------------------- -// setSubcategory -//-------------------------------------------------------------- -void DeicsOnzeGui::setSubcategory(Subcategory* sub) { - presetListView->clear(); - progSpinBox->setEnabled(false); - presetLineEdit->setEnabled(false); - for(std::vector::iterator i=sub->_presetVector.begin(); - i!=sub->_presetVector.end(); i++) - (void) new QTreePreset(presetListView, - num3Digits((*i)->prog+1), - (*i)->name.c_str(),*i); - presetListView->resizeColumnToContents(0); - presetListView->sortItems(0,Qt::AscendingOrder); -} -void DeicsOnzeGui::setSubcategory(QTreeWidgetItem* sub) { - QTreeSubcategory* csub = - (QTreeSubcategory*) subcategoryListView->currentItem(); - if(sub) { - subcategoryLineEdit->setEnabled(true); - lbankSpinBox->setEnabled(true); - subcategoryLineEdit->setText(((QTreeSubcategory*)sub) - ->_subcategory->_subcategoryName.c_str()); - lbankSpinBox->setValue(((QTreeSubcategory*)sub) - ->_subcategory->_lbank+1); - csub=(QTreeSubcategory*)sub; - setSubcategory(csub->_subcategory); - } -} -//-------------------------------------------------------------- -// setPreset -//-------------------------------------------------------------- -void DeicsOnzeGui::setPreset(QTreeWidgetItem* pre) { - if(pre) { - QTreePreset* cpre=(QTreePreset*)pre; - updatePresetName(cpre->_preset->name.c_str(), true); - updateProg(cpre->_preset->prog, true); - int prog = cpre->_preset->prog; - int lbank = cpre->_preset->_subcategory->_lbank; - int hbank = cpre->_preset->_subcategory->_category->_hbank; - setEnabledPreset(true); - updatePreset(cpre->_preset); - sendController(_currentChannel, CTRL_PROGRAM, (hbank<<16)+(lbank<<8)+prog); - } -} -//-------------------------------------------------------------- -// update the gui -//-------------------------------------------------------------- -void DeicsOnzeGui::setEnabledPreset(bool b) { - if(_enabledPreset!=b) { - FeedbackGroupBox->setEnabled(b); - LFOGroupBox->setEnabled(b); - pitchEnvGroupBox->setEnabled(b); - ModulationMatrixGroupBox->setEnabled(b); - Op1Tab->setEnabled(b); - Op2Tab->setEnabled(b); - Op3Tab->setEnabled(b); - Op4Tab->setEnabled(b); - FunctionsTab->setEnabled(b); - chorusTab->setEnabled(b); - reverbTab->setEnabled(b); - - _enabledPreset=b; - } -} -void DeicsOnzeGui::updateChannelEnable(bool e) { - updateChannelCheckBox(e); - updateEnabledChannel(e); -} -void DeicsOnzeGui::updateEnabledChannel(bool e) { - numberVoicesLabel->setEnabled(e); - nbrVoicesSpinBox->setEnabled(e); - channelCtrlGroupBox->setEnabled(e); - deicsOnzeTabWidget->setEnabled(e); -} -void DeicsOnzeGui::updateNbrVoices(int val) { - nbrVoicesSpinBox->blockSignals(true); - nbrVoicesSpinBox->setValue(val); - nbrVoicesSpinBox->blockSignals(false); -} -void DeicsOnzeGui::updateMasterVolume(int val) { - double d = (double)val/(double)MAXMASTERVOLUME; - //printf("D = %d, %f\n", val, d); - masterVolKnob->blockSignals(true); - masterVolKnob->setValue(d); - masterVolKnob->blockSignals(false); -} -//void DeicsOnzeGui::updateMidiInCh(int val) { - //MidiInChComboBox->blockSignals(true); - //MidiInChComboBox->setCurrentIndex(val); - //MidiInChComboBox->blockSignals(false); -//} -void DeicsOnzeGui::updateQuality(int val) { - qualityComboBox->blockSignals(true); - qualityComboBox->setCurrentIndex(val); - qualityComboBox->blockSignals(false); -} -void DeicsOnzeGui::updateFilter(bool f) { - filterCheckBox->blockSignals(true); - filterCheckBox->setChecked(f); - filterCheckBox->blockSignals(false); -} -void DeicsOnzeGui::updateFontSize(int val) { - fontSizeSpinBox->blockSignals(true); - fontSizeSpinBox->setValue(val); - fontSizeSpinBox->blockSignals(false); -} -//FX -void DeicsOnzeGui::updateChorusActiv(bool a) { - chorusActivCheckBox->blockSignals(true); - chorusActivCheckBox->setChecked(a); - chorusActivCheckBox->blockSignals(false); -} -void DeicsOnzeGui::updateChannelChorus(int c) { - chChorusSlider->blockSignals(true); - chChorusSlider->setValue(c); - chChorusSlider->blockSignals(false); - chChorusSpinBox->blockSignals(true); - chChorusSpinBox->setValue(c); - chChorusSpinBox->blockSignals(false); -} -void DeicsOnzeGui::updateChorusReturn(int r) { - returnChorusSlider->blockSignals(true); - returnChorusSlider->setValue(r); - returnChorusSlider->blockSignals(false); -} -/*void DeicsOnzeGui::updatePanChorus1(int c) { - panChorus1Knob->blockSignals(true); - panChorus1Knob->setValue((double)c/(double)MAXCHORUSPARAM); - panChorus1Knob->blockSignals(false); -} -void DeicsOnzeGui::updateLFOFreqChorus1(int c) { - LFOFreqChorus1Knob->blockSignals(true); - LFOFreqChorus1Knob->setValue((double)c/(double)MAXCHORUSPARAM); - LFOFreqChorus1Knob->blockSignals(false); -} -void DeicsOnzeGui::updateDepthChorus1(int c) { - depthChorus1Knob->blockSignals(true); - depthChorus1Knob->setValue((double)c/(double)MAXCHORUSPARAM); - depthChorus1Knob->blockSignals(false); -} -void DeicsOnzeGui::updatePanChorus2(int c) { - panChorus2Knob->blockSignals(true); - panChorus2Knob->setValue((double)c/(double)MAXCHORUSPARAM); - panChorus2Knob->blockSignals(false); -} -void DeicsOnzeGui::updateLFOFreqChorus2(int c) { - LFOFreqChorus2Knob->blockSignals(true); - LFOFreqChorus2Knob->setValue((double)c/(double)MAXCHORUSPARAM); - LFOFreqChorus2Knob->blockSignals(false); -} -void DeicsOnzeGui::updateDepthChorus2(int c) { - depthChorus2Knob->blockSignals(true); - depthChorus2Knob->setValue((double)c/(double)MAXCHORUSPARAM); - depthChorus2Knob->blockSignals(false); - }*/ -void DeicsOnzeGui::updateReverbActiv(bool a) { - reverbActivCheckBox->blockSignals(true); - reverbActivCheckBox->setChecked(a); - reverbActivCheckBox->blockSignals(false); -} -void DeicsOnzeGui::updateChannelReverb(int r) { - chReverbSlider->blockSignals(true); - chReverbSlider->setValue(r); - chReverbSlider->blockSignals(false); - chReverbSpinBox->blockSignals(true); - chReverbSpinBox->setValue(r); - chReverbSpinBox->blockSignals(false); -} -void DeicsOnzeGui::updateReverbReturn(int r) { - returnReverbSlider->blockSignals(true); - returnReverbSlider->setValue(r); - returnReverbSlider->blockSignals(false); -} -void DeicsOnzeGui::updateLadspaReverbLineEdit(QString s) { - selectLadspaReverbLineEdit->blockSignals(true); - selectLadspaReverbLineEdit->setText(s); - selectLadspaReverbLineEdit->blockSignals(false); -} -void DeicsOnzeGui::updateLadspaChorusLineEdit(QString s) { - selectLadspaChorusLineEdit->blockSignals(true); - selectLadspaChorusLineEdit->setText(s); - selectLadspaChorusLineEdit->blockSignals(false); -} - -void DeicsOnzeGui::updateDelayActiv(bool a) { - delayActivCheckBox->blockSignals(true); - delayActivCheckBox->setChecked(a); - delayActivCheckBox->blockSignals(false); -} -void DeicsOnzeGui::updateChannelDelay(int r) { - chDelaySlider->blockSignals(true); - chDelaySlider->setValue(r); - chDelaySlider->blockSignals(false); - chDelaySpinBox->blockSignals(true); - chDelaySpinBox->setValue(r); - chDelaySpinBox->blockSignals(false); -} -void DeicsOnzeGui::updateDelayReturn(int r) { - delayReturnSlider->blockSignals(true); - delayReturnSlider->setValue(r); - delayReturnSlider->blockSignals(false); -} -void DeicsOnzeGui::updateDelayPanLFOFreq(float plf) { - delayPanLFOFreqKnob->blockSignals(true); - delayPanLFOFreqKnob->setValue((double)plf); - delayPanLFOFreqKnob->blockSignals(false); - delayPanLFOFreqFloatentry->blockSignals(true); - delayPanLFOFreqFloatentry->setValue((double)plf); - delayPanLFOFreqFloatentry->blockSignals(false); -} -void DeicsOnzeGui::updateDelayBPM(float dt) { - delayBPMKnob->blockSignals(true); - delayBPMKnob->setValue((double)dt); - delayBPMKnob->blockSignals(false); - delayBPMFloatentry->blockSignals(true); - delayBPMFloatentry->setValue((double)dt); - delayBPMFloatentry->blockSignals(false); -} -void DeicsOnzeGui::updateDelayBeatRatio(float dt) { - delayBeatRatioKnob->blockSignals(true); - delayBeatRatioKnob->setValue((double)dt); - delayBeatRatioKnob->blockSignals(false); - delayBeatRatioFloatentry->blockSignals(true); - delayBeatRatioFloatentry->setValue((double)dt); - delayBeatRatioFloatentry->blockSignals(false); -} -void DeicsOnzeGui::updateDelayFeedback(float df) { - delayFeedbackKnob->blockSignals(true); - delayFeedbackKnob->setValue((double)df); - delayFeedbackKnob->blockSignals(false); - delayFeedbackFloatentry->blockSignals(true); - delayFeedbackFloatentry->setValue((double)df); - delayFeedbackFloatentry->blockSignals(false); -} -void DeicsOnzeGui::updateDelayPanLFODepth(float dpd) { - delayPanLFODepthKnob->blockSignals(true); - delayPanLFODepthKnob->setValue((double)dpd); - delayPanLFODepthKnob->blockSignals(false); - delayPanLFODepthFloatentry->blockSignals(true); - delayPanLFODepthFloatentry->setValue((double)dpd); - delayPanLFODepthFloatentry->blockSignals(false); -} - -void DeicsOnzeGui::applyFontSize(int fs) { - QFont f = font(); - f.setPointSize(fs); - setFont(f); -} -void DeicsOnzeGui::updateSaveConfig(bool usc) { - saveConfigCheckBox->blockSignals(true); - saveConfigCheckBox->setChecked(usc); - saveConfigCheckBox->blockSignals(false); -} -void DeicsOnzeGui::updateSaveOnlyUsed(bool usou) { - hugeSaveRadioButton->blockSignals(true); - hugeSaveRadioButton->setChecked(!usou); - hugeSaveRadioButton->blockSignals(false); - minSaveRadioButton->blockSignals(true); - minSaveRadioButton->setChecked(usou); - minSaveRadioButton->blockSignals(false); -} -//Pitch Envelope -void DeicsOnzeGui::updatePL1(int val) { - PL1SpinBox->blockSignals(true); - PL1SpinBox->setValue(val); - PL1SpinBox->blockSignals(false); -} -void DeicsOnzeGui::updatePL2(int val) { - PL2SpinBox->blockSignals(true); - PL2SpinBox->setValue(val); - PL2SpinBox->blockSignals(false); -} -void DeicsOnzeGui::updatePL3(int val) { - PL3SpinBox->blockSignals(true); - PL3SpinBox->setValue(val); - PL3SpinBox->blockSignals(false); -} -void DeicsOnzeGui::updatePR1(int val) { - PR1SpinBox->blockSignals(true); - PR1SpinBox->setValue(val); - PR1SpinBox->blockSignals(false); -} -void DeicsOnzeGui::updatePR2(int val) { - PR2SpinBox->blockSignals(true); - PR2SpinBox->setValue(val); - PR2SpinBox->blockSignals(false); -} -void DeicsOnzeGui::updatePR3(int val) { - PR3SpinBox->blockSignals(true); - PR3SpinBox->setValue(val); - PR3SpinBox->blockSignals(false); -} -//Function -void DeicsOnzeGui::updateFcVolume(int val) { - fcVolumeSpinBox->blockSignals(true); - fcVolumeSpinBox->setValue(val); - fcVolumeSpinBox->blockSignals(false); - fcVolumeSlider->blockSignals(true); - fcVolumeSlider->setValue(val); - fcVolumeSlider->blockSignals(false); -} -void DeicsOnzeGui::updateFcPitch(int val) { - fcPitchSpinBox->blockSignals(true); - fcPitchSpinBox->setValue(val); - fcPitchSpinBox->blockSignals(false); - fcPitchSlider->blockSignals(true); - fcPitchSlider->setValue(val); - fcPitchSlider->blockSignals(false); -} -void DeicsOnzeGui::updateFcAmplitude(int val) { - fcAmplitudeSpinBox->blockSignals(true); - fcAmplitudeSpinBox->setValue(val); - fcAmplitudeSpinBox->blockSignals(false); - fcAmplitudeSlider->blockSignals(true); - fcAmplitudeSlider->setValue(val); - fcAmplitudeSlider->blockSignals(false); -} -void DeicsOnzeGui::updateMwPitch(int val) { - mwPitchSpinBox->blockSignals(true); - mwPitchSpinBox->setValue(val); - mwPitchSpinBox->blockSignals(false); - mwPitchSlider->blockSignals(true); - mwPitchSlider->setValue(val); - mwPitchSlider->blockSignals(false); -} -void DeicsOnzeGui::updateMwAmplitude(int val) { - mwAmplitudeSpinBox->blockSignals(true); - mwAmplitudeSpinBox->setValue(val); - mwAmplitudeSpinBox->blockSignals(false); - mwAmplitudeSlider->blockSignals(true); - mwAmplitudeSlider->setValue(val); - mwAmplitudeSlider->blockSignals(false); -} -void DeicsOnzeGui::updateBcPitch(int val) { - bcPitchSpinBox->blockSignals(true); - bcPitchSpinBox->setValue(val); - bcPitchSpinBox->blockSignals(false); - bcPitchSlider->blockSignals(true); - bcPitchSlider->setValue(val); - bcPitchSlider->blockSignals(false); -} -void DeicsOnzeGui::updateBcAmplitude(int val) { - bcAmplitudeSpinBox->blockSignals(true); - bcAmplitudeSpinBox->setValue(val); - bcAmplitudeSpinBox->blockSignals(false); - bcAmplitudeSlider->blockSignals(true); - bcAmplitudeSlider->setValue(val); - bcAmplitudeSlider->blockSignals(false); -} -void DeicsOnzeGui::updateBcPitchBias(int val) { - bcPitchBiasSpinBox->blockSignals(true); - bcPitchBiasSpinBox->setValue(val); - bcPitchBiasSpinBox->blockSignals(false); - bcPitchBiasSlider->blockSignals(true); - bcPitchBiasSlider->setValue(val); - bcPitchBiasSlider->blockSignals(false); -} -void DeicsOnzeGui::updateBcEgBias(int val) { - bcEgBiasSpinBox->blockSignals(true); - bcEgBiasSpinBox->setValue(val); - bcEgBiasSpinBox->blockSignals(false); - bcEgBiasSlider->blockSignals(true); - bcEgBiasSlider->setValue(val); - bcEgBiasSlider->blockSignals(false); -} -void DeicsOnzeGui::updateAtPitch(int val) { - atPitchSpinBox->blockSignals(true); - atPitchSpinBox->setValue(val); - atPitchSpinBox->blockSignals(false); - atPitchSlider->blockSignals(true); - atPitchSlider->setValue(val); - atPitchSlider->blockSignals(false); -} -void DeicsOnzeGui::updateAtAmplitude(int val) { - atAmplitudeSpinBox->blockSignals(true); - atAmplitudeSpinBox->setValue(val); - atAmplitudeSpinBox->blockSignals(false); - atAmplitudeSlider->blockSignals(true); - atAmplitudeSlider->setValue(val); - atAmplitudeSlider->blockSignals(false); -} -void DeicsOnzeGui::updateAtPitchBias(int val) { - atPitchBiasSpinBox->blockSignals(true); - atPitchBiasSpinBox->setValue(val); - atPitchBiasSpinBox->blockSignals(false); - atPitchBiasSlider->blockSignals(true); - atPitchBiasSlider->setValue(val); - atPitchBiasSlider->blockSignals(false); -} -void DeicsOnzeGui::updateAtEgBias(int val) { - atEgBiasSpinBox->blockSignals(true); - atEgBiasSpinBox->setValue(val); - atEgBiasSpinBox->blockSignals(false); - atEgBiasSlider->blockSignals(true); - atEgBiasSlider->setValue(val); - atEgBiasSlider->blockSignals(false); -} -//void DeicsOnzeGui::updateReverbRate(int val) { - //reverbSpinBox->blockSignals(true); - //reverbSpinBox->setValue(val); - //reverbSpinBox->blockSignals(false); - //reverbSlider->blockSignals(true); - //reverbSlider->setValue(val); - //reverbSlider->blockSignals(false); -//} -//Envelope -void DeicsOnzeGui::updateAR(int op, int val) { - Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[op]); - envelopeGraph[op]->env2Points(val, _eg->d1r, _eg->d1l, _eg->d2r, _eg->rr); - envelopeGraph[op]->updateEnv(); - switch(op) { - case 0: - AR1SpinBox->blockSignals(true); - AR1SpinBox->setValue(val); - AR1SpinBox->blockSignals(false); - break; - case 1: - AR2SpinBox->blockSignals(true); - AR2SpinBox->setValue(val); - AR2SpinBox->blockSignals(false); - break; - case 2: - AR3SpinBox->blockSignals(true); - AR3SpinBox->setValue(val); - AR3SpinBox->blockSignals(false); - break; - case 3: - AR4SpinBox->blockSignals(true); - AR4SpinBox->setValue(val); - AR4SpinBox->blockSignals(false); - break; - default: printf("DeicsOnzeGui::updateAR : Error switch\n"); - } -} - -void DeicsOnzeGui::updateD1R(int op, int val) { - Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[op]); - envelopeGraph[op]->env2Points(_eg->ar, val, _eg->d1l, _eg->d2r, _eg->rr); - envelopeGraph[op]->updateEnv(); - switch(op) { - case 0: - D1R1SpinBox->blockSignals(true); - D1R1SpinBox->setValue(val); - D1R1SpinBox->blockSignals(false); - break; - case 1: - D1R2SpinBox->blockSignals(true); - D1R2SpinBox->setValue(val); - D1R2SpinBox->blockSignals(false); - break; - case 2: - D1R3SpinBox->blockSignals(true); - D1R3SpinBox->setValue(val); - D1R3SpinBox->blockSignals(false); - break; - case 3: - D1R4SpinBox->blockSignals(true); - D1R4SpinBox->setValue(val); - D1R4SpinBox->blockSignals(false); - break; - default: printf("DeicsOnzeGui::updateD1R : Error switch\n"); - } -} -void DeicsOnzeGui::updateD2R(int op, int val) { - Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[op]); - envelopeGraph[op]->env2Points(_eg->ar, _eg->d1r, _eg->d1l, val, _eg->rr); - envelopeGraph[op]->updateEnv(); - switch(op) { - case 0: - D2R1SpinBox->blockSignals(true); - D2R1SpinBox->setValue(val); - D2R1SpinBox->blockSignals(false); - break; - case 1: - D2R2SpinBox->blockSignals(true); - D2R2SpinBox->setValue(val); - D2R2SpinBox->blockSignals(false); - break; - case 2: - D2R3SpinBox->blockSignals(true); - D2R3SpinBox->setValue(val); - D2R3SpinBox->blockSignals(false); - break; - case 3: - D2R4SpinBox->blockSignals(true); - D2R4SpinBox->setValue(val); - D2R4SpinBox->blockSignals(false); - break; - default: printf("DeicsOnzeGui::updateD2R : Error switch\n"); - } -} -void DeicsOnzeGui::updateRR(int op, int val) { - Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[op]); - envelopeGraph[op]->env2Points(_eg->ar, _eg->d1r, _eg->d1l, _eg->d2r, val); - envelopeGraph[op]->updateEnv(); - switch(op) { - case 0: - RR1SpinBox->blockSignals(true); - RR1SpinBox->setValue(val); - RR1SpinBox->blockSignals(false); - break; - case 1: - RR2SpinBox->blockSignals(true); - RR2SpinBox->setValue(val); - RR2SpinBox->blockSignals(false); - break; - case 2: - RR3SpinBox->blockSignals(true); - RR3SpinBox->setValue(val); - RR3SpinBox->blockSignals(false); - break; - case 3: - RR4SpinBox->blockSignals(true); - RR4SpinBox->setValue(val); - RR4SpinBox->blockSignals(false); - break; - default: printf("DeicsOnzeGui::updateRR : Error switch\n"); - } -} -void DeicsOnzeGui::updateD1L(int op, int val) { - Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[op]); - envelopeGraph[op]->env2Points(_eg->ar, _eg->d1r, val, _eg->d2r, _eg->rr); - envelopeGraph[op]->updateEnv(); - switch(op) { - case 0: - D1L1SpinBox->blockSignals(true); - D1L1SpinBox->setValue(val); - D1L1SpinBox->blockSignals(false); - break; - case 1: - D1L2SpinBox->blockSignals(true); - D1L2SpinBox->setValue(val); - D1L2SpinBox->blockSignals(false); - break; - case 2: - D1L3SpinBox->blockSignals(true); - D1L3SpinBox->setValue(val); - D1L3SpinBox->blockSignals(false); - break; - case 3: - D1L4SpinBox->blockSignals(true); - D1L4SpinBox->setValue(val); - D1L4SpinBox->blockSignals(false); - break; - default: printf("DeicsOnzeGui::updateD1L : Error switch\n"); - } -} -void DeicsOnzeGui::updateLS(int op, int val) { - switch(op) { - case 0: - LS1Slider->blockSignals(true); - LS1Slider->setValue(val); - LS1Slider->blockSignals(false); - LS1SpinBox->blockSignals(true); - LS1SpinBox->setValue(val); - LS1SpinBox->blockSignals(false); - break; - case 1: - LS2Slider->blockSignals(true); - LS2Slider->setValue(val); - LS2Slider->blockSignals(false); - LS2SpinBox->blockSignals(true); - LS2SpinBox->setValue(val); - LS2SpinBox->blockSignals(false); - break; - case 2: - LS3Slider->blockSignals(true); - LS3Slider->setValue(val); - LS3Slider->blockSignals(false); - LS3SpinBox->blockSignals(true); - LS3SpinBox->setValue(val); - LS3SpinBox->blockSignals(false); - break; - case 3: - LS4Slider->blockSignals(true); - LS4Slider->setValue(val); - LS4Slider->blockSignals(false); - LS4SpinBox->blockSignals(true); - LS4SpinBox->setValue(val); - LS4SpinBox->blockSignals(false); - break; - default: printf("DeicsOnzeGui::updateLS : Error switch\n"); - } -} -void DeicsOnzeGui::updateRS(int op, int val) { - switch(op) { - case 0: - RS1Slider->blockSignals(true); - RS1Slider->setValue(val); - RS1Slider->blockSignals(false); - RS1SpinBox->blockSignals(true); - RS1SpinBox->setValue(val); - RS1SpinBox->blockSignals(false); - break; - case 1: - RS2Slider->blockSignals(true); - RS2Slider->setValue(val); - RS2Slider->blockSignals(false); - RS2SpinBox->blockSignals(true); - RS2SpinBox->setValue(val); - RS2SpinBox->blockSignals(false); - break; - case 2: - RS3Slider->blockSignals(true); - RS3Slider->setValue(val); - RS3Slider->blockSignals(false); - RS3SpinBox->blockSignals(true); - RS3SpinBox->setValue(val); - RS3SpinBox->blockSignals(false); - break; - case 3: - RS4Slider->blockSignals(true); - RS4Slider->setValue(val); - RS4Slider->blockSignals(false); - RS4SpinBox->blockSignals(true); - RS4SpinBox->setValue(val); - RS4SpinBox->blockSignals(false); - break; - default: printf("DeicsOnzeGui::updateRS : Error switch\n"); - } -} -void DeicsOnzeGui::updateEBS(int op, int val) { - switch(op) { - case 0: - EBS1Slider->blockSignals(true); - EBS1Slider->setValue(val); - EBS1Slider->blockSignals(false); - EBS1SpinBox->blockSignals(true); - EBS1SpinBox->setValue(val); - EBS1SpinBox->blockSignals(false); - break; - case 1: - EBS2Slider->blockSignals(true); - EBS2Slider->setValue(val); - EBS2Slider->blockSignals(false); - EBS2SpinBox->blockSignals(true); - EBS2SpinBox->setValue(val); - EBS2SpinBox->blockSignals(false); - break; - case 2: - EBS3Slider->blockSignals(true); - EBS3Slider->setValue(val); - EBS3Slider->blockSignals(false); - EBS3SpinBox->blockSignals(true); - EBS3SpinBox->setValue(val); - EBS3SpinBox->blockSignals(false); - break; - case 3: - EBS4Slider->blockSignals(true); - EBS4Slider->setValue(val); - EBS4Slider->blockSignals(false); - EBS4SpinBox->blockSignals(true); - EBS4SpinBox->setValue(val); - EBS4SpinBox->blockSignals(false); - break; - default: printf("DeicsOnzeGui::updateEBS : Error switch\n"); - } -} -void DeicsOnzeGui::updateAME(int op, bool val) { - switch(op) { - case 0: - AME1CheckBox->blockSignals(true); - AME1CheckBox->setChecked(val); - AME1CheckBox->blockSignals(false); - break; - case 1: - AME2CheckBox->blockSignals(true); - AME2CheckBox->setChecked(val); - AME2CheckBox->blockSignals(false); - break; - case 2: - AME3CheckBox->blockSignals(true); - AME3CheckBox->setChecked(val); - AME3CheckBox->blockSignals(false); - break; - case 3: - AME4CheckBox->blockSignals(true); - AME4CheckBox->setChecked(val); - AME4CheckBox->blockSignals(false); - break; - default: printf("DeicsOnzeGui::updateAME : Error switch\n"); - } -} -void DeicsOnzeGui::updateKVS(int op, int val) { - switch(op) { - case 0: - KVS1Slider->blockSignals(true); - KVS1Slider->setValue(val); - KVS1Slider->blockSignals(false); - KVS1SpinBox->blockSignals(true); - KVS1SpinBox->setValue(val); - KVS1SpinBox->blockSignals(false); - break; - case 1: - KVS2Slider->blockSignals(true); - KVS2Slider->setValue(val); - KVS2Slider->blockSignals(false); - KVS2SpinBox->blockSignals(true); - KVS2SpinBox->setValue(val); - KVS2SpinBox->blockSignals(false); - break; - case 2: - KVS3Slider->blockSignals(true); - KVS3Slider->setValue(val); - KVS3Slider->blockSignals(false); - KVS3SpinBox->blockSignals(true); - KVS3SpinBox->setValue(val); - KVS3SpinBox->blockSignals(false); - break; - case 3: - KVS4Slider->blockSignals(true); - KVS4Slider->setValue(val); - KVS4Slider->blockSignals(false); - KVS4SpinBox->blockSignals(true); - KVS4SpinBox->setValue(val); - KVS4SpinBox->blockSignals(false); - break; - default: printf("DeicsOnzeGui::updateKVS : Error switch\n"); - } -} -void DeicsOnzeGui::updateOUT(int op, int val) { - switch(op) { - case 0: - OUT1Slider->blockSignals(true); - OUT1Slider->setValue(val); - OUT1Slider->blockSignals(false); - OUT1SpinBox->blockSignals(true); - OUT1SpinBox->setValue(val); - OUT1SpinBox->blockSignals(false); - break; - case 1: - OUT2Slider->blockSignals(true); - OUT2Slider->setValue(val); - OUT2Slider->blockSignals(false); - OUT2SpinBox->blockSignals(true); - OUT2SpinBox->setValue(val); - OUT2SpinBox->blockSignals(false); - break; - case 2: - OUT3Slider->blockSignals(true); - OUT3Slider->setValue(val); - OUT3Slider->blockSignals(false); - OUT3SpinBox->blockSignals(true); - OUT3SpinBox->setValue(val); - OUT3SpinBox->blockSignals(false); - break; - case 3: - OUT4Slider->blockSignals(true); - OUT4Slider->setValue(val); - OUT4Slider->blockSignals(false); - OUT4SpinBox->blockSignals(true); - OUT4SpinBox->setValue(val); - OUT4SpinBox->blockSignals(false); - break; - default: printf("DeicsOnzeGui::updateOUT : Error switch\n"); - } -} -void DeicsOnzeGui::updateRATIO(int op, int val) { - switch(op) { - case 0: - CoarseRatio1SpinBox->blockSignals(true); - CoarseRatio1SpinBox->setValue(val/100); - CoarseRatio1SpinBox->blockSignals(false); - FineRatio1SpinBox->blockSignals(true); - FineRatio1SpinBox->setValue(val%100); - FineRatio1SpinBox->blockSignals(false); - break; - case 1: - CoarseRatio2SpinBox->blockSignals(true); - CoarseRatio2SpinBox->setValue(val/100); - CoarseRatio2SpinBox->blockSignals(false); - FineRatio2SpinBox->blockSignals(true); - FineRatio2SpinBox->setValue(val%100); - FineRatio2SpinBox->blockSignals(false); - break; - case 2: - CoarseRatio3SpinBox->blockSignals(true); - CoarseRatio3SpinBox->setValue(val/100); - CoarseRatio3SpinBox->blockSignals(false); - FineRatio3SpinBox->blockSignals(true); - FineRatio3SpinBox->setValue(val%100); - FineRatio3SpinBox->blockSignals(false); - break; - case 3: - CoarseRatio4SpinBox->blockSignals(true); - CoarseRatio4SpinBox->setValue(val/100); - CoarseRatio4SpinBox->blockSignals(false); - FineRatio4SpinBox->blockSignals(true); - FineRatio4SpinBox->setValue(val%100); - FineRatio4SpinBox->blockSignals(false); - break; - default: printf("DeicsOnzeGui::updateRATIO : Error switch\n"); - } -} -void DeicsOnzeGui::updateDET(int op, int val) { - switch(op) { - case 0: - DET1Slider->blockSignals(true); - DET1Slider->setValue(val); - DET1Slider->blockSignals(false); - DET1SpinBox->blockSignals(true); - DET1SpinBox->setValue(val); - DET1SpinBox->blockSignals(false); - break; - case 1: - DET2Slider->blockSignals(true); - DET2Slider->setValue(val); - DET2Slider->blockSignals(false); - DET2SpinBox->blockSignals(true); - DET2SpinBox->setValue(val); - DET2SpinBox->blockSignals(false); - break; - case 2: - DET3Slider->blockSignals(true); - DET3Slider->setValue(val); - DET3Slider->blockSignals(false); - DET3SpinBox->blockSignals(true); - DET3SpinBox->setValue(val); - DET3SpinBox->blockSignals(false); - break; - case 3: - DET4Slider->blockSignals(true); - DET4Slider->setValue(val); - DET4Slider->blockSignals(false); - DET4SpinBox->blockSignals(true); - DET4SpinBox->setValue(val); - DET4SpinBox->blockSignals(false); - break; - default: printf("DeicsOnzeGui::updateDET : Error switch\n"); - } -} -void DeicsOnzeGui::updateALG(int val) { - algorithmComboBox->blockSignals(true); - algorithmComboBox->setCurrentIndex(val); - algorithmComboBox->blockSignals(false); -} -void DeicsOnzeGui::updateFEEDBACK(int val) { - feedbackSlider->blockSignals(true); - feedbackSlider->setValue(val); - feedbackSlider->blockSignals(false); - feedbackSpinBox->blockSignals(true); - feedbackSpinBox->setValue(val); - feedbackSpinBox->blockSignals(false); -} -void DeicsOnzeGui::updateSPEED(int val) { - LFOSpeedSlider->blockSignals(true); - LFOSpeedSlider->setValue(val); - LFOSpeedSlider->blockSignals(false); - LFOSpeedSpinBox->blockSignals(true); - LFOSpeedSpinBox->setValue(val); - LFOSpeedSpinBox->blockSignals(false); -} -void DeicsOnzeGui::updateDELAY(int val) { - LFODelaySlider->blockSignals(true); - LFODelaySlider->setValue(val); - LFODelaySlider->blockSignals(false); - LFODelaySpinBox->blockSignals(true); - LFODelaySpinBox->setValue(val); - LFODelaySpinBox->blockSignals(false); -} -void DeicsOnzeGui::updatePMODDEPTH(int val) { - PModDepthSlider->blockSignals(true); - PModDepthSlider->setValue(val); - PModDepthSlider->blockSignals(false); - PModDepthSpinBox->blockSignals(true); - PModDepthSpinBox->setValue(val); - PModDepthSpinBox->blockSignals(false); -} -void DeicsOnzeGui::updateAMODDEPTH(int val) { - AModDepthSlider->blockSignals(true); - AModDepthSlider->setValue(val); - AModDepthSlider->blockSignals(false); - AModDepthSpinBox->blockSignals(true); - AModDepthSpinBox->setValue(val); - AModDepthSpinBox->blockSignals(false); -} -void DeicsOnzeGui::updateSYNC(bool val) { - LFOSyncCheckBox->blockSignals(true); - LFOSyncCheckBox->setChecked(val); - LFOSyncCheckBox->blockSignals(false); -} -void DeicsOnzeGui::updateWAVE(int val) { - LFOWaveComboBox->blockSignals(true); - LFOWaveComboBox->setCurrentIndex(val); - LFOWaveComboBox->blockSignals(false); -} -void DeicsOnzeGui::updatePMODSENS(int val) { - PModSensSlider->blockSignals(true); - PModSensSlider->setValue(val); - PModSensSlider->blockSignals(false); - PModSensSpinBox->blockSignals(true); - PModSensSpinBox->setValue(val); - PModSensSpinBox->blockSignals(false); -} -void DeicsOnzeGui::updateAMS(int val) { - AModSensSlider->blockSignals(true); - AModSensSlider->setValue(val); - AModSensSlider->blockSignals(false); - AModSensSpinBox->blockSignals(true); - AModSensSpinBox->setValue(val); - AModSensSpinBox->blockSignals(false); -} -void DeicsOnzeGui::updateTRANSPOSE(int val) { - transposeSlider->blockSignals(true); - transposeSlider->setValue(val); - transposeSlider->blockSignals(false); - transposeSpinBox->blockSignals(true); - transposeSpinBox->setValue(val); - transposeSpinBox->blockSignals(false); -} -void DeicsOnzeGui::updatePOLYMODE(int val) { - polyMonoComboBox->blockSignals(true); - polyMonoComboBox->setCurrentIndex(val); - polyMonoComboBox->blockSignals(false); -} -void DeicsOnzeGui::updatePBENDRANGE(int val) { - pitchBendRangeSlider->blockSignals(true); - pitchBendRangeSlider->setValue(val); - pitchBendRangeSlider->blockSignals(false); - pitchBendRangeSpinBox->blockSignals(true); - pitchBendRangeSpinBox->setValue(val); - pitchBendRangeSpinBox->blockSignals(false); -} -void DeicsOnzeGui::updatePORTAMODE(int val) { - PortFingerFullComboBox->blockSignals(true); - PortFingerFullComboBox->setCurrentIndex(val); - PortFingerFullComboBox->blockSignals(false); -} -void DeicsOnzeGui::updatePORTATIME(int val) { - PortamentoTimeSlider->blockSignals(true); - PortamentoTimeSlider->setValue(val); - PortamentoTimeSlider->blockSignals(false); - PortamentoTimeSpinBox->blockSignals(true); - PortamentoTimeSpinBox->setValue(val); - PortamentoTimeSpinBox->blockSignals(false); -} -void DeicsOnzeGui::updateFIX(int op, bool val) { - switch(op) { - case 0: - Fix1CheckBox->blockSignals(true); - Fix1CheckBox->setChecked(val); - Fix1CheckBox->blockSignals(false); - FineRatio1SpinBox->blockSignals(true); - FineRatio1SpinBox->setEnabled(!val); - FineRatio1SpinBox->blockSignals(false); - CoarseRatio1SpinBox->blockSignals(true); - CoarseRatio1SpinBox->setEnabled(!val); - CoarseRatio1SpinBox->blockSignals(false); - break; - case 1: - Fix2CheckBox->blockSignals(true); - Fix2CheckBox->setChecked(val); - Fix2CheckBox->blockSignals(false); - FineRatio2SpinBox->blockSignals(true); - FineRatio2SpinBox->setEnabled(!val); - FineRatio2SpinBox->blockSignals(false); - CoarseRatio2SpinBox->blockSignals(true); - CoarseRatio2SpinBox->setEnabled(!val); - CoarseRatio2SpinBox->blockSignals(false); - break; - case 2: - Fix3CheckBox->blockSignals(true); - Fix3CheckBox->setChecked(val); - Fix3CheckBox->blockSignals(false); - FineRatio3SpinBox->blockSignals(true); - FineRatio3SpinBox->setEnabled(!val); - FineRatio3SpinBox->blockSignals(false); - CoarseRatio3SpinBox->blockSignals(true); - CoarseRatio3SpinBox->setEnabled(!val); - CoarseRatio3SpinBox->blockSignals(false); - break; - case 3: - Fix4CheckBox->blockSignals(true); - Fix4CheckBox->setChecked(val); - Fix4CheckBox->blockSignals(false); - FineRatio4SpinBox->blockSignals(true); - FineRatio4SpinBox->setEnabled(!val); - FineRatio4SpinBox->blockSignals(false); - CoarseRatio4SpinBox->blockSignals(true); - CoarseRatio4SpinBox->setEnabled(!val); - CoarseRatio4SpinBox->blockSignals(false); - break; - default: printf("DeicsOnzeGui::updateFIX : error switch\n"); - } -} -void DeicsOnzeGui::updateFIXRANGE(int op, int val) { - switch(op) { - case 0: - Freq1SpinBox->blockSignals(true); - Freq1SpinBox->setValue(val/100); - //val/100 because it is still a coarse display - Freq1SpinBox->blockSignals(false); - break; - case 1: - Freq2SpinBox->blockSignals(true); - Freq2SpinBox->setValue(val/100); - Freq2SpinBox->blockSignals(false); - break; - case 2: - Freq3SpinBox->blockSignals(true); - Freq3SpinBox->setValue(val/100); - Freq3SpinBox->blockSignals(false); - break; - case 3: - Freq4SpinBox->blockSignals(true); - Freq4SpinBox->setValue(val/100); - Freq4SpinBox->blockSignals(false); - break; - default: printf("DeicsOnzeGui::updateFIXRANGE : error switch\n"); - } -} -void DeicsOnzeGui::updateOSW(int op, int val) { - switch(op) { - case 0: - WaveForm1ComboBox->blockSignals(true); - WaveForm1ComboBox->setCurrentIndex(val); - WaveForm1ComboBox->blockSignals(false); - break; - case 1: - WaveForm2ComboBox->blockSignals(true); - WaveForm2ComboBox->setCurrentIndex(val); - WaveForm2ComboBox->blockSignals(false); - break; - case 2: - WaveForm3ComboBox->blockSignals(true); - WaveForm3ComboBox->setCurrentIndex(val); - WaveForm3ComboBox->blockSignals(false); - break; - case 3: - WaveForm4ComboBox->blockSignals(true); - WaveForm4ComboBox->setCurrentIndex(val); - WaveForm4ComboBox->blockSignals(false); - break; - default: printf("DeicsOnzeGui::updateOSW : Error switch\n"); - } -} -void DeicsOnzeGui::updateSHFT(int op, int val) { - switch(op) { - case 0: - EGS1ComboBox->blockSignals(true); - EGS1ComboBox->setCurrentIndex(val); - EGS1ComboBox->blockSignals(false); - break; - case 1: - EGS2ComboBox->blockSignals(true); - EGS2ComboBox->setCurrentIndex(val); - EGS2ComboBox->blockSignals(false); - break; - case 2: - EGS3ComboBox->blockSignals(true); - EGS3ComboBox->setCurrentIndex(val); - EGS3ComboBox->blockSignals(false); - break; - case 3: - EGS4ComboBox->blockSignals(true); - EGS4ComboBox->setCurrentIndex(val); - EGS4ComboBox->blockSignals(false); - break; - default: printf("DeicsOnzeGui::updateSHFT : Error switch\n"); - } -} -void DeicsOnzeGui::updateChannelDetune(int val) { - updateChannelDetuneKnob(val); - //updateChannelDetuneSlider(val); -} -void DeicsOnzeGui::updateChannelDetuneKnob(int val) { - detuneKnob->blockSignals(true); - detuneKnob->setValue((((double)val)/((double)MAXCHANNELDETUNE))/2.0+0.5); - detuneKnob->blockSignals(false); -} -//void DeicsOnzeGui::updateChannelDetuneSlider(int val) { - //channelDetuneSlider->blockSignals(true); - //channelDetuneSlider->setValue(val); - //channelDetuneSlider->blockSignals(false); - //channelDetuneSpinBox->blockSignals(true); - //channelDetuneSpinBox->setValue(val); - //channelDetuneSpinBox->blockSignals(false); -//} -void DeicsOnzeGui::updateChannelVolume(int val) { - channelVolumeKnob->blockSignals(true); - channelVolumeKnob->setValue(((double)val)/(double)MAXCHANNELVOLUME); - channelVolumeKnob->blockSignals(false); -} -void DeicsOnzeGui::updateCategoryName(QString cn, bool enable) { - categoryLineEdit->setEnabled(enable); - categoryLineEdit->blockSignals(true); - categoryLineEdit->setText(cn); - categoryLineEdit->blockSignals(false); -} -void DeicsOnzeGui::updateSubcategoryName(QString sn, bool enable) { - subcategoryLineEdit->setEnabled(enable); - subcategoryLineEdit->blockSignals(true); - subcategoryLineEdit->setText(sn); - subcategoryLineEdit->blockSignals(false); -} -void DeicsOnzeGui::updatePresetName(QString pn) { - //presetNameLineEdit->blockSignals(true); - //presetNameLineEdit->setText(pn); - //presetNameLineEdit->blockSignals(false); - //presetNameLabel->setText(pn); - presetLineEdit->blockSignals(true); - presetLineEdit->setText(pn); - presetLineEdit->blockSignals(false); -} -void DeicsOnzeGui::updatePresetName(QString pn, bool enable) { - presetLineEdit->setEnabled(enable); - //presetNameLineEdit->setEnabled(enable); - updatePresetName(pn); -} -void DeicsOnzeGui::updateHBank(int n, bool enable) { - hbankSpinBox->setEnabled(enable); - hbankSpinBox->blockSignals(true); - hbankSpinBox->setValue(n+1); - hbankSpinBox->blockSignals(false); -} -void DeicsOnzeGui::updateLBank(int n, bool enable) { - lbankSpinBox->setEnabled(enable); - lbankSpinBox->blockSignals(true); - lbankSpinBox->setValue(n+1); - lbankSpinBox->blockSignals(false); -} -void DeicsOnzeGui::updateProg(int n, bool enable) { - progSpinBox->setEnabled(enable); - progSpinBox->blockSignals(true); - progSpinBox->setValue(n+1); - progSpinBox->blockSignals(false); -} -void DeicsOnzeGui::updateInitSetCheckBox(bool b) { - initSetCheckBox->blockSignals(true); - initSetCheckBox->setChecked(b); - initSetCheckBox->blockSignals(false); - initSetPathLineEdit->setEnabled(b); - initSetBrowsePushButton-> setEnabled(b); -} -void DeicsOnzeGui::updateInitSetPath(QString s) { - initSetPathLineEdit->blockSignals(true); - initSetPathLineEdit->setText(s); - initSetPathLineEdit->blockSignals(false); -} -void DeicsOnzeGui::updateBackgroundPixCheckBox(bool b) { - imageCheckBox->blockSignals(true); - imageCheckBox->setChecked(b); - imageCheckBox->blockSignals(false); - imagePathLineEdit->setEnabled(b); - imageBrowsePushButton-> setEnabled(b); -} -void DeicsOnzeGui::updateBackgroundPixPath(QString s) { - imagePathLineEdit->blockSignals(true); - imagePathLineEdit->setText(s); - imagePathLineEdit->blockSignals(false); -} -void DeicsOnzeGui::applyBackgroundPix() { - QPalette p = this->palette(); - QPixmap pixmap = QPixmap(imagePathLineEdit->text()); - p.setBrush((this)->backgroundRole(), QBrush(pixmap)); - (this)->setPalette(p); -} -void DeicsOnzeGui::updateChannelPan(int val) { - channelPanKnob->blockSignals(true); - channelPanKnob->setValue((((double)val/(double)MAXCHANNELPAN)+1.0)/2.0); - channelPanKnob->blockSignals(false); - //channelPanSpinBox->blockSignals(true); - //channelPanSpinBox->setValue(val); - //channelPanSpinBox->blockSignals(false); -} -void DeicsOnzeGui::updateBrightness(int val) { - brightnessKnob->blockSignals(true); - brightnessKnob->setValue((double)val/((double)MAXFINEBRIGHTNESS)); - brightnessKnob->blockSignals(false); -} -void DeicsOnzeGui::updateModulation(int val) { - modulationKnob->blockSignals(true); - modulationKnob->setValue((double)val/((double)MAXMODULATION)); - modulationKnob->blockSignals(false); -} -void DeicsOnzeGui::updateAttack(int val) { - attackKnob->blockSignals(true); - attackKnob->setValue((double)val/((double)MAXATTACK)); - attackKnob->blockSignals(false); -} -void DeicsOnzeGui::updateRelease(int val) { - releaseKnob->blockSignals(true); - releaseKnob->setValue((double)val/((double)MAXRELEASE)); - releaseKnob->blockSignals(false); -} -void DeicsOnzeGui::updateQuickEdit() { - updateChannelVolume(_deicsOnze->getChannelVol(_currentChannel)); - updateChannelPan(_deicsOnze->getChannelPan(_currentChannel)); - updateBrightness(_deicsOnze->getChannelBrightness(_currentChannel)); - updateModulation(_deicsOnze->getChannelModulation(_currentChannel)); - updateChannelDetune(_deicsOnze->getChannelDetune(_currentChannel)); - updateAttack(_deicsOnze->getChannelAttack(_currentChannel)); - updateRelease(_deicsOnze->getChannelRelease(_currentChannel)); - updateChannelReverb(_deicsOnze->getChannelReverb(_currentChannel)); - updateChannelChorus(_deicsOnze->getChannelChorus(_currentChannel)); - updateChannelDelay(_deicsOnze->getChannelDelay(_currentChannel)); -} -//-------------------------------------------------------------- -// updatePreset -//-------------------------------------------------------------- -void DeicsOnzeGui::updatePreset(Preset* p) { - //TODO : why updateMasterVolume - //updateMasterVolume(_deicsOnze->getMasterVol()); //to change - updatePresetName(p->name.c_str()); - updateFEEDBACK(p->feedback); - updateWAVE((int)p->lfo.wave); - updateSPEED(p->lfo.speed); - updateDELAY(p->lfo.delay); - updatePMODDEPTH(p->lfo.pModDepth); - updatePMODSENS(p->sensitivity.pitch); - updateAMODDEPTH(p->lfo.aModDepth); - updateAMS(p->sensitivity.amplitude); - updateTRANSPOSE(p->function.transpose); - updateALG((int)p->algorithm); - updatePBENDRANGE(p->function.pBendRange); - //pitch envelope - PitchEg* pe=&(p->pitchEg); - pitchEnvelopeGraph - ->env2Points(pe->pl1, pe->pl2, pe->pl3, pe->pr1, pe->pr2, pe->pr3); - pitchEnvelopeGraph->updateEnv(); - updatePL1(pe->pl1); - updatePL2(pe->pl2); - updatePL3(pe->pl3); - updatePR1(pe->pr1); - updatePR2(pe->pr2); - updatePR3(pe->pr3); - //function - updateFcVolume(p->function.fcVolume); - updateFcPitch(p->function.fcPitch); - updateFcAmplitude(p->function.fcAmplitude); - updateMwPitch(p->function.mwPitch); - updateMwAmplitude(p->function.mwAmplitude); - updateBcPitch(p->function.bcPitch); - updateBcAmplitude(p->function.bcAmplitude); - updateBcPitchBias(p->function.bcPitchBias); - updateBcEgBias(p->function.bcEgBias); - updateAtPitch(p->function.atPitch); - updateAtAmplitude(p->function.atAmplitude); - updateAtPitchBias(p->function.atPitchBias); - updateAtEgBias(p->function.atEgBias); - //updateReverbRate(p->function.reverbRate); - updatePOLYMODE((int)p->function.mode); - updatePORTAMODE((int)p->function.portamento); - updatePORTATIME((int)p->function.portamentoTime); - for(int k=0; keg[k]); - envelopeGraph[k] - ->env2Points(_eg->ar, _eg->d1r, _eg->d1l, _eg->d2r, _eg->rr); - envelopeGraph[k]->updateEnv(); - updateAR(k, _eg->ar); - updateD1R(k, _eg->d1r); - updateD1L(k, _eg->d1l); - updateD2R(k, _eg->d2r); - updateRR(k, _eg->rr); - //scaling - updateLS(k, p->scaling.level[k]); - updateRS(k, p->scaling.rate[k]); - //Volume - updateOUT(k, p->outLevel[k]); - //Ratio and Frequency - updateRATIO(k, (int)(100*p->frequency[k].ratio)); - updateFIXRANGE(k, (int)(100*p->frequency[k].freq)); - updateFIX(k, p->frequency[k].isFix); - //Sensitivity - updateAME(k, p->sensitivity.ampOn[k]); - updateEBS(k, p->sensitivity.egBias[k]); - updateKVS(k, p->sensitivity.keyVelocity[k]); - //detune - updateDET(k, p->detune[k]); - //Waveform - updateOSW(k, (int)p->oscWave[0]); - } -} -/*void DeicsOnzeGui::updateCurrentChannel() { - updateBrightness(_deicsOnze->_global.channel[_currentChannel].brightness); - updateModulation(_deicsOnze->_global.channel[_currentChannel].modulation); - updateChannelDetune(_deicsOnze->_global.channel[_currentChannel].detune); - updateAttack(_deicsOnze->_global.channel[_currentChannel].attack); - updateRelease(_deicsOnze->_global.channel[_currentChannel].release); - }*/ -void DeicsOnzeGui::updatePreset() { - updatePreset(_deicsOnze->_preset[_currentChannel]); -} - -void DeicsOnzeGui::updateSelectPreset(int hbank, int lbank, int prog) { - //QTreeWidgetItem* cat = categoryListView->currentItem(); - //QTreeWidgetItem* sub = subcategoryListView->currentItem(); - QTreeWidgetItem* pre = presetListView->currentItem(); - //select category, subcategory, preset - //category - QList qlcat = - categoryListView->findItems(num3Digits(hbank+1), Qt::MatchExactly); - QTreeWidgetItem* qcat = qlcat.empty()? NULL:qlcat.at(0); - //if the category is different than the last one then select the new one - //if(!cat || !qcat || qcat!= cat) { - if(qcat) { - categoryListView->setItemSelected(qcat, true); - categoryListView->setCurrentItem(qcat); - categoryListView->scrollToItem(qcat); - setEnabledPreset(true); - } - else { - updateCategoryName(QString("NONE"), false); - updateHBank(hbank, false); - categoryListView->clearSelection(); - subcategoryListView->clear(); - setEnabledPreset(false); - } - //} - //subcategory - //if(cat) { - QList qlsub = - subcategoryListView->findItems(num3Digits(lbank+1), Qt::MatchExactly); - QTreeWidgetItem* qsub = qlsub.empty()? NULL:qlsub.at(0); - // if(!sub || qsub!=sub) { - if(qsub) { - subcategoryListView->setItemSelected(qsub, true); - subcategoryListView->setCurrentItem(qsub); - subcategoryListView->scrollToItem(qsub); - setEnabledPreset(true); - } - else { - updateSubcategoryName(QString("NONE"), false); - updateLBank(lbank, false); - subcategoryListView->clearSelection(); - presetListView->clear(); - setEnabledPreset(false); - } - // } - //} - //else { - // updateSubcategoryName(QString("NONE"), false); - // updateLBank(lbank, false); - // subcategoryListView->clearSelection(); - // presetListView->clear(); - // setEnabledPreset(false); - //} - //preset - //if(sub) { - QList qlpre = - presetListView->findItems(num3Digits(prog+1), Qt::MatchExactly); - QTreeWidgetItem* qpre = qlpre.empty()? NULL:qlpre.at(0); - if(qpre) { - presetListView->blockSignals(true); - presetListView->setItemSelected(qpre, true); - presetListView->setCurrentItem(qpre); - presetListView->blockSignals(false); - presetListView->scrollToItem(qpre); - updatePresetName(qpre->text(1), true); - updateProg(prog, true); - pre=(QTreePreset*) qpre; - setEnabledPreset(true); - } - else { - updatePresetName(QString("INITVOICE"), false); - updateProg(prog, false); - presetListView->clearSelection(); - setEnabledPreset(false); - } - //} - //else { - // updatePresetName(QString("INITVOICE"), false); - // updateProg(prog, false); - // presetListView->clearSelection(); - // setEnabledPreset(false); - //} -} - diff --git a/muse/synti/deicsonze/deicsonzegui.h b/muse/synti/deicsonze/deicsonzegui.h deleted file mode 100644 index 236b4a9f..00000000 --- a/muse/synti/deicsonze/deicsonzegui.h +++ /dev/null @@ -1,562 +0,0 @@ -//=========================================================================== -// -// DeicsOnze an emulator of the YAMAHA DX11 synthesizer -// -// Version 0.5.5 -// -// deicsonzegui.h -// -// -// Copyright (c) 2004-2006 Nil Geisweiller -// -// -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -// 02111-1307, USA or point your web browser to http://www.gnu.org. -//=========================================================================== - -#ifndef __DEICSONZEGUI_H -#define __DEICSONZEGUI_H - -#include "deicsonze.h" - -#include "deicsonzepreset.h" -#include "ui_deicsonzegui.h" -#include "libsynti/gui.h" -#include "awl/floatentry.h" -#include "awl/slider.h" -#include "awl/checkbox.h" - -using Awl::FloatEntry; -using Awl::Slider; -using Awl::CheckBox; - -//Envelope Gui constants -#define XOFFSET 2 -#define YOFFSET 2 -#define PENWIDTH 2 -#define DOTWIDTH 3 -#define DRAGWIDTH 6 //size of the mousetracking threshold -//pitch envelope constants -#define WALLWIDTH 6 -#define PR1WIDTH (width()/3-9) -#define PR2WIDTH PR1WIDTH -#define PR3WIDTH PR1WIDTH -#define PL1HEIGHT (height()-4) -#define PL2HEIGHT PL1HEIGHT -#define PL3HEIGHT PL1HEIGHT -#define MAXPWIDTH PR1WIDTH+WALLWIDTH+PR2WIDTH+WALLWIDTH+PR3WIDTH+WALLWIDTH+PR1WIDTH -#define MAXPHEIGHT PL1HEIGHT -#define STEPVALUE 10 -//amplitude envelope constants -#define ARWIDTH (width()/4-1) -#define D1RWIDTH ARWIDTH -#define D1LHEIGHT (height()-2) -#define D2RWIDTH ARWIDTH -#define RRWIDTH ARWIDTH -#define MAXWIDTH ARWIDTH+D1RWIDTH+D1RWIDTH+RRWIDTH -#define MAXHEIGHT D1LHEIGHT - -//COLOR -#define TCOLOR QColor(0, 0, 0) //text color -#define BCOLOR QColor(210, 180, 90) //background color -#define ETCOLOR QColor(0, 150, 0) //edit text color -#define EBCOLOR QColor(255, 255, 30) //edit background color - -class DeicsOnze; -class QFramePitchEnvelope; -class QFrameEnvelope; - -class QTreeCategory:public QTreeWidgetItem { - public: - Category* _category; - QTreeCategory(QTreeWidget* p, QString shbank, QString l, Category* c) - :QTreeWidgetItem(p) { - setText(0, shbank); - setText(1, l); - _category=c; - }; -}; - -class QTreeSubcategory:public QTreeWidgetItem { - public: - Subcategory* _subcategory; - QTreeSubcategory(QTreeWidget* p, QString slbank, - QString l, Subcategory* s) - :QTreeWidgetItem(p) { - setText(0, slbank); - setText(1, l); - _subcategory=s; - }; -}; - -class QTreePreset:public QTreeWidgetItem { - public: - Preset* _preset; - QTreePreset(QTreeWidget* pa, QString sprog, QString l, Preset* p) - :QTreeWidgetItem(pa) { - setText(0, sprog); - setText(1, l); - _preset=p; - }; -}; - -//--------------------------------------------------------- -// DeicsOnzeGui -//--------------------------------------------------------- -class DeicsOnzeGui : public QDialog, public Ui::DeicsOnzeGuiBase, public MessGui { - bool _enabledPreset; - - QFramePitchEnvelope* pitchEnvelopeGraph; - QFrameEnvelope* envelopeGraph[NBROP]; - - QWidget* _chorusSuperWidget; - QWidget* _reverbSuperWidget; - std::vector _chorusSliderVector; - std::vector _chorusFloatEntryVector; - std::vector _chorusCheckBoxVector; - std::vector _reverbSliderVector; - std::vector _reverbFloatEntryVector; - std::vector _reverbCheckBoxVector; - - Q_OBJECT - QString lastDir; - private slots: - void readMessage(int); - void setEnabledChannel(bool); - void setChangeChannel(int); - void setPanic(); - void setResCtrl(); - void setNbrVoices(int); - void setSaveOnlyUsed(bool); - void setSaveOnlyUsedComp(bool); - void setSaveConfig(bool); -// void setMidiInCh(int); //to change - void setQuality(const QString&); - void setFilter(bool); - void setFontSize(int); - void saveConfiguration(); - void saveDefaultConfiguration(); - void loadConfiguration(); - void loadConfiguration(QString s); - //load init set - void setIsInitSet(bool); - void setInitSetPath(const QString&); - void setBrowseInitSetPath(); - //load init set - void setIsBackgroundPix(bool); - void setBackgroundPixPath(const QString&); - void setBrowseBackgroundPixPath(); - //FX - void setChorusActiv(bool a); - void setChannelChorus(int c); - void setChorusReturn(int al); - void setSelectChorusPlugin(); - void setReverbCheckBox(double v, int i); - void setChorusCheckBox(double v, int i); - void setReverbActiv(bool a); - void setChannelReverb(int r); - void setReverbReturn(int val); - void setSelectReverbPlugin(); - void setReverbFloatEntry(double v, int i); - void setReverbSlider(double v, int i); - void setChorusFloatEntry(double v, int i); - void setChorusSlider(double v, int i); - //quick edit - void setChannelVolKnob(double val); - void setChannelPan(double val); - void setBrightnessKnob(double val); - void setModulationKnob(double val); - void setDetuneKnob(double val); - void setAttackKnob(double val); - void setReleaseKnob(double val); - //Color - void setRedColor(int); - void setGreenColor(int); - void setBlueColor(int); - void setRGBSliders(QListWidgetItem*); - void setTextColor(const QColor &); - void setBackgroundColor(const QColor &); - void setEditTextColor(const QColor &); - void setEditBackgroundColor(const QColor &); - //New Delete Load Save - void deleteSetDialog(); - void loadSetDialog(); - void saveSetDialog(); - void deleteCategoryDialog(); - void newCategoryDialog(); - void loadCategoryDialog(); - void saveCategoryDialog(); - void deleteSubcategoryDialog(); - void newSubcategoryDialog(); - void loadSubcategoryDialog(); - void saveSubcategoryDialog(); - void newPresetDialog(); - void loadPresetDialog(); - void deletePresetDialog(); - void savePresetDialog(); - //popupMenu - void categoryPopupMenu(const QPoint&); - void subcategoryPopupMenu(const QPoint&); - void presetPopupMenu(const QPoint&); - //Preset and bank - void setPresetName(const QString&); - void setSubcategoryName(const QString&); - void setCategoryName(const QString&); - void setHBank(int); - void setLBank(int); - void setProg(int); - //Global - void setMasterVolKnob(double); - void setMasterVol(int); - void setFeedback(int); - void setLfoWave(int); - void setLfoSpeed(int); - void setLfoDelay(int); - void setLfoPModDepth(int); - void setLfoPitchSens(int); - void setLfoAModDepth(int); - void setLfoAmpSens(int); - void setTranspose(int); - void setChannelDetune(int); - void setAlgorithm(int); - void setPitchBendRange(int); - //Pitch Envelope - void setPL1(int); - void setPL2(int); - void setPL3(int); - void setPR1(int); - void setPR2(int); - void setPR3(int); - //Function - void setFcVolume(int); - void setFcPitch(int); - void setFcAmplitude(int); - void setMwPitch(int); - void setMwAmplitude(int); - void setBcPitch(int); - void setBcAmplitude(int); - void setBcPitchBias(int); - void setBcEgBias(int); - void setAtPitch(int); - void setAtAmplitude(int); - void setAtPitchBias(int); - void setAtEgBias(int); - void setReverbRate(int); - void setPolyMode(int); - void setPortFingerFull(int); - void setPortaTime(int); - //envelope - void setAR1(int val); - void setD1R1(int val); - void setD1L1(int val); - void setD2R1(int val); - void setRR1(int val); - void setAR2(int val); - void setD1R2(int val); - void setD1L2(int val); - void setD2R2(int val); - void setRR2(int val); - void setAR3(int val); - void setD1R3(int val); - void setD1L3(int val); - void setD2R3(int val); - void setRR3(int val); - void setAR4(int val); - void setD1R4(int val); - void setD1L4(int val); - void setD2R4(int val); - void setRR4(int val); - //scaling - void setLS1(int val); - void setRS1(int val); - void setLS2(int val); - void setRS2(int val); - void setLS3(int val); - void setRS3(int val); - void setLS4(int val); - void setRS4(int val); - //vol - void setVol1(int val); - void setVol2(int val); - void setVol3(int val); - void setVol4(int val); - //Ratio and Frequency - void setCoarseRatio1(int val); - void setFineRatio1(int val); - void setFreq1(int val); - void setFix1(bool f); - void setCoarseRatio2(int val); - void setFineRatio2(int val); - void setFreq2(int val); - void setFix2(bool f); - void setCoarseRatio3(int val); - void setFineRatio3(int val); - void setFreq3(int val); - void setFix3(bool f); - void setCoarseRatio4(int val); - void setFineRatio4(int val); - void setFreq4(int val); - void setFix4(bool f); - //Sensitivity - void setAME1(bool val); - void setEBS1(int val); - void setKVS1(int val); - void setAME2(bool val); - void setEBS2(int val); - void setKVS2(int val); - void setAME3(bool val); - void setEBS3(int val); - void setKVS3(int val); - void setAME4(bool val); - void setEBS4(int val); - void setKVS4(int val); - //detune - void setDET1(int val); - void setDET2(int val); - void setDET3(int val); - void setDET4(int val); - //WaveForm - void setWaveForm1(int); - void setWaveForm2(int); - void setWaveForm3(int); - void setWaveForm4(int); - //Delay - void setActivDelay(bool); - void setDelayReturn(int); - void setChannelDelay(int); - //void setDelayTime(int); - void setDelayBPM(double); - void setDelayBeatRatio(double); - //void setDelayFeedback(int); - void setDelayFeedback(double); - //void setDelayPanLFOFreq(int); - void setDelayPanLFOFreq(double); - //void setDelayPanLFODepth(int); - void setDelayPanLFODepth(double); - //category subcategory preset - void setSet(void); //display the set, that is the category list - void setCategory(Category*); - void setCategory(QTreeWidgetItem*); - void setSubcategory(Subcategory*); - void setSubcategory(QTreeWidgetItem*); - void setPreset(QTreeWidgetItem*); - public: - virtual void processEvent(const MidiEvent&); - void updateSelectPreset(int hbank, int lbank, int prog); - //update the gui - void setEnabledPreset(bool b); - void updateChannelCheckBox(bool b); - void updateEnabledChannel(bool e);//put enabled the display concerning channel and preset - void updateChannelEnable(bool e);//update channel enable - void updateMasterVolume(int val); - void updateNbrVoices(int val); - //void updateMidiInCh(int val); //to change - void updateQuality(int val); - void updateFilter(bool f); - void updateFontSize(int fs); - void applyFontSize(int fs); - void updateSaveOnlyUsed(bool); - void updateSaveConfig(bool); - //FX - void updateChorusActiv(bool a); - void updateChannelChorus(int c); - void updateChorusReturn(int r); - void updateReverbActiv(bool a); - void updateChannelReverb(int r); - void updateReverbReturn(int r); - void updateLadspaReverbLineEdit(QString s); - void updateLadspaChorusLineEdit(QString s); - void updateDelayActiv(bool a); - void updateChannelDelay(int r); - void updateDelayReturn(int r); - void updateDelayPanLFOFreq(float plf); - void updateDelayBPM(float dt); - void updateDelayBeatRatio(float dt); - void updateDelayFeedback(float df); - void updateDelayPanLFODepth(float dpd); - void addPluginCheckBox(int index, QString text, bool toggled, - QWidget* parent, QGridLayout* grid, bool isReverb); - void addPluginIntSlider(int index, QString text, double min, double max, - double val, QWidget* parent, QGridLayout* grid, - bool isReverb); - void addPluginSlider(int index, QString text, bool isLog, double min, - double max, double val, QWidget* parent, - QGridLayout* grid, bool isReverb); - void buildGuiReverb(); - void buildGuiChorus(); - void updateReverbSlider(double v, int i); - void updateReverbFloatEntry(double v, int i); - void updateChorusSlider(double v, int i); - void updateChorusFloatEntry(double v, int i); - //update load init set - void updateInitSetCheckBox(bool); - void updateInitSetPath(QString); - //update background pix - void updateBackgroundPixCheckBox(bool); - void updateBackgroundPixPath(QString); - void applyBackgroundPix(); - //update quick edit - void updateChannelPan(int val); - void updateBrightness(int val); - void updateModulation(int val); - void updateAttack(int val); - void updateRelease(int val); - void updateQuickEdit(); - //update pitch envelope - void updatePL1(int val); - void updatePL2(int val); - void updatePL3(int val); - void updatePR1(int val); - void updatePR2(int val); - void updatePR3(int val); - //update function - void updateFcVolume(int val); - void updateFcPitch(int val); - void updateFcAmplitude(int val); - void updateMwPitch(int val); - void updateMwAmplitude(int val); - void updateBcPitch(int val); - void updateBcAmplitude(int val); - void updateBcPitchBias(int val); - void updateBcEgBias(int val); - void updateAtPitch(int val); - void updateAtAmplitude(int val); - void updateAtPitchBias(int val); - void updateAtEgBias(int val); - //void updateReverbRate(int val); - //update envelope - void updateAR(int op, int val); - void updateD1R(int op, int val); - void updateD2R(int op, int val); - void updateRR(int op, int val); - void updateD1L(int op, int val); - //update scale - void updateLS(int op, int val); - void updateRS(int op, int val); - void updateEBS(int op, int val); - void updateAME(int op, bool val); - void updateKVS(int op, int val); - void updateOUT(int op, int val); - void updateRATIO(int op, int val); - void updateDET(int op, int val); - //update global - void updateALG(int val); - void updateFEEDBACK(int val); - void updateSPEED(int val); - void updateDELAY(int val); - void updatePMODDEPTH(int val); - void updateAMODDEPTH(int val); - void updateSYNC(bool val); - void updateWAVE(int val); - void updatePMODSENS(int val); - void updateAMS(int val); - void updateTRANSPOSE(int val); - void updatePOLYMODE(int val); - void updatePBENDRANGE(int val); - void updatePORTAMODE(int val); - void updatePORTATIME(int val); - void updateFIX(int op, bool val); - void updateFIXRANGE(int op, int val); - void updateOSW(int op, int val); - void updateSHFT(int op, int val); - void updateChannelDetune(int val); - void updateChannelDetuneKnob(int val); - //void updateChannelDetuneSlider(int val); - void updateChannelVolume(int val); - void updateCategoryName(QString cn, bool enable); - void updateSubcategoryName(QString sn, bool enable); - void updatePresetName(QString pn, bool enable); - void updatePresetName(QString pn); - void updateHBank(int hbank, bool enable); - void updateLBank(int lbank, bool enable); - void updateProg(int prog, bool enable); - void updatePreset(Preset* p); - void updatePreset(void); //update gui following the current preset - //void updateCurrentChannel(); //update gui channel attributes - QString num3Digits(int); - DeicsOnzeGui(DeicsOnze*); - - int _currentChannel; - - QColor* tColor; //text color - QColor* bColor; //background color - QColor* etColor;//edit text color - QColor* ebColor;//edit background color - QColor* curColor;//current color - - DeicsOnze* _deicsOnze; -}; - -class QFramePitchEnvelope:private QFrame { - QPoint startlinkP1, //first point - P1linkP2, //point linking P1 to P2 - P2linkP3, //point linking P2 to P3 - P3linkEnd; //point linking P3 to End - bool isStartlinkP1Edit; - bool isP1linkP2Edit; - bool isP2linkP3Edit; - bool isP3linkEndEdit; - public: - DeicsOnzeGui* _deicsOnzeGui; - QFramePitchEnvelope(QWidget* parent, DeicsOnzeGui* dog):QFrame(parent){ - _deicsOnzeGui = dog; - isStartlinkP1Edit=false; - isP1linkP2Edit=false; - isP2linkP3Edit=false; - isP3linkEndEdit=false; - }; - void env2Points(int pl1, int pl2, int pl3, int pr1, int pr2, int pr3); - void updateEnv(void) {update();}; - protected: - void paintEvent(QPaintEvent* e); - void mouseMoveEvent(QMouseEvent* e); - void mousePressEvent(QMouseEvent * e); - void mouseReleaseEvent(QMouseEvent * e); -}; - -class QFrameEnvelope:private QFrame { - unsigned char op; //operator number, between 0 and 3 - QPoint startlinkAR, //first point - ARlinkD1, //point linking AR to D1 - D1linkD2, //point linking D1 to D2 - D2linkRR, //point linking D2 to RR - RRlinkEnd; //last point - bool isARlinkD1Edit; - bool isD1linkD2Edit; - bool isD2linkRREdit; - bool isRRlinkEndEdit; - public: - DeicsOnzeGui* _deicsOnzeGui; - QFrameEnvelope(QWidget* parent, DeicsOnzeGui* dog, unsigned char k):QFrame(parent){ - _deicsOnzeGui = dog; - isARlinkD1Edit=false; - isD1linkD2Edit=false; - isD2linkRREdit=false; - isRRlinkEndEdit=false; - op = k; - //setGeometry(XOFFSET, YOFFSET, XOFFSET+MAXWIDTH, MAXHEIGHT); - //setMouseTracking(true); - }; - void env2Points(int ar, int d1r, int d1l, int d2r, int rr); - void updateEnv(void) {update();}; - protected: - void paintEvent(QPaintEvent* e); - void mouseMoveEvent(QMouseEvent* e); - void mousePressEvent(QMouseEvent * e); - void mouseReleaseEvent(QMouseEvent * e); -}; - -#endif /* __DEICSONZEGUI_H */ diff --git a/muse/synti/deicsonze/deicsonzegui.ui b/muse/synti/deicsonze/deicsonzegui.ui deleted file mode 100644 index 6b91cf49..00000000 --- a/muse/synti/deicsonze/deicsonzegui.ui +++ /dev/null @@ -1,10237 +0,0 @@ - - Nil Geisweiller - DeicsOnzeGuiBase - - - - 0 - 0 - 728 - 568 - - - - DeicsOnze - - - false - - - false - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - - 0 - 0 - - - - ArrowCursor - - - - - - false - - - QTabWidget::Rounded - - - 0 - - - - &Preset - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - false - - - Program numerous - - - 1 - - - 128 - - - - - - - false - - - INITVOICE - - - 12 - - - - - - - Qt::CustomContextMenu - - - false - - - - LBank - - - - - Subcategory - - - - - - - - false - - - Bank numerous - - - 1 - - - 128 - - - - - - - false - - - NONE - - - 12 - - - - - - - false - - - NONE - - - 12 - - - - - - - false - - - Bank numerous - - - 1 - - - 128 - - - - - - - Qt::CustomContextMenu - - - Qt::LeftToRight - - - false - - - QFrame::StyledPanel - - - QFrame::Sunken - - - 1 - - - 0 - - - false - - - true - - - 2 - - - - HBank - - - - - Category - - - - - - - - Qt::CustomContextMenu - - - false - - - - Prog - - - - - Preset - - - - - - - - - Sans Serif - 8 - 50 - false - false - false - false - - - - QFrame::NoFrame - - - QFrame::Plain - - - DeicsOnze v0.5.5 Copyright (c) 2004-2006 Nil Geisweiller. Published under GPL licence. - - - - - - - - &Global - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - Pitch Envelope - - - - 10 - - - 10 - - - 10 - - - 10 - - - 6 - - - 6 - - - - - QFrame::Box - - - QFrame::Sunken - - - PL3 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - PL2 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - PL1 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - PR1 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - PR2 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - PR3 - - - - - - - PointingHandCursor - - - true - - - QFrame::StyledPanel - - - QFrame::Sunken - - - - - - - Pitch modulation depth - - - 99 - - - 2 - - - 50 - - - - - - - Pitch modulation depth - - - 99 - - - 2 - - - 50 - - - - - - - Pitch modulation depth - - - 99 - - - 2 - - - 50 - - - - - - - Pitch modulation depth - - - 99 - - - 3 - - - 0 - - - - - - - Pitch modulation depth - - - 99 - - - 3 - - - 0 - - - - - - - Pitch modulation depth - - - 99 - - - 3 - - - 0 - - - - - - - - - - LFO - - - - 10 - - - 10 - - - 10 - - - 10 - - - 6 - - - 6 - - - - - PointingHandCursor - - - LFO Sync - - - - - - - Pitch modulation sensitivity - - - 7 - - - - - - - PointingHandCursor - - - Pitch Modulation Sensitivity - - - 7 - - - 1 - - - 1 - - - Qt::Horizontal - - - - - - - PointingHandCursor - - - LFO Delay - - - 99 - - - 1 - - - 1 - - - Qt::Horizontal - - - - - - - LFO delay - - - 99 - - - - - - - LFO speed - - - 99 - - - - - - - Amplitude modulation depth - - - 99 - - - - - - - Pitch modulation depth - - - 99 - - - - - - - Amplitude modulation sensitivity - - - 7 - - - - - - - PointingHandCursor - - - Amplitude Modulation Sensitivity - - - 3 - - - 1 - - - 1 - - - Qt::Horizontal - - - - - - - QFrame::Box - - - QFrame::Sunken - - - AMS - - - - - - - PointingHandCursor - - - LFO Waveform - - - - 38 - 16 - - - - - - - - pics/sawUp.png - - - - - - - - pics/square.png - - - - - - - - pics/triangl.png - - - - - - - - pics/SHold.png - - - - - - - - PointingHandCursor - - - Pitch Modulation Depth - - - 99 - - - 1 - - - 1 - - - Qt::Horizontal - - - - - - - QFrame::Box - - - QFrame::Sunken - - - PMD - - - - - - - PointingHandCursor - - - LFO Speed - - - 99 - - - 1 - - - 1 - - - Qt::Horizontal - - - - - - - PointingHandCursor - - - Pitch Modulation Depth - - - 99 - - - 1 - - - 1 - - - Qt::Horizontal - - - - - - - QFrame::Box - - - QFrame::Sunken - - - AMD - - - - - - - QFrame::Box - - - QFrame::Sunken - - - Speed - - - - - - - QFrame::Box - - - QFrame::Sunken - - - Delay - - - - - - - QFrame::Box - - - QFrame::Sunken - - - PMS - - - - - - - - - - true - - - Modulation Matrix - - - - 10 - - - 10 - - - 10 - - - 10 - - - 6 - - - 6 - - - - - PointingHandCursor - - - Modulation Matrix - - - <b>Algorithm 1</b> : <i>Op 1</i> modulated by <i>Op 2</i> modulated by <i>Op 3</i> modulated by <i>Op 4</i><br> -<b>Algorithm 2</b> : <i>Op 1</i> modulated by <i>Op 2</i> modulated by both <i>Op 3</i> and <i>Op 4</i><br> -<b>Algorithm 3</b> : <i>Op 1</i> modulated by both <i>Op 4</i> and <i>Op 2</i> modulated by <i>Op 3</i><br> -<b>Algorithm 4</b> : <i>Op 1</i> modulated by both <i>Op 2</i> and <i>Op 3</i> modulated by <i>Op 4</i><br> -<b>Algorithm 5</b> : (<i>Op 1</i> modulated by <i>Op 2</i>) add to (<i>Op 3</i> modulated by <i>Op 4</i>) <br> -<b>Algorithm 6</b> : addition of the three <i>Op 1, 2, 3</i> all modulated by <i>Op 4</i><br> -<b>Algorithm 7</b> : addition of the three <i>Op 1, 2, 3</i> with <i>Op 3</i> modulated by <i>Op 4</i><br> -<b>Algorithm 8</b> : addition of the four <i>Op 1, 2, 3, 4</i> - - - - 160 - 32 - - - - - - - - pics/algo1.png - - - - - - - - pics/algo3.png - - - - - - - - pics/algo3.png - - - - - - - - pics/algo4.png - - - - - - - - pics/algo5.png - - - - - - - - pics/algo6.png - - - - - - - - pics/algo7.png - - - - - - - - pics/algo8.png - - - - - - - - - - - - - - Op4 Feedback - - - - 6 - - - 10 - - - 10 - - - 10 - - - 10 - - - - - PointingHandCursor - - - Feedback level of the operator 4 - - - 7 - - - 1 - - - 1 - - - Qt::Horizontal - - - - - - - Feedback level of the operator 4 - - - 7 - - - - - - - - - - Transpose - - - - 6 - - - 10 - - - 10 - - - 10 - - - 10 - - - - - PointingHandCursor - - - Transpose - - - -24 - - - 24 - - - 1 - - - Qt::Horizontal - - - - - - - Transpose - - - -24 - - - 99 - - - - - - - - - - - Op &1 - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - Scaling 1 - - - - 10 - - - 10 - - - 10 - - - 10 - - - 6 - - - 6 - - - - - QFrame::Box - - - QFrame::Sunken - - - LS1 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - RS1 - - - - - - - PointingHandCursor - - - Rate Scaling - - - Attack Rate of the operator 1 - - - 3 - - - 1 - - - 1 - - - 0 - - - Qt::Vertical - - - - - - - PointingHandCursor - - - Level Scaling - - - Attack Rate of the operator 1 - - - 99 - - - 1 - - - 1 - - - 0 - - - Qt::Vertical - - - - - - - Level Scaling - - - 99 - - - - - - - Rate Scaling - - - 3 - - - - - - - - - - Amplitude Envelope 1 - - - - 10 - - - 10 - - - 10 - - - 10 - - - 6 - - - 6 - - - - - QFrame::Box - - - QFrame::Sunken - - - RR1 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - D1R1 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - D1L1 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - D2R1 - - - - - - - Release Rate - - - 15 - - - - - - - 2° Decay Rate - - - 31 - - - - - - - 1° Decay Level - - - 15 - - - - - - - 1° Decay Rate - - - 31 - - - - - - - Attack Rate - - - 31 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - AR1 - - - - - - - - 0 - 0 - - - - PointingHandCursor - - - true - - - QFrame::StyledPanel - - - QFrame::Sunken - - - - - - - - - - Detune, OSCWave, EGShift 1 - - - - 10 - - - 10 - - - 10 - - - 10 - - - 6 - - - 6 - - - - - QFrame::Box - - - QFrame::Sunken - - - DET1 - - - - - - - Detune - - - -3 - - - 3 - - - - - - - PointingHandCursor - - - Detune - - - Attack Rate of the operator 1 - - - -3 - - - 3 - - - 1 - - - 1 - - - 0 - - - Qt::Horizontal - - - - - - - false - - - PointingHandCursor - - - EG Shift - - - - 96dB - - - - - 48dB - - - - - 24dB - - - - - 12dB - - - - - - - - PointingHandCursor - - - Wave form - - - Wave form 1 = <i>sin(<b>t</b>)</i><br> -Wave form 2 = <i>sin(<b>t</b>)*abs(sin(<b>t</b>))</i><br> -Wave form 3 = <i>if <b>t</b>&#060 pi then sin(<b>t</b>) else 0</i><br> -Wave form 4 = <i>if <b>t</b>&#060 pi then sin(<b>t</b>)*abs(sin(<b>t</b>)) else 0</i><br> -Wave form 5 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>) else 0</i><br> -Wave form 6 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*abs(sin(2*<b>t</b>)) else 0</i><br> -Wave form 7 = <i>if <b>t</b>&#060 pi then abs(sin(2*<b>t</b>)) else 0</i><br> -Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin(2*<b>t</b>) else 0</i> - - - - 48 - 16 - - - - - - - - pics/wave1.png - - - - - - - - pics/wave2.png - - - - - - - - pics/wave3.png - - - - - - - - pics/wave4.png - - - - - - - - pics/wave5.png - - - - - - - - pics/wave6.png - - - - - - - - pics/wave7.png - - - - - - - - pics/wave8.png - - - - - - - - - - - Sensitivity 1 - - - - 10 - - - 10 - - - 10 - - - 10 - - - 6 - - - 6 - - - - - QFrame::Box - - - QFrame::Sunken - - - KVS1 - - - - - - - PointingHandCursor - - - Amplitude Modulation Enable - - - AME1 - - - - - - - Keyboard Velocity Sensitivity - - - 7 - - - - - - - PointingHandCursor - - - false - - - Key Velocity Sensitivity - - - 7 - - - 1 - - - 1 - - - Qt::Horizontal - - - - - - - QFrame::Box - - - QFrame::Sunken - - - EBS1 - - - - - - - PointingHandCursor - - - EG Bias Sensitivity - - - 7 - - - 1 - - - 1 - - - Qt::Horizontal - - - - - - - Eg Bias Sensitivity - - - 7 - - - - - - - - - - Frequency 1 - - - - 6 - - - 10 - - - 10 - - - 10 - - - 10 - - - - - QFrame::Box - - - QFrame::Sunken - - - Coarse 1 - - - - - - - Coarse Ratio - - - - - - - QFrame::Box - - - QFrame::Sunken - - - Fine 1 - - - - - - - Fine Ratio - - - - - - - QFrame::Box - - - QFrame::Sunken - - - Freq 1 - - - - - - - false - - - Fixed Frequency - - - 32000 - - - - - - - true - - - PointingHandCursor - - - Toggle Fix Frequency - - - FIX - - - - - - - - - - OUT 1 - - - - 6 - - - 10 - - - 10 - - - 10 - - - 10 - - - - - Output Volume - - - 99 - - - - - - - PointingHandCursor - - - Volume - - - - - - 99 - - - 1 - - - 1 - - - 0 - - - Qt::Vertical - - - - - - - - - - - Op &2 - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - Amplitude Envelope 2 - - - - 10 - - - 10 - - - 10 - - - 10 - - - 6 - - - 6 - - - - - Attack Rate - - - 31 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - D1R2 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - D1L2 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - D2R2 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - RR2 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - AR2 - - - - - - - Release Rate - - - 15 - - - - - - - 2° Decay Rate - - - 31 - - - - - - - 1° Decay Level - - - 15 - - - - - - - 1° Decay Rate - - - 31 - - - - - - - - 0 - 0 - - - - PointingHandCursor - - - true - - - QFrame::StyledPanel - - - QFrame::Sunken - - - - - - - - - - Frequency 2 - - - - 6 - - - 10 - - - 10 - - - 10 - - - 10 - - - - - QFrame::Box - - - QFrame::Sunken - - - Coarse 2 - - - - - - - Coarse Ratio - - - - - - - QFrame::Box - - - QFrame::Sunken - - - Fine 2 - - - - - - - Fine Ratio - - - - - - - QFrame::Box - - - QFrame::Sunken - - - Freq 2 - - - - - - - false - - - Fixed Frequency - - - 32000 - - - - - - - true - - - PointingHandCursor - - - Toggle Fix Frequency - - - FIX - - - - - - - - - - Scaling 2 - - - - 10 - - - 10 - - - 10 - - - 10 - - - 6 - - - 6 - - - - - QFrame::Box - - - QFrame::Sunken - - - LS2 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - RS2 - - - - - - - PointingHandCursor - - - Level Scaling - - - Attack Rate of the operator 1 - - - 99 - - - 1 - - - 0 - - - Qt::Vertical - - - 1 - - - - - - - PointingHandCursor - - - Rate Scaling - - - Attack Rate of the operator 1 - - - 3 - - - 1 - - - 0 - - - Qt::Vertical - - - - - - - Level Scaling - - - 99 - - - - - - - Rate Scaling - - - 3 - - - - - - - - - - OUT 2 - - - - 6 - - - 10 - - - 10 - - - 10 - - - 10 - - - - - Output Volume - - - 99 - - - - - - - PointingHandCursor - - - Volume - - - - - - 99 - - - 1 - - - 0 - - - Qt::Vertical - - - - - - - - - - Detune, OSCWave, EGShift 2 - - - - 10 - - - 10 - - - 10 - - - 10 - - - 6 - - - 6 - - - - - QFrame::Box - - - QFrame::Sunken - - - DET2 - - - - - - - Detune - - - -3 - - - 3 - - - - - - - PointingHandCursor - - - Detune - - - Attack Rate of the operator 1 - - - -3 - - - 3 - - - 1 - - - 0 - - - Qt::Horizontal - - - - - - - false - - - PointingHandCursor - - - EG Shift - - - - 96dB - - - - - 48dB - - - - - 24dB - - - - - 12dB - - - - - - - - PointingHandCursor - - - Wave form - - - Wave form 1 = <i>sin(<b>t</b>)</i><br> -Wave form 2 = <i>sin(<b>t</b>)*abs(sin(<b>t</b>))</i><br> -Wave form 3 = <i>if <b>t</b>&#060 pi then sin(<b>t</b>) else 0</i><br> -Wave form 4 = <i>if <b>t</b>&#060 pi then sin(<b>t</b>)*abs(sin(<b>t</b>)) else 0</i><br> -Wave form 5 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>) else 0</i><br> -Wave form 6 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*abs(sin(2*<b>t</b>)) else 0</i><br> -Wave form 7 = <i>if <b>t</b>&#060 pi then abs(sin(2*<b>t</b>)) else 0</i><br> -Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin(2*<b>t</b>) else 0</i> - - - - 48 - 16 - - - - - - - - pics/wave1.png - - - - - - - - pics/wave2.png - - - - - - - - pics/wave3.png - - - - - - - - pics/wave4.png - - - - - - - - pics/wave5.png - - - - - - - - pics/wave6.png - - - - - - - - pics/wave7.png - - - - - - - - pics/wave8.png - - - - - - - - - - - Sensitivity 2 - - - - 10 - - - 10 - - - 10 - - - 10 - - - 6 - - - 6 - - - - - QFrame::Box - - - QFrame::Sunken - - - EBS2 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - KVS2 - - - - - - - PointingHandCursor - - - Amplitude Modulation Enable - - - AME2 - - - - - - - PointingHandCursor - - - false - - - Key Velocity Sensitivity - - - 7 - - - 1 - - - Qt::Horizontal - - - - - - - Keyboard Velocity Sensitivity - - - 7 - - - - - - - PointingHandCursor - - - EG Bias Sensitivity - - - 7 - - - 1 - - - Qt::Horizontal - - - - - - - Eg Bias Sensitivity - - - 7 - - - - - - - - - - - Op &3 - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - Amplitude Envelope 3 - - - - 10 - - - 10 - - - 10 - - - 10 - - - 6 - - - 6 - - - - - Attack Rate - - - 31 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - D1R3 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - D1L3 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - D2R3 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - RR3 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - AR3 - - - - - - - Release Rate - - - 15 - - - - - - - 2° Decay Rate - - - 31 - - - - - - - 1° Decay Level - - - 15 - - - - - - - 1° Decay Rate - - - 31 - - - - - - - - 0 - 0 - - - - PointingHandCursor - - - true - - - QFrame::StyledPanel - - - QFrame::Sunken - - - - - - - - - - Scaling 3 - - - - 10 - - - 10 - - - 10 - - - 10 - - - 6 - - - 6 - - - - - QFrame::Box - - - QFrame::Sunken - - - LS3 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - RS3 - - - - - - - PointingHandCursor - - - Level Scaling - - - Attack Rate of the operator 1 - - - 99 - - - 1 - - - 0 - - - Qt::Vertical - - - - - - - PointingHandCursor - - - Rate Scaling - - - Attack Rate of the operator 1 - - - 3 - - - 1 - - - 0 - - - Qt::Vertical - - - - - - - Level Scaling - - - 99 - - - - - - - Rate Scaling - - - 3 - - - - - - - - - - OUT 3 - - - - 6 - - - 10 - - - 10 - - - 10 - - - 10 - - - - - Output Volume - - - 99 - - - - - - - PointingHandCursor - - - Volume - - - - - - 99 - - - 1 - - - 0 - - - Qt::Vertical - - - - - - - - - - Frequency 3 - - - - 6 - - - 10 - - - 10 - - - 10 - - - 10 - - - - - QFrame::Box - - - QFrame::Sunken - - - Coarse 3 - - - - - - - ArrowCursor - - - Coarse Ratio - - - - - - - QFrame::Box - - - QFrame::Sunken - - - Fine 3 - - - - - - - ArrowCursor - - - Fine Ratio - - - - - - - QFrame::Box - - - QFrame::Sunken - - - Freq 3 - - - - - - - false - - - Fixed Frequency - - - 32000 - - - - - - - true - - - PointingHandCursor - - - Toggle Fix Frequency - - - FIX - - - - - - - - - - Detune, OSCWave, EGShift 3 - - - - 10 - - - 10 - - - 10 - - - 10 - - - 6 - - - 6 - - - - - QFrame::Box - - - QFrame::Sunken - - - DET3 - - - - - - - Detune - - - -3 - - - 3 - - - - - - - PointingHandCursor - - - Detune - - - Attack Rate of the operator 1 - - - -3 - - - 3 - - - 1 - - - 0 - - - Qt::Horizontal - - - - - - - false - - - PointingHandCursor - - - EG Shift - - - - 96dB - - - - - 48dB - - - - - 24dB - - - - - 12dB - - - - - - - - PointingHandCursor - - - Wave form - - - Wave form 1 = <i>sin(<b>t</b>)</i><br> -Wave form 2 = <i>sin(<b>t</b>)*abs(sin(<b>t</b>))</i><br> -Wave form 3 = <i>if <b>t</b>&#060 pi then sin(<b>t</b>) else 0</i><br> -Wave form 4 = <i>if <b>t</b>&#060 pi then sin(<b>t</b>)*abs(sin(<b>t</b>)) else 0</i><br> -Wave form 5 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>) else 0</i><br> -Wave form 6 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*abs(sin(2*<b>t</b>)) else 0</i><br> -Wave form 7 = <i>if <b>t</b>&#060 pi then abs(sin(2*<b>t</b>)) else 0</i><br> -Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin(2*<b>t</b>) else 0</i> - - - - 48 - 16 - - - - - - - - pics/wave1.png - - - - - - - - pics/wave2.png - - - - - - - - pics/wave3.png - - - - - - - - pics/wave4.png - - - - - - - - pics/wave5.png - - - - - - - - pics/wave6.png - - - - - - - - pics/wave7.png - - - - - - - - pics/wave8.png - - - - - - - - - - - Sensitivity 3 - - - - 10 - - - 10 - - - 10 - - - 10 - - - 6 - - - 6 - - - - - QFrame::Box - - - QFrame::Sunken - - - EBS3 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - KVS3 - - - - - - - PointingHandCursor - - - Amplitude Modulation Enable - - - AME3 - - - - - - - PointingHandCursor - - - false - - - Key Velocity Sensitivity - - - 7 - - - 1 - - - Qt::Horizontal - - - - - - - Keyboard Velocity Sensitivity - - - 7 - - - - - - - PointingHandCursor - - - EG Bias Sensitivity - - - 7 - - - 1 - - - Qt::Horizontal - - - - - - - Eg Bias Sensitivity - - - 7 - - - - - - - - - - - Op &4 - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - amplitude Envelope 4 - - - - 10 - - - 10 - - - 10 - - - 10 - - - 6 - - - 6 - - - - - Attack Rate - - - 31 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - AR4 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - D1R4 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - D1L4 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - D2R4 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - RR4 - - - - - - - Release Rate - - - 15 - - - - - - - 2° Decay Rate - - - 31 - - - - - - - 1° Decay Level - - - 15 - - - - - - - 1° Decay Rate - - - 31 - - - - - - - - 0 - 0 - - - - PointingHandCursor - - - true - - - QFrame::StyledPanel - - - QFrame::Sunken - - - - - - - - - - Frequency 4 - - - - 6 - - - 10 - - - 10 - - - 10 - - - 10 - - - - - QFrame::Box - - - QFrame::Sunken - - - Coarse 4 - - - - - - - Coarse Ratio - - - - - - - QFrame::Box - - - QFrame::Sunken - - - Fine 4 - - - - - - - Fine Ratio - - - - - - - QFrame::Box - - - QFrame::Sunken - - - Freq 4 - - - - - - - false - - - Fixed Frequency - - - 32000 - - - - - - - true - - - PointingHandCursor - - - Toggle Fix Frequency - - - FIX - - - - - - - - - - Scaling 4 - - - - 10 - - - 10 - - - 10 - - - 10 - - - 6 - - - 6 - - - - - QFrame::Box - - - QFrame::Sunken - - - LS4 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - RS4 - - - - - - - PointingHandCursor - - - Level Scaling - - - Attack Rate of the operator 1 - - - 99 - - - 1 - - - 0 - - - Qt::Vertical - - - - - - - PointingHandCursor - - - Rate Scaling - - - Attack Rate of the operator 1 - - - 3 - - - 1 - - - 0 - - - Qt::Vertical - - - - - - - Level Scaling - - - 99 - - - - - - - Rate Scaling - - - 3 - - - - - - - - - - OUT 4 - - - - 6 - - - 10 - - - 10 - - - 10 - - - 10 - - - - - Output Volume - - - 99 - - - - - - - PointingHandCursor - - - Volume - - - - - - 99 - - - 1 - - - 0 - - - Qt::Vertical - - - - - - - - - - Detune, OSCWave, EGShift 4 - - - - 10 - - - 10 - - - 10 - - - 10 - - - 6 - - - 6 - - - - - QFrame::Box - - - QFrame::Sunken - - - DET4 - - - - - - - Detune - - - -3 - - - 3 - - - - - - - PointingHandCursor - - - Detune - - - Attack Rate of the operator 1 - - - -3 - - - 3 - - - 1 - - - 0 - - - Qt::Horizontal - - - - - - - false - - - PointingHandCursor - - - EG Shift - - - - 96dB - - - - - 48dB - - - - - 24dB - - - - - 12dB - - - - - - - - PointingHandCursor - - - Wave form - - - Wave form 1 = <i>sin(<b>t</b>)</i><br> -Wave form 2 = <i>sin(<b>t</b>)*abs(sin(<b>t</b>))</i><br> -Wave form 3 = <i>if <b>t</b>&#060 pi then sin(<b>t</b>) else 0</i><br> -Wave form 4 = <i>if <b>t</b>&#060 pi then sin(<b>t</b>)*abs(sin(<b>t</b>)) else 0</i><br> -Wave form 5 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>) else 0</i><br> -Wave form 6 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*abs(sin(2*<b>t</b>)) else 0</i><br> -Wave form 7 = <i>if <b>t</b>&#060 pi then abs(sin(2*<b>t</b>)) else 0</i><br> -Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin(2*<b>t</b>) else 0</i> - - - - 48 - 16 - - - - - - - - pics/wave1.png - - - - - - - - pics/wave2.png - - - - - - - - pics/wave3.png - - - - - - - - pics/wave4.png - - - - - - - - pics/wave5.png - - - - - - - - pics/wave6.png - - - - - - - - pics/wave7.png - - - - - - - - pics/wave8.png - - - - - - - - - - - Sensitivity 4 - - - - 10 - - - 10 - - - 10 - - - 10 - - - 6 - - - 6 - - - - - QFrame::Box - - - QFrame::Sunken - - - EBS4 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - KVS4 - - - - - - - PointingHandCursor - - - Amplitude Modulation Enable - - - AME4 - - - - - - - PointingHandCursor - - - false - - - Key Velocity Sensitivity - - - 7 - - - 1 - - - Qt::Horizontal - - - - - - - Keyboard Velocity Sensitivity - - - 7 - - - - - - - PointingHandCursor - - - EG Bias Sensitivity - - - 7 - - - 1 - - - Qt::Horizontal - - - - - - - Eg Bias Sensitivity - - - 7 - - - - - - - - - - - &Func - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - - 16777215 - 80 - - - - Delay Pan Depth - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - - 48 - 16777215 - - - - - - - - - - - - - - - 16777215 - 80 - - - - Delay Pan LFO Freq - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - 1.137891684385393 - - - 0.100000000000000 - - - 10.000000000000000 - - - true - - - - - - - - 48 - 16777215 - - - - 0.100000000000000 - - - 10.000000000000000 - - - - - - - - - - - 16777215 - 80 - - - - Delay Ch Send Level - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - 127 - - - - - - - PointingHandCursor - - - Channel Chorus - - - 127 - - - Qt::Horizontal - - - - - - - - - - - 16777215 - 80 - - - - Delay Feedback - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - 0.000000000000000 - - - -1.000000000000000 - - - - - - - - 48 - 16777215 - - - - -1.000000000000000 - - - - - - - - - - - 16777215 - 80 - - - - Delay On/Off, Return Level - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - PointingHandCursor - - - On - - - - - - - 255 - - - 128 - - - Qt::Horizontal - - - - - - - - - - - 16777215 - 80 - - - - Delay Beat Ratio - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - 1.000000000000000 - - - 0.125000000000000 - - - 2.000000000000000 - - - - - - - - 48 - 16777215 - - - - 0.010000000000000 - - - 2.000000000000000 - - - - - - - - - - - 16777215 - 80 - - - - Delay BPM - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - 100.000000000000000 - - - 60.000000000000000 - - - 255.000000000000000 - - - - - - - - 48 - 16777215 - - - - 6 - - - 60.000000000000000 - - - 255.000000000000000 - - - - - - - - - - 0 - - - - Foot Control - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - Pitch Bend Range - - - 99 - - - - - - - Pitch Bend Range - - - 99 - - - - - - - Pitch Bend Range - - - 99 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - Pitch - - - - - - - PointingHandCursor - - - Pitch Bend Range - - - 0 - - - 99 - - - 1 - - - 0 - - - Qt::Horizontal - - - - - - - PointingHandCursor - - - Pitch Bend Range - - - 0 - - - 99 - - - 1 - - - 0 - - - Qt::Horizontal - - - - - - - QFrame::Box - - - QFrame::Sunken - - - Amplitude - - - - - - - QFrame::Box - - - QFrame::Sunken - - - Volume - - - - - - - PointingHandCursor - - - Pitch Bend Range - - - 0 - - - 99 - - - 1 - - - 0 - - - Qt::Horizontal - - - - - - - - Modulation Wheel - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - Pitch Bend Range - - - 99 - - - - - - - PointingHandCursor - - - Pitch Bend Range - - - 0 - - - 99 - - - 1 - - - 0 - - - Qt::Horizontal - - - - - - - Pitch Bend Range - - - 99 - - - - - - - PointingHandCursor - - - Pitch Bend Range - - - 0 - - - 99 - - - 1 - - - 0 - - - Qt::Horizontal - - - - - - - QFrame::Box - - - QFrame::Sunken - - - Amplitude - - - - - - - QFrame::Box - - - QFrame::Sunken - - - Pitch - - - - - - - - Breath Control - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - PointingHandCursor - - - Pitch Bend Range - - - 0 - - - 50 - - - 1 - - - 0 - - - Qt::Horizontal - - - - - - - Pitch Bend Range - - - 50 - - - - - - - Pitch Bend Range - - - 99 - - - - - - - Pitch Bend Range - - - 99 - - - - - - - Pitch Bend Range - - - 99 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - Pitch - - - - - - - QFrame::Box - - - QFrame::Sunken - - - Pitch Bias - - - - - - - QFrame::Box - - - QFrame::Sunken - - - Envelope Bias - - - - - - - QFrame::Box - - - QFrame::Sunken - - - Amplitude - - - - - - - PointingHandCursor - - - Pitch Bend Range - - - 0 - - - 99 - - - 1 - - - 0 - - - Qt::Horizontal - - - - - - - PointingHandCursor - - - Pitch Bend Range - - - 0 - - - 99 - - - 1 - - - 0 - - - Qt::Horizontal - - - - - - - PointingHandCursor - - - Pitch Bend Range - - - 0 - - - 99 - - - 1 - - - 0 - - - Qt::Horizontal - - - - - - - - After Touch - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - QFrame::Box - - - QFrame::Sunken - - - Pitch - - - - - - - Pitch Bend Range - - - 99 - - - - - - - PointingHandCursor - - - Pitch Bend Range - - - 0 - - - 99 - - - 1 - - - 0 - - - Qt::Horizontal - - - - - - - Pitch Bend Range - - - 50 - - - - - - - PointingHandCursor - - - Pitch Bend Range - - - 0 - - - 50 - - - 1 - - - 0 - - - Qt::Horizontal - - - - - - - Pitch Bend Range - - - 99 - - - - - - - Pitch Bend Range - - - 99 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - Pitch Bias - - - - - - - QFrame::Box - - - QFrame::Sunken - - - Amplitude - - - - - - - QFrame::Box - - - QFrame::Sunken - - - Envelope Bias - - - - - - - PointingHandCursor - - - Pitch Bend Range - - - 0 - - - 99 - - - 1 - - - 0 - - - Qt::Horizontal - - - - - - - PointingHandCursor - - - Pitch Bend Range - - - 0 - - - 99 - - - 1 - - - 0 - - - Qt::Horizontal - - - - - - - - - - - Phony Mode - - - - 6 - - - 10 - - - 10 - - - 10 - - - 10 - - - - - true - - - PointingHandCursor - - - - POLY - - - - - MONO - - - - - - - - - - - Pitch Bend Range - - - - 6 - - - 10 - - - 10 - - - 10 - - - 10 - - - - - PointingHandCursor - - - Pitch Bend Range - - - 0 - - - 12 - - - 1 - - - 0 - - - Qt::Horizontal - - - - - - - Pitch Bend Range - - - 12 - - - - - - - - - - Potamento - - - - 6 - - - 10 - - - 10 - - - 10 - - - 10 - - - - - true - - - PointingHandCursor - - - Portamento Mode - - - - FINGER - - - - - FULL - - - - - - - - QFrame::Box - - - QFrame::Sunken - - - PT - - - - - - - true - - - PointingHandCursor - - - Portamento Time - - - 0 - - - 99 - - - 1 - - - 0 - - - Qt::Horizontal - - - - - - - true - - - Portamento Time - - - 99 - - - - - - - - - - - C&horus - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - Chorus Parameters - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - - - - - 16777215 - 80 - - - - Channel send level - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - 127 - - - - - - - PointingHandCursor - - - Channel Chorus - - - 127 - - - Qt::Horizontal - - - - - - - - - - - 16777215 - 80 - - - - On/Off and Return level - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - PointingHandCursor - - - On - - - - - - - 255 - - - 128 - - - Qt::Horizontal - - - - - - - - - - - 16777215 - 80 - - - - Select LADSPA plugin - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - Change plugin - - - - - - - true - - - - - - - - - - - &Reverb - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - - 16777215 - 80 - - - - On/Off and Return level - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - PointingHandCursor - - - On - - - - - - - 255 - - - 128 - - - Qt::Horizontal - - - - - - - - - - - 16777215 - 80 - - - - Select LADSPA plugin - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - Change plugin - - - - - - - true - - - - - - - - - - - 16777215 - 80 - - - - Channel send level - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - 127 - - - - - - - PointingHandCursor - - - Channel Chorus - - - 127 - - - Qt::Horizontal - - - - - - - - - - Reverb Parameters - - - - - - - - &Config - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - Font Size - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - 1 - - - 32 - - - 9 - - - - - - - - - - Quality - - - - 6 - - - 9 - - - 9 - - - 9 - - - 9 - - - - - true - - - - High - - - - - Middle - - - - - Low - - - - - Ultra low - - - - - - - - true - - - Filter - - - - - - - - - - Save Mode (into the song) - - - - 6 - - - 10 - - - 10 - - - 10 - - - 10 - - - - - PointingHandCursor - - - Save only the used presets - - - true - - - - - - - PointingHandCursor - - - Save the entire set - - - - - - - PointingHandCursor - - - Save the configuration - - - true - - - - - - - - - - Configuration File - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - true - - - Save... - - - - - - - true - - - Load... - - - - - - - Save as default - - - - - - - - - - Colors - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - - 0 - 0 - - - - - 0 - 20 - - - - true - - - QFrame::StyledPanel - - - QFrame::Sunken - - - - - - - - Text - - - - - Background - - - - - Edit Text - - - - - Edit Background - - - - - - - - Red - - - 255 - - - - - - - PointingHandCursor - - - Blue - - - 255 - - - Qt::Horizontal - - - - - - - PointingHandCursor - - - Green - - - 255 - - - Qt::Horizontal - - - - - - - PointingHandCursor - - - Red - - - Qt::LeftToRight - - - 255 - - - Qt::Horizontal - - - QSlider::NoTicks - - - - - - - Blue - - - 255 - - - - - - - Green - - - 255 - - - - - - - QFrame::Box - - - QFrame::Sunken - - - Blue - - - - - - - QFrame::Box - - - QFrame::Sunken - - - Green - - - - - - - QFrame::Box - - - QFrame::Sunken - - - Red - - - - - - - - - - Set Path - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - Image in the background : - - - false - - - - - - - 128 - - - - - - - false - - - Browse... - - - - - - - 128 - - - - - - - Browse... - - - - - - - Load the set at the initialization : - - - true - - - - - - - - - - - - - - - 1000 - 20 - - - - - - - - - 0 - 0 - 0 - - - - - - - 207 - 207 - 207 - - - - - - - 237 - 237 - 237 - - - - - - - 231 - 231 - 231 - - - - - - - 121 - 125 - 121 - - - - - - - 166 - 166 - 166 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 207 - 207 - 207 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 0 - 255 - - - - - - - 231 - 231 - 231 - - - - - - - - - 0 - 0 - 0 - - - - - - - 207 - 207 - 207 - - - - - - - 237 - 237 - 237 - - - - - - - 231 - 231 - 231 - - - - - - - 121 - 125 - 121 - - - - - - - 166 - 166 - 166 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 207 - 207 - 207 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 0 - 255 - - - - - - - 231 - 231 - 231 - - - - - - - - - 121 - 125 - 121 - - - - - - - 207 - 207 - 207 - - - - - - - 237 - 237 - 237 - - - - - - - 231 - 231 - 231 - - - - - - - 121 - 125 - 121 - - - - - - - 166 - 166 - 166 - - - - - - - 121 - 125 - 121 - - - - - - - 255 - 255 - 255 - - - - - - - 121 - 125 - 121 - - - - - - - 207 - 207 - 207 - - - - - - - 207 - 207 - 207 - - - - - - - 0 - 0 - 0 - - - - - - - 121 - 125 - 121 - - - - - - - 207 - 207 - 207 - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 0 - 255 - - - - - - - 231 - 231 - 231 - - - - - - - - - Sans Serif - 10 - 75 - false - true - false - false - - - - Set Brightness, Detune, Attack and Release of the current channel to default - - - Res. Ctrl - - - - - - - - 1000 - 20 - - - - - - - - - 0 - 0 - 0 - - - - - - - 207 - 207 - 207 - - - - - - - 237 - 237 - 237 - - - - - - - 231 - 231 - 231 - - - - - - - 121 - 125 - 121 - - - - - - - 166 - 166 - 166 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 207 - 207 - 207 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 0 - 255 - - - - - - - 231 - 231 - 231 - - - - - - - - - 0 - 0 - 0 - - - - - - - 207 - 207 - 207 - - - - - - - 237 - 237 - 237 - - - - - - - 231 - 231 - 231 - - - - - - - 121 - 125 - 121 - - - - - - - 166 - 166 - 166 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 207 - 207 - 207 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 0 - 255 - - - - - - - 231 - 231 - 231 - - - - - - - - - 121 - 125 - 121 - - - - - - - 207 - 207 - 207 - - - - - - - 237 - 237 - 237 - - - - - - - 231 - 231 - 231 - - - - - - - 121 - 125 - 121 - - - - - - - 166 - 166 - 166 - - - - - - - 121 - 125 - 121 - - - - - - - 255 - 255 - 255 - - - - - - - 121 - 125 - 121 - - - - - - - 207 - 207 - 207 - - - - - - - 207 - 207 - 207 - - - - - - - 0 - 0 - 0 - - - - - - - 121 - 125 - 121 - - - - - - - 207 - 207 - 207 - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 0 - 255 - - - - - - - 231 - 231 - 231 - - - - - - - - - Sans Serif - 10 - 75 - false - true - false - false - - - - Cut all notes off - - - Panic! - - - - - - - - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - true - - - Number of Voices - - - 1 - - - 64 - - - 8 - - - - - - - QFrame::StyledPanel - - - Number of voices - - - Qt::AlignCenter - - - - - - - Enable - - - true - - - - - - - 1 - - - 16 - - - - - - - QFrame::StyledPanel - - - Channel - - - Qt::AlignCenter - - - - - - - - - - QFrame::StyledPanel - - - Vol - - - Qt::AlignCenter - - - - - - - - 40 - 40 - - - - -28.144332654385916 - - - 0.000000000000000 - - - 1.000000000000000 - - - 0.100000000000000 - - - 0.200000000000000 - - - false - - - - - - - - 96 - 16 - - - - Channel Ctrl - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - PointingHandCursor - - - 0.000000000000000 - - - 1.000000000000000 - - - 0.100000000000000 - - - 0.200000000000000 - - - false - - - - - - - QFrame::StyledPanel - - - Release - - - Qt::AlignCenter - - - - - - - - 32 - 32 - - - - PointingHandCursor - - - - - - - QFrame::StyledPanel - - - Attack - - - Qt::AlignCenter - - - - - - - - 32 - 32 - - - - PointingHandCursor - - - - - - - QFrame::StyledPanel - - - Detune - - - Qt::AlignCenter - - - - - - - - 32 - 32 - - - - PointingHandCursor - - - - - - - QFrame::StyledPanel - - - Brightness - - - Qt::AlignCenter - - - - - - - - 32 - 32 - - - - PointingHandCursor - - - - - - - QFrame::StyledPanel - - - Modulation - - - Qt::AlignCenter - - - - - - - - 32 - 32 - - - - PointingHandCursor - - - - - - - QFrame::StyledPanel - - - Pan - - - Qt::AlignCenter - - - - - - - QFrame::StyledPanel - - - Volume - - - Qt::AlignCenter - - - - - - - - 32 - 32 - - - - PointingHandCursor - - - 1.000000000000000 - - - 0.100000000000000 - - - 0.200000000000000 - - - 270 - - - 6 - - - - - - - - - - - - Awl::VolKnob - Awl::Knob -
awl/volknob.h
-
- - Awl::Knob - QWidget -
awl/knob.h
-
- - Awl::FloatEntry - QLineEdit -
awl/floatentry.h
-
-
- - deicsOnzeTabWidget - presetLineEdit - feedbackSlider - LFOSyncCheckBox - PModSensSlider - LFOWaveComboBox - AModSensSlider - PModDepthSlider - AModDepthSlider - LFOSpeedSlider - LFODelaySlider - algorithmComboBox - LS1Slider - RS1Slider - OUT1Slider - Fix1CheckBox - AME1CheckBox - EBS1Slider - DET1Slider - KVS1Slider - WaveForm1ComboBox - EGS1ComboBox - LS2Slider - RS2Slider - OUT2Slider - AME2CheckBox - EBS2Slider - DET2Slider - KVS2Slider - WaveForm2ComboBox - EGS2ComboBox - LS3Slider - RS3Slider - OUT3Slider - AME3CheckBox - EBS3Slider - DET3Slider - KVS3Slider - WaveForm3ComboBox - EGS3ComboBox - LS4Slider - RS4Slider - OUT4Slider - AME4CheckBox - EBS4Slider - DET4Slider - KVS4Slider - WaveForm4ComboBox - EGS4ComboBox - subcategoryLineEdit - categoryLineEdit - lbankSpinBox - progSpinBox - feedbackSpinBox - PModSensSpinBox - AModSensSpinBox - PModDepthSpinBox - AModDepthSpinBox - LFOSpeedSpinBox - LFODelaySpinBox - CoarseRatio1SpinBox - FineRatio1SpinBox - Freq1SpinBox - LS1SpinBox - RS1SpinBox - OUT1SpinBox - EBS1SpinBox - KVS1SpinBox - DET1SpinBox - AR1SpinBox - D1R1SpinBox - D1L1SpinBox - D2R1SpinBox - RR1SpinBox - Fix2CheckBox - Freq2SpinBox - CoarseRatio2SpinBox - FineRatio2SpinBox - LS2SpinBox - RS2SpinBox - OUT2SpinBox - EBS2SpinBox - KVS2SpinBox - DET2SpinBox - AR2SpinBox - D1R2SpinBox - D1L2SpinBox - D2R2SpinBox - RR2SpinBox - Fix3CheckBox - CoarseRatio3SpinBox - FineRatio3SpinBox - Freq3SpinBox - AR3SpinBox - D1R3SpinBox - D1L3SpinBox - D2R3SpinBox - RR3SpinBox - LS3SpinBox - RS3SpinBox - OUT3SpinBox - EBS3SpinBox - KVS3SpinBox - DET3SpinBox - Fix4CheckBox - CoarseRatio4SpinBox - FineRatio4SpinBox - Freq4SpinBox - LS4SpinBox - RS4SpinBox - OUT4SpinBox - EBS4SpinBox - KVS4SpinBox - DET4SpinBox - AR4SpinBox - D1R4SpinBox - D1L4SpinBox - D2R4SpinBox - RR4SpinBox - - - - - feedbackSlider - valueChanged(int) - feedbackSpinBox - setValue(int) - - - 111 - 114 - - - 111 - 114 - - - - - feedbackSpinBox - valueChanged(int) - feedbackSlider - setValue(int) - - - 111 - 114 - - - 111 - 114 - - - - - PModSensSlider - valueChanged(int) - PModSensSpinBox - setValue(int) - - - 111 - 114 - - - 111 - 114 - - - - - PModSensSpinBox - valueChanged(int) - PModSensSlider - setValue(int) - - - 111 - 114 - - - 111 - 114 - - - - - AModSensSlider - valueChanged(int) - AModSensSpinBox - setValue(int) - - - 111 - 114 - - - 111 - 114 - - - - - AModSensSpinBox - valueChanged(int) - AModSensSlider - setValue(int) - - - 111 - 114 - - - 111 - 114 - - - - - PModDepthSpinBox - valueChanged(int) - PModDepthSlider - setValue(int) - - - 111 - 114 - - - 111 - 114 - - - - - AModDepthSpinBox - valueChanged(int) - AModDepthSlider - setValue(int) - - - 111 - 114 - - - 111 - 114 - - - - - LFOSpeedSlider - valueChanged(int) - LFOSpeedSpinBox - setValue(int) - - - 111 - 114 - - - 111 - 114 - - - - - LFOSpeedSpinBox - valueChanged(int) - LFOSpeedSlider - setValue(int) - - - 111 - 114 - - - 111 - 114 - - - - - LFODelaySlider - valueChanged(int) - LFODelaySpinBox - setValue(int) - - - 111 - 114 - - - 111 - 114 - - - - - LFODelaySpinBox - valueChanged(int) - LFODelaySlider - setValue(int) - - - 111 - 114 - - - 111 - 114 - - - - - PModDepthSlider - valueChanged(int) - PModDepthSpinBox - setValue(int) - - - 111 - 114 - - - 111 - 114 - - - - - Fix1CheckBox - toggled(bool) - Freq1SpinBox - setEnabled(bool) - - - 110 - 109 - - - 110 - 109 - - - - - Fix1CheckBox - toggled(bool) - FineRatio1SpinBox - setDisabled(bool) - - - 110 - 109 - - - 110 - 109 - - - - - Fix1CheckBox - toggled(bool) - CoarseRatio1SpinBox - setDisabled(bool) - - - 110 - 109 - - - 110 - 109 - - - - - OUT1Slider - valueChanged(int) - OUT1SpinBox - setValue(int) - - - 66 - 109 - - - 96 - 109 - - - - - OUT1SpinBox - valueChanged(int) - OUT1Slider - setValue(int) - - - 96 - 109 - - - 66 - 109 - - - - - LS1Slider - valueChanged(int) - LS1SpinBox - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - LS1SpinBox - valueChanged(int) - LS1Slider - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - RS1Slider - valueChanged(int) - RS1SpinBox - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - RS1SpinBox - valueChanged(int) - RS1Slider - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - DET1Slider - valueChanged(int) - DET1SpinBox - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - DET1SpinBox - valueChanged(int) - DET1Slider - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - EBS1Slider - valueChanged(int) - EBS1SpinBox - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - EBS1SpinBox - valueChanged(int) - EBS1Slider - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - KVS1Slider - valueChanged(int) - KVS1SpinBox - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - KVS1SpinBox - valueChanged(int) - KVS1Slider - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - Fix2CheckBox - toggled(bool) - Freq2SpinBox - setEnabled(bool) - - - 110 - 109 - - - 110 - 109 - - - - - Fix2CheckBox - toggled(bool) - FineRatio2SpinBox - setDisabled(bool) - - - 110 - 109 - - - 110 - 109 - - - - - Fix2CheckBox - toggled(bool) - CoarseRatio2SpinBox - setDisabled(bool) - - - 110 - 109 - - - 110 - 109 - - - - - OUT2SpinBox - valueChanged(int) - OUT2Slider - setValue(int) - - - 96 - 109 - - - 66 - 109 - - - - - LS2Slider - valueChanged(int) - LS2SpinBox - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - LS2SpinBox - valueChanged(int) - LS2Slider - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - RS2Slider - valueChanged(int) - RS2SpinBox - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - RS2SpinBox - valueChanged(int) - RS2Slider - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - DET2Slider - valueChanged(int) - DET2SpinBox - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - DET2SpinBox - valueChanged(int) - DET2Slider - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - EBS2SpinBox - valueChanged(int) - EBS2Slider - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - EBS2Slider - valueChanged(int) - EBS2SpinBox - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - KVS2Slider - valueChanged(int) - KVS2SpinBox - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - KVS2SpinBox - valueChanged(int) - KVS2Slider - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - Fix3CheckBox - toggled(bool) - Freq3SpinBox - setEnabled(bool) - - - 110 - 109 - - - 110 - 109 - - - - - Fix3CheckBox - toggled(bool) - FineRatio3SpinBox - setDisabled(bool) - - - 110 - 109 - - - 110 - 109 - - - - - Fix3CheckBox - toggled(bool) - CoarseRatio3SpinBox - setDisabled(bool) - - - 110 - 109 - - - 110 - 109 - - - - - OUT3Slider - valueChanged(int) - OUT3SpinBox - setValue(int) - - - 66 - 109 - - - 96 - 109 - - - - - OUT3SpinBox - valueChanged(int) - OUT3Slider - setValue(int) - - - 96 - 109 - - - 66 - 109 - - - - - LS3Slider - valueChanged(int) - LS3SpinBox - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - LS3SpinBox - valueChanged(int) - LS3Slider - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - RS3Slider - valueChanged(int) - RS3SpinBox - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - RS3SpinBox - valueChanged(int) - RS3Slider - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - DET3Slider - valueChanged(int) - DET3SpinBox - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - DET3SpinBox - valueChanged(int) - DET3Slider - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - EBS3Slider - valueChanged(int) - EBS3SpinBox - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - EBS3SpinBox - valueChanged(int) - EBS3Slider - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - KVS3Slider - valueChanged(int) - KVS3SpinBox - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - KVS3SpinBox - valueChanged(int) - KVS3Slider - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - Fix4CheckBox - toggled(bool) - Freq4SpinBox - setEnabled(bool) - - - 110 - 109 - - - 110 - 109 - - - - - Fix4CheckBox - toggled(bool) - FineRatio4SpinBox - setDisabled(bool) - - - 110 - 109 - - - 110 - 109 - - - - - Fix4CheckBox - toggled(bool) - CoarseRatio4SpinBox - setDisabled(bool) - - - 110 - 109 - - - 110 - 109 - - - - - OUT4Slider - valueChanged(int) - OUT4SpinBox - setValue(int) - - - 66 - 109 - - - 96 - 109 - - - - - OUT4SpinBox - valueChanged(int) - OUT4Slider - setValue(int) - - - 96 - 109 - - - 66 - 109 - - - - - LS4Slider - valueChanged(int) - LS4SpinBox - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - LS4SpinBox - valueChanged(int) - LS4Slider - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - RS4Slider - valueChanged(int) - RS4SpinBox - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - RS4SpinBox - valueChanged(int) - RS4Slider - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - DET4Slider - valueChanged(int) - DET4SpinBox - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - DET4SpinBox - valueChanged(int) - DET4Slider - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - EBS4Slider - valueChanged(int) - EBS4SpinBox - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - EBS4SpinBox - valueChanged(int) - EBS4Slider - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - KVS4Slider - valueChanged(int) - KVS4SpinBox - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - KVS4SpinBox - valueChanged(int) - KVS4Slider - setValue(int) - - - 110 - 109 - - - 110 - 109 - - - - - redSlider - valueChanged(int) - redSpinBox - setValue(int) - - - 111 - 114 - - - 111 - 114 - - - - - redSpinBox - valueChanged(int) - redSlider - setValue(int) - - - 111 - 114 - - - 111 - 114 - - - - - greenSlider - valueChanged(int) - greenSpinBox - setValue(int) - - - 111 - 114 - - - 111 - 114 - - - - - greenSpinBox - valueChanged(int) - greenSlider - setValue(int) - - - 111 - 114 - - - 111 - 114 - - - - - blueSlider - valueChanged(int) - blueSpinBox - setValue(int) - - - 111 - 114 - - - 111 - 114 - - - - - blueSpinBox - valueChanged(int) - blueSlider - setValue(int) - - - 111 - 114 - - - 111 - 114 - - - - - fcVolumeSlider - valueChanged(int) - fcVolumeSpinBox - setValue(int) - - - 285 - 155 - - - 494 - 158 - - - - - fcVolumeSpinBox - valueChanged(int) - fcVolumeSlider - setValue(int) - - - 494 - 158 - - - 285 - 155 - - - - - fcPitchSlider - valueChanged(int) - fcPitchSpinBox - setValue(int) - - - 285 - 180 - - - 494 - 177 - - - - - fcPitchSpinBox - valueChanged(int) - fcPitchSlider - setValue(int) - - - 494 - 177 - - - 285 - 180 - - - - - fcAmplitudeSpinBox - valueChanged(int) - fcAmplitudeSlider - setValue(int) - - - 494 - 216 - - - 285 - 219 - - - - - fcAmplitudeSlider - valueChanged(int) - fcAmplitudeSpinBox - setValue(int) - - - 285 - 219 - - - 494 - 216 - - - - - pitchBendRangeSlider - valueChanged(int) - pitchBendRangeSpinBox - setValue(int) - - - 486 - 483 - - - 538 - 486 - - - - - pitchBendRangeSpinBox - valueChanged(int) - pitchBendRangeSlider - setValue(int) - - - 538 - 486 - - - 486 - 483 - - - - - PortamentoTimeSlider - valueChanged(int) - PortamentoTimeSpinBox - setValue(int) - - - 293 - 483 - - - 345 - 486 - - - - - PortamentoTimeSpinBox - valueChanged(int) - PortamentoTimeSlider - setValue(int) - - - 345 - 486 - - - 293 - 483 - - - - - mwPitchSlider - valueChanged(int) - mwPitchSpinBox - setValue(int) - - - 224 - 168 - - - 539 - 171 - - - - - mwAmplitudeSpinBox - valueChanged(int) - mwAmplitudeSlider - setValue(int) - - - 539 - 223 - - - 224 - 220 - - - - - mwAmplitudeSlider - valueChanged(int) - mwAmplitudeSpinBox - setValue(int) - - - 224 - 220 - - - 539 - 223 - - - - - mwPitchSpinBox - valueChanged(int) - mwPitchSlider - setValue(int) - - - 539 - 171 - - - 224 - 168 - - - - - bcPitchSlider - valueChanged(int) - bcPitchSpinBox - setValue(int) - - - 248 - 147 - - - 539 - 150 - - - - - bcAmplitudeSlider - valueChanged(int) - bcAmplitudeSpinBox - setValue(int) - - - 248 - 178 - - - 539 - 181 - - - - - bcPitchBiasSlider - valueChanged(int) - bcPitchBiasSpinBox - setValue(int) - - - 248 - 209 - - - 539 - 212 - - - - - bcEgBiasSlider - valueChanged(int) - bcEgBiasSpinBox - setValue(int) - - - 248 - 240 - - - 539 - 243 - - - - - bcPitchSpinBox - valueChanged(int) - bcPitchSlider - setValue(int) - - - 539 - 150 - - - 248 - 147 - - - - - bcEgBiasSpinBox - valueChanged(int) - bcEgBiasSlider - setValue(int) - - - 539 - 243 - - - 248 - 240 - - - - - atPitchSlider - valueChanged(int) - atPitchSpinBox - setValue(int) - - - 248 - 147 - - - 539 - 150 - - - - - atAmplitudeSpinBox - valueChanged(int) - atAmplitudeSlider - setValue(int) - - - 539 - 181 - - - 248 - 178 - - - - - atAmplitudeSlider - valueChanged(int) - atAmplitudeSpinBox - setValue(int) - - - 248 - 178 - - - 539 - 181 - - - - - atPitchBiasSlider - valueChanged(int) - atPitchBiasSpinBox - setValue(int) - - - 248 - 209 - - - 539 - 212 - - - - - atPitchBiasSpinBox - valueChanged(int) - atPitchBiasSlider - setValue(int) - - - 539 - 212 - - - 248 - 209 - - - - - atEgBiasSlider - valueChanged(int) - atEgBiasSpinBox - setValue(int) - - - 248 - 240 - - - 539 - 243 - - - - - atPitchSpinBox - valueChanged(int) - atPitchSlider - setValue(int) - - - 539 - 150 - - - 248 - 147 - - - - - atEgBiasSpinBox - valueChanged(int) - atEgBiasSlider - setValue(int) - - - 539 - 243 - - - 248 - 240 - - - - - bcPitchSpinBox - valueChanged(int) - bcPitchSlider - setValue(int) - - - 539 - 150 - - - 248 - 147 - - - - - bcAmplitudeSpinBox - valueChanged(int) - bcAmplitudeSlider - setValue(int) - - - 539 - 181 - - - 248 - 178 - - - - - bcPitchBiasSpinBox - valueChanged(int) - bcPitchBiasSlider - setValue(int) - - - 539 - 212 - - - 248 - 209 - - - - - bcEgBiasSpinBox - valueChanged(int) - bcEgBiasSlider - setValue(int) - - - 539 - 243 - - - 248 - 240 - - - - - OUT2Slider - valueChanged(int) - OUT2SpinBox - setValue(int) - - - 66 - 109 - - - 96 - 109 - - - - - chChorusSlider - valueChanged(int) - chChorusSpinBox - setValue(int) - - - 487 - 149 - - - 539 - 152 - - - - - chChorusSpinBox - valueChanged(int) - chChorusSlider - setValue(int) - - - 539 - 152 - - - 487 - 149 - - - - - chReverbSlider - valueChanged(int) - chReverbSpinBox - setValue(int) - - - 487 - 149 - - - 539 - 152 - - - - - chReverbSpinBox - valueChanged(int) - chReverbSlider - setValue(int) - - - 539 - 152 - - - 487 - 149 - - - - - transposeSlider - valueChanged(int) - transposeSpinBox - setValue(int) - - - 111 - 114 - - - 111 - 114 - - - - - transposeSpinBox - valueChanged(int) - transposeSlider - setValue(int) - - - 111 - 114 - - - 111 - 114 - - - - - chDelaySlider - valueChanged(int) - chDelaySpinBox - setValue(int) - - - 351 - 319 - - - 403 - 322 - - - - - chDelaySpinBox - valueChanged(int) - chDelaySlider - setValue(int) - - - 403 - 322 - - - 351 - 319 - - - - - delayPanLFOFreqKnob - valueChanged(double,int) - delayPanLFOFreqFloatentry - setValue(double) - - - 477 - 308 - - - 498 - 308 - - - - - delayPanLFOFreqFloatentry - valueChanged(double,int) - delayPanLFOFreqKnob - setValue(double) - - - 497 - 319 - - - 477 - 326 - - - - - delayBPMKnob - valueChanged(double,int) - delayBPMFloatentry - setValue(double) - - - 84 - 389 - - - 104 - 393 - - - - - delayBPMFloatentry - valueChanged(double,int) - delayBPMKnob - setValue(double) - - - 121 - 404 - - - 78 - 409 - - - - - delayBeatRatioKnob - valueChanged(double,int) - delayBeatRatioFloatentry - setValue(double) - - - 212 - 386 - - - 252 - 392 - - - - - delayBeatRatioFloatentry - valueChanged(double,int) - delayBeatRatioKnob - setValue(double) - - - 271 - 398 - - - 228 - 411 - - - - - delayFeedbackKnob - valueChanged(double,int) - delayFeedbackFloatentry - setValue(double) - - - 347 - 388 - - - 368 - 393 - - - - - delayFeedbackFloatentry - valueChanged(double,int) - delayFeedbackKnob - setValue(double) - - - 379 - 405 - - - 352 - 409 - - - - - delayPanLFODepthKnob - valueChanged(double,int) - delayPanLFODepthFloatentry - setValue(double) - - - 464 - 387 - - - 507 - 396 - - - - - delayPanLFODepthFloatentry - valueChanged(double,int) - delayPanLFODepthKnob - setValue(double) - - - 518 - 407 - - - 471 - 409 - - - - -
diff --git a/muse/synti/deicsonze/deicsonzeplugin.cpp b/muse/synti/deicsonze/deicsonzeplugin.cpp deleted file mode 100644 index 14c45ab9..00000000 --- a/muse/synti/deicsonze/deicsonzeplugin.cpp +++ /dev/null @@ -1,499 +0,0 @@ -//=========================================================================== -// -// DeicsOnze an emulator of the YAMAHA DX11 synthesizer -// -// Version 0.5.5 -// -// -// -// -// Copyright (c) 2004-2006 Nil Geisweiller -// -// -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -// 02111-1307, USA or point your web browser to http://www.gnu.org. -//=========================================================================== - -#include "deicsonzeplugin.h" -#include "plugin.h" -#include "plugingui.h" -#include "ctrl.h" -#include "fastlog.h" -#include "muse/midi.h" -#include "awl/floatentry.h" -#include "awl/slider.h" -#include "awl/checkbox.h" - -using Awl::FloatEntry; -using Awl::Slider; -using Awl::CheckBox; - -class PluginDialog; - -void DeicsOnze::initPluginReverb(Plugin* pluginReverb) { - //init plugin - if(_pluginIReverb) delete(_pluginIReverb); - _pluginIReverb = new PluginI(NULL); - - _pluginIReverb->initPluginInstance(pluginReverb, 2); - - for(int i = 0; i < pluginReverb->parameter(); i++) { - Ctrl* c = new Ctrl(); - c->setCurVal((float)pluginReverb->defaultValue(i)); - _pluginIReverb->setControllerList(c); - //setReverbParam(i, pluginReverb->defaultValue(i)); - } - - //send build gui to the gui - char data; - data = SYSEX_BUILDGUIREVERB; - MidiEvent evSysex(0,ME_SYSEX,(const unsigned char*)&data, 1); - _gui->writeEvent(evSysex); -} - -void DeicsOnze::initPluginChorus(Plugin* pluginChorus) { - if(_pluginIChorus) delete(_pluginIChorus); - _pluginIChorus = new PluginI(NULL); - - _pluginIChorus->initPluginInstance(pluginChorus, 2); - - for(int i = 0; i < pluginChorus->parameter(); i++) { - Ctrl* c = new Ctrl(); - c->setCurVal((float)pluginChorus->defaultValue(i)); - _pluginIChorus->setControllerList(c); - //setChorusParam(i, pluginChorus->defaultValue(i)); -} - - //send build gui to the gui - char data; - data = SYSEX_BUILDGUICHORUS; - MidiEvent evSysex(0,ME_SYSEX,(const unsigned char*)&data, 1); - _gui->writeEvent(evSysex); -} - -void DeicsOnze::initPluginDelay(Plugin* pluginDelay) { - if(_pluginIDelay) delete(_pluginIDelay); - _pluginIDelay = new PluginI(NULL); - - _pluginIDelay->initPluginInstance(pluginDelay, 2); - - for(int i = 0; i < pluginDelay->parameter(); i++) { - Ctrl* c = new Ctrl(); - c->setCurVal((float)pluginDelay->defaultValue(i)); - _pluginIDelay->setControllerList(c); - //setChorusParam(i, pluginDelay->defaultValue(i)); - } - setDelayDryWet(1); - - float f; - char dataDelayBPM[sizeof(float)+1]; - dataDelayBPM[0] = SYSEX_DELAYBPM; - f = getDelayBPM(); - memcpy(&dataDelayBPM[1], &f, sizeof(float)); - MidiEvent evSysexDelayBPM(0,ME_SYSEX, - (const unsigned char*)dataDelayBPM, - sizeof(float)+1); - _gui->writeEvent(evSysexDelayBPM); - char dataDelayBeatRatio[sizeof(float)+1]; - dataDelayBeatRatio[0] = SYSEX_DELAYBEATRATIO; - f = getDelayBeatRatio(); - memcpy(&dataDelayBeatRatio[1], &f, sizeof(float)); - MidiEvent evSysexDelayBeatRatio(0,ME_SYSEX, - (const unsigned char*)dataDelayBeatRatio, - sizeof(float)+1); - _gui->writeEvent(evSysexDelayBeatRatio); - char dataDelayFeedback[sizeof(float)+1]; - dataDelayFeedback[0] = SYSEX_DELAYFEEDBACK; - f = getDelayFeedback(); - memcpy(&dataDelayFeedback[1], &f, sizeof(float)); - MidiEvent evSysexDelayFeedback(0,ME_SYSEX, - (const unsigned char*)dataDelayFeedback, - sizeof(float)+1); - _gui->writeEvent(evSysexDelayFeedback); - char dataDelayLFOFreq[sizeof(float)+1]; - dataDelayLFOFreq[0] = SYSEX_DELAYLFOFREQ; - f = getDelayLFOFreq(); - memcpy(&dataDelayLFOFreq[1], &f, sizeof(float)); - MidiEvent evSysexDelayLFOFreq(0,ME_SYSEX, - (const unsigned char*)dataDelayLFOFreq, - sizeof(float)+1); - _gui->writeEvent(evSysexDelayLFOFreq); - char dataDelayLFODepth[sizeof(float)+1]; - dataDelayLFODepth[0] = SYSEX_DELAYLFODEPTH; - f = getDelayLFODepth(); - memcpy(&dataDelayLFODepth, &f, sizeof(float)+1); - MidiEvent evSysexDelayLFODepth(0,ME_SYSEX, - (const unsigned char*)dataDelayLFODepth, - sizeof(float)+1); - _gui->writeEvent(evSysexDelayLFODepth); -} - -void DeicsOnze::setReverbParam(int index, double val) { - if(_pluginIReverb) _pluginIReverb->controller(index)->setCurVal((float)val); - else printf("Warning : no DeicsOnze reverb loaded\n"); -} -void DeicsOnze::setChorusParam(int index, double val) { - if(_pluginIChorus) _pluginIChorus->controller(index)->setCurVal((float)val); - else printf("Warning : no DeicsOnze chorus loaded\n"); -} - -double DeicsOnze::getReverbParam(int index) { - if(_pluginIReverb) return _pluginIReverb->controller(index)->curVal().f; - else { - return 0.0; - printf("Warning : no DeicsOnze reverb loaded\n"); - } -} - -double DeicsOnze::getChorusParam(int index) { - if(_pluginIChorus) return _pluginIChorus->controller(index)->curVal().f; - else { - return 0.0; - printf("Warning : no DeicsOnze chorus loaded\n"); - } -} - -void DeicsOnzeGui::addPluginCheckBox(int index, QString text, bool toggled, - QWidget* parent, QGridLayout* grid, - bool isReverb) { - CheckBox* cb = new CheckBox(parent); - cb->setId(index); - cb->setText(text); - cb->setChecked(toggled); - grid->addWidget(cb, index, 0); - //push on vectors - if(isReverb) { - _reverbSliderVector.push_back(NULL); - _reverbFloatEntryVector.push_back(NULL); - _reverbCheckBoxVector.push_back(cb); - } - else { - _chorusSliderVector.push_back(NULL); - _chorusFloatEntryVector.push_back(NULL); - _chorusCheckBoxVector.push_back(cb); - } - //connect slots - if(isReverb) { - connect(cb, SIGNAL(valueChanged(double, int)), - this, SLOT(setReverbCheckBox(double, int))); - } - else { - connect(cb, SIGNAL(valueChanged(double, int)), - this, SLOT(setChorusCheckBox(double, int))); - } -} - -void DeicsOnzeGui::addPluginIntSlider(int index, QString text, double min, - double max, double val, QWidget* parent, - QGridLayout* grid, bool isReverb) { - addPluginSlider(index, text, false, min, max, val, parent, grid, isReverb); -} - -void DeicsOnzeGui::addPluginSlider(int index, QString text, bool isLog, - double min, double max, double val, - QWidget* parent, QGridLayout* grid, - bool isReverb) { - QLabel* l = new QLabel(text, parent); - grid->addWidget(l, index, 0); - FloatEntry* f = new FloatEntry(parent); - f->setValue(val); - f->setMinValue(min); - f->setMaxValue(max); - f->setMaximumWidth(72); - grid->addWidget(f, index, 1); - Slider* s = new Slider(parent); - s->setId(index); - s->setLog(isLog); - s->setLogRange(min, max); - s->setValue(val); - s->setOrientation(Qt::Horizontal); - //s->setFixedHeight(h); - s->setLineStep((min-max)/100.0); - s->setPageStep((min-max)/10.0); - grid->addWidget(s, index, 2); - //push on vectors - if(isReverb) { - _reverbSliderVector.push_back(s); - _reverbFloatEntryVector.push_back(f); - _reverbCheckBoxVector.push_back(NULL); - } - else { - _chorusSliderVector.push_back(s); - _chorusFloatEntryVector.push_back(f); - _chorusCheckBoxVector.push_back(NULL); - } - //connect slots - if(isReverb) { - connect(f, SIGNAL(valueChanged(double, int)), - this, SLOT(setReverbFloatEntry(double, int))); - connect(s, SIGNAL(valueChanged(double, int)), - this, SLOT(setReverbSlider(double, int))); - } - else { - connect(f, SIGNAL(valueChanged(double, int)), - this, SLOT(setChorusFloatEntry(double, int))); - connect(s, SIGNAL(valueChanged(double, int)), - this, SLOT(setChorusSlider(double, int))); - } -} - -void DeicsOnzeGui::buildGuiReverb() { - PluginI* plugI = _deicsOnze->_pluginIReverb; - QString name = plugI->name(); - name.resize(name.size()-2); - updateLadspaReverbLineEdit(name); - //build super layout - if(parametersReverbGroupBox->layout()) - delete(parametersReverbGroupBox->layout()); - QGridLayout* superLayout = new QGridLayout(parametersReverbGroupBox); - parametersReverbGroupBox->setLayout(superLayout); - //build super widget - if(_reverbSuperWidget) delete(_reverbSuperWidget); - _reverbSuperWidget = new QWidget(parametersReverbGroupBox); - superLayout->addWidget(_reverbSuperWidget); - //build grid - QGridLayout* grid = new QGridLayout(_reverbSuperWidget); - _reverbSuperWidget->setLayout(grid); - grid->setSpacing(0); - //init vectors - if(!_reverbSliderVector.empty()) _reverbSliderVector.clear(); - if(!_reverbFloatEntryVector.empty()) _reverbFloatEntryVector.clear(); - if(!_reverbCheckBoxVector.empty()) _reverbCheckBoxVector.clear(); - //build sliders - for(int i = 0; i < plugI->plugin()->parameter(); i++) { - double min, max, val; - plugI->range(i, &min, &max); - val = _deicsOnze->getReverbParam(i); - if(plugI->isBool(i)) - addPluginCheckBox(i, plugI->getParameterName(i), val > 0.0, - _reverbSuperWidget, grid, true); - else if(plugI->isInt(i)) { - addPluginIntSlider(i, plugI->getParameterName(i), rint(min), rint(max), - rint(val), _reverbSuperWidget, grid, true); - } - else { - addPluginSlider(i, plugI->getParameterName(i), plugI->isLog(i), - min, max, val, _reverbSuperWidget, grid, true); - } - } - //update colors of the new sliders (and the whole gui actually) - setEditTextColor(reinterpret_cast(*etColor)); - setEditBackgroundColor(reinterpret_cast(*ebColor)); -} - -void DeicsOnzeGui::buildGuiChorus() { - PluginI* plugI = _deicsOnze->_pluginIChorus; - QString name = plugI->name(); - name.resize(name.size()-2); - updateLadspaChorusLineEdit(name); - //build super layout - if(parametersChorusGroupBox->layout()) - delete(parametersChorusGroupBox->layout()); - QGridLayout* superLayout = new QGridLayout(parametersChorusGroupBox); - parametersChorusGroupBox->setLayout(superLayout); - //build super widget - if(_chorusSuperWidget) delete(_chorusSuperWidget); - _chorusSuperWidget = new QWidget(parametersChorusGroupBox); - superLayout->addWidget(_chorusSuperWidget); - //build grid - QGridLayout* grid = new QGridLayout(_chorusSuperWidget); - _chorusSuperWidget->setLayout(grid); - grid->setSpacing(2); - //init vectors - if(!_chorusSliderVector.empty()) _chorusSliderVector.clear(); - if(!_chorusFloatEntryVector.empty()) _chorusFloatEntryVector.clear(); - if(!_chorusCheckBoxVector.empty()) _chorusCheckBoxVector.clear(); - //build sliders - for(int i = 0; i < plugI->plugin()->parameter(); i++) { - double min, max, val; - plugI->range(i, &min, &max); - val = _deicsOnze->getChorusParam(i); - if(plugI->isBool(i)) - addPluginCheckBox(i, plugI->getParameterName(i), val > 0.0, - _chorusSuperWidget, grid, false); - else if(plugI->isInt(i)) { - addPluginIntSlider(i, plugI->getParameterName(i), rint(min), rint(max), - rint(val), _chorusSuperWidget, grid, false); - } - else { - addPluginSlider(i, plugI->getParameterName(i), plugI->isLog(i), - min, max, val, _chorusSuperWidget, grid, false); - } - } - //update colors of the new sliders (and the whole gui actually) - setEditTextColor(reinterpret_cast(*etColor)); - setEditBackgroundColor(reinterpret_cast(*ebColor)); -} - -//setReverbCheckBox is used, by the way, to send the value -//of the parameter because it sends a double and does not -//change any thing -void DeicsOnzeGui::setReverbCheckBox(double v, int i) { - float f = (float)v; - unsigned char* message = new unsigned char[2+sizeof(float)]; - message[0]=SYSEX_REVERBPARAM; - if(i<256) { - message[1]=(unsigned char)i; - memcpy(&message[2], &f, sizeof(float)); - sendSysex(message, 2+sizeof(float)); - } - else printf("setReverbCheckBox Error : cannot send controller upper than 225\n"); -} - -//setChorusCheckBox is used, by the way, to send the value -//of the parameter because it sends a double and does not -//change any thing -void DeicsOnzeGui::setChorusCheckBox(double v, int i) { - float f = (float)v; - unsigned char* message = new unsigned char[2+sizeof(float)]; - message[0]=SYSEX_CHORUSPARAM; - if(i<256) { - message[1]=(unsigned char)i; - memcpy(&message[2], &f, sizeof(float)); - sendSysex(message, 2+sizeof(float)); - } - else printf("setChorusCheckBox Error : cannot send controller upper than 225\n"); -} - -void DeicsOnzeGui::setReverbFloatEntry(double v, int i) { - if(_deicsOnze->_pluginIReverb) { - if(_deicsOnze->_pluginIReverb->isInt(i)) v = rint(v); - updateReverbFloatEntry(v, i); - updateReverbSlider(v, i); - setReverbCheckBox(v, i); //because this send the SYSEX - } - else printf("Warning : no DeicsOnze reverb loaded\n"); -} -void DeicsOnzeGui::setReverbSlider(double v, int i) { - if(_deicsOnze->_pluginIReverb) { - if(_deicsOnze->_pluginIReverb->isInt(i)) v = rint(v); - updateReverbFloatEntry(v, i); - updateReverbSlider(v, i); - setReverbCheckBox(v, i); //because this send the SYSEX - } - else printf("Warning : no DeicsOnze reverb loaded\n"); -} -void DeicsOnzeGui::setChorusFloatEntry(double v, int i) { - if(_deicsOnze->_pluginIReverb) { - if(_deicsOnze->_pluginIChorus->isInt(i)) v = rint(v); - updateChorusFloatEntry(v, i); - updateChorusSlider(v, i); - setChorusCheckBox(v, i); //because this send the SYSEX - } - else printf("Warning : no DeicsOnze chorus loaded\n"); -} -void DeicsOnzeGui::setChorusSlider(double v, int i) { - if(_deicsOnze->_pluginIReverb) { - if(_deicsOnze->_pluginIChorus->isInt(i)) v = rint(v); - updateChorusSlider(v, i); - updateChorusFloatEntry(v, i); - setChorusCheckBox(v, i); //because this send the SYSEX - } - else printf("Warning : no DeicsOnze chorus loaded\n"); -} - -//updates -void DeicsOnzeGui::updateReverbSlider(double v, int i) { - if(i < (int)_reverbSliderVector.size() && _reverbSliderVector[i]) { - _reverbSliderVector[i]->blockSignals(true); - _reverbSliderVector[i]->setValue(v); - _reverbSliderVector[i]->blockSignals(false); - } -} -void DeicsOnzeGui::updateReverbFloatEntry(double v, int i) { - if(i < (int)_reverbFloatEntryVector.size() && _reverbFloatEntryVector[i]) { - _reverbFloatEntryVector[i]->blockSignals(true); - _reverbFloatEntryVector[i]->setValue(v); - _reverbFloatEntryVector[i]->blockSignals(false); - } -} -void DeicsOnzeGui::updateChorusSlider(double v, int i) { - if(i < (int)_reverbSliderVector.size() && _reverbSliderVector[i]) { - _chorusSliderVector[i]->blockSignals(true); - _chorusSliderVector[i]->setValue(v); - _chorusSliderVector[i]->blockSignals(false); - } -} -void DeicsOnzeGui::updateChorusFloatEntry(double v, int i) { - if(i < (int)_chorusFloatEntryVector.size() && _chorusFloatEntryVector[i]) { - _chorusFloatEntryVector[i]->blockSignals(true); - _chorusFloatEntryVector[i]->setValue(v); - _chorusFloatEntryVector[i]->blockSignals(false); - } -} - -//------------------------------------------------------------- -// set Delay -//------------------------------------------------------------- -void DeicsOnze::setDelayBPM(float val) { - if(_pluginIDelay) _pluginIDelay->controller(0)->setCurVal(val); - else printf("Warning : no DeicsOnze delay loaded\n"); -} -void DeicsOnze::setDelayBeatRatio(float val) { - if(_pluginIDelay) _pluginIDelay->controller(1)->setCurVal(val); - else printf("Warning : no DeicsOnze delay loaded\n"); -} -float DeicsOnze::getDelayBPM() { - if(_pluginIDelay) return _pluginIDelay->controller(0)->curVal().f; - else { - printf("Warning : no DeicsOnze delay loaded\n"); - return 0.0; - } -} -float DeicsOnze::getDelayBeatRatio() { - if(_pluginIDelay) return _pluginIDelay->controller(1)->curVal().f; - else { - printf("Warning : no DeicsOnze delay loaded\n"); - return 0.0; - } -} -void DeicsOnze::setDelayFeedback(float val) { - if(_pluginIDelay) return _pluginIDelay->controller(2)->setCurVal(val); - else printf("Warning : no DeicsOnze delay loaded\n"); -} -float DeicsOnze::getDelayFeedback() { - if(_pluginIDelay) return _pluginIDelay->controller(2)->curVal().f; - else { - printf("Warning : no DeicsOnze delay loaded\n"); - return 0.0; - } -} -void DeicsOnze::setDelayLFOFreq(float val) { - if(_pluginIDelay) _pluginIDelay->controller(3)->setCurVal(val); - else printf("Warning : no DeicsOnze delay loaded\n"); -} -float DeicsOnze::getDelayLFOFreq() { - if(_pluginIDelay) return _pluginIDelay->controller(3)->curVal().f; - else { - printf("Warning : no DeicsOnze delay loaded\n"); - return 0.0; - } -} -void DeicsOnze::setDelayLFODepth(float val) { - if(_pluginIDelay) _pluginIDelay->controller(4)->setCurVal(val); - else printf("Warning : no DeicsOnze delay loaded\n"); -} -float DeicsOnze::getDelayLFODepth() { - if(_pluginIDelay) return _pluginIDelay->controller(4)->curVal().f; - else { - printf("Warning : no DeicsOnze delay loaded\n"); - return 0.0; - } -} -void DeicsOnze::setDelayDryWet(float val) { - if(_pluginIDelay) _pluginIDelay->controller(5)->setCurVal(val); - else printf("Warning : no DeicsOnze delay loaded\n"); -} diff --git a/muse/synti/deicsonze/deicsonzeplugin.h b/muse/synti/deicsonze/deicsonzeplugin.h deleted file mode 100644 index d9527e23..00000000 --- a/muse/synti/deicsonze/deicsonzeplugin.h +++ /dev/null @@ -1,40 +0,0 @@ -//=========================================================================== -// -// DeicsOnze an emulator of the YAMAHA DX11 synthesizer -// -// Version 0.5.5 -// -// -// -// -// Copyright (c) 2004-2006 Nil Geisweiller -// -// -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -// 02111-1307, USA or point your web browser to http://www.gnu.org. -//=========================================================================== - -#ifndef __DEICSONZEPLUGIN_H -#define __DEICSONZEPLUGIN_H - -#include "deicsonze.h" -#include "deicsonzegui.h" -#include "plugins/pandelay/pandelaymodel.h" - -class DeicsOnze; -class DeicsOnzeGui; - -#endif diff --git a/muse/synti/deicsonze/deicsonzepreset.cpp b/muse/synti/deicsonze/deicsonzepreset.cpp deleted file mode 100644 index ef114014..00000000 --- a/muse/synti/deicsonze/deicsonzepreset.cpp +++ /dev/null @@ -1,1194 +0,0 @@ -//=========================================================================== -// -// DeicsOnze an emulator of the YAMAHA DX11 synthesizer -// -// Version 0.5.5 -// -// deicsonzepreset.cpp -// -// -// Copyright (c) 2004-2006 Nil Geisweiller -// -// -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -// 02111-1307, USA or point your web browser to http://www.gnu.org. -//=========================================================================== - -#include "deicsonzepreset.h" -#include -#include - -//----------------------------------------------------------- -// Constructor destructor -//----------------------------------------------------------- -Preset::Preset() {_subcategory=NULL;_isUsed=false;initPreset();} -Preset::Preset(Subcategory* sub) { - _subcategory=sub; - _isUsed=false; - initPreset(); - if(sub) sub->_presetVector.push_back(this); -} -Preset::Preset(Subcategory* sub, int pr) { - _subcategory=sub; - _isUsed=false; - initPreset(); - prog=pr; - if(sub) sub->_presetVector.push_back(this); -} -Preset::~Preset() { - if(_subcategory) { - std::vector::iterator iB=_subcategory->_presetVector.begin(); - std::vector::iterator iE=_subcategory->_presetVector.end(); - std::vector::iterator iP=std::find(iB, iE, this); - if(iP!=iE) _subcategory->_presetVector.erase(iP); - else printf("Error : preset %s not found\n", name.c_str()); - } -} -//---------------------------------------------------------- -// setIsUsed(bool b) -// set the flag _isUsed and transmit in the parents -//---------------------------------------------------------- -void Preset::setIsUsed(bool b) { - if(!_isUsed) { - _isUsed=b; - if(_subcategory) { - _subcategory->_isUsed=b; - if(_subcategory->_category) { - _subcategory->_category->_isUsed=b; - } - } - } -} -//---------------------------------------------------------- -// getHBankLBankProg -// return the hbank, lbank and prog of the preset -// warning : if there is not subcategory of category -// the value l or h are let unchanged -//---------------------------------------------------------- -void Preset::getHBankLBankProg(int* h, int* l, int* p) { - *p = prog; - if(_subcategory) { - *l = _subcategory->_lbank; - if(_subcategory->_category) *h = _subcategory->_category->_hbank; - } -} -//---------------------------------------------------------- -// linkSubcategory -// links the preset to a subcategory parent and erase itself -// from the last subcategory if not NULL -//---------------------------------------------------------- -void Preset::linkSubcategory(Subcategory* sub) { - if(_subcategory) { - std::vector pv=_subcategory->_presetVector; - std::vector::iterator iP=find(pv.begin(),pv.end(),this); - if(iP!=pv.end()) pv.erase(iP); - else printf("Error linkSubcategory: preset %s not found\n", - name.c_str()); - } - _subcategory=sub; - if(sub) sub->_presetVector.push_back(this); -} -//---------------------------------------------------------- -// linkCategory -// links the subcategory to a category parent and erase itself -// from the last category if not NULL -//---------------------------------------------------------- -void Subcategory::linkCategory(Category* cat) { - if(_category) { - std::vector sv=_category->_subcategoryVector; - std::vector::iterator iS=find(sv.begin(),sv.end(),this); - if(iS!=sv.end()) sv.erase(iS); - else printf("Error linkCategory: preset %s not found\n", - _subcategoryName.c_str()); - } - _category=cat; - if(cat) cat->_subcategoryVector.push_back(this); -} - - -//---------------------------------------------------------- -// linkSet -// links the category to a set parent (there is always only one set) -//---------------------------------------------------------- -void Category::linkSet(Set* s) { - _set=s; - if(s) s->_categoryVector.push_back(this); -} - -//---------------------------------------------------------- -// Subcategory constructor and destruction -//---------------------------------------------------------- -Subcategory::Subcategory() {_category=NULL;} -Subcategory::Subcategory(Category* cat) { - _category=cat; - _isUsed=false; - if(cat) cat->_subcategoryVector.push_back(this); -} -Subcategory::Subcategory(const std::string name) { - _category=NULL; - _isUsed=false; - _subcategoryName=name; -} -Subcategory::Subcategory(Category* cat, const std::string name, int lbank) { - _category=cat; - _isUsed=false; - _subcategoryName=name; - _lbank=lbank; - if(cat) cat->_subcategoryVector.push_back(this); -} -Subcategory::~Subcategory() { - while(!_presetVector.empty()) delete(*_presetVector.begin()); - if(_category) { - std::vector::iterator - iB=_category->_subcategoryVector.begin(); - std::vector::iterator - iE=_category->_subcategoryVector.end(); - std::vector::iterator iS=std::find(iB, iE, this); - if(iS!=iE) _category->_subcategoryVector.erase(iS); - else printf("Error : subcategory %s not found\n", - _subcategoryName.c_str()); - } -} - -//-------------------------------------------------------- -// Category constructor destructor -//-------------------------------------------------------- -Category::Category() {_set=NULL;_isUsed=false;} -Category::Category(Set* s) { - _set=s; - _isUsed=false; - if(s) s->_categoryVector.push_back(this); -} -Category::Category(Set* s,const std::string name, int hbank) { - _set=s; - _isUsed=false; - _categoryName=name; - _hbank=hbank; - if(s) s->_categoryVector.push_back(this); -} -Category::~Category() { - while(!_subcategoryVector.empty()) delete(*_subcategoryVector.begin()); - if(_set) { - std::vector::iterator iB=_set->_categoryVector.begin(); - std::vector::iterator iE=_set->_categoryVector.end(); - std::vector::iterator iC=std::find(iB, iE, this); - if(iC!=iE) _set->_categoryVector.erase(iC); - else printf("Error : category %s not found\n", _categoryName.c_str()); - } -} - -//--------------------------------------------------------- -// initPreset -// put the preset in the initial state as defined by YAMAHA -//--------------------------------------------------------- -void Preset::initPreset() { - //algorithm - algorithm=FIRST; - //feedeback - feedback=0; - //lfo - lfo.wave=TRIANGL; - lfo.speed=35; - lfo.delay=0; - lfo.pModDepth=0; - lfo.aModDepth=0; - lfo.sync=false; - //sensitivity - sensitivity.pitch=6; - sensitivity.amplitude=0; - sensitivity.ampOn[0]=false; - sensitivity.ampOn[1]=false; - sensitivity.ampOn[2]=false; - sensitivity.ampOn[3]=false; - sensitivity.egBias[0]=0; - sensitivity.egBias[1]=0; - sensitivity.egBias[2]=0; - sensitivity.egBias[3]=0; - sensitivity.keyVelocity[0]=0; - sensitivity.keyVelocity[1]=0; - sensitivity.keyVelocity[2]=0; - sensitivity.keyVelocity[3]=0; - //frequency - frequency[0].ratio=1.0; - frequency[1].ratio=1.0; - frequency[2].ratio=1.0; - frequency[3].ratio=1.0; - frequency[0].isFix=false; - frequency[1].isFix=false; - frequency[2].isFix=false; - frequency[3].isFix=false; - frequency[0].freq=255.0; - frequency[1].freq=255.0; - frequency[2].freq=255.0; - frequency[3].freq=255.0; - //oscWave - oscWave[0]=W1; - oscWave[1]=W1; - oscWave[2]=W1; - oscWave[3]=W1; - //detune - detune[0]=0; - detune[1]=0; - detune[2]=0; - detune[3]=0; - //eg - eg[0].ar=31; - eg[1].ar=31; - eg[2].ar=31; - eg[3].ar=31; - eg[0].d1r=31; - eg[1].d1r=31; - eg[2].d1r=31; - eg[3].d1r=31; - eg[0].d1l=15; - eg[1].d1l=15; - eg[2].d1l=15; - eg[3].d1l=15; - eg[0].d2r=0; - eg[1].d2r=0; - eg[2].d2r=0; - eg[3].d2r=0; - eg[0].rr=15; - eg[1].rr=15; - eg[2].rr=15; - eg[3].rr=15; - eg[0].egShift=VOF; - eg[1].egShift=VOF; - eg[2].egShift=VOF; - eg[3].egShift=VOF; - //pitchEg - pitchEg.pr1=99; - pitchEg.pr2=99; - pitchEg.pr3=99; - pitchEg.pl1=50; - pitchEg.pl2=50; - pitchEg.pl3=50; - //outLevel - outLevel[0]=90; - outLevel[1]=0; - outLevel[2]=0; - outLevel[3]=0; - //scaling - scaling.rate[0]=0; - scaling.rate[1]=0; - scaling.rate[2]=0; - scaling.rate[3]=0; - scaling.level[0]=0; - scaling.level[1]=0; - scaling.level[2]=0; - scaling.level[3]=0; - //function - function.transpose=0; - function.mode=POLY; - function.pBendRange=4; - function.portamento=FULL; - function.portamentoTime=0; - function.fcVolume=40; - function.fcPitch=0; - function.fcAmplitude=0; - function.mwPitch=50; - function.mwAmplitude=0; - function.bcPitch=0; - function.bcAmplitude=0; - function.bcPitchBias=0; - function.bcEgBias=0; - function.atPitch=0; - function.atAmplitude=0; - function.atPitchBias=0; - function.atEgBias=0; - function.reverbRate=0; - //globalDetune=0; - //Name - name="INITVOICE"; -} -//--------------------------------------------------------- -// Preset::merge -// copy the preset -//--------------------------------------------------------- -void Preset::merge(Preset* p) { - if(p) { - //algorithm - algorithm=p->algorithm; - //feedeback - feedback=p->feedback; - //lfo - lfo.wave=p->lfo.wave; - lfo.speed=p->lfo.speed; - lfo.delay=p->lfo.delay; - lfo.pModDepth=p->lfo.pModDepth; - lfo.aModDepth=p->lfo.aModDepth; - lfo.sync=p->lfo.sync; - //sensitivity - sensitivity.pitch=p->sensitivity.pitch; - sensitivity.amplitude=p->sensitivity.amplitude; - for(int k=0; ksensitivity.ampOn[k]; - sensitivity.egBias[k]=p->sensitivity.egBias[k]; - sensitivity.keyVelocity[k]=p->sensitivity.keyVelocity[k]; - //frequency - frequency[k].ratio=p->frequency[k].ratio; - frequency[k].isFix=p->frequency[k].isFix; - frequency[k].freq=p->frequency[k].freq; - //oscWave - oscWave[k]=p->oscWave[k]; - //detune - detune[k]=p->detune[k]; - //eg - eg[k].ar=p->eg[k].ar; - eg[k].d1r=p->eg[k].d1r; - eg[k].d1l=p->eg[k].d1l; - eg[k].d2r=p->eg[k].d2r; - eg[k].rr=p->eg[k].rr; - eg[k].egShift=p->eg[k].egShift; - //outLevel - outLevel[k]=p->outLevel[k]; - //scaling - scaling.rate[k]=p->scaling.rate[k]; - scaling.level[k]=p->scaling.level[k]; - } - //pitchEg - pitchEg.pr1=p->pitchEg.pr1; - pitchEg.pr2=p->pitchEg.pr2; - pitchEg.pr3=p->pitchEg.pr3; - pitchEg.pl1=p->pitchEg.pl1; - pitchEg.pl2=p->pitchEg.pl2; - pitchEg.pl3=p->pitchEg.pl3; - //function - function.transpose=p->function.transpose; - function.mode=p->function.mode; - function.pBendRange=p->function.pBendRange; - function.portamento=p->function.portamento; - function.portamentoTime=p->function.portamentoTime; - function.fcVolume=p->function.fcVolume; - function.fcPitch=p->function.fcPitch; - function.fcAmplitude=p->function.fcAmplitude; - function.mwPitch=p->function.mwPitch; - function.mwAmplitude=p->function.mwAmplitude; - function.bcPitch=p->function.bcPitch; - function.bcAmplitude=p->function.bcAmplitude; - function.bcPitchBias=p->function.bcPitchBias; - function.bcEgBias=p->function.bcEgBias; - function.atPitch=p->function.atPitch; - function.atAmplitude=p->function.atAmplitude; - function.atPitchBias=p->function.atPitchBias; - function.atEgBias=p->function.atEgBias; - function.reverbRate=p->function.reverbRate; - //globalDetune=p->globalDetune; - //Name - name=p->name; - } -} -//--------------------------------------------------------- -// findPreset -// return the first preset corresponding of hbank, lbank, prog -//--------------------------------------------------------- -Preset* Subcategory::findPreset(int prog) { - std::vector::iterator pvi; - for(pvi=_presetVector.begin(); pvi!=_presetVector.end(); pvi++) { - if((*pvi)->prog==prog) return(*pvi); - } - return NULL; -} -Preset* Category::findPreset(int lbank, int prog) { - Subcategory* s=findSubcategory(lbank); - if(s) { - Preset* p=s->findPreset(prog); - if(p) return(p); - } - return(NULL); -} -Preset* Set::findPreset(int hbank, int lbank, int prog) { - Category* c=findCategory(hbank); - if(c) { - Preset* p=c->findPreset(lbank, prog); - if(p) return(p); - } - return NULL; -} - -//--------------------------------------------------------- -// isFreeHBank, firstFreeHBank -1 otherwise -//--------------------------------------------------------- -bool Set::isFreeHBank(int hbank) { - if(findCategory(hbank)) return(false); - else return(true); -} -int Set::firstFreeHBank() { - for(int hbank=0; hbank<128; hbank++) if(isFreeHBank(hbank)) return(hbank); - return(-1); -} -//-------------------------------------------------------------- -// Set::merge -//-------------------------------------------------------------- -void Set::merge(Category* c) { - if(isFreeHBank(c->_hbank)) c->linkSet(this); - else { - Category* cFromSet=findCategory(c->_hbank); - cFromSet->_categoryName=c->_categoryName; - for(std::vector::iterator - i=c->_subcategoryVector.begin(); - i!=c->_subcategoryVector.end(); i++) cFromSet->merge(*i); - //delete(c); - } -} - -bool Category::isFreeLBank(int lbank) { - if(findSubcategory(lbank)) return(false); - else return(true); -} -int Category::firstFreeLBank() { - for(int lbank=0; lbank<128; lbank++) if(isFreeLBank(lbank)) return(lbank); - return(-1); -} -//-------------------------------------------------------------- -// Category::merge -//-------------------------------------------------------------- -void Category::merge(Subcategory* s) { - if(isFreeLBank(s->_lbank)) s->linkCategory(this); - else { - Subcategory* sFromCat=findSubcategory(s->_lbank); - sFromCat->_subcategoryName=s->_subcategoryName; - for(std::vector::iterator - i=s->_presetVector.begin(); - i!=s->_presetVector.end(); i++) sFromCat->merge(*i); - //delete(s); - } -} -//--------------------------------------------------------- -// Category::unlink -// unlink the subcategories, so don't delete them when delete -//--------------------------------------------------------- -void Category::unlink() { - while(!_subcategoryVector.empty()) - _subcategoryVector.erase(_subcategoryVector.begin()); -} - -bool Subcategory::isFreeProg(int pr) { - if(findPreset(pr)) return(false); - else return(true); -} -int Subcategory::firstFreeProg() { - for(int pr=0; pr<128; pr++) if(isFreeProg(pr)) return(pr); - return(-1); -} -//--------------------------------------------------------- -// Subcategory::unlink -// unlink the presets, so don't delete them when delete -//--------------------------------------------------------- -void Subcategory::unlink() { - while(!_presetVector.empty()) _presetVector.erase(_presetVector.begin()); -} - -//--------------------------------------------------------- -// findSubcategory -// take hbank and lbank and return the subcategory corresponding, -// NULL if doesn't exist -//--------------------------------------------------------- -Subcategory* Set::findSubcategory(int hbank, int lbank) { - Category* c = findCategory(hbank); - Subcategory* s; - if(c) { - s = c->findSubcategory(lbank); - return s; - } - else return NULL; -} - -//--------------------------------------------------------- -// findCategory -// takes hbank a category and return the first category, -// NULL if doesn't exist -//--------------------------------------------------------- -Category* Set::findCategory(int hbank) { - std::vector::iterator cvi; - for(cvi=_categoryVector.begin(); cvi!=_categoryVector.end(); cvi++) - if((*cvi)->_hbank==hbank) return(*cvi); - return(NULL); -} -//--------------------------------------------------------- -// findSubcategory -// takes lbank a subcategory and return the subcategory -// NULL if doesn't exist -//--------------------------------------------------------- -Subcategory* Category::findSubcategory(int lbank) { - std::vector::iterator svi; - for(svi=_subcategoryVector.begin(); svi!=_subcategoryVector.end(); svi++) - if((*svi)->_lbank==lbank) return(*svi); - return(NULL); -} -//-------------------------------------------------------------- -// Subcategory::merge -//-------------------------------------------------------------- -void Subcategory::merge(Preset* p) { - if(isFreeProg(p->prog)) p->linkSubcategory(this); - else { - Preset* pFromSub=findPreset(p->prog); - pFromSub->merge(p); - } -} - -//--------------------------------------------------------- -// readSet -//--------------------------------------------------------- -void Set::readSet(QDomNode setNode) { - while(!setNode.isNull()) { - QDomElement setEl = setNode.toElement(); - if (setEl.isNull()) - continue; - if (setEl.tagName() == "setName") - _setName=setEl.text().toAscii().data(); - if (setEl.tagName() == "deicsOnzeCategory") { - //load category - QString version = setEl.attribute(QString("version")); - if (version == "1.0") { - Category* lCategory = new Category(); - lCategory->readCategory(setNode.firstChild()); - //printf("Ready to merge!\n"); - merge(lCategory); - } - } - setNode = setNode.nextSibling(); - } -} - -//--------------------------------------------------------- -// writeSet -//--------------------------------------------------------- -void Set::writeSet(AL::Xml* xml, bool onlyUsed) { - xml->stag("deicsOnzeSet version=\"1.0\""); - xml->tag("setName", QString(_setName.c_str())); - for(std::vector::iterator i=_categoryVector.begin(); - i!=_categoryVector.end(); i++) (*i)->writeCategory(xml, onlyUsed); - xml->etag("deicsOnzeSet"); -} - -//--------------------------------------------------------- -// readCategory -//--------------------------------------------------------- -void Category::readCategory(QDomNode catNode) { - while(!catNode.isNull()) { - QDomElement catEl = catNode.toElement(); - if (catEl.isNull()) - continue; - if (catEl.tagName() == "categoryName") - _categoryName=catEl.text().toAscii().data(); - if (catEl.tagName() == "hbank") - _hbank=catEl.text().toInt(); - if (catEl.tagName() == "deicsOnzeSubcategory") { - //load Subcategory - QString version = catEl.attribute(QString("version")); - if (version == "1.0") { - Subcategory* lSubcategory = new Subcategory(this); - lSubcategory->readSubcategory(catNode.firstChild()); - } - } - catNode = catNode.nextSibling(); - } -} - -//--------------------------------------------------------- -// writeCategory -//--------------------------------------------------------- -void Category::writeCategory(AL::Xml* xml, bool onlyUsed) { - if((!onlyUsed || _isUsed)) { - xml->stag("deicsOnzeCategory version=\"1.0\""); - xml->tag("categoryName", QString(_categoryName.c_str())); - xml->tag("hbank", _hbank); - for(std::vector::iterator i=_subcategoryVector.begin(); - i!=_subcategoryVector.end(); i++) - (*i)->writeSubcategory(xml, onlyUsed); - xml->etag("deicsOnzeCategory"); - } -} - -//--------------------------------------------------------- -// readSubcategory -//--------------------------------------------------------- -void Subcategory::readSubcategory(QDomNode subNode) { - while(!subNode.isNull()) { - QDomElement subEl = subNode.toElement(); - if (subEl.isNull()) - continue; - if (subEl.tagName() == "subcategoryName") - _subcategoryName=subEl.text().toAscii().data(); - if (subEl.tagName() == "lbank") - _lbank=subEl.text().toInt(); - if (subEl.tagName() == "deicsOnzePreset") { - //load preset - QString version = subEl.attribute(QString("version")); - if (version == "1.0") { - Preset* lPreset = new Preset(this); - lPreset->readPreset(subNode.firstChild()); - } - } - subNode = subNode.nextSibling(); - } -} - -//--------------------------------------------------------- -// writeSubcategory -//--------------------------------------------------------- -void Subcategory::writeSubcategory(AL::Xml* xml, bool onlyUsed) { - if((!onlyUsed || _isUsed)) { - xml->stag("deicsOnzeSubcategory version=\"1.0\""); - xml->tag("subcategoryName", QString(_subcategoryName.c_str())); - xml->tag("lbank", _lbank); - for(std::vector::iterator i=_presetVector.begin(); - i!=_presetVector.end(); i++) (*i)->writePreset(xml, onlyUsed); - xml->etag("deicsOnzeSubcategory"); - } -} - -//--------------------------------------------------------- -// readPreset -//--------------------------------------------------------- -void Preset::readPreset(QDomNode presetNode) { - while(!presetNode.isNull()) { - QDomElement presetEl = presetNode.toElement(); - if (presetEl.isNull()) - continue; - //algorithm - if(presetEl.tagName()==ALGSTR) - algorithm=(presetEl.text()=="FIRST"? FIRST: - (presetEl.text()=="SECOND"? SECOND: - (presetEl.text()=="THIRD"? THIRD: - (presetEl.text()=="FOURTH"? FOURTH: - (presetEl.text()=="FIFTH"? FIFTH: - (presetEl.text()=="SIXTH"? SIXTH: - (presetEl.text()=="SEVENTH"? SEVENTH:EIGHTH))))))); - //feedback - else if(presetEl.tagName()==FEEDBACKSTR) - feedback=presetEl.text().toInt(); - //quick edit - //else if(presetEl.tagName()==FINEBRIGHTNESSSTR) - // brightness=presetEl.text().toInt(); - //else if(presetEl.tagName()==MODULATIONSTR) - // modulation=(unsigned char)presetEl.text().toInt(); - //else if(presetEl.tagName()==GLOBALDETUNESTR) - // globalDetune=presetEl.text().toInt(); - //else if(presetEl.tagName()==ATTACKSTR) - // attack=presetEl.text().toInt(); - //else if(presetEl.tagName()==RELEASESTR) - // release=presetEl.text().toInt(); - //lfo - else if(presetEl.tagName()=="lfo") { - QDomNode lfoNode = presetNode.firstChild(); - while(!lfoNode.isNull()) { - QDomElement lfoEl = lfoNode.toElement(); - if (lfoEl.isNull()) - continue; - if(lfoEl.tagName()==WAVESTR) - lfo.wave=(lfoEl.text()=="SAWUP"? SAWUP: - (lfoEl.text()=="SQUARE"? SQUARE: - (lfoEl.text()=="TRIANGL"? TRIANGL:SHOLD))); - else if(lfoEl.tagName()==SPEEDSTR) - lfo.speed=lfoEl.text().toInt(); - else if(lfoEl.tagName()==DELAYSTR) - lfo.delay=lfoEl.text().toInt(); - else if(lfoEl.tagName()==PMODDEPTHSTR) - lfo.pModDepth=lfoEl.text().toInt(); - else if(lfoEl.tagName()==AMODDEPTHSTR) - lfo.aModDepth=lfoEl.text().toInt(); - else if(lfoEl.tagName()==SYNCSTR) - lfo.sync=(lfoEl.text()=="on"? true:false); - lfoNode = lfoNode.nextSibling(); - } - } - //sensitivity - else if(presetEl.tagName()=="sensitivity") { - QDomNode sensitivityNode = presetNode.firstChild(); - while(!sensitivityNode.isNull()) { - QDomElement sensitivityEl = sensitivityNode.toElement(); - if (sensitivityEl.isNull()) - continue; - QString st=sensitivityEl.tagName(); - if(st==PMODSENSSTR) - sensitivity.pitch=sensitivityEl.text().toInt(); - else if(st==AMSSTR) - sensitivity.amplitude=sensitivityEl.text().toInt(); - else if(st.contains(AMESTR, Qt::CaseSensitive)) { - int op = (st.remove(AMESTR, Qt::CaseSensitive)).toInt()-1; - sensitivity.ampOn[op]=(sensitivityEl.text()=="on"? true:false); - } - else if(st.contains(EBSSTR, Qt::CaseSensitive)) { - int op = (st.remove(EBSSTR, Qt::CaseSensitive)).toInt()-1; - sensitivity.egBias[op]=sensitivityEl.text().toInt(); - } - else if(st.contains(KVSSTR, Qt::CaseSensitive)) { - int op = (st.remove(KVSSTR, Qt::CaseSensitive)).toInt()-1; - sensitivity.keyVelocity[op]=sensitivityEl.text().toInt(); - } - sensitivityNode =sensitivityNode.nextSibling(); - } - } - //frequency - else if(presetEl.tagName()=="frequency") { - QDomNode frequencyNode = presetNode.firstChild(); - while(!frequencyNode.isNull()) { - QDomElement frequencyEl = frequencyNode.toElement(); - if (frequencyEl.isNull()) - continue; - QString ft = frequencyEl.tagName(); - if(ft.contains(RATIOSTR, Qt::CaseSensitive)) { - int op = (ft.remove(RATIOSTR, Qt::CaseSensitive)).toInt()-1; - frequency[op].ratio=frequencyEl.text().toDouble(); - } - else if(ft.contains(FIXSTR, Qt::CaseSensitive)) { - int op = (ft.remove(FIXSTR, Qt::CaseSensitive)).toInt()-1; - frequency[op].isFix=(frequencyEl.text()=="yes"?true:false); - } - else if(ft.contains(FIXRANGESTR, Qt::CaseSensitive)) { - int op= (ft.remove(FIXRANGESTR, Qt::CaseSensitive)).toInt()-1; - frequency[op].freq=frequencyEl.text().toDouble(); - } - frequencyNode =frequencyNode.nextSibling(); - } - } - //oscWave - else if(presetEl.tagName().contains(OSWSTR, Qt::CaseSensitive)) { - int op=(presetEl.tagName().remove(OSWSTR, Qt::CaseSensitive)).toInt()-1; - oscWave[op]=(presetEl.text()=="W1"? W1: - (presetEl.text()=="W2"?W2: - (presetEl.text()=="W3"?W3: - (presetEl.text()=="W4"?W4: - (presetEl.text()=="W5"?W5: - (presetEl.text()=="W6"?W6: - (presetEl.text()=="W7"?W7:W8))))))); - - } - //detune - else if(presetEl.tagName().contains(DETSTR, Qt::CaseSensitive)) { - int op=(presetEl.tagName().remove(DETSTR, Qt::CaseSensitive)).toInt()-1; - detune[op]=presetEl.text().toInt(); - } - //eg - else if(presetEl.tagName()=="eg") { - QDomNode egNode = presetNode.firstChild(); - while(!egNode.isNull()) { - QDomElement egEl = egNode.toElement(); - if (egEl.isNull()) - continue; - QString et=egEl.tagName(); - if(et.contains(ARSTR, Qt::CaseSensitive)) { - int op=(et.remove(ARSTR, Qt::CaseSensitive)).toInt()-1; - eg[op].ar=egEl.text().toInt(); - } - else if(et.contains(D1RSTR, Qt::CaseSensitive)) { - int op=(et.remove(D1RSTR, Qt::CaseSensitive)).toInt()-1; - eg[op].d1r=egEl.text().toInt(); - } - else if(et.contains(D1LSTR, Qt::CaseSensitive)) { - int op = (et.remove(D1LSTR, Qt::CaseSensitive)).toInt()-1; - eg[op].d1l=egEl.text().toInt(); - } - else if(et.contains(D2RSTR, Qt::CaseSensitive)) { - int op=(et.remove(D2RSTR, Qt::CaseSensitive)).toInt()-1; - eg[op].d2r=egEl.text().toInt(); - } - else if(et.contains(RRSTR, Qt::CaseSensitive)) { - int op=(et.remove(RRSTR, Qt::CaseSensitive)).toInt()-1; - eg[op].rr=egEl.text().toInt(); - } - else if(et.contains(SHFTSTR, Qt::CaseSensitive)) { - int op=(et.remove(SHFTSTR, Qt::CaseSensitive)).toInt()-1; - eg[op].egShift=(egEl.text()=="VOF"?VOF: - (egEl.text()=="V48"?V48: - (egEl.text()=="V24"?V24:V12))); - } - egNode =egNode.nextSibling(); - } - } - //pitchEg - else if(presetEl.tagName()=="pitchEg") { - QDomNode pitchEgNode = presetNode.firstChild(); - while(!pitchEgNode.isNull()) { - QDomElement pitchEgEl = pitchEgNode.toElement(); - if (pitchEgEl.isNull()) - continue; - QString pt=pitchEgEl.tagName(); - if(pt==PR1STR) pitchEg.pr1=pitchEgEl.text().toInt(); - else if(pt==PR2STR) pitchEg.pr2=pitchEgEl.text().toInt(); - else if(pt==PR3STR) pitchEg.pr3=pitchEgEl.text().toInt(); - else if(pt==PL1STR) pitchEg.pl1=pitchEgEl.text().toInt(); - else if(pt==PL2STR) pitchEg.pl2=pitchEgEl.text().toInt(); - else if(pt==PL3STR) pitchEg.pl3=pitchEgEl.text().toInt(); - pitchEgNode=pitchEgNode.nextSibling(); - } - } - //outLevel - else if(presetEl.tagName().contains(OUTSTR, Qt::CaseSensitive)) { - int op=(presetEl.tagName().remove(OUTSTR, Qt::CaseSensitive)).toInt()-1; - outLevel[op]=presetEl.text().toInt(); - } - //scaling - else if(presetEl.tagName()=="scaling") { - QDomNode scalingNode = presetNode.firstChild(); - while(!scalingNode.isNull()) { - QDomElement scalingEl = scalingNode.toElement(); - if (scalingEl.isNull()) - continue; - QString st=scalingEl.tagName(); - if(st.contains(RSSTR, Qt::CaseSensitive)) { - int op=(st.remove(RSSTR, Qt::CaseSensitive)).toInt()-1; - scaling.rate[op]=scalingEl.text().toInt(); - } - else if(st.contains(LSSTR, Qt::CaseSensitive)) { - int op=(st.remove(LSSTR, Qt::CaseSensitive)).toInt()-1; - scaling.level[op]=scalingEl.text().toInt(); - } - scalingNode =scalingNode.nextSibling(); - } - } - //function - else if(presetEl.tagName()=="function") { - QDomNode functionNode = presetNode.firstChild(); - while(!functionNode.isNull()) { - QDomElement functionEl = functionNode.toElement(); - if (functionEl.isNull()) - continue; - QString ft=functionEl.tagName(); - if(ft==TRANSPOSESTR) - function.transpose=functionEl.text().toInt(); - else if(ft==POLYMODESTR) - function.mode=(functionEl.text()=="POLY"?POLY:MONO); - else if(ft==PBENDRANGESTR) - function.pBendRange=functionEl.text().toInt(); - else if(ft==PORTAMODESTR) - function.portamento= - functionEl.text()=="FINGER"?FINGER:FULL; - else if(ft==PORTATIMESTR) - function.portamentoTime=functionEl.text().toInt(); - else if(ft==FSWSTR) - function.footSw=(functionEl.text()=="POR"?POR:SUS); - else if(ft==FCVOLUMESTR) - function.fcVolume=functionEl.text().toInt(); - else if(ft==FCPITCHSTR) - function.fcPitch=functionEl.text().toInt(); - else if(ft==FCAMPLITUDESTR) - function.fcAmplitude=functionEl.text().toInt(); - else if(ft==MWPITCHSTR) - function.mwPitch=functionEl.text().toInt(); - else if(ft==MWAMPLITUDESTR) - function.mwAmplitude=functionEl.text().toInt(); - else if(ft==BCPITCHSTR) - function.bcPitch=functionEl.text().toInt(); - else if(ft==BCAMPLITUDESTR) - function.bcAmplitude=functionEl.text().toInt(); - else if(ft==BCPITCHBIASSTR) - function.bcPitchBias=functionEl.text().toInt(); - else if(ft==BCEGBIASSTR) - function.bcEgBias=functionEl.text().toInt(); - else if(ft==ATPITCHSTR) - function.atPitch=functionEl.text().toInt(); - else if(ft==ATAMPLITUDESTR) - function.atAmplitude=functionEl.text().toInt(); - else if(ft==ATPITCHBIASSTR) - function.atPitchBias=functionEl.text().toInt(); - else if(ft==ATEGBIASSTR) - function.atEgBias=functionEl.text().toInt(); - else if(ft==REVERBRATESTR) - function.reverbRate=functionEl.text().toInt(); - functionNode=functionNode.nextSibling(); - } - } - //globalDetune - //else if(presetEl.tagName()=="globalDetune") - // globalDetune=presetEl.text().toInt(); - //Names - else if(presetEl.tagName()=="name") - name=presetEl.text().toAscii().data(); - //prog - else if(presetEl.tagName()=="prog") - prog=presetEl.text().toInt(); - presetNode = presetNode.nextSibling(); - } -} - -//--------------------------------------------------------- -// witePreset -//--------------------------------------------------------- -void Preset::writePreset(AL::Xml* xml, bool onlyUsed) { - char s[MAXCHARTAG]; - if((!onlyUsed || _isUsed)) { - xml->stag("deicsOnzePreset version=\"1.0\""); - - //algorithm - xml->tag(ALGSTR, QString((algorithm==FIRST? "FIRST": - (algorithm==SECOND? "SECOND": - (algorithm==THIRD? "THIRD": - (algorithm==FOURTH? "FOURTH": - (algorithm==FIFTH? "FIFTH": - (algorithm==SIXTH? "SIXTH": - (algorithm==SEVENTH? "SEVENTH": - "EIGHTH"))))))))); - //feedback - xml->tag(FEEDBACKSTR, feedback); - //quick edit - //xml->tag(FINEBRIGHTNESSSTR, brightness); - //xml->tag(MODULATIONSTR, (int)modulation); - //xml->tag(GLOBALDETUNESTR, globalDetune); - //xml->tag(ATTACKSTR, attack); - //xml->tag(RELEASESTR, release); - //lfo - xml->stag("lfo"); - xml->tag(WAVESTR, QString((lfo.wave==SAWUP? "SAWUP": - (lfo.wave==SQUARE? "SQUARE": - (lfo.wave==TRIANGL? "TRIANGL":"SHOLD"))))); - xml->tag(SPEEDSTR, lfo.speed); - xml->tag(DELAYSTR, lfo.delay); - xml->tag(PMODDEPTHSTR, lfo.pModDepth); - xml->tag(AMODDEPTHSTR, lfo.aModDepth); - xml->tag(SYNCSTR, QString((lfo.sync==true? "on":"off"))); - xml->etag("lfo"); - //sensitivity - xml->stag("sensitivity"); - xml->tag(PMODSENSSTR, sensitivity.pitch); - xml->tag(AMSSTR, sensitivity.amplitude); - for(int i=0; itag(s, QString((sensitivity.ampOn[i]==true? "on":"off"))); - } - for(int i=0; itag(s, sensitivity.egBias[i]); - } - for(int i=0; itag(s, sensitivity.keyVelocity[i]); - } - xml->etag("sensitivity"); - //frequency - xml->stag("frequency"); - for(int i=0; itag(s, frequency[i].ratio); - } - for(int i=0; itag(s, QString((frequency[i].isFix==true? "yes":"no"))); - } - for(int i=0; itag(s, frequency[i].freq); - } - xml->etag("frequency"); - //oscWave - for(int i=0; itag(s, QString((oscWave[i]==W1?"W1": - (oscWave[i]==W2?"W2": - (oscWave[i]==W3?"W3": - (oscWave[i]==W4?"W4": - (oscWave[i]==W5?"W5": - (oscWave[i]==W6?"W6": - (oscWave[i]==W7?"W7":"W8"))))))))); - } - //detune - for(int i=0; itag(s, detune[i]); - } - //eg - xml->stag("eg"); - for(int i=0; itag(s, eg[i].ar); - } - for(int i=0; itag(s, eg[i].d1r); - } - for(int i=0; itag(s, eg[i].d1l); - } - for(int i=0; itag(s, eg[i].d2r); - } - for(int i=0; itag(s, eg[i].rr); - } - for(int i=0; itag(s, QString((eg[i].egShift==VOF?"VOF": - (eg[i].egShift==V48?"V48": - (eg[i].egShift==V24?"V24":"V12"))))); - } - xml->etag("eg"); - //pitchEg - xml->stag("pitchEg"); - xml->tag(PR1STR,pitchEg.pr1); - xml->tag(PR2STR,pitchEg.pr2); - xml->tag(PR3STR,pitchEg.pr3); - xml->tag(PL1STR,pitchEg.pl1); - xml->tag(PL2STR,pitchEg.pl2); - xml->tag(PL3STR,pitchEg.pl3); - xml->etag("pitchEg"); - //outLevel - for(int i=0; itag(s, outLevel[i]); - } - //scaling - xml->stag("scaling"); - for(int i=0; itag(s, scaling.rate[i]); - } - for(int i=0; itag(s, scaling.level[i]); - } - xml->etag("scaling"); - //function - xml->stag("function"); - xml->tag(TRANSPOSESTR, function.transpose); - xml->tag(POLYMODESTR, QString((function.mode==POLY? "POLY":"MONO"))); - xml->tag(PBENDRANGESTR, function.pBendRange); - xml->tag(PORTAMODESTR, QString((function.portamento==FINGER? - "FINGER":"FULL"))); - xml->tag(PORTATIMESTR, function.portamentoTime); - xml->tag(FSWSTR, QString((function.footSw==POR? "POR":"SUS"))); - xml->tag(FCVOLUMESTR, function.fcVolume); - xml->tag(FCPITCHSTR, function.fcPitch); - xml->tag(FCAMPLITUDESTR, function.fcAmplitude); - xml->tag(MWPITCHSTR, function.mwPitch); - xml->tag(MWAMPLITUDESTR, function.mwAmplitude); - xml->tag(BCPITCHSTR, function.bcPitch); - xml->tag(BCAMPLITUDESTR, function.bcAmplitude); - xml->tag(BCPITCHBIASSTR, function.bcPitchBias); - xml->tag(BCEGBIASSTR, function.bcEgBias); - xml->tag(ATPITCHSTR, function.atPitch); - xml->tag(ATAMPLITUDESTR, function.atAmplitude); - xml->tag(ATPITCHBIASSTR, function.atPitchBias); - xml->tag(ATEGBIASSTR, function.atEgBias); - xml->tag(REVERBRATESTR, function.reverbRate); - xml->etag("function"); - //globalDetune - //xml->tag("globalDetune", globalDetune); - //preset name - xml->tag("name", QString(name.c_str())); - //bank prog - xml->tag("prog",prog); - - xml->etag("deicsOnzePreset"); - } -} - -//--------------------------------------------------------- -// printPreset -//--------------------------------------------------------- - -void Preset::printPreset() -{ - printf("\n"); - printf("Algorithm : %d, Feedback : %d\n", algorithm, feedback); - printf("LFO : "); - switch(lfo.wave) - { - case(SAWUP) : printf("SAWUP ,"); break; - case(SQUARE) : printf("SQUARE ,"); break; - case(TRIANGL) : printf("TRIANGL ,"); break; - case(SHOLD) : printf("SHOLD ,"); break; - default : printf("No defined, "); break; - } - printf("Speed : %d, Delay : %d, PModD : %d, AModD : %d, ", - lfo.speed, lfo.delay, lfo.pModDepth, lfo.aModDepth); - if(lfo.sync) printf("Sync\n"); else printf("Not Sync\n"); - printf("LFO Pitch Sensitivity : %d, LFO Amplitude Sensitivity : %d\n", - sensitivity.pitch, sensitivity.amplitude); - for(int i=0; i::iterator i=_presetVector.begin(); - i!=_presetVector.end(); i++) (*i)->printPreset(); -} - -void Category::printCategory() { - std::cout << " " << _categoryName << "\n"; - for(unsigned int i=0; i<_subcategoryVector.size(); i++) - _subcategoryVector[i]->printSubcategory(); -} - -void Set::printSet() { - std::cout << _setName << "\n"; - for(unsigned int i=0; i<_categoryVector.size(); i++) - _categoryVector[i]->printCategory(); -} diff --git a/muse/synti/deicsonze/deicsonzepreset.h b/muse/synti/deicsonze/deicsonzepreset.h deleted file mode 100644 index d0cbdfab..00000000 --- a/muse/synti/deicsonze/deicsonzepreset.h +++ /dev/null @@ -1,563 +0,0 @@ -//=========================================================================== -// -// DeicsOnze an emulator of the YAMAHA DX11 synthesizer -// -// Version 0.5.5 -// -// deicsonzepreset.h -// -// -// Copyright (c) 2004-2006 Nil Geisweiller -// -// -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -// 02111-1307, USA or point your web browser to http://www.gnu.org. -//=========================================================================== - -#ifndef __DEICSONZEPRESET_H -#define __DEICSONZEPRESET_H - -#include -#include "al/xml.h" - -#define NBROP 4 //do not change -#define MAXCHARTAG 64 - -#define PROG_NBR 128 -#define LBANK_NBR 128 -#define HBANK_NBR 128 - -//--------------------------------------------------------- -// define strings of the parameter names for load save and ctrl interface -// number of ctrl -// following the internal DX11 organization (c.f T81Z manual) -//--------------------------------------------------------- -#define CTRLOFFSET 0x100 -#define DECAPAR1 13 -#define ARSTR "AR" -#define ARLONGSTR "AttackRate" -#define CTRL_AR 0+CTRLOFFSET -#define MAXAR 31 -#define D1RSTR "D1R" -#define D1RLONGSTR "Decay1Rate" -#define CTRL_D1R 1+CTRLOFFSET -#define MAXD1R 31 -#define D2RSTR "D2R" -#define D2RLONGSTR "Decay2Rate" -#define CTRL_D2R 2+CTRLOFFSET -#define MAXD2R 31 -#define RRSTR "RR" -#define RRLONGSTR "ReleaseRate" -#define CTRL_RR 3+CTRLOFFSET -#define MAXRR 15 -#define D1LSTR "D1L" -#define D1LLONGSTR "Decay1Level" -#define CTRL_D1L 4+CTRLOFFSET -#define MAXD1L 15 -#define LSSTR "LS" -#define LSLONGSTR "LevelScaling" -#define CTRL_LS 5+CTRLOFFSET -#define MAXLS 99 -#define RSSTR "RS" -#define RSLONGSTR "RateScaling" -#define CTRL_RS 6+CTRLOFFSET -#define MAXRS 3 -#define EBSSTR "EBS" -#define EBSLONGSTR "EGBiasSensitivity" -#define CTRL_EBS 7+CTRLOFFSET -#define MAXEBS 7 -#define AMESTR "AME" -#define AMELONGSTR "AmplitudeModulationEnable" -#define CTRL_AME 8+CTRLOFFSET -#define KVSSTR "KVS" -#define KVSLONGSTR "KeyVelocitySensitivity" -#define CTRL_KVS 9+CTRLOFFSET -#define MAXKVS 7 -#define OUTSTR "OUT" -#define OUTLONGSTR "OperatorOutputLevel" -#define CTRL_OUT 10+CTRLOFFSET -#define MAXOUT 99 -#define RATIOSTR "Ratio" -#define RATIOLONGSTR "Ratio" -#define CTRL_RATIO 11+CTRLOFFSET -#define MAXRATIO 64 -#define DETSTR "DET" -#define DETLONGSTR "Detune" -#define CTRL_DET 12+CTRLOFFSET -#define MAXDET 3 -#define ALGSTR "ALG" -#define ALGLONGSTR "Algorithm" -#define CTRL_ALG 52+CTRLOFFSET -#define MAXALG 7 -#define FEEDBACKSTR "Feedback" -#define CTRL_FEEDBACK 53+CTRLOFFSET -#define MAXFEEDBACK 7 -#define SPEEDSTR "Speed" -#define SPEEDLONGSTR "LFOSpeed" -#define CTRL_SPEED 54+CTRLOFFSET -#define MAXSPEED 99 -#define DELAYSTR "Delay" //TODO LFOD -#define DELAYLONGSTR "LFODelay" -#define CTRL_DELAY 55+CTRLOFFSET -#define MAXDELAY 99 -#define PMODDEPTHSTR "PModDepth" -#define PMODDEPTHLONGSTR "PitchModulationDepth" -#define CTRL_PMODDEPTH 56+CTRLOFFSET -#define MAXPMODDEPTH 99 -#define AMODDEPTHSTR "AModDepth" -#define AMODDEPTHLONGSTR "AmplitudeModulationDepth" -#define CTRL_AMODDEPTH 57+CTRLOFFSET -#define MAXAMODDEPTH 99 -#define SYNCSTR "Sync" -#define SYNCLONGSTR "LFOSync" -#define CTRL_SYNC 58+CTRLOFFSET -#define WAVESTR "Wave" -#define WAVELONGSTR "LFOWave" -#define CTRL_WAVE 59+CTRLOFFSET -#define MAXWAVE 3 -#define PMODSENSSTR "PModSens" -#define PMODSENSLONGSTR "PitchModulationSensitivity" -#define CTRL_PMODSENS 60+CTRLOFFSET -#define MAXPMODSENS 7 -#define AMSSTR "AMS" -#define AMSLONGSTR "AmplitudeModulationSensitivity" -#define CTRL_AMS 61+CTRLOFFSET -#define MAXAMS 3 -#define TRANSPOSESTR "Transpose" -#define CTRL_TRANSPOSE 62+CTRLOFFSET -#define MAXTRANSPOSE 24 -#define POLYMODESTR "PolyMode" -#define CTRL_POLYMODE 63+CTRLOFFSET -#define PBENDRANGESTR "PBendRange" -#define PBENDRANGELONGSTR "PitchBendRange" -#define CTRL_PBENDRANGE 64+CTRLOFFSET -#define MAXPBENDRANGE 12 -#define PORTAMODESTR "PortaMode" -#define PORTAMODELONGSTR "PortamentoMode" -#define CTRL_PORTAMODE 65+CTRLOFFSET -#define PORTATIMESTR "PortaTime" -#define PORTATIMELONGSTR "PortamentoTime" -#define CTRL_PORTATIME 66+CTRLOFFSET -#define MAXPROTATIME 99 -#define FCVOLUMESTR "FCVolume" -#define FCVOLUMELONGSTR "FootControllerVolume" -#define CTRL_FCVOLUME 67+CTRLOFFSET -#define MAXFCVOLUME 99 -#define FSWSTR "FSW" -#define FSWLONGSTR "FootSwitch" -#define CTRL_FSW 68+CTRLOFFSET -#define MAXFSW 99 -#define MWPITCHSTR "MWPitch" -#define MWPITCHLONGSTR "ModulationWheelPitch" -#define CTRL_MWPITCH 71+CTRLOFFSET -#define MAXMWPITCH 99 -#define MWAMPLITUDESTR "MWAmplitude" -#define MWAMPLITUDELONGSTR "ModulationWheelAmplitude" -#define CTRL_MWAMPLITUDE 72+CTRLOFFSET -#define MAXMWAMPLITUDE 99 -#define BCPITCHSTR "BCPitch" -#define BCPITCHLONGSTR "BreathControlPitch" -#define CTRL_BCPITCH 73+CTRLOFFSET -#define MAXBCPITCH 99 -#define BCAMPLITUDESTR "BCAmplitude" -#define BCAMPLITUDELONGSTR "BreathControlAmplitude" -#define CTRL_BCAMPLITUDE 74+CTRLOFFSET -#define MAXBCAMPLITUDE 99 -#define BCPITCHBIASSTR "BCPitchBias" -#define BCPITCHBIASLONGSTR "BreathControlPitchBias" -#define CTRL_BCPITCHBIAS 75+CTRLOFFSET -#define MAXBCPITCHBIAS 50 -#define BCEGBIASSTR "BCEGBias" -#define BCEGBIASLONGSTR "BreathControlEGBias" -#define CTRL_BCEGBIAS 76+CTRLOFFSET -#define MAXBCEGBIAS 99 -#define MIDATTACK 64 -#define ATPITCHSTR "ATPitch" -#define ATPITCHLONGSTR "AfterTouchPitch" -#define CTRL_ATPITCH 77+CTRLOFFSET -#define MAXATPITCH 99 -#define ATAMPLITUDESTR "ATAmplitude" -#define ATAMPLITUDELONGSTR "AfterTouchAmplitude" -#define CTRL_ATAMPLITUDE 78+CTRLOFFSET -#define MAXATAMPLITUDE 99 -#define ATPITCHBIASSTR "ATPitchBias" -#define ATPITCHBIASLONGSTR "AfterTouchPitchBias" -#define CTRL_ATPITCHBIAS 79+CTRLOFFSET -#define MAXATPITCHBIAS 50 -#define ATEGBIASSTR "ATEGBias" -#define ATEGBIASLONGSTR "AfterTouchEGBias" -#define CTRL_ATEGBIAS 80+CTRLOFFSET -#define MAXATEGBIAS 99 -#define PR1STR "PR1" -#define PR1LONGSTR "PitchRateEG1" -#define CTRL_PR1 81+CTRLOFFSET -#define MAXPR 99 -#define PR2STR "PR2" -#define PR2LONGSTR "PitchRateEG2" -#define CTRL_PR2 82+CTRLOFFSET -#define PR3STR "PR3" -#define PR3LONGSTR "PitchRateEG3" -#define CTRL_PR3 83+CTRLOFFSET -#define PL1STR "PL1" -#define PL1LONGSTR "PitchLevelEG1" -#define CTRL_PL1 84+CTRLOFFSET -#define MAXPL 99 -#define PL2STR "PL2" -#define PL2LONGSTR "PitchLevelEG2" -#define CTRL_PL2 85+CTRLOFFSET -#define PL3STR "PL3" -#define PL3LONGSTR "PitchLevelEG3" -#define CTRL_PL3 86+CTRLOFFSET -#define DECAPAR2 5 -#define FIXSTR "FIX" -#define FIXLONGSTR "FixedFrequency" -#define CTRL_FIX 100+CTRLOFFSET -#define FIXRANGESTR "FixRange" -#define FIXRANGELONGSTR "FixedFrequencyRange" -#define CTRL_FIXRANGE 101+CTRLOFFSET -#define MAXFIXRANGE 255 -#define OSWSTR "OSW" -#define OSWLONGSTR "OperatorWaveform" -#define CTRL_OSW 103+CTRLOFFSET -#define MAXOSW 7 -#define SHFTSTR "SHFT" -#define SHFTLONGSTR "EGShift" -#define CTRL_SHFT 104+CTRLOFFSET -#define MAXSHFT 3 -#define REVERBRATESTR "ReverbRate" -#define CTRL_REVERBRATE 120+CTRLOFFSET -#define MAXREVERBRATE 7 -#define FCPITCHSTR "FCPitch" -#define FCPITCHLONGSTR "FootControllerPitch" -#define CTRL_FCPITCH 121+CTRLOFFSET -#define MAXFCPITCH 99 -#define FCAMPLITUDESTR "FCAmplitude" -#define FCAMPLITUDELONGSTR "FootControllerAmplitude" -#define CTRL_FCAMPLITUDE 122+CTRLOFFSET -#define MAXFCAMPLITUDE 99 -#define CHANNELPANSTR "ChannelPan" -#define CTRL_CHANNELPAN 123+CTRLOFFSET -#define MAXCHANNELPAN 127 -#define CHANNELDETUNESTR "ChannelDetune" -#define CTRL_CHANNELDETUNE 124+CTRLOFFSET -#define MAXCHANNELDETUNE 63 -#define CHANNELVOLUMESTR "ChannelVolume" -#define CTRL_CHANNELVOLUME 125+CTRLOFFSET -#define MAXCHANNELVOLUME 255 -#define FINEBRIGHTNESSSTR "FineBrightness" -#define CTRL_FINEBRIGHTNESS 126+CTRLOFFSET -#define MAXFINEBRIGHTNESS 4095 -#define MIDFINEBRIGHTNESS (MAXFINEBRIGHTNESS+1)/2 -#define BRIGHTNESSSTR "Brightness" -#define MAXBRIGHTNESS 127 -#define MIDBRIGHTNESS 64 -#define MAXMODULATION 127 -#define MODULATIONSTR "Modulation" -#define ATTACKSTR "Attack" -#define MAXATTACK 127 -#define MIDATTACK 64 -#define RELEASESTR "Attack" -#define MAXRELEASE 127 -#define MIDRELEASE 64 -#define NBRVOICESSTR "NumberOfVoices" -#define MINNBRVOICES 1 -#define CTRL_NBRVOICES 127+CTRLOFFSET -#define CHANNELENABLESTR "ChannelEnable" -#define MAXCHANNELENABLE 1 -#define MINCHANNELENABLE 0 -#define CTRL_CHANNELENABLE 128+CTRLOFFSET - -class Preset; -class Subcategory; -class Category; -class Set; - -//--------------------------------------------------------- -// Algorithm -//--------------------------------------------------------- - -enum Algorithm { - FIRST, // Op 0 modulated by Op 1 modulated by Op 2 modulated by Op3 - SECOND, // Op 0 modulated by Op 1 modulated by both Op 2 and Op 3 - THIRD, // Op 0 modulated by both Op 3 and Op 1 modulated by Op 2 - FOURTH, // Op 0 modulated by both Op 1 and Op 2 modulated by Op 3 - FIFTH, // (Op 0 modulated by Op 1) add to (Op 2 modulated by Op 3) - SIXTH, // addition of the three Op 0, 1, 2 all modulated by Op 3 - SEVENTH, // addition of the three Op 0, 1, 2 with 2 modulated by Op3 - EIGHTH // addition of the four Op 0, 1, 2, 3 -}; - -//--------------------------------------------------------- -// Wave of the low frequency modulation -//--------------------------------------------------------- -enum Wave { - SAWUP, - SQUARE, - TRIANGL, - SHOLD -}; - -//--------------------------------------------------------- -// Lfo, low frequency modulation -//--------------------------------------------------------- -struct Lfo { - Wave wave; - unsigned char speed; //0 to 99 - unsigned char delay; //0 to 99 - unsigned char pModDepth; //0 to 99 - unsigned char aModDepth; //0 to 99 - bool sync; -}; - -//--------------------------------------------------------- -// Sensitivity -// of the frequency and amplitude of the lfo -// and the key velocity -//--------------------------------------------------------- -struct Sensitivity { - unsigned char pitch; //0 to 7 - unsigned char amplitude; //0 to 3 - bool ampOn[NBROP]; - unsigned char egBias[NBROP]; //O to 7 - unsigned char keyVelocity[NBROP]; //0 to 7 -}; - -//--------------------------------------------------------- -// Frequency -//--------------------------------------------------------- -struct Frequency { - double ratio; - bool isFix; //if isFix no ratio but frequency - double freq; -}; - -//--------------------------------------------------------- -// OscWave -//--------------------------------------------------------- -enum OscWave { - W1, //sine wave - W2, //sine² relative - W3, //half sine - W4, //half sine² relative - W5, - W6, - W7, - W8 -}; - -enum egShiftValue {VOF, V48, V24, V12}; - -//--------------------------------------------------------- -// Eg -// Envelope -//--------------------------------------------------------- -struct Eg { - unsigned char ar; //0 to 31 speed attack - unsigned char d1r; //0 to 31 speed decay - unsigned char d1l; //0 to 15 level sustain - unsigned char d2r; //0 to 31 speed of sustain - unsigned char rr; //1 to 15 - egShiftValue egShift; -}; - -//--------------------------------------------------------- -// PitchEg -//--------------------------------------------------------- -struct PitchEg { - unsigned char pr1;//0 to 99 - unsigned char pr2;//0 to 99 - unsigned char pr3;//0 to 99 - unsigned char pl1;//0 to 99 - unsigned char pl2;//0 to 99 - unsigned char pl3;//0 to 99 -}; - -//--------------------------------------------------------- -// Scaling -//--------------------------------------------------------- -struct Scaling { - unsigned char rate[NBROP];//0 to 3 - unsigned char level[NBROP];//0 to 99 -}; - -//--------------------------------------------------------- -// Mode -//--------------------------------------------------------- -enum Mode { - POLY, - MONO -}; - -//--------------------------------------------------------- -// Portamento -//--------------------------------------------------------- -enum Portamento { - FINGER, - FULL -}; - -//--------------------------------------------------------- -// FootSw -//--------------------------------------------------------- -enum FootSw { - POR, - SUS -}; -//--------------------------------------------------------- -// Function -//--------------------------------------------------------- -struct Function { - int transpose; - Mode mode; - unsigned char pBendRange;//0 to 12 - Portamento portamento; - unsigned char portamentoTime;//0 to 99 - FootSw footSw; - unsigned char fcVolume;//0 to 99 - unsigned char fcPitch;//0 to 99 - unsigned char fcAmplitude;//0 to 99 - unsigned char mwPitch;//0 to 99 - unsigned char mwAmplitude;//0 to 99 - unsigned char bcPitch;//0 to 99 - unsigned char bcAmplitude;//0 to 99 - signed char bcPitchBias;//-50 to 50 - unsigned char bcEgBias;//0 to 99 - unsigned char atPitch;//0 to 99 - unsigned char atAmplitude;//0 to 99 - signed char atPitchBias;//-50 to 50 - unsigned char atEgBias;//0 to 99 - signed char reverbRate;//O=off, 1 to 7 -}; - -//--------------------------------------------------------- -// Preset class -//--------------------------------------------------------- - -class Preset { - public: - Subcategory* _subcategory; //subcategory parent - bool _isUsed; //false if the preset has never been used or modified, - //in this case the preset is not going to be - //save with the project - //Attributes - Algorithm algorithm; - unsigned char feedback; //0 to 7 - Lfo lfo; - Sensitivity sensitivity; - Frequency frequency[NBROP]; - OscWave oscWave[NBROP]; - signed char detune[NBROP]; //-3 to 3 - Eg eg[NBROP]; - PitchEg pitchEg; - unsigned char outLevel[NBROP]; //0 to 99 - Scaling scaling; - Function function; - //int globalDetune; //-31 to 31 //now to the channel - std::string name; - //unsigned char modulation; //0 to 127 - int prog; //0 to 127 - //Methods - void printPreset(); - void initPreset(); - void readPreset(QDomNode qdn); - void writePreset(AL::Xml* xml, bool onlyUsed); - void linkSubcategory(Subcategory* sub); - void merge(Preset* p); //copy the data of p in the preset - void setIsUsed(bool b); //set flag _isUsed and transmit in the parents - void getHBankLBankProg(int* h, int* l, int* p); //return the hbank, lbank and prog of the preset - //Constructor destructor - Preset(); - Preset(Subcategory* sub); - Preset(Subcategory* sub, int prog); - ~Preset(); -}; - -//--------------------------------------------------------------- -// Bank, organized by a tree of category, subcategory, preset -//--------------------------------------------------------------- -class Subcategory { - public: - Category* _category;//parent category - bool _isUsed; //false if the subcategory has never been used or modified, - //in this case the subcategory is not going to be - //save with the project - std::string _subcategoryName; - int _lbank; //0 to 127 - std::vector _presetVector; - Preset* findPreset(int prog); - void readSubcategory(QDomNode subNode); - void writeSubcategory(AL::Xml* xml, bool onlyUsed); - void printSubcategory(); - void linkCategory(Category* cat); - void unlink(); - bool isFreeProg(int prog); - int firstFreeProg(); - void merge(Preset*); - //Constructor destructor - Subcategory(); - Subcategory(Category* cat); - Subcategory(const std::string name); - Subcategory(Category* cat, const std::string name, int lbank); - ~Subcategory(); -}; - -class Category { - public: - Set* _set;//parent set - bool _isUsed; //false if the category has never been used or modified, - //in this case the category is not going to be - //save with the project - std::string _categoryName; - int _hbank; //0 to 127 - std::vector _subcategoryVector; - Subcategory* findSubcategory(int lbank); - Preset* findPreset(int lbank, int prog); - void readCategory(QDomNode catNode); - void writeCategory(AL::Xml* xml, bool onlyUsed); - void printCategory(); - void linkSet(Set* s); - void unlink(); - bool isFreeLBank(int lbank); - int firstFreeLBank(); //return -1 if no free - void merge(Subcategory*); - //Constructor Destructor - Category(); - Category(Set* s); - Category(Set* s,const std::string name, int hbank); - ~Category(); -}; - -class Set { - public: - std::string _setName; - std::vector _categoryVector; - Preset* findPreset(int hbank, int lbank, int prog); - Subcategory* findSubcategory(int hbank, int lbank); - Category* findCategory(int hbank); - void readSet(QDomNode setNode); - void writeSet(AL::Xml* xml, bool onlyUsed); - void printSet(); - bool isFreeHBank(int hbank); - int firstFreeHBank(); - void merge(Category*); - //Constructor Destructor - Set(const std::string name){_setName=name;} - ~Set() { - while(!_categoryVector.empty()) delete(*_categoryVector.begin()); - } -}; - -#endif /* __DEICSONZE_H */ diff --git a/muse/synti/deicsonze/pics/SHold.fig b/muse/synti/deicsonze/pics/SHold.fig deleted file mode 100644 index 2e1d2431..00000000 --- a/muse/synti/deicsonze/pics/SHold.fig +++ /dev/null @@ -1,12 +0,0 @@ -#FIG 3.2 -Landscape -Center -Metric -A4 -100.00 -Single --2 -1200 2 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 8 - 720 968 855 968 855 1035 990 1035 990 900 1125 900 - 1125 945 1260 945 diff --git a/muse/synti/deicsonze/pics/SHold.png b/muse/synti/deicsonze/pics/SHold.png deleted file mode 100644 index b500ca67..00000000 Binary files a/muse/synti/deicsonze/pics/SHold.png and /dev/null differ diff --git a/muse/synti/deicsonze/pics/algo1.fig b/muse/synti/deicsonze/pics/algo1.fig deleted file mode 100644 index f90714b7..00000000 --- a/muse/synti/deicsonze/pics/algo1.fig +++ /dev/null @@ -1,31 +0,0 @@ -#FIG 3.2 -Landscape -Center -Metric -A4 -100.00 -Single --2 -1200 2 -6 2070 1530 4275 1890 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 2430 1665 2655 1665 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 3015 1665 3240 1665 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 3600 1665 3825 1665 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 4185 1665 4275 1665 4275 1890 4006 1890 4006 1800 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 2070 1530 2430 1530 2430 1800 2070 1800 2070 1530 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 2655 1530 3015 1530 3015 1800 2655 1800 2655 1530 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 3240 1530 3600 1530 3600 1800 3240 1800 3240 1530 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 3825 1530 4185 1530 4185 1800 3825 1800 3825 1530 -4 0 0 50 -1 0 12 0.0000 4 180 336 2093 1718 Op1\001 -4 0 0 50 -1 0 12 0.0000 4 180 336 2677 1718 Op2\001 -4 0 0 50 -1 0 12 0.0000 4 180 336 3262 1718 Op3\001 -4 0 0 50 -1 0 12 0.0000 4 180 336 3847 1718 Op4\001 --6 diff --git a/muse/synti/deicsonze/pics/algo1.png b/muse/synti/deicsonze/pics/algo1.png deleted file mode 100644 index 1347af71..00000000 Binary files a/muse/synti/deicsonze/pics/algo1.png and /dev/null differ diff --git a/muse/synti/deicsonze/pics/algo2.fig b/muse/synti/deicsonze/pics/algo2.fig deleted file mode 100644 index d0dbea38..00000000 --- a/muse/synti/deicsonze/pics/algo2.fig +++ /dev/null @@ -1,29 +0,0 @@ -#FIG 3.2 -Landscape -Center -Metric -A4 -100.00 -Single --2 -1200 2 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 2475 1710 2700 1710 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 3060 1710 3195 1710 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4 - 3285 1530 3195 1530 3195 1800 3285 1800 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 2115 1575 2475 1575 2475 1845 2115 1845 2115 1575 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 2700 1575 3060 1575 3060 1845 2700 1845 2700 1575 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 3285 1665 3645 1665 3645 1890 3285 1890 3285 1665 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 3285 1440 3645 1440 3645 1665 3285 1665 3285 1440 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 3645 1800 3735 1800 3735 1935 3465 1935 3465 1890 -4 0 0 50 -1 0 12 0.0000 4 150 315 3307 1590 Op3\001 -4 0 0 50 -1 0 12 0.0000 4 150 315 3315 1822 Op4\001 -4 0 0 50 -1 0 12 0.0000 4 165 315 2138 1762 Op1\001 -4 0 0 50 -1 0 12 0.0000 4 150 315 2722 1762 Op2\001 diff --git a/muse/synti/deicsonze/pics/algo2.png b/muse/synti/deicsonze/pics/algo2.png deleted file mode 100644 index 7d623227..00000000 Binary files a/muse/synti/deicsonze/pics/algo2.png and /dev/null differ diff --git a/muse/synti/deicsonze/pics/algo3.fig b/muse/synti/deicsonze/pics/algo3.fig deleted file mode 100644 index 9efaa53f..00000000 --- a/muse/synti/deicsonze/pics/algo3.fig +++ /dev/null @@ -1,29 +0,0 @@ -#FIG 3.2 -Landscape -Center -Metric -A4 -100.00 -Single --2 -1200 2 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 3060 1575 3285 1575 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 2475 1710 2610 1710 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 3060 1800 3150 1800 3150 1935 2880 1935 2880 1890 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4 - 2700 1530 2610 1530 2610 1800 2700 1800 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 3285 1440 3645 1440 3645 1710 3285 1710 3285 1440 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 2700 1665 3060 1665 3060 1890 2700 1890 2700 1665 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 2700 1440 3060 1440 3060 1665 2700 1665 2700 1440 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 2115 1575 2475 1575 2475 1845 2115 1845 2115 1575 -4 0 0 50 -1 0 12 0.0000 4 150 315 2722 1590 Op2\001 -4 0 0 50 -1 0 12 0.0000 4 150 315 2730 1822 Op4\001 -4 0 0 50 -1 0 12 0.0000 4 150 315 3307 1627 Op3\001 -4 0 0 50 -1 0 12 0.0000 4 165 315 2138 1762 Op1\001 diff --git a/muse/synti/deicsonze/pics/algo3.png b/muse/synti/deicsonze/pics/algo3.png deleted file mode 100644 index b091cc16..00000000 Binary files a/muse/synti/deicsonze/pics/algo3.png and /dev/null differ diff --git a/muse/synti/deicsonze/pics/algo4.fig b/muse/synti/deicsonze/pics/algo4.fig deleted file mode 100644 index 26d12f54..00000000 --- a/muse/synti/deicsonze/pics/algo4.fig +++ /dev/null @@ -1,29 +0,0 @@ -#FIG 3.2 -Landscape -Center -Metric -A4 -100.00 -Single --2 -1200 2 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 2475 1710 2610 1710 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4 - 2700 1530 2610 1530 2610 1800 2700 1800 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 2700 1665 3060 1665 3060 1890 2700 1890 2700 1665 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 2700 1440 3060 1440 3060 1665 2700 1665 2700 1440 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 2115 1575 2475 1575 2475 1845 2115 1845 2115 1575 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 3285 1620 3645 1620 3645 1890 3285 1890 3285 1620 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 3645 1755 3735 1755 3735 1530 3465 1530 3465 1620 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 3060 1755 3285 1755 -4 0 0 50 -1 0 12 0.0000 4 150 315 2722 1590 Op2\001 -4 0 0 50 -1 0 12 0.0000 4 150 315 2730 1822 Op3\001 -4 0 0 50 -1 0 12 0.0000 4 165 315 2138 1762 Op1\001 -4 0 0 50 -1 0 12 0.0000 4 150 315 3307 1807 Op4\001 diff --git a/muse/synti/deicsonze/pics/algo4.png b/muse/synti/deicsonze/pics/algo4.png deleted file mode 100644 index de0e6d26..00000000 Binary files a/muse/synti/deicsonze/pics/algo4.png and /dev/null differ diff --git a/muse/synti/deicsonze/pics/algo5.fig b/muse/synti/deicsonze/pics/algo5.fig deleted file mode 100644 index 63731eba..00000000 --- a/muse/synti/deicsonze/pics/algo5.fig +++ /dev/null @@ -1,34 +0,0 @@ -#FIG 3.2 -Landscape -Center -Metric -A4 -100.00 -Single --2 -1200 2 -6 2115 1575 2475 1845 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 2115 1575 2475 1575 2475 1845 2115 1845 2115 1575 -4 0 0 50 -1 0 12 0.0000 4 165 315 2138 1762 Op1\001 --6 -6 3330 1575 4320 1935 -6 3870 1575 4320 1935 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 3870 1575 4230 1575 4230 1845 3870 1845 3870 1575 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 4230 1710 4320 1710 4320 1935 4050 1935 4050 1845 -4 0 0 50 -1 0 12 0.0000 4 150 315 3892 1762 Op4\001 --6 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 3690 1710 3870 1710 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 3330 1575 3690 1575 3690 1845 3330 1845 3330 1575 -4 0 0 50 -1 0 12 0.0000 4 150 315 3353 1762 Op3\001 --6 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 2475 1710 2655 1710 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 2655 1575 3015 1575 3015 1845 2655 1845 2655 1575 -4 0 0 50 -1 0 12 0.0000 4 150 315 2678 1762 Op2\001 -4 0 0 50 -1 0 12 0.0000 4 75 105 3127 1763 +\001 diff --git a/muse/synti/deicsonze/pics/algo5.png b/muse/synti/deicsonze/pics/algo5.png deleted file mode 100644 index 2e41a1db..00000000 Binary files a/muse/synti/deicsonze/pics/algo5.png and /dev/null differ diff --git a/muse/synti/deicsonze/pics/algo6.fig b/muse/synti/deicsonze/pics/algo6.fig deleted file mode 100644 index 4e23b8fa..00000000 --- a/muse/synti/deicsonze/pics/algo6.fig +++ /dev/null @@ -1,37 +0,0 @@ -#FIG 3.2 -Landscape -Center -Metric -A4 -100.00 -Single --2 -1200 2 -6 2115 1575 2475 1845 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 2115 1575 2475 1575 2475 1845 2115 1845 2115 1575 -4 0 0 50 -1 0 12 0.0000 4 165 315 2138 1762 Op1\001 --6 -6 3195 1575 3555 1845 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 3195 1575 3555 1575 3555 1845 3195 1845 3195 1575 -4 0 0 50 -1 0 12 0.0000 4 150 315 3218 1762 Op3\001 --6 -6 3825 1575 4275 1935 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 3825 1575 4185 1575 4185 1845 3825 1845 3825 1575 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 4185 1710 4275 1710 4275 1935 4005 1935 4005 1845 -4 0 0 50 -1 0 12 0.0000 4 150 315 3847 1762 Op4\001 --6 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 2655 1575 3015 1575 3015 1845 2655 1845 2655 1575 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 3825 1710 3555 1710 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4 - 3690 1710 3690 1530 2835 1530 2835 1575 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 - 2835 1530 2295 1530 2295 1575 -4 0 0 50 -1 0 12 0.0000 4 150 315 2678 1762 Op2\001 -4 0 0 50 -1 0 12 0.0000 4 75 105 3060 1755 +\001 -4 0 0 50 -1 0 12 0.0000 4 75 105 2520 1755 +\001 diff --git a/muse/synti/deicsonze/pics/algo6.png b/muse/synti/deicsonze/pics/algo6.png deleted file mode 100644 index 80de4a94..00000000 Binary files a/muse/synti/deicsonze/pics/algo6.png and /dev/null differ diff --git a/muse/synti/deicsonze/pics/algo7.fig b/muse/synti/deicsonze/pics/algo7.fig deleted file mode 100644 index 6d0fe501..00000000 --- a/muse/synti/deicsonze/pics/algo7.fig +++ /dev/null @@ -1,35 +0,0 @@ -#FIG 3.2 -Landscape -Center -Metric -A4 -100.00 -Single --2 -1200 2 -6 2115 1575 2475 1845 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 2115 1575 2475 1575 2475 1845 2115 1845 2115 1575 -4 0 0 50 -1 0 12 0.0000 4 165 315 2138 1762 Op1\001 --6 -6 2745 1575 3105 1845 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 2745 1575 3105 1575 3105 1845 2745 1845 2745 1575 -4 0 0 50 -1 0 12 0.0000 4 150 315 2768 1762 Op2\001 --6 -6 3375 1575 3735 1845 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 3375 1575 3735 1575 3735 1845 3375 1845 3375 1575 -4 0 0 50 -1 0 12 0.0000 4 150 315 3398 1762 Op3\001 --6 -6 3915 1575 4365 1935 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 3915 1575 4275 1575 4275 1845 3915 1845 3915 1575 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 4275 1710 4365 1710 4365 1935 4095 1935 4095 1845 -4 0 0 50 -1 0 12 0.0000 4 150 315 3937 1762 Op4\001 --6 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 3735 1710 3915 1710 -4 0 0 50 -1 0 12 0.0000 4 75 105 2565 1755 +\001 -4 0 0 50 -1 0 12 0.0000 4 75 105 3195 1755 +\001 diff --git a/muse/synti/deicsonze/pics/algo7.png b/muse/synti/deicsonze/pics/algo7.png deleted file mode 100644 index 0cdda327..00000000 Binary files a/muse/synti/deicsonze/pics/algo7.png and /dev/null differ diff --git a/muse/synti/deicsonze/pics/algo8.fig b/muse/synti/deicsonze/pics/algo8.fig deleted file mode 100644 index 8bf9dcc9..00000000 --- a/muse/synti/deicsonze/pics/algo8.fig +++ /dev/null @@ -1,34 +0,0 @@ -#FIG 3.2 -Landscape -Center -Metric -A4 -100.00 -Single --2 -1200 2 -6 2115 1575 2475 1845 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 2115 1575 2475 1575 2475 1845 2115 1845 2115 1575 -4 0 0 50 -1 0 12 0.0000 4 165 315 2138 1762 Op1\001 --6 -6 2745 1575 3105 1845 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 2745 1575 3105 1575 3105 1845 2745 1845 2745 1575 -4 0 0 50 -1 0 12 0.0000 4 150 315 2768 1762 Op2\001 --6 -6 3375 1575 3735 1845 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 3375 1575 3735 1575 3735 1845 3375 1845 3375 1575 -4 0 0 50 -1 0 12 0.0000 4 150 315 3398 1762 Op3\001 --6 -6 4005 1575 4455 1935 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 4005 1575 4365 1575 4365 1845 4005 1845 4005 1575 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 4365 1710 4455 1710 4455 1935 4185 1935 4185 1845 -4 0 0 50 -1 0 12 0.0000 4 150 315 4027 1762 Op4\001 --6 -4 0 0 50 -1 0 12 0.0000 4 75 105 2565 1755 +\001 -4 0 0 50 -1 0 12 0.0000 4 75 105 3195 1755 +\001 -4 0 0 50 -1 0 12 0.0000 4 75 105 3825 1755 +\001 diff --git a/muse/synti/deicsonze/pics/algo8.png b/muse/synti/deicsonze/pics/algo8.png deleted file mode 100644 index 17ca60d7..00000000 Binary files a/muse/synti/deicsonze/pics/algo8.png and /dev/null differ diff --git a/muse/synti/deicsonze/pics/sawUp.fig b/muse/synti/deicsonze/pics/sawUp.fig deleted file mode 100644 index 2c701818..00000000 --- a/muse/synti/deicsonze/pics/sawUp.fig +++ /dev/null @@ -1,13 +0,0 @@ -#FIG 3.2 -Landscape -Center -Metric -A4 -100.00 -Single --2 -1200 2 -6 450 720 990 855 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 450 855 720 720 720 855 990 720 990 855 --6 diff --git a/muse/synti/deicsonze/pics/sawUp.png b/muse/synti/deicsonze/pics/sawUp.png deleted file mode 100644 index d0541858..00000000 Binary files a/muse/synti/deicsonze/pics/sawUp.png and /dev/null differ diff --git a/muse/synti/deicsonze/pics/square.fig b/muse/synti/deicsonze/pics/square.fig deleted file mode 100644 index 0adb802e..00000000 --- a/muse/synti/deicsonze/pics/square.fig +++ /dev/null @@ -1,14 +0,0 @@ -#FIG 3.2 -Landscape -Center -Metric -A4 -100.00 -Single --2 -1200 2 -6 540 540 1080 675 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 10 - 540 608 540 540 675 540 675 675 810 675 810 540 - 945 540 945 675 1080 675 1080 608 --6 diff --git a/muse/synti/deicsonze/pics/square.png b/muse/synti/deicsonze/pics/square.png deleted file mode 100644 index f2293267..00000000 Binary files a/muse/synti/deicsonze/pics/square.png and /dev/null differ diff --git a/muse/synti/deicsonze/pics/triangl.fig b/muse/synti/deicsonze/pics/triangl.fig deleted file mode 100644 index 95970995..00000000 --- a/muse/synti/deicsonze/pics/triangl.fig +++ /dev/null @@ -1,13 +0,0 @@ -#FIG 3.2 -Landscape -Center -Metric -A4 -100.00 -Single --2 -1200 2 -6 360 630 900 765 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 6 - 360 698 428 630 563 765 698 630 833 765 900 698 --6 diff --git a/muse/synti/deicsonze/pics/triangl.png b/muse/synti/deicsonze/pics/triangl.png deleted file mode 100644 index c0937be9..00000000 Binary files a/muse/synti/deicsonze/pics/triangl.png and /dev/null differ diff --git a/muse/synti/deicsonze/pics/wave1.fig b/muse/synti/deicsonze/pics/wave1.fig deleted file mode 100644 index 9cf6f065..00000000 --- a/muse/synti/deicsonze/pics/wave1.fig +++ /dev/null @@ -1,29 +0,0 @@ -#FIG 3.2 -Landscape -Center -Inches -Letter -100.00 -Single --2 -1200 2 -6 1650 1350 2325 1500 -2 1 0 1 -1 -1 10 0 -1 0.000 0 0 0 0 0 100 - 1658 1424 1665 1415 1670 1406 1678 1397 1684 1388 1692 1380 - 1697 1373 1704 1367 1711 1361 1718 1357 1724 1353 1731 1351 - 1738 1350 1745 1350 1751 1352 1758 1354 1765 1358 1770 1363 - 1778 1368 1784 1375 1792 1382 1797 1390 1804 1399 1811 1408 - 1818 1418 1824 1427 1831 1436 1837 1445 1845 1454 1850 1463 - 1858 1471 1864 1477 1871 1484 1877 1489 1884 1493 1891 1496 - 1898 1498 1904 1499 1911 1498 1918 1497 1925 1494 1931 1490 - 1937 1485 1945 1479 1950 1472 1958 1465 1964 1456 1971 1447 - 1977 1439 1984 1429 1991 1420 1998 1411 2003 1401 2011 1392 - 2017 1384 2025 1376 2030 1370 2037 1364 2044 1359 2051 1355 - 2057 1352 2064 1350 2071 1350 2078 1351 2084 1353 2091 1356 - 2098 1360 2103 1365 2111 1371 2117 1379 2125 1386 2130 1395 - 2137 1403 2144 1413 2151 1422 2157 1432 2164 1441 2170 1450 - 2178 1458 2183 1466 2191 1474 2197 1481 2204 1486 2210 1491 - 2217 1495 2224 1497 2231 1499 2237 1499 2244 1497 2251 1496 - 2258 1492 2264 1487 2270 1482 2278 1476 2283 1468 2291 1461 - 2297 1452 2304 1443 2310 1434 2317 1424 --6 diff --git a/muse/synti/deicsonze/pics/wave1.gnuplot b/muse/synti/deicsonze/pics/wave1.gnuplot deleted file mode 100644 index ff4aa2ed..00000000 --- a/muse/synti/deicsonze/pics/wave1.gnuplot +++ /dev/null @@ -1,2 +0,0 @@ -set terminal fig -plot [0:4*pi] sin(x) diff --git a/muse/synti/deicsonze/pics/wave1.png b/muse/synti/deicsonze/pics/wave1.png deleted file mode 100644 index 009aa7f7..00000000 Binary files a/muse/synti/deicsonze/pics/wave1.png and /dev/null differ diff --git a/muse/synti/deicsonze/pics/wave2.fig b/muse/synti/deicsonze/pics/wave2.fig deleted file mode 100644 index 2da89e13..00000000 --- a/muse/synti/deicsonze/pics/wave2.fig +++ /dev/null @@ -1,31 +0,0 @@ -#FIG 3.2 -Landscape -Center -Inches -Letter -100.00 -Single --2 -1200 2 -6 1650 1350 2325 1500 -2 1 0 1 -1 -1 10 0 -1 0.000 0 0 0 0 0 2 - 2079 1350 2079 1353 -2 1 0 1 -1 -1 10 0 -1 0.000 0 0 0 0 0 100 - 1658 1425 1665 1423 1670 1419 1678 1414 1685 1407 1692 1398 - 1697 1389 1704 1380 1711 1371 1719 1363 1724 1357 1731 1353 - 1738 1350 1743 1351 1751 1353 1758 1358 1765 1365 1770 1373 - 1777 1382 1784 1391 1792 1401 1797 1409 1804 1415 1811 1421 - 1818 1424 1824 1425 1831 1426 1838 1431 1845 1436 1850 1444 - 1857 1453 1865 1462 1872 1472 1877 1480 1884 1487 1891 1494 - 1899 1497 1904 1499 1911 1498 1918 1495 1923 1489 1930 1483 - 1938 1473 1945 1465 1950 1455 1957 1446 1964 1438 1971 1431 - 1977 1427 1984 1425 1991 1425 1998 1422 2003 1417 2011 1411 - 2018 1403 2025 1394 2030 1385 2037 1375 2044 1367 2052 1359 - 2057 1354 2064 1351 2071 1350 2076 1351 2084 1355 2091 1361 - 2098 1369 2103 1377 2110 1387 2118 1396 2125 1405 2130 1412 - 2137 1419 2144 1422 2151 1425 2157 1425 2164 1428 2171 1433 - 2178 1440 2183 1448 2190 1457 2198 1467 2205 1476 2210 1484 - 2217 1491 2224 1496 2232 1499 2237 1499 2244 1497 2251 1493 - 2256 1486 2263 1478 2271 1469 2278 1459 2283 1451 2290 1442 - 2297 1435 2304 1429 2310 1425 2317 1425 --6 diff --git a/muse/synti/deicsonze/pics/wave2.gnuplot b/muse/synti/deicsonze/pics/wave2.gnuplot deleted file mode 100644 index 01e57a9b..00000000 --- a/muse/synti/deicsonze/pics/wave2.gnuplot +++ /dev/null @@ -1,2 +0,0 @@ -set terminal fig -plot [0:4*pi] sin(x)*abs(sin(x)) diff --git a/muse/synti/deicsonze/pics/wave2.png b/muse/synti/deicsonze/pics/wave2.png deleted file mode 100644 index 5f4daaee..00000000 Binary files a/muse/synti/deicsonze/pics/wave2.png and /dev/null differ diff --git a/muse/synti/deicsonze/pics/wave3.fig b/muse/synti/deicsonze/pics/wave3.fig deleted file mode 100644 index 5051c2ef..00000000 --- a/muse/synti/deicsonze/pics/wave3.fig +++ /dev/null @@ -1,29 +0,0 @@ -#FIG 3.2 -Landscape -Center -Inches -Letter -100.00 -Single --2 -1200 2 -6 1650 1350 2325 1500 -2 1 0 1 -1 -1 10 0 -1 0.000 0 0 0 0 0 100 - 1658 1496 1665 1478 1671 1458 1678 1442 1685 1424 1691 1408 - 1697 1396 1704 1382 1711 1372 1718 1362 1724 1358 1731 1352 - 1738 1350 1745 1352 1751 1352 1758 1358 1765 1364 1772 1374 - 1777 1386 1784 1398 1791 1412 1797 1428 1804 1446 1811 1462 - 1818 1482 1824 1496 1831 1496 1838 1496 1845 1496 1851 1496 - 1857 1496 1864 1496 1871 1496 1877 1496 1884 1496 1891 1496 - 1898 1496 1904 1496 1911 1496 1918 1496 1925 1496 1931 1496 - 1938 1496 1944 1496 1950 1496 1957 1496 1964 1496 1971 1496 - 1977 1496 1984 1496 1991 1486 1998 1468 2004 1450 2011 1432 - 2018 1418 2025 1402 2030 1388 2037 1378 2044 1368 2051 1360 - 2057 1354 2064 1352 2071 1350 2078 1352 2084 1354 2091 1362 - 2098 1370 2105 1380 2110 1392 2117 1406 2124 1420 2130 1438 - 2137 1454 2144 1472 2151 1492 2157 1496 2164 1496 2171 1496 - 2178 1496 2184 1496 2191 1496 2197 1496 2204 1496 2210 1496 - 2217 1496 2224 1496 2231 1496 2237 1496 2244 1496 2251 1496 - 2258 1496 2264 1496 2271 1496 2277 1496 2283 1496 2290 1496 - 2297 1496 2304 1496 2310 1496 2317 1496 --6 diff --git a/muse/synti/deicsonze/pics/wave3.gnuplot b/muse/synti/deicsonze/pics/wave3.gnuplot deleted file mode 100644 index e97c06b8..00000000 --- a/muse/synti/deicsonze/pics/wave3.gnuplot +++ /dev/null @@ -1,2 +0,0 @@ -set terminal fig -plot [0:4*pi] [-1:1] (x2*pi && x<3*pi))?sin(x):0 diff --git a/muse/synti/deicsonze/pics/wave3.png b/muse/synti/deicsonze/pics/wave3.png deleted file mode 100644 index 6e0ada6d..00000000 Binary files a/muse/synti/deicsonze/pics/wave3.png and /dev/null differ diff --git a/muse/synti/deicsonze/pics/wave4.fig b/muse/synti/deicsonze/pics/wave4.fig deleted file mode 100644 index cb54e0e6..00000000 --- a/muse/synti/deicsonze/pics/wave4.fig +++ /dev/null @@ -1,29 +0,0 @@ -#FIG 3.2 -Landscape -Center -Inches -Letter -100.00 -Single --2 -1200 2 -6 1650 1350 2325 1500 -2 1 0 1 -1 -1 10 0 -1 0.000 0 0 0 0 0 100 - 1658 1495 1665 1493 1671 1486 1678 1475 1685 1461 1691 1444 - 1697 1426 1704 1408 1711 1390 1718 1375 1724 1363 1731 1354 - 1738 1350 1745 1351 1751 1356 1758 1366 1765 1379 1772 1394 - 1777 1412 1784 1431 1791 1448 1797 1465 1804 1479 1811 1489 - 1818 1494 1824 1495 1831 1495 1838 1495 1845 1495 1851 1495 - 1857 1495 1864 1495 1871 1495 1877 1495 1884 1495 1891 1495 - 1898 1495 1904 1495 1911 1495 1918 1495 1925 1495 1931 1495 - 1938 1495 1944 1495 1950 1495 1957 1495 1964 1495 1971 1495 - 1977 1495 1984 1495 1991 1495 1998 1490 2004 1481 2011 1469 - 2018 1453 2025 1435 2030 1417 2037 1399 2044 1383 2051 1369 - 2057 1358 2064 1352 2071 1350 2078 1353 2084 1361 2091 1372 - 2098 1386 2105 1403 2110 1421 2117 1440 2124 1457 2130 1472 - 2137 1484 2144 1492 2151 1495 2157 1495 2164 1495 2171 1495 - 2178 1495 2184 1495 2191 1495 2197 1495 2204 1495 2210 1495 - 2217 1495 2224 1495 2231 1495 2237 1495 2244 1495 2251 1495 - 2258 1495 2264 1495 2271 1495 2277 1495 2283 1495 2290 1495 - 2297 1495 2304 1495 2310 1495 2317 1495 --6 diff --git a/muse/synti/deicsonze/pics/wave4.gnuplot b/muse/synti/deicsonze/pics/wave4.gnuplot deleted file mode 100644 index bf7b43c9..00000000 --- a/muse/synti/deicsonze/pics/wave4.gnuplot +++ /dev/null @@ -1,2 +0,0 @@ -set terminal fig -plot [0:4*pi] [-1:1] (x2*pi && x<3*pi))?sin(x)*abs(sin(x)):0 diff --git a/muse/synti/deicsonze/pics/wave4.png b/muse/synti/deicsonze/pics/wave4.png deleted file mode 100644 index f104e06c..00000000 Binary files a/muse/synti/deicsonze/pics/wave4.png and /dev/null differ diff --git a/muse/synti/deicsonze/pics/wave5.fig b/muse/synti/deicsonze/pics/wave5.fig deleted file mode 100644 index 5d60ea7e..00000000 --- a/muse/synti/deicsonze/pics/wave5.fig +++ /dev/null @@ -1,29 +0,0 @@ -#FIG 3.2 -Landscape -Center -Inches -Letter -100.00 -Single --2 -1200 2 -6 1650 1350 2325 1500 -2 1 0 1 -1 -1 10 0 -1 0.000 0 0 0 0 0 100 - 1658 1425 1665 1406 1671 1388 1678 1373 1685 1361 1691 1353 - 1697 1350 1704 1352 1711 1358 1718 1368 1724 1382 1731 1399 - 1738 1417 1745 1436 1751 1454 1758 1470 1765 1484 1772 1493 - 1777 1498 1784 1498 1791 1494 1797 1485 1804 1472 1811 1456 - 1818 1438 1824 1425 1831 1425 1838 1425 1845 1425 1851 1425 - 1857 1425 1864 1425 1871 1425 1877 1425 1884 1425 1891 1425 - 1898 1425 1904 1425 1911 1425 1918 1425 1925 1425 1931 1425 - 1938 1425 1944 1425 1950 1425 1957 1425 1964 1425 1971 1425 - 1977 1425 1984 1425 1991 1415 1998 1397 2004 1380 2011 1367 - 2018 1357 2025 1351 2030 1350 2037 1354 2044 1363 2051 1375 - 2057 1390 2064 1408 2071 1427 2078 1446 2084 1463 2091 1477 - 2098 1489 2105 1496 2110 1499 2117 1497 2124 1490 2130 1479 - 2137 1465 2144 1448 2151 1429 2157 1425 2164 1425 2171 1425 - 2178 1425 2184 1425 2191 1425 2197 1425 2204 1425 2210 1425 - 2217 1425 2224 1425 2231 1425 2237 1425 2244 1425 2251 1425 - 2258 1425 2264 1425 2271 1425 2277 1425 2283 1425 2290 1425 - 2297 1425 2304 1425 2310 1425 2317 1425 --6 diff --git a/muse/synti/deicsonze/pics/wave5.gnuplot b/muse/synti/deicsonze/pics/wave5.gnuplot deleted file mode 100644 index 066cb3d4..00000000 --- a/muse/synti/deicsonze/pics/wave5.gnuplot +++ /dev/null @@ -1,2 +0,0 @@ -set terminal fig -plot [0:4*pi] [-1:1] (x2*pi && x<3*pi))?sin(2*x):0 diff --git a/muse/synti/deicsonze/pics/wave5.png b/muse/synti/deicsonze/pics/wave5.png deleted file mode 100644 index 003af248..00000000 Binary files a/muse/synti/deicsonze/pics/wave5.png and /dev/null differ diff --git a/muse/synti/deicsonze/pics/wave6.fig b/muse/synti/deicsonze/pics/wave6.fig deleted file mode 100644 index 5bad4b67..00000000 --- a/muse/synti/deicsonze/pics/wave6.fig +++ /dev/null @@ -1,29 +0,0 @@ -#FIG 3.2 -Landscape -Center -Inches -Letter -100.00 -Single --2 -1200 2 -6 1650 1350 2325 1500 -2 1 0 1 -1 -1 10 0 -1 0.000 0 0 0 0 0 100 - 1658 1425 1665 1420 1671 1407 1678 1389 1685 1371 1691 1357 - 1697 1350 1704 1353 1711 1365 1718 1382 1724 1401 1731 1416 - 1738 1424 1745 1426 1751 1436 1758 1453 1765 1472 1772 1488 - 1777 1497 1784 1498 1791 1490 1797 1474 1804 1455 1811 1438 - 1818 1427 1824 1425 1831 1425 1838 1425 1845 1425 1851 1425 - 1857 1425 1864 1425 1871 1425 1877 1425 1884 1425 1891 1425 - 1898 1425 1904 1425 1911 1425 1918 1425 1925 1425 1931 1425 - 1938 1425 1944 1425 1950 1425 1957 1425 1964 1425 1971 1425 - 1977 1425 1984 1425 1991 1423 1998 1414 2004 1398 2011 1380 - 2018 1363 2025 1352 2030 1350 2037 1358 2044 1373 2051 1391 - 2057 1409 2064 1421 2071 1425 2078 1430 2084 1444 2091 1462 - 2098 1480 2105 1494 2110 1499 2117 1495 2124 1482 2130 1464 - 2137 1446 2144 1432 2151 1425 2157 1425 2164 1425 2171 1425 - 2178 1425 2184 1425 2191 1425 2197 1425 2204 1425 2210 1425 - 2217 1425 2224 1425 2231 1425 2237 1425 2244 1425 2251 1425 - 2258 1425 2264 1425 2271 1425 2277 1425 2283 1425 2290 1425 - 2297 1425 2304 1425 2310 1425 2317 1425 --6 diff --git a/muse/synti/deicsonze/pics/wave6.gnuplot b/muse/synti/deicsonze/pics/wave6.gnuplot deleted file mode 100644 index e1eed2e5..00000000 --- a/muse/synti/deicsonze/pics/wave6.gnuplot +++ /dev/null @@ -1,2 +0,0 @@ -set terminal fig -plot [0:4*pi] [-1:1] (x2*pi && x<3*pi))?sin(2*x)*abs(sin(2*x)):0 diff --git a/muse/synti/deicsonze/pics/wave6.png b/muse/synti/deicsonze/pics/wave6.png deleted file mode 100644 index 08e717ce..00000000 Binary files a/muse/synti/deicsonze/pics/wave6.png and /dev/null differ diff --git a/muse/synti/deicsonze/pics/wave7.fig b/muse/synti/deicsonze/pics/wave7.fig deleted file mode 100644 index b5ad0ea2..00000000 --- a/muse/synti/deicsonze/pics/wave7.fig +++ /dev/null @@ -1,29 +0,0 @@ -#FIG 3.2 -Landscape -Center -Inches -Letter -100.00 -Single --2 -1200 2 -6 1650 1350 2325 1500 -2 1 0 1 -1 -1 10 0 -1 0.000 0 0 0 0 0 100 - 1658 1495 1665 1459 1671 1425 1678 1395 1685 1372 1691 1357 - 1697 1350 1704 1353 1711 1364 1718 1385 1724 1413 1731 1446 - 1738 1482 1745 1472 1751 1437 1758 1405 1765 1380 1772 1361 - 1777 1352 1784 1351 1791 1360 1797 1377 1804 1402 1811 1433 - 1818 1468 1824 1495 1831 1495 1838 1495 1845 1495 1851 1495 - 1857 1495 1864 1495 1871 1495 1877 1495 1884 1495 1891 1495 - 1898 1495 1904 1495 1911 1495 1918 1495 1925 1495 1931 1495 - 1938 1495 1944 1495 1950 1495 1957 1495 1964 1495 1971 1495 - 1977 1495 1984 1495 1991 1477 1998 1441 2004 1409 2011 1382 - 2018 1363 2025 1353 2030 1351 2037 1359 2044 1375 2051 1399 - 2057 1428 2064 1463 2071 1491 2078 1454 2084 1421 2091 1392 - 2098 1370 2105 1355 2110 1350 2117 1354 2124 1367 2130 1388 - 2137 1417 2144 1450 2151 1486 2157 1495 2164 1495 2171 1495 - 2178 1495 2184 1495 2191 1495 2197 1495 2204 1495 2210 1495 - 2217 1495 2224 1495 2231 1495 2237 1495 2244 1495 2251 1495 - 2258 1495 2264 1495 2271 1495 2277 1495 2283 1495 2290 1495 - 2297 1495 2304 1495 2310 1495 2317 1495 --6 diff --git a/muse/synti/deicsonze/pics/wave7.gnuplot b/muse/synti/deicsonze/pics/wave7.gnuplot deleted file mode 100644 index 294b2423..00000000 --- a/muse/synti/deicsonze/pics/wave7.gnuplot +++ /dev/null @@ -1,2 +0,0 @@ -set terminal fig -plot [0:4*pi] [-1:1] (x2*pi && x<3*pi))?abs(sin(2*x)):0 diff --git a/muse/synti/deicsonze/pics/wave7.png b/muse/synti/deicsonze/pics/wave7.png deleted file mode 100644 index 44e5928f..00000000 Binary files a/muse/synti/deicsonze/pics/wave7.png and /dev/null differ diff --git a/muse/synti/deicsonze/pics/wave8.fig b/muse/synti/deicsonze/pics/wave8.fig deleted file mode 100644 index 017deb5b..00000000 --- a/muse/synti/deicsonze/pics/wave8.fig +++ /dev/null @@ -1,29 +0,0 @@ -#FIG 3.2 -Landscape -Center -Inches -Letter -100.00 -Single --2 -1200 2 -6 1650 1350 2325 1500 -2 1 0 1 -1 -1 10 0 -1 0.000 0 0 0 0 0 100 - 1658 1495 1665 1486 1671 1461 1678 1426 1685 1390 1691 1363 - 1697 1350 1704 1356 1711 1379 1718 1412 1724 1448 1731 1479 - 1738 1494 1745 1492 1751 1472 1758 1440 1765 1403 1772 1372 - 1777 1353 1784 1352 1791 1369 1797 1399 1804 1435 1811 1469 - 1818 1490 1824 1495 1831 1495 1838 1495 1845 1495 1851 1495 - 1857 1495 1864 1495 1871 1495 1877 1495 1884 1495 1891 1495 - 1898 1495 1904 1495 1911 1495 1918 1495 1925 1495 1931 1495 - 1938 1495 1944 1495 1950 1495 1957 1495 1964 1495 1971 1495 - 1977 1495 1984 1495 1991 1493 1998 1475 2004 1444 2011 1408 - 2018 1375 2025 1354 2030 1351 2037 1366 2044 1394 2051 1431 - 2057 1465 2064 1489 2071 1495 2078 1484 2084 1457 2091 1421 - 2098 1386 2105 1361 2110 1350 2117 1358 2124 1383 2130 1417 - 2137 1453 2144 1481 2151 1495 2157 1495 2164 1495 2171 1495 - 2178 1495 2184 1495 2191 1495 2197 1495 2204 1495 2210 1495 - 2217 1495 2224 1495 2231 1495 2237 1495 2244 1495 2251 1495 - 2258 1495 2264 1495 2271 1495 2277 1495 2283 1495 2290 1495 - 2297 1495 2304 1495 2310 1495 2317 1495 --6 diff --git a/muse/synti/deicsonze/pics/wave8.gnuplot b/muse/synti/deicsonze/pics/wave8.gnuplot deleted file mode 100644 index e86332c7..00000000 --- a/muse/synti/deicsonze/pics/wave8.gnuplot +++ /dev/null @@ -1,2 +0,0 @@ -set terminal fig -plot [0:4*pi] [-1:1] (x2*pi && x<3*pi))?sin(2*x)*sin(2*x):0 diff --git a/muse/synti/deicsonze/pics/wave8.png b/muse/synti/deicsonze/pics/wave8.png deleted file mode 100644 index 6df0dda5..00000000 Binary files a/muse/synti/deicsonze/pics/wave8.png and /dev/null differ diff --git a/muse/synti/fluid/CMakeLists.txt b/muse/synti/fluid/CMakeLists.txt deleted file mode 100644 index e51ea9c6..00000000 --- a/muse/synti/fluid/CMakeLists.txt +++ /dev/null @@ -1,50 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -QT4_WRAP_CPP ( fluid_mocs fluidgui.h ) -QT4_WRAP_UI ( fluid_uis fluidgui.ui ) - -add_library ( fluid SHARED - fluid.cpp - fluidgui.cpp - fluidgui.h - ${fluid_mocs} - ${fluid_uis} - ) - -target_link_libraries( fluid synti ) - -# - tell cmake to name target fluid.so instead of -# libfluid.so -# - use precompiled header files -# -set_target_properties ( fluid - PROPERTIES PREFIX "" - COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all-pic.h" - LINK_FLAGS "-L${FLUID_LIBDIR} ${FLUID_LIB}" - ) -target_link_libraries(fluid - synti - ${QT_LIBRARIES} - ${FLUID_LIB} - ) - -install_targets ( /${CMAKE_INSTALL_LIBDIR}/${MusE_INSTALL_NAME}/synthi/ fluid ) - diff --git a/muse/synti/fluid/fluid.cpp b/muse/synti/fluid/fluid.cpp deleted file mode 100644 index 601b1899..00000000 --- a/muse/synti/fluid/fluid.cpp +++ /dev/null @@ -1,518 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: fluid.cpp,v 1.21 2005/11/23 13:55:32 wschweer Exp $ -// -// This file is derived from fluid Synth and modified -// for MusE. -// Parts of fluid are derived from Smurf Sound Font Editor. -// Parts of Smurf Sound Font Editor are derived from -// awesfx utilities -// Smurf: Copyright (C) 1999-2000 Josh Green -// fluid: Copyright (C) 2001 Peter Hanappe -// MusE: Copyright (C) 2001 Werner Schweer -// awesfx: Copyright (C) 1996-1999 Takashi Iwai -//========================================================= - -#include "muse/midictrl.h" -#include "fluid.h" -#include "fluidgui.h" - -//--------------------------------------------------------- -// instantiate -//--------------------------------------------------------- - -static Mess* instantiate(int sr, const char* name) - { - ISynth* synth = new ISynth(); - synth->setSampleRate(sr); - if (synth->init(name)) { - delete synth; - synth = 0; - } - return synth; - } - -//--------------------------------------------------------- -// MESS -//--------------------------------------------------------- - -extern "C" { - static MESS descriptor = { - "fluid", - "Werner Schweer", - "0.1", // fluid version string - MESS_MAJOR_VERSION, MESS_MINOR_VERSION, - instantiate, - }; - const MESS* mess_descriptor() { return &descriptor; } - } - -//--------------------------------------------------------- -// ISynth -//--------------------------------------------------------- - -ISynth::ISynth() - : Mess(2) - { - _busy = false; - sfont = 0; - _gmMode = false; // General Midi Mode - _fluidsynth = 0; - initBuffer = 0; - initLen = 0; - fontId = -1; - } - -//--------------------------------------------------------- -// playNote -// return true if busy -//--------------------------------------------------------- - -bool ISynth::playNote(int channel, int pitch, int velo) - { - if (_busy) { -// printf("fluid: playNote(): busy!\n"); - return true; - } - if (velo) { - int err = fluid_synth_noteon(_fluidsynth, channel, pitch, velo); - if (err) { - printf("ISynth: noteon error, channel %d pitch %d<%s>\n", - channel, pitch, fluid_synth_error(_fluidsynth)); - } - } - else - fluid_synth_noteoff(_fluidsynth, channel, pitch); - return false; - } - -//--------------------------------------------------------- -// setController -// return true if busy -//--------------------------------------------------------- - -bool ISynth::setController(int ch, int ctrl, int val) - { - if (_busy) { -// printf("fluid: setController(%d,%d,%d): busy!\n", ch, ctrl, val); - return true; - } - switch(ctrl) { - case CTRL_PROGRAM: - { - int hbank = (val & 0xff0000) >> 16; - int lbank = (val & 0xff00) >> 8; - if (hbank > 127) // map "dont care" to 0 - hbank = 0; - if (lbank > 127) - lbank = 0; - if (lbank == 127 || ch == 9) // drum HACK - lbank = 128; - int prog = val & 0x7f; - fluid_synth_program_select(_fluidsynth, ch, - hbank, lbank, prog); - } - break; - - case CTRL_PITCH: - fluid_synth_pitch_bend (_fluidsynth, ch, val); - break; - - default: -// printf("controller %x val %x\n", ctrl & 0x3fff, val); - fluid_synth_cc(_fluidsynth, ch, ctrl & 0x3fff, val); - break; - } - return false; - } - -//--------------------------------------------------------- -// sysex -// 7e 7f 09 01 GM on -// 7e 7f 09 02 GM off -// 7f 7f 04 01 ll hh Master Volume (ll-low byte, hh-high byte) -// 7c 00 01 nn ... replace Soundfont (nn-ascii char of path -// 7c 00 02 nn ... add Soundfont -// 7c 00 03 nn ... remove Soundfont -// -// return true if busy -//--------------------------------------------------------- - -bool ISynth::sysex(int len, const unsigned char* data) - { - if (_busy) { -// printf("fluid: sysex(): busy!\n"); - return true; - } - if (len >= 4) { - //--------------------------------------------- - // Universal Non Realtime - //--------------------------------------------- - - if (data[0] == 0x7e) { - if (data[1] == 0x7f) { // device Id - if (data[2] == 0x9) { // GM - if (data[3] == 0x1) { - gmOn(true); - return false; - } - else if (data[3] == 0x2) { - gmOn(false); - return false; - } - } - } - } - - //--------------------------------------------- - // Universal Realtime - //--------------------------------------------- - - else if (data[0] == 0x7f) { - if (data[1] == 0x7f) { // device Id - if ((data[2] == 0x4) && (data[3] == 0x1)) { - float v = (data[5]*128 + data[4])/32767.0; - fluid_synth_set_gain(_fluidsynth, v); - return false; - } - } - } - - //--------------------------------------------- - // MusE Soft Synth - //--------------------------------------------- - - else if (data[0] == 0x7c) { - int n = len - 3; - if (n < 1) { - printf("fluid: bad sysEx:\n"); - return false; - } - char buffer[n+1]; - memcpy(buffer, (char*)data+3, n); - buffer[n] = 0; - if (data[1] == 0) { // fluid - if (data[2] == 1) { // load sound font - sysexSoundFont(SF_REPLACE, buffer); - return false; - } - else if (data[2] == 2) { // load sound font - sysexSoundFont(SF_ADD, buffer); - return false; - } - else if (data[2] == 3) { // load sound font - sysexSoundFont(SF_REMOVE, buffer); - return false; - } - } - } - else if (data[0] == 0x41) { // roland - if (data[1] == 0x10 && data[2] == 0x42 && data[3] == 0x12 - && data[4] == 0x40 && data[5] == 00 && data[6] == 0x7f - && data[7] == 0x41) { - // gs on - gmOn(true); - return false; - } - } - } - printf("fluid: unknown sysex received, len %d:\n", len); - for (int i = 0; i < len; ++i) - printf("%02x ", data[i]); - printf("\n"); - return false; - } - -//--------------------------------------------------------- -// gmOn -//--------------------------------------------------------- - -void ISynth::gmOn(bool flag) - { - _gmMode = flag; - allNotesOff(); - } - -//--------------------------------------------------------- -// allNotesOff -// stop all notes -//--------------------------------------------------------- - -void ISynth::allNotesOff() - { - for (int ch = 0; ch < 16; ++ch) { - fluid_synth_cc(_fluidsynth, ch, 0x7b, 0); // all notes off - } - } - -//--------------------------------------------------------- -// guiVisible -//--------------------------------------------------------- - -bool ISynth::guiVisible() const - { - return gui->isVisible(); - } - -//--------------------------------------------------------- -// showGui -//--------------------------------------------------------- - -void ISynth::showGui(bool flag) - { - gui->setShown(flag); - } - -//--------------------------------------------------------- -// ~ISynth -//--------------------------------------------------------- - -ISynth::~ISynth() - { - // TODO delete settings - if (_fluidsynth) - delete_fluid_synth(_fluidsynth); - if (initBuffer) - delete [] initBuffer; - } - -//--------------------------------------------------------- -// process -//--------------------------------------------------------- - -void ISynth::process(float** ports, int offset, int n) - { - if (!_busy) { - // - // get and process all pending events from the - // synthesizer GUI - // - while (gui->fifoSize()) - processEvent(gui->readEvent()); - fluid_synth_write_float(_fluidsynth, n, ports[0], - offset, 1, ports[1], offset, 1); - } - // printf("%f %f\n", *ports[0], *(ports[0]+1)); - } - -//--------------------------------------------------------- -// getPatchName -//--------------------------------------------------------- - -const char* ISynth::getPatchName(int /*ch*/, int val, int) const - { - int hbank = (val & 0xff0000) >> 16; - int lbank = (val & 0xff00) >> 8; - if (hbank > 127) - hbank = 0; - if (lbank > 127) - lbank = 0; - if (lbank == 127) // drum HACK - lbank = 128; - int prog = val & 0x7f; - char* name = "---"; - - if (_busy) { - printf("fluid: getPatchName(): busy!\n"); - return name; - } - fluid_font = fluid_synth_get_sfont_by_id(_fluidsynth, hbank); - if (fluid_font) { - fluid_preset_t* preset = (*fluid_font->get_preset)(fluid_font, lbank, prog); - if (preset) - name = (*preset->get_name)(preset); - else - fprintf(stderr, "no fluid preset for bank %d prog %d\n", - lbank, prog); - } - else - fprintf(stderr, "ISynth::getPatchName(): no fluid font id=%d found\n", hbank); - return name; - } - -//--------------------------------------------------------- -// getNextPatch -//--------------------------------------------------------- - -const MidiPatch* ISynth::getPatchInfo(int ch, const MidiPatch* p) const - { - if (_busy) { - printf("fluid: getPatchInfo(): busy!\n"); - return 0; - } - if (p == 0) { - // get font at font stack index 0 - fluid_font = fluid_synth_get_sfont(_fluidsynth, 0); - if (fluid_font == 0) - return 0; - (*fluid_font->iteration_start)(fluid_font); - } - fluid_preset_t preset; - - while ((*fluid_font->iteration_next)(fluid_font, &preset)) { - patch.hbank = fluid_sfont_get_id(fluid_font); - int bank = (*preset.get_banknum)(&preset); - if (ch == 9 && bank != 128) // show only drums for channel 10 - continue; - if (bank == 128) - bank = 127; - patch.typ = 0; - patch.name = (*preset.get_name)(&preset); - patch.lbank = bank; - patch.prog = (*preset.get_num)(&preset); - return &patch; - } - return 0; - } - -//--------------------------------------------------------- -// getInitData -// construct an initialization string which can be used -// as a sysex to restore current state -//--------------------------------------------------------- - -void ISynth::getInitData(int* len, const unsigned char** data) - { - if (sfont == 0) { - *len = 0; - return; - } - int n = 4 + strlen(sfont); - if (n > initLen) { - if (initBuffer) - delete [] initBuffer; - initBuffer = new unsigned char[n]; - } - initBuffer[0] = 0x7c; - initBuffer[1] = 0x00; - initBuffer[2] = SF_REPLACE; - strcpy((char*)(initBuffer+3), sfont); - *len = n; - *data = initBuffer; - } - -//--------------------------------------------------------- -// sysexSoftfont -//--------------------------------------------------------- - -void ISynth::sysexSoundFont(SfOp op, const char* data) - { - char c = 'x'; - allNotesOff(); - switch(op) { - case SF_REMOVE: - break; - case SF_REPLACE: - case SF_ADD: - if (sfont && (strcmp(sfont, data) == 0)) { - fprintf(stderr, "fluid: font already loaded\n"); - break; - } - if (_busy) { - fprintf(stderr, "fluid: busy!\n"); - break; - } - _busy = true; - if (sfont) - delete[] sfont; - sfont = new char[strlen(data)+1]; - strcpy(sfont, data); - _busy = true; - write(writeFd, &c, 1); - break; - } - } - -//--------------------------------------------------------- -// fontLoad -// helper thread to load soundfont in the -// background -//--------------------------------------------------------- - -static void* helper(void* t) - { - ISynth* is = (ISynth*) t; - is->noRTHelper(); - pthread_exit(0); - } - -//------------------------------------ -// noRTHelper -//--------------------------------------------------------- - -void ISynth::noRTHelper() - { - for (;;) { - char c; - int n = read(readFd, &c, 1); - if (n != 1) { - perror("ISynth::read ipc failed\n"); - continue; - } - int id = getFontId(); - if (id != -1) { - fprintf(stderr, "ISynth: unload old font\n"); - fluid_synth_sfunload(synth(), (unsigned)id, true); - } - int rv = fluid_synth_sfload(synth(), getFont(), true); - if (rv == -1) { - fprintf(stderr, "ISynth: sfload %s failed\n", - fluid_synth_error(synth())); - } - else { - setFontId(rv); - fprintf(stderr, "ISynth: sfont %s loaded as %d\n ", - getFont(), rv); - } - fluid_synth_set_gain(synth(), 1.0); //? - _busy = false; - } - } - -//--------------------------------------------------------- -// init -// return true on error -//--------------------------------------------------------- - -bool ISynth::init(const char* name) - { - fluid_settings_t* settings; - settings = new_fluid_settings(); - fluid_settings_setnum(settings, "synth.sample-rate", float(sampleRate())); - - _fluidsynth = new_fluid_synth(settings); - - //--------------------------------------- - // create non realtime helper thread - // create message channels - // - int filedes[2]; // 0 - reading 1 - writing - if (pipe(filedes) == -1) { - perror("ISynth::thread:creating pipe"); - return true; - } - readFd = filedes[0]; - writeFd = filedes[1]; - - pthread_attr_t* attributes = (pthread_attr_t*) malloc(sizeof(pthread_attr_t)); - pthread_attr_init(attributes); - if (pthread_create(&helperThread, attributes, ::helper, this)) - perror("creating thread failed:"); - pthread_attr_destroy(attributes); - - char* p = getenv("DEFAULT_SOUNDFONT"); - if (p) { - sfont = new char[strlen(p)+1]; - strcpy(sfont, p); - char c = 'x'; - _busy = true; - write(writeFd, &c, 1); - } - - gui = new FLUIDGui; - gui->hide(); // to avoid flicker during MusE startup - gui->setWindowTitle(QString(name)); - return false; - } - diff --git a/muse/synti/fluid/fluid.h b/muse/synti/fluid/fluid.h deleted file mode 100644 index af8ff3a1..00000000 --- a/muse/synti/fluid/fluid.h +++ /dev/null @@ -1,80 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: fluid.h,v 1.8 2005/11/23 13:55:32 wschweer Exp $ -// -// This file is derived from fluid Synth and modified -// for MusE. -// Parts of fluid are derived from Smurf Sound Font Editor. -// Parts of Smurf Sound Font Editor are derived from -// awesfx utilities -// Smurf: Copyright (C) 1999-2000 Josh Green -// fluid: Copyright (C) 2001 Peter Hanappe -// MusE: Copyright (C) 2001 Werner Schweer -// awesfx: Copyright (C) 1996-1999 Takashi Iwai -//========================================================= - -#ifndef _SYNTH_H -#define _SYNTH_H - -#include -#include "libsynti/mess.h" - -enum SfOp { SF_REPLACE = 1, SF_ADD, SF_REMOVE }; -class FLUIDGui; - -//--------------------------------------------------------- -// ISynth -//--------------------------------------------------------- - -class ISynth : public Mess { - bool _busy; - bool _gmMode; - - unsigned char* initBuffer; - int initLen; - - fluid_synth_t* _fluidsynth; - char* sfont; - mutable fluid_sfont_t* fluid_font; - int fontId; - - int readFd, writeFd; - - mutable MidiPatch patch; - - pthread_t helperThread; - FLUIDGui* gui; - - void gmOn(bool); - void sysexSoundFont(SfOp op, const char* data); - - void allNotesOff(); - void resetAllController(int); - - virtual void process(float**, int, int); - virtual bool playNote(int channel, int pitch, int velo); - virtual bool setController(int, int, int); - virtual bool sysex(int len, const unsigned char* p); - virtual const char* getPatchName (int, int, int) const; - virtual const MidiPatch* getPatchInfo(int, const MidiPatch *) const; - virtual void getInitData(int*, const unsigned char**); - - virtual bool guiVisible() const; - virtual void showGui(bool); - virtual bool hasGui() const { return true; } - - public: - ISynth(); - ~ISynth(); - - fluid_synth_t* synth() { return _fluidsynth; } - const fluid_synth_t* synth() const { return _fluidsynth; } - char* getFont() const { return sfont; } - void setFontId(int id) { fontId = id; } - int getFontId() const { return fontId; } - bool init(const char* name); - void noRTHelper(); - }; - -#endif /* _SYNTH_H */ diff --git a/muse/synti/fluid/fluidgui.cpp b/muse/synti/fluid/fluidgui.cpp deleted file mode 100644 index aea6e38a..00000000 --- a/muse/synti/fluid/fluidgui.cpp +++ /dev/null @@ -1,68 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: fluidgui.cpp,v 1.10 2005/11/23 13:55:32 wschweer Exp $ -// -// This is a simple GUI implemented with QT for -// fluid software synthesizer. -// -// (C) Copyright 2001-2004 Werner Schweer (ws@seh.de) -//========================================================= - -#include "fluidgui.h" -#include "muse/midi.h" - -//--------------------------------------------------------- -// FLUIDGui -//--------------------------------------------------------- - -FLUIDGui::FLUIDGui() - : QDialog(0), MessGui() - { - setupUi(this); - connect(fdialogButton, SIGNAL(clicked()), SLOT(soundFontFileDialog())); - connect(loadButton, SIGNAL(clicked()), SLOT(loadFont())); - } - -//--------------------------------------------------------- -// loadFont -// sysex f0 lenH lenM lenL 7c 00 01 name -//--------------------------------------------------------- - -void FLUIDGui::loadFont() - { - if (pathEntry->text().isEmpty()) - return; - QFileInfo fi(pathEntry->text()); - if (!fi.exists()) { - QString s = QString("SoundFont ") + pathEntry->text() + QString(" does not exists"); - QMessageBox::critical(this, tr("FLUID: open Soundfile"), s); - return; - } - const char* path = pathEntry->text().toLatin1().data(); - int len = strlen(path) + 1 + 3; - unsigned char buffer[len]; - int k = 0; - buffer[k++] = 0x7c; - buffer[k++] = 0x00; // fluid - buffer[k++] = 0x01; // load sound font - strcpy((char*)(&buffer[k]), path); - sendSysex(buffer, len); - } - -//--------------------------------------------------------- -// soundFontFileDialog -//--------------------------------------------------------- - -void FLUIDGui::soundFontFileDialog() - { - QString s = QFileDialog::getOpenFileName( - this, - tr("Fluid: select Sound Font"), - ".", - QString("*.[Ss][Ff]2")); - if (!s.isEmpty()) { - pathEntry->setText(s); - } - } - diff --git a/muse/synti/fluid/fluidgui.h b/muse/synti/fluid/fluidgui.h deleted file mode 100644 index 3b42280f..00000000 --- a/muse/synti/fluid/fluidgui.h +++ /dev/null @@ -1,31 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: fluidgui.h,v 1.3 2005/10/04 21:37:44 lunar_shuttle Exp $ -// -// (C) Copyright 2001 Werner Schweer (ws@seh.de) -//========================================================= - -#ifndef __GUI_H__ -#define __GUI_H - -#include "ui_fluidgui.h" -#include "libsynti/gui.h" - -//--------------------------------------------------------- -// FLUIDGui -//--------------------------------------------------------- - -class FLUIDGui : public QDialog, public Ui::FLUIDGuiBase, public MessGui { - - Q_OBJECT - - private slots: - void soundFontFileDialog(); - void loadFont(); - - public: - FLUIDGui(); - }; - -#endif diff --git a/muse/synti/fluid/fluidgui.ui b/muse/synti/fluid/fluidgui.ui deleted file mode 100644 index dde416d2..00000000 --- a/muse/synti/fluid/fluidgui.ui +++ /dev/null @@ -1,115 +0,0 @@ - - - - - FLUIDGuiBase - - - - 0 - 0 - 318 - 228 - - - - Form1 - - - - 8 - - - 6 - - - - - Soundfont - - - - - - - 0 - - - 6 - - - - - - - - - - - - - - - - - - - - Qt::Vertical - - - - 230 - 20 - - - - - - - - 0 - - - 6 - - - - - - 5 - 0 - 0 - 0 - - - - Load - - - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 20 - 20 - - - - - - - - - - - - - diff --git a/muse/synti/fluidsynth/CMakeLists.txt b/muse/synti/fluidsynth/CMakeLists.txt deleted file mode 100644 index 5fdc3533..00000000 --- a/muse/synti/fluidsynth/CMakeLists.txt +++ /dev/null @@ -1,51 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -QT4_WRAP_CPP ( fluidsynth_mocs fluidsynthgui.h ) -QT4_WRAP_UI ( fluidsynth_uis fluidsynthgui.ui ) - -add_library ( fluidsynth SHARED - fluidsynti.cpp - fluidsynthgui.cpp - fluidsynthgui.h - ${fluidsynth_mocs} - ${fluidsynth_uis} - ) - -target_link_libraries( fluidsynth synti ) - -# - tell cmake to name target fluidsynth.so instead of -# libfluidsynth.so -# - use precompiled header files -# -set_target_properties ( fluidsynth - PROPERTIES PREFIX "" - COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all-pic.h" - LINK_FLAGS "-L${FLUID_LIBDIR} ${FLUID_LIB}" - ) - -target_link_libraries(fluidsynth - synti - ${QT_LIBRARIES} - ${FLUID_LIB} - ) - -install_targets ( /${CMAKE_INSTALL_LIBDIR}/${MusE_INSTALL_NAME}/synthi/ fluidsynth ) - diff --git a/muse/synti/fluidsynth/README.txt b/muse/synti/fluidsynth/README.txt deleted file mode 100644 index 7764edb6..00000000 --- a/muse/synti/fluidsynth/README.txt +++ /dev/null @@ -1,45 +0,0 @@ -README.txt ----------- - -Graphical frontend and built-in softsynth (MusE Experimental Soft Synth) for MusE, based on Fluidsynth -(http://www.fluidsynth.org). - -Features: ---------- -- Loading/unloading of soundfonts -- Easy control of fluidsynth's send effects and their parameters -- Mapping of soundfonts to fluidsynth channels -- Stores all settings in the current project file and automatically loads all effect parameters, - soundfonts, channel settings and presets when re-opening the project. -- Makes it possible to use several soundfonts in one single fluidsynth instance (thereby reducing CPU usage since they share - the same send effects) - - -Changelog/History ------------------ -040524 -- Err... Fount out that this changelog is neglected. See ../../Changelog.txt instead. -031019 -- Bugfixes and changes in storing/retrieving init parameters (Mathias Lundgren) -031009 -- Unloading of soundfonts works (Mathias Lundgren) -- Last dir stored in project-file (Mathias Lundgren) -- Ordinary controller-events enabled (Mathias Lundgren) -031008 -- Mapping of soundfonts to fluidchannels and selection of patches implemented. (Mathias Lundgren) -- Permanent storage of channels & patches. Extended GUI. (Mathias Lundgren) -031002 -- Various communication problems fixed between GUI and client (Mathias Lundgren) -- Storage of synth parameters and soundfonts enabled (Mathias Lundgren/Robert Jonsson) - -0309xx -- Problem with loading of soundfonts resulting in Jack timeout fixed by moving loading of soundfonts to separate thread. (Robert Jonsson) - -Original code written by Robert Ham (no information about the history of his work) - - -Known problems/TODO: --------------------------------------------------------------- -* Turning on the chorus and/or modifying chorus parameters locks the client. -* Illegal chorus parameters can be sent to fluidsynth. -* Drum patches (lbank=128) not implemented yet diff --git a/muse/synti/fluidsynth/TODO b/muse/synti/fluidsynth/TODO deleted file mode 100644 index e941e1e9..00000000 --- a/muse/synti/fluidsynth/TODO +++ /dev/null @@ -1,13 +0,0 @@ - TODO - -o preset loading/saving -o configuration loading/saving -o soundfont information display -o remembering the last directory that was dealt with -o change gui<->synth communication to nrpns - - DONE - -o get all controllers working -o soundfont stack operations -o patch name retrieval diff --git a/muse/synti/fluidsynth/fluidsynthgui.cpp b/muse/synti/fluidsynth/fluidsynthgui.cpp deleted file mode 100644 index 42f812b5..00000000 --- a/muse/synti/fluidsynth/fluidsynthgui.cpp +++ /dev/null @@ -1,596 +0,0 @@ -/* - * MusE FLUID Synth softsynth plugin - * - * Copyright (C) 2004 Mathias Lundgren (lunar_shuttle@users.sourcforge.net) - * - * $Id: fluidsynthgui.cpp,v 1.19 2006/01/06 22:48:09 wschweer Exp $ - * - */ - -#include "fluidsynthgui.h" -#include "fluidsynti.h" -#include -#include "muse/midi.h" -#include "xpm/buttondown.xpm" - - -//#define MUSE_FLUID_DEBUG false - -FluidSynthGui::FluidSynthGui() - : MessGui() - { - setupUi(this); - //Connect socketnotifier to fifo - QSocketNotifier* s = new QSocketNotifier(readFd, QSocketNotifier::Read); - connect(s, SIGNAL(activated(int)), SLOT(readMessage(int))); - connect (Push, SIGNAL (clicked()), SLOT(loadClicked())); - - pendingFont = ""; - - //channelListView->setColumnWidthMode(FS_CHANNEL_COL, Q3ListView::Maximum); - //channelListView->setColumnWidthMode(FS_SF_ID_COL,Q3ListView::Maximum); - ReverbFrame->setEnabled(true); - ChorusFrame->setEnabled(true); - - if (!FS_DEBUG) - dumpInfoButton->hide(); - - connect(Gain, SIGNAL(valueChanged(int)), SLOT(changeGain(int))); - connect(dumpInfoButton , SIGNAL(clicked()), SLOT(dumpInfo())); - - connect(channelTreeWidget, SIGNAL(itemPressed(QTreeWidgetItem*,int)), - this, SLOT(channelItemClicked(QTreeWidgetItem*,int))); - connect(sfTreeWidget, SIGNAL(itemPressed(QTreeWidgetItem*,int)), - this, SLOT(sfItemClicked(QTreeWidgetItem*,int))); - - connect(Reverb, SIGNAL (toggled(bool)), SLOT(toggleReverb(bool))); - connect(ReverbLevel, SIGNAL (valueChanged (int)), SLOT(changeReverbLevel(int))); - connect(ReverbRoomSize, SIGNAL (valueChanged (int)), SLOT(changeReverbRoomSize(int))); - connect(ReverbDamping, SIGNAL (valueChanged (int)), SLOT(changeReverbDamping(int))); - connect(ReverbWidth, SIGNAL (valueChanged (int)), SLOT(changeReverbWidth(int))); - - connect (Pop, SIGNAL (clicked()), SLOT(popClicked())); - connect(Chorus, SIGNAL (toggled (bool)), SLOT(toggleChorus (bool))); - connect(ChorusNumber, SIGNAL (valueChanged (int)), SLOT(changeChorusNumber (int))); - connect(ChorusType, SIGNAL (activated (int)), SLOT(changeChorusType (int))); - connect(ChorusSpeed, SIGNAL (valueChanged (int)), SLOT(changeChorusSpeed (int))); - connect(ChorusDepth, SIGNAL (valueChanged (int)), SLOT(changeChorusDepth (int))); - connect(ChorusLevel, SIGNAL (valueChanged (int)), SLOT(changeChorusLevel (int))); - - //Clear channels - for (int i=0; iclear(); //Clear the listview - stack.clear(); //Clear the stack since we're starting over again - - while (count) { - FluidGuiSoundFont font; - filename_len = strlen((const char*)cp) + 1; - font.name = (const char*)cp; - font.id = *(cp + filename_len); - chunk_len = filename_len + FS_SFDATALEN; - stack.push_front(font); - cp += chunk_len; //Move to next chunk - count--; - } - updateSoundfontTreeWidget(); - updateChannelTreeWidget(); - break; - } - case FS_SEND_CHANNELINFO: { - byte* chptr = (data+1); - for (int i=0; i< FS_MAX_NR_OF_CHANNELS; i++) { - byte id = *chptr; - byte channel = *(chptr+1); - channels[channel] = id; - chptr+=2; - } - updateChannelTreeWidget(); - - break; - } - case FS_SEND_DRUMCHANNELINFO: { - byte* drumchptr = (data+1); - for (int i=0; isignalsBlocked(); - Gain->blockSignals(true); - // Update Gain-slider without causing it to respond to it's own signal (and send another msg to the synth) - Gain->setValue(val); - Gain->blockSignals(sb); - break; - } - case FS_REVERB_ON: { - bool sb = Reverb->signalsBlocked(); - Reverb->blockSignals(true); - Reverb->setChecked(val); - Reverb->blockSignals(sb); - break; - } - case FS_REVERB_LEVEL: { - bool sb = ReverbLevel->signalsBlocked(); - ReverbLevel->blockSignals(true); - ReverbLevel->setValue(val); - ReverbLevel->blockSignals(sb); - break; - } - case FS_REVERB_DAMPING: { - bool sb = ReverbDamping->signalsBlocked(); - ReverbDamping->blockSignals(true); - ReverbDamping->setValue(val); - ReverbDamping->blockSignals(sb); - break; - } - case FS_REVERB_ROOMSIZE: { - bool sb = ReverbRoomSize->signalsBlocked(); - ReverbRoomSize->blockSignals(true); - ReverbRoomSize->setValue(val); - ReverbRoomSize->blockSignals(sb); - break; - } - case FS_REVERB_WIDTH: { - bool sb = ReverbWidth->signalsBlocked(); - ReverbWidth->blockSignals(true); - ReverbWidth->setValue(val); - ReverbWidth->blockSignals(sb); - break; - } - case FS_CHORUS_ON: { - Chorus->blockSignals(true); - Chorus->setChecked(val); - Chorus->blockSignals(false); - break; - } - case FS_CHORUS_SPEED: { - ChorusSpeed->blockSignals(true); - ChorusSpeed->setValue(val); - ChorusSpeed->blockSignals(false); - break; - } - case FS_CHORUS_NUM: { - ChorusNumber->blockSignals(true); - ChorusNumber->setValue(val); - ChorusNumber->blockSignals(false); - break; - } - case FS_CHORUS_TYPE: { - ChorusType->blockSignals(true); - ChorusType->setCurrentIndex(val); - ChorusType->blockSignals(false); - break; - } - case FS_CHORUS_DEPTH: { - ChorusDepth->blockSignals(true); - ChorusDepth->setValue(val); - ChorusDepth->blockSignals(false); - break; - } - case FS_CHORUS_LEVEL: { - ChorusLevel->blockSignals(true); - ChorusLevel->setValue(val); - ChorusLevel->blockSignals(false); - break; - } - default: - if (FS_DEBUG) - printf("FluidSynthGui::processEvent() : Unknown controller sent to gui: %x\n",id); - break; - } - } - else - if (FS_DEBUG) - printf("FluidSynthGui::processEvent - unknown event of type %dreceived from synth.\n", ev.type()); - } - -//--------------------------------------------------------- -// readMessage -//--------------------------------------------------------- -void FluidSynthGui::readMessage(int) - { - MessGui::readMessage(); - } - -//--------------------------------------------------------- -// updateChannels -//--------------------------------------------------------- -void FluidSynthGui::updateChannelTreeWidget() - { - if (FS_DEBUG) - printf("FluidSynthGui::updateChannelListView\n"); - channelTreeWidget->clear(); - QIcon btndown = QIcon(buttondown_xpm); - - QTreeWidgetItem* header = new QTreeWidgetItem(); - header->setText(FS_CHANNEL_COL, "Channel"); - header->setText(FS_SF_ID_COL, "Soundfont"); - header->setText(FS_DRUM_CHANNEL_COL, "Drum Chnl"); - channelTreeWidget->setHeaderItem(header); - - for (int i=0; isetText(FS_CHANNEL_COL, chanstr); - qlvNewItem->setIcon(FS_SF_ID_COL, btndown); - qlvNewItem->setText(FS_SF_ID_COL, sfidstr); - qlvNewItem->setIcon(FS_DRUM_CHANNEL_COL, btndown); - qlvNewItem->setText(FS_DRUM_CHANNEL_COL, drumchanstr); - } - } - -//--------------------------------------------------------- -// updateSoundfontTreeWidget -//--------------------------------------------------------- -void FluidSynthGui::updateSoundfontTreeWidget() - { - sfTreeWidget->clear(); //Clear the listview - - QTreeWidgetItem* header = new QTreeWidgetItem(); - header->setText(FS_ID_COL, "ID"); - header->setText(FS_SFNAME_COL, "Fontname"); - sfTreeWidget->setHeaderItem(header); - - for (std::list::iterator it = stack.begin(); it != stack.end(); it++) { - QTreeWidgetItem* qlvNewItem; - - qlvNewItem = new QTreeWidgetItem(sfTreeWidget); - QString qsid = QString("%1").arg(it->id); - qlvNewItem->setText(FS_ID_COL, qsid); - qlvNewItem->setText(FS_SFNAME_COL, QString(it->name)); - } - //sfTreeWidget->sort(); - } - -//--------------------------------------------------------- -// changeGain -//--------------------------------------------------------- -void FluidSynthGui::changeGain(int value) - { - sendController(0, FS_GAIN, value); - } - - -//--------------------------------------------------------- -// dumpInfoButton -//--------------------------------------------------------- -void FluidSynthGui::dumpInfo() - { - byte data[1]; - data[0] = FS_DUMP_INFO; - sendSysex(data, 1); - } - -//--------------------------------------------------------- -// getSoundFontName -//--------------------------------------------------------- - -QString FluidSynthGui::getSoundFontName(int id) - { - QString name = NULL; - for (std::list::iterator it = stack.begin(); it != stack.end(); it++) { - if (id == it->id) { - name = it->name; - continue; - } - } - return name; - } - -//--------------------------------------------------------- -// channelItemClicked -// change channel parameters like soundfont / drumchannel on/off -//--------------------------------------------------------- - -void FluidSynthGui::channelItemClicked(QTreeWidgetItem* item, int col) - { - // - // Soundfont ID column - // - if (col == FS_SF_ID_COL) { - QMenu* popup = new QMenu(this); - QPoint ppt = channelTreeWidget->visualItemRect(item).bottomLeft(); - QTreeWidget* treeWidget = item->treeWidget(); - ppt += QPoint(treeWidget->header()->sectionPosition(col), treeWidget->header()->height()); - ppt = treeWidget->mapToGlobal(ppt); - - int i = 0; - for (std::list::reverse_iterator it = stack.rbegin(); it != stack.rend(); it++) { - i++; - QAction* a = popup->addAction(it->name); - a->setData(i); - } - - int lastindex = i+1; - QAction* a = popup->addAction("unspecified"); - a->setData(lastindex); - a = popup->exec(ppt, 0); - if (a) { - int index = a->data().toInt(); - byte sfid; - QString fontname; - if (index == lastindex) { - sfid = FS_UNSPECIFIED_ID; - fontname = "unspecified"; //Actually, it's not possible to reset fluid-channels as for now, - } //so this is just a dummy that makes the synth block any events for the channel - else { - sfid = getSoundFontId(a->text()); - fontname = getSoundFontName(sfid); - } - byte channel = atoi(item->text(FS_CHANNEL_COL).toLatin1().data()) - 1; - sendChannelChange(sfid, channel); - item->setText(FS_SF_ID_COL, fontname); - } - delete popup; - } - // - // Drumchannel column: - // - else if (col == FS_DRUM_CHANNEL_COL) { - QMenu* popup = new QMenu(this); - QPoint ppt = channelTreeWidget->visualItemRect(item).bottomLeft(); - QTreeWidget* treeWidget = item->treeWidget(); - ppt += QPoint(treeWidget->header()->sectionPosition(col), treeWidget->header()->height()); - ppt = treeWidget->mapToGlobal(ppt); - QAction* a = popup->addAction("Yes"); - a->setData(1); - a = popup->addAction("No"); - a->setData(0); - byte channel = atoi(item->text(FS_CHANNEL_COL).toLatin1().data()) - 1; - - a = popup->exec(ppt, 0); - if (a) { - int index = a->data().toInt(); - if (index != drumchannels[channel]) { - sendDrumChannelChange(index, channel); - drumchannels[channel] = index; - item->setText(FS_DRUM_CHANNEL_COL, index == 0 ? "No" : "Yes" ); - } - } - } -#if 0 - else if (col == FS_DRUM_CHANNEL_COL) { - Q3PopupMenu* popup = new Q3PopupMenu(this); - QPoint ppt = channelListView->itemRect(item).bottomLeft(); - Q3ListView* listView = item->listView(); - ppt += QPoint(listView->header()->sectionPos(col), listView->header()->height()); - ppt = listView->mapToGlobal(ppt); - popup->insertItem("Yes", 1); - popup->insertItem("No", 0); - byte channel = atoi(item->text(FS_CHANNEL_COL).toLatin1().data()) - 1; - - int index = popup->exec(ppt, 0); - if (index != drumchannels[channel] && index !=-1) { - sendDrumChannelChange(index, channel); - drumchannels[channel] = index; - item->setText(FS_DRUM_CHANNEL_COL, index == 0 ? "No" : "Yes" ); - } - } -#endif - } - -//--------------------------------------------------------- -// getSoundFontId -//--------------------------------------------------------- - -int FluidSynthGui::getSoundFontId(QString q) - { - int id = -1; - for (std::list::iterator it = stack.begin(); it != stack.end(); it++) { - if (q == it->name) - id = it->id; - } - return id; - } - -//--------------------------------------------------------- -// sendChannelChange -// Tell the client to set a soundfont to a specific fluid channel -//--------------------------------------------------------- - -void FluidSynthGui::sendChannelChange(byte font_id, byte channel) - { - byte data[3]; - data[0] = FS_SOUNDFONT_CHANNEL_SET; - data[1] = font_id; - data[2] = channel; - sendSysex(data, 3); - } - -//--------------------------------------------------------- -// sendDrumChannelChange -// Tell the client to set a specific channel to drum channel (equiv to midichan 10) -//--------------------------------------------------------- -void FluidSynthGui::sendDrumChannelChange(byte onoff, byte channel) - { - byte data[3]; - data[0] = FS_DRUMCHANNEL_SET; - data[1] = onoff; - data[2] = channel; - sendSysex(data, 3); - if (FS_DEBUG) - printf("Sent FS_DRUMCHANNEL_SET for channel %d, status: %d\n", channel, onoff); - } - -void FluidSynthGui::popClicked() - { - byte data[2]; - data[0] = FS_SOUNDFONT_POP; - data[1] = currentlySelectedFont; - sendSysex(data,2); - } - -void FluidSynthGui::sfItemClicked(QTreeWidgetItem* item, int /*column*/) - { - if (item != 0) { - currentlySelectedFont = atoi(item->text(FS_ID_COL).toLatin1().data()); - Pop->setEnabled(true); - } - else { - currentlySelectedFont = -1; - Pop->setEnabled(false); - } - } - -#if 0 - - - -void FluidSynthGui::readData (int fd) - { - unsigned char buffer[512]; - int n = ::read(fd, buffer, 512); -// dataInput(buffer, n); - } - -#endif diff --git a/muse/synti/fluidsynth/fluidsynthgui.h b/muse/synti/fluidsynth/fluidsynthgui.h deleted file mode 100644 index 9884e636..00000000 --- a/muse/synti/fluidsynth/fluidsynthgui.h +++ /dev/null @@ -1,136 +0,0 @@ -/* - * MusE FLUID Synth softsynth plugin - * - * Copyright (C) 2004 Mathias Lundgren (lunar_shuttle@users.sourcforge.net) - * - * $Id: fluidsynthgui.h,v 1.15 2005/10/05 21:51:04 lunar_shuttle Exp $ - * - */ - -#ifndef __MUSE_FLUIDSYNTHGUI_H__ -#define __MUSE_FLUIDSYNTHGUI_H__ - -#include "ui_fluidsynthgui.h" -#include "libsynti/gui.h" -#include - -struct FluidChannel; -#define FS_DEBUG 0 //Turn on/off debug - -#define FS_MAX_NR_OF_CHANNELS 16 -#define FS_UNSPECIFIED_FONT 126 -#define FS_UNSPECIFIED_ID 127 -#define FS_UNSPECIFIED_PRESET 129 -#define FS_CHANNEL_COL 0 -#define FS_ID_COL 0 -#define FS_SFNAME_COL 1 -#define FS_SF_ID_COL 1 -#define FS_DRUM_CHANNEL_COL 2 - -#define FS_SFDATALEN 1 -#define FS_VERSION_MAJOR 0 -#define FS_VERSION_MINOR 4 -#define FS_INIT_DATA_HEADER_SIZE 4 -#define FS_INIT_CHANNEL_SECTION 255 - -// Predefined init-values for fluidsynth -#define FS_PREDEF_VOLUME 0.2 -#define FS_PREDEF_REVERB_LEVEL 0.25 -#define FS_PREDEF_REVERB_ROOMSIZE 0.3 -#define FS_PREDEF_REVERB_DAMPING 0.3 -#define FS_PREDEF_REVERB_WIDTH 0.2 -#define FS_PREDEF_CHORUS_NUM 3 -#define FS_PREDEF_CHORUS_TYPE 1 -#define FS_PREDEF_CHORUS_SPEED 0.5 -#define FS_PREDEF_CHORUS_DEPTH 0.3 -#define FS_PREDEF_CHORUS_LEVEL 0.5 -typedef unsigned char byte; - - -//Various messages the gui and the client uses to communicate -enum { - FS_LASTDIR_CHANGE = 1, - FS_PUSH_FONT - }; - -enum { - //FS_GAIN_SET, - FS_SEND_SOUNDFONTDATA = 4, - FS_SEND_CHANNELINFO, //Used by synth to send info about all channels, on init - FS_SOUNDFONT_CHANNEL_SET, - FS_SOUNDFONT_POP, - FS_SEND_DRUMCHANNELINFO, //Used by synth to send drumchannel status about all channels, on init - FS_DRUMCHANNEL_SET, //Used by gui to set drumchannel status for specific channel - FS_FONT_SUCCESSFULLY_LOADED // synth tells gui it loaded a font successfully, and gives it it's external id - }; - -enum - { - FS_DUMP_INFO = 240, - FS_ERROR, - FS_INIT_DATA - }; - -struct FluidGuiSoundFont - { - QString filename; - QString name; - byte id; - }; - -//--------------------------------------------------------- -// FluidSynthGui -//--------------------------------------------------------- - -class FluidSynthGui : public QDialog, Ui::FLUIDSynthGuiBase, public MessGui - { - Q_OBJECT - private: - virtual void processEvent(const MidiEvent& ev); - void sendLastdir(QString); - void sendLoadFont(QString); - void sendChannelChange(byte font_id, byte channel); - void sendDrumChannelChange(byte onoff, byte channel); - void updateSoundfontTreeWidget(); - void updateChannelTreeWidget(); - - QString getSoundFontName(int id); - int getSoundFontId(QString q); - QString lastdir; - std::list stack; - byte channels[FS_MAX_NR_OF_CHANNELS]; //Array of bytes, for mapping soundfonts to individual channels - byte drumchannels[FS_MAX_NR_OF_CHANNELS]; // Array of bytes for setting channels to drumchannels or not (equiv to midichan 10) - - int currentlySelectedFont; //Font currently selected in sfListView. -1 if none selected - QString pendingFont; - - private slots: - void loadClicked(); - void readMessage(int); - void changeGain(int); - void dumpInfo(); - void channelItemClicked(QTreeWidgetItem* item, int column); - void toggleReverb(bool); - void changeReverbLevel (int); - void changeReverbRoomSize(int val); - void changeReverbWidth(int val); - void changeReverbDamping(int val); - void toggleChorus(bool); - void changeChorusNumber(int); - void changeChorusType(int); - void changeChorusSpeed(int); - void changeChorusDepth(int); - void changeChorusLevel(int); - void popClicked(); - void sfItemClicked(QTreeWidgetItem* item, int column); - - public: -// virtual void sysexReceived (const unsigned char *, int); -// virtual void controllerReceived(int, int, int); - - FluidSynthGui(); - ~FluidSynthGui(); -}; - - -#endif /* __MUSE_FLUIDSYNTHGUI_H__ */ diff --git a/muse/synti/fluidsynth/fluidsynthgui.ui b/muse/synti/fluidsynth/fluidsynthgui.ui deleted file mode 100644 index 558f4133..00000000 --- a/muse/synti/fluidsynth/fluidsynthgui.ui +++ /dev/null @@ -1,641 +0,0 @@ - - - - - FLUIDSynthGuiBase - - - - 0 - 0 - 656 - 514 - - - - FLUID Synth - - - - - - - 8 - - - 6 - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 8 - - - 6 - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Loaded Soundfonts</span></p></body></html> - - - Qt::AutoText - - - Qt::AlignHCenter - - - - - - - 2 - - - true - - - - 0 - - - - - 1 - - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 8 - - - 6 - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Channel Setup</span></p></body></html> - - - Qt::AlignHCenter - - - - - - - 3 - - - true - - - - 0 - - - - - 1 - - - - - 2 - - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 8 - - - 6 - - - - - Chorus - - - - - - - 0 - - - 6 - - - - - Number - - - Qt::AlignCenter - - - - - - - 127 - - - - - - - Type - - - Qt::AlignCenter - - - - - - - - Sine - - - - - Triangle - - - - - - - - - - 0 - - - 6 - - - - - Speed - - - Qt::AlignCenter - - - - - - - 16383 - - - 16 - - - 1638 - - - Qt::Horizontal - - - 1638 - - - - - - - - - 0 - - - 6 - - - - - Depth - - - Qt::AlignCenter - - - - - - - 16383 - - - 16 - - - 1638 - - - Qt::Horizontal - - - 1638 - - - - - - - - - 0 - - - 6 - - - - - Level - - - Qt::AlignCenter - - - - - - - 16383 - - - 16 - - - 1638 - - - Qt::Horizontal - - - 1638 - - - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 8 - - - 6 - - - - - 0 - - - 6 - - - - - Load - - - - - - - false - - - Delete - - - - - - - Dump Info - - - - - - - - - - - - - - - - 8 - - - 6 - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Gain</p></body></html> - - - - - - - 0 - - - 127 - - - 5 - - - 13 - - - true - - - Qt::Horizontal - - - 7 - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 8 - - - 6 - - - - - Reverb - - - - - - - 0 - - - 6 - - - - - 0 - - - 6 - - - - - Room Size - - - Qt::AlignCenter - - - - - - - Damping - - - Qt::AlignCenter - - - - - - - Width - - - Qt::AlignCenter - - - - - - - Level - - - Qt::AlignCenter - - - - - - - - - 0 - - - 6 - - - - - 16383 - - - 16 - - - 1638 - - - Qt::Horizontal - - - 1638 - - - - - - - 16383 - - - 16 - - - 1638 - - - Qt::Horizontal - - - 1638 - - - - - - - 16383 - - - 16 - - - 1638 - - - Qt::Horizontal - - - 1638 - - - - - - - 16383 - - - 16 - - - 1638 - - - Qt::Horizontal - - - 1638 - - - - - - - - - - - - 11 - 36 - 260 - 17 - - - - - - - 11 - 59 - 260 - 17 - - - - - - - 11 - 82 - 260 - 17 - - - - - - - 11 - 105 - 260 - 17 - - - - - - - - - - - - diff --git a/muse/synti/fluidsynth/fluidsynti.cpp b/muse/synti/fluidsynth/fluidsynti.cpp deleted file mode 100644 index 57e72262..00000000 --- a/muse/synti/fluidsynth/fluidsynti.cpp +++ /dev/null @@ -1,1174 +0,0 @@ -/* - * MusE FLUID Synth softsynth plugin - * - * Copyright (C) 2004 Mathias Lundgren (lunar_shuttle@users.sourcforge.net) - * - * $Id: fluidsynti.cpp,v 1.28 2005/12/18 14:09:54 wschweer Exp $ - * - */ - -#include "fluidsynti.h" -#include "muse/midi.h" - -#include -#include - - -FluidCtrl FluidSynth::fluidCtrl[] = { - { "Gain", FS_GAIN ,0, 127}, - { "Master reverb on/off", FS_REVERB_ON , 0, 1}, - { "Master reverb level", FS_REVERB_LEVEL, 0, 16384 }, - { "Master reverb size", FS_REVERB_ROOMSIZE, 0, 16384 }, // Interval: [0,1] - { "Master reverb damping", FS_REVERB_DAMPING, 0, 16384 }, // Interval: [0,1] - { "Master reverb width", FS_REVERB_WIDTH, 0, 16384 }, // Interval: [0,100] - { "Master chorus on/off", FS_CHORUS_ON, 0, 1}, - { "Master chorus num delay lines", FS_CHORUS_NUM, 0, 10 }, //Default: 3 - { "Master chorus type", FS_CHORUS_TYPE, 0, 1 }, - { "Master chorus speed", FS_CHORUS_SPEED, 0, 16384 }, // (0.291,5) Hz - { "Master chorus depth", FS_CHORUS_DEPTH, 0, 16384 }, // [0,40] - { "Master chorus level", FS_CHORUS_LEVEL, 0, 16384 }, // [0,1] - { "Modulation", CTRL_MODULATION, 0, 127 }, - { "Portamento time", CTRL_PORTAMENTO_TIME, 0, 127 }, - { "Volume", CTRL_VOLUME, 0, 127 }, - { "Pan", CTRL_PANPOT, 0, 127 }, - { "Expression", CTRL_EXPRESSION, 0, 127 }, - { "Sustain", CTRL_SUSTAIN, 0, 127 }, - { "Portamento", CTRL_PORTAMENTO, 0, 127 }, - { "Soft Pedal", CTRL_SOFT_PEDAL, 0, 127 }, - { "Variation", CTRL_VARIATION_SEND, 0, 127 }, - { "Channel reverb send", CTRL_REVERB_SEND, 0, 127 }, - { "Channel chorus send", CTRL_CHORUS_SEND, 0, 127 }, - { "Pitch", CTRL_PITCH, -8192, 8191 } - }; - -static int NUM_CONTROLLER = sizeof(FluidSynth::fluidCtrl)/sizeof(*(FluidSynth::fluidCtrl)); - -// -// Fluidsynth -// -FluidSynth::FluidSynth(int sr) : Mess(2) - { - setSampleRate(sr); - fluid_settings_t* s = new_fluid_settings(); - fluid_settings_setnum(s, "synth.sample-rate", float(sampleRate())); - fluidsynth = new_fluid_synth(s); - if (!fluidsynth) { - printf("Error while creating fluidsynth!\n"); - return; - } - - //Set up channels: - for (int i=0; ishow(); - gui->setWindowTitle(name); - - lastdir= ""; - currentlyLoadedFonts = 0; - nrOfSoundfonts = 0; - sendChannelData(); - cho_on = false; - cho_num = FS_PREDEF_CHORUS_NUM; - cho_type = FS_PREDEF_CHORUS_TYPE; - cho_level = FS_PREDEF_CHORUS_LEVEL; - cho_speed = FS_PREDEF_CHORUS_SPEED; - cho_depth = FS_PREDEF_CHORUS_DEPTH; - setController(0, FS_GAIN, (int)(fluidCtrl[0].max*FS_PREDEF_VOLUME)); - setController(0, FS_REVERB_ON, 0); - setController(0, FS_REVERB_LEVEL, (int)(fluidCtrl[2].max*FS_PREDEF_REVERB_LEVEL)); - setController(0, FS_REVERB_ROOMSIZE, (int)(fluidCtrl[3].max*FS_PREDEF_REVERB_ROOMSIZE)); - setController(0, FS_REVERB_DAMPING, (int)(fluidCtrl[4].max*FS_PREDEF_REVERB_DAMPING)); - setController(0, FS_REVERB_WIDTH, (int)(fluidCtrl[5].max*FS_PREDEF_REVERB_WIDTH)); - setController(0, FS_CHORUS_ON, 0); - setController(0, FS_CHORUS_NUM, FS_PREDEF_CHORUS_NUM); - //setController(0, FS_CHORUS_TYPE, FS_PREDEF_CHORUS_TYPE); //? - setController(0, FS_CHORUS_SPEED, (int)(fluidCtrl[9].max*FS_PREDEF_CHORUS_SPEED)); - setController(0, FS_CHORUS_DEPTH, (int)(fluidCtrl[10].max*FS_PREDEF_CHORUS_DEPTH)); - setController(0, FS_CHORUS_LEVEL, (int)(fluidCtrl[11].max*FS_PREDEF_CHORUS_LEVEL)); - return false; - } - -//--------------------------------------------------------- -// process -// called from host -//--------------------------------------------------------- - -void FluidSynth::process(float** ports, int offset, int len) - { - //Process messages from the gui - while (gui->fifoSize()) { - MidiEvent ev = gui->readEvent(); - if (ev.type() == ME_SYSEX) { - sysex(ev.len(), ev.data()); - sendEvent(ev); - } - else if (ev.type() == ME_CONTROLLER) { - setController(ev.channel(), ev.dataA(), ev.dataB(), true); - sendEvent(ev); - } - else { - if (FS_DEBUG) - printf("FluidSynth::process(): unknown event, type: %d\n", ev.type()); - } - } - - if (fluid_synth_write_float(fluidsynth, len, ports[0], offset, 1, ports[1], offset, 1)) { - M_ERROR("Error writing from synth!"); - return; - } - } - -//--------------------------------------------------------- -// getInitData -// Prepare data that will restore the synth's state on load -//--------------------------------------------------------- -void FluidSynth::getInitData(int* n, const unsigned char** data) - { - // Data setup: - // FS_INIT_DATA (1 byte) - // FluidSynth version (2 bytes, x.y) - // n = Number of soundfonts (1 byte) - // Lastdir (variable size) - // - // FS_FONTS_BEGIN - // n blocks with font path (variable size) - // n bytes with font external id - // - // for all channels (16), 1 byte each for external id + 1 byte for preset + 1 byte for bankno - // which is mapped to internal id after all fonts are loaded. - // - // reverb + chorus on/off (2 bytes) - if (FS_DEBUG) - printf("FluidSynth::getInitData()\n"); - - //Calculate length: - int len = FS_INIT_DATA_HEADER_SIZE + strlen(lastdir.c_str()) + 1; //header size - for (std::list::const_iterator it = stack.begin(); it!=stack.end(); it++) { - len+=strlen(it->filename.c_str()) + 2; - } - //Add length for lastdir and channels: - len+=strlen(lastdir.c_str())+1; - len+=(FS_MAX_NR_OF_CHANNELS*4); // 4 bytes: ext+int id + bankno + drumchannel status - // + reverb - len+=2; - - if (FS_DEBUG) - printf("Total length of init sysex: %d\n", len); - byte* d = new byte[len]; - - // Header: - d[0] = FS_INIT_DATA; - d[1] = FS_VERSION_MAJOR; - d[2] = FS_VERSION_MINOR; - d[3] = stack.size(); - - //Lastdir: - byte* chptr = d + FS_INIT_DATA_HEADER_SIZE; - memcpy(chptr, lastdir.c_str(), strlen(lastdir.c_str())+1); - - //For each font... - chptr+=strlen(lastdir.c_str())+1; - for (std::list::const_iterator it =stack.begin(); it!=stack.end(); it++) { - memcpy(chptr, it->filename.c_str(), strlen(it->filename.c_str())+1); - chptr = chptr + 1 + strlen(it->filename.c_str()); - } - - //For each font again... - *chptr = FS_INIT_CHANNEL_SECTION; - chptr++; - for (std::list::const_iterator it =stack.begin(); it!=stack.end(); it++) { - *chptr = it->extid; - chptr++; - } - - //External id:s & preset for all channels: - for(int i=0; iwriteEvent(ev); - } - -//----------------------------------- -// pushSoundfont - load a soundfont -//----------------------------------- -bool FluidSynth::pushSoundfont (const char* filename, int extid) - { - pthread_attr_t* attributes = (pthread_attr_t*) malloc(sizeof(pthread_attr_t)); - pthread_attr_init(attributes); - pthread_attr_setdetachstate(attributes, PTHREAD_CREATE_DETACHED); - - FS_Helper* helper = new FS_Helper; - helper->fptr = this; - helper->filename = filename; - helper->id = extid; - - if (pthread_create(&fontThread, attributes, FluidSynth::fontLoadThread, (void*) helper)) - perror("creating thread failed:"); - - pthread_attr_destroy(attributes); - return true; - } - -//--------------------------------------------------------- -// fontLoadThread -// helper thread to load soundfont in the -// background -//--------------------------------------------------------- - -void* FluidSynth::fontLoadThread(void* t) - { - //Init vars - FS_Helper* h = (FS_Helper*) t; - FluidSynth* fptr = h->fptr; - const char* filename = h->filename.c_str(); - pthread_mutex_t* sfloader_mutex = &(fptr->_sfloader_mutex); - - //Let only one loadThread have access to the fluidsynth-object at the time - pthread_mutex_lock(sfloader_mutex); - int rv = fluid_synth_sfload(fptr->fluidsynth, filename, 1); - - if (rv ==-1) { - fptr->sendError(fluid_synth_error(fptr->fluidsynth)); - if (FS_DEBUG) - std::cerr << DEBUG_ARGS << "error loading soundfont: " << fluid_synth_error(fptr->fluidsynth) << std::endl; - - //Unlock the mutex, or else we might be stuck here forever... - pthread_mutex_unlock(sfloader_mutex); - delete h; - pthread_exit(0); - } - - //Deal with internal and external id etc. - if (FS_DEBUG) - printf("Soundfont %s loaded, index %d\n", filename, rv); - - FluidSoundFont font; - font.filename = h->filename;//strdup(filename); - - font.intid = rv; - if (h->id == FS_UNSPECIFIED_ID) { - font.extid = fptr->getNextAvailableExternalId(); - if (FS_DEBUG) - printf("Font got extid %d\n",font.extid); - } - else - font.extid = h->id; - if (FS_DEBUG) - printf("Font has external id: %d int id:%d\n", font.extid, font.intid); - - //Strip off the filename - QFileInfo fi(filename); - font.name = fi.baseName().toLatin1().data(); - fptr->stack.push_front(font); - fptr->currentlyLoadedFonts++; - - //Cleanup & unlock: - pthread_mutex_unlock(sfloader_mutex); - delete h; - - if (FS_DEBUG) - printf("Currently loaded fonts: %d Nr of soundfonts: %d\n",fptr->currentlyLoadedFonts, fptr->nrOfSoundfonts); - //Check whether this was the last font or not. If so, run initSynth(); - if (fptr->nrOfSoundfonts <= fptr->currentlyLoadedFonts) { - if (FS_DEBUG) - printf("This was the last font, rewriting channel settings...\n"); - fptr->rewriteChannelSettings(); - //Update data in GUI-window. - fptr->sendSoundFontData(); - fptr->sendChannelData(); - fptr->sendFontSuccessfullyLoaded(filename, font.extid); - } - - pthread_exit(0); - } - -//--------------------------------------------------------- -// playNote -// called from host -//--------------------------------------------------------- - -bool FluidSynth::playNote(int channel, int pitch, int velo) - { - if (channels[channel].font_intid == FS_UNSPECIFIED_FONT) - return false; - if (velo) { - if (fluid_synth_noteon(fluidsynth, channel, pitch, velo)) { - if (FS_DEBUG) - std::cerr << DEBUG_ARGS << "error processing noteon event: " << fluid_synth_error(fluidsynth); - } - } - else { - if (fluid_synth_noteoff(fluidsynth, channel, pitch)) - if (FS_DEBUG) - std::cerr << DEBUG_ARGS << "error processing noteoff event: " << fluid_synth_error(fluidsynth) << std::endl; - } - return false; - } - -//--------------------------------------------------------- -// sendSoundFontData -//--------------------------------------------------------- -void FluidSynth::sendSoundFontData() - { - int ndatalen = 2; //2 bytes for command and length - - //Calculate length in chars of all strings in the soundfontstack in one string - for (std::list::iterator it = stack.begin(); it != stack.end(); it++) { - ndatalen += 1 + strlen(it->name.c_str()); - ndatalen += FS_SFDATALEN; //unsigned char for ID - } - byte ndata[ndatalen]; - *ndata = FS_SEND_SOUNDFONTDATA; //The command - *(ndata + 1) = (unsigned char)stack.size (); //Nr of Soundfonts - - // Copy the stuff to ndatalen: - char* chunk_start = (char*)(ndata + 2); - int chunk_len, name_len; - for (std::list::iterator it = stack.begin(); it != stack.end(); ++it) { - name_len = strlen(it->name.c_str()) + 1; - chunk_len = name_len + FS_SFDATALEN; - memcpy(chunk_start, it->name.c_str(), name_len); //First, store the fontname - *(chunk_start + name_len) = it->extid; //The GUI only needs to know about the external id, store that here - chunk_start += chunk_len; - } - sendSysex(ndatalen, ndata); - } - -//--------------------------------------------------------- -// sendChannelData -//--------------------------------------------------------- -void FluidSynth::sendChannelData() - { - int chunk_size = 2; - int chdata_length = (chunk_size * FS_MAX_NR_OF_CHANNELS) +1 ; //Command and the 2 channels * 16 - byte chdata[chdata_length]; - byte* chdptr; - chdata[0] = FS_SEND_CHANNELINFO; - chdptr = (chdata + 1); - for (int i=0; i::iterator it = stack.begin(); it != stack.end(); it++) - printf("Font: %s\tintid: %d\textid %d\tfilename:%s\n", it->name.c_str(), it->intid, it->extid, it->filename.c_str()); - printf("Reverb on: %d, width: %f, size: %f level: %f damp: %f\n",rev_on, rev_width, rev_size, rev_level, rev_damping); - printf("-----------------------------------------------------\n"); - } - -//--------------------------------------------------------- -// guiVisible -//--------------------------------------------------------- - -bool FluidSynth::guiVisible() const - { - return gui->isVisible(); - } - - -//--------------------------------------------------------- -// showGui -//--------------------------------------------------------- - -void FluidSynth::showGui(bool val) - { - gui->setShown(val); - } - -//--------------------------------------------------------- -// setController -//--------------------------------------------------------- - -bool FluidSynth::setController(int channel, int id, int val) - { - setController(channel, id, val, false); - return false; - } - -//--------------------------------------------------------- -// setController -//--------------------------------------------------------- - -void FluidSynth::setController(int channel, int id, int val, bool fromGui) - { - // - // Channelless controllers - // - int err = 0; - switch (id) { - case FS_GAIN: { - fluid_synth_set_gain(fluidsynth, (float) val/25); //gives val an interval of approximately[0,5] - //Forward to gui if not from Gui - if (!fromGui) { - MidiEvent ev(0, 0, ME_CONTROLLER, FS_GAIN, val); - gui->writeEvent(ev); - } - break; - } - case FS_REVERB_ON: { - rev_on = val; - fluid_synth_set_reverb_on(fluidsynth, val); // 0 or 1 - //if (rev_on) - // fluid_synth_set_reverb(fluidsynth, rev_size, rev_damping, rev_width, rev_level); - if (!fromGui) { - MidiEvent ev(0, 0, ME_CONTROLLER, FS_REVERB_ON, val); - gui->writeEvent(ev); - } - break; - } - case FS_REVERB_LEVEL: - //Interval: 0-2 - rev_level = (double)2*val/16384; //[0,2] - //if (rev_on) - fluid_synth_set_reverb(fluidsynth, rev_size, rev_damping, rev_width, rev_level); - if (!fromGui) { - MidiEvent ev(0, 0, ME_CONTROLLER, FS_REVERB_LEVEL, val); - gui->writeEvent(ev); - } - break; - case FS_REVERB_WIDTH: // - rev_width = (double)val/164; //[0,100] - //if (rev_on) - fluid_synth_set_reverb(fluidsynth, rev_size, rev_damping, rev_width, rev_level); - if (!fromGui) { - MidiEvent ev(0, 0, ME_CONTROLLER, FS_REVERB_WIDTH, val); - gui->writeEvent(ev); - } - break; - case FS_REVERB_DAMPING: //[0,1] - rev_damping = (double)val/16384; - //if (rev_on) - fluid_synth_set_reverb(fluidsynth, rev_size, rev_damping, rev_width, rev_level); - if (!fromGui) { - MidiEvent ev(0, 0, ME_CONTROLLER, FS_REVERB_DAMPING, val); - gui->writeEvent(ev); - } - break; - case FS_REVERB_ROOMSIZE: //[0,1] - rev_size = (double)val/16384; - //if (rev_on) - fluid_synth_set_reverb(fluidsynth, rev_size, rev_damping, rev_width, rev_level); - if (!fromGui) { - MidiEvent ev(0, 0, ME_CONTROLLER, FS_REVERB_ROOMSIZE, val); - gui->writeEvent(ev); - } - break; - case FS_CHORUS_ON: {// 0 or 1 - cho_on = val; - fluid_synth_set_chorus_on(fluidsynth, val); - if (!fromGui) { - MidiEvent ev(0, 0, ME_CONTROLLER, FS_CHORUS_ON, val); - gui->writeEvent(ev); - } - break; - } - case FS_CHORUS_NUM: {//Number of delay lines - cho_num = val; - fluid_synth_set_chorus(fluidsynth, cho_num, cho_level, cho_speed, cho_depth, cho_type); - if (!fromGui) { - MidiEvent ev(0, 0, ME_CONTROLLER, FS_CHORUS_NUM, val); - gui->writeEvent(ev); - } - break; - } - case FS_CHORUS_TYPE: {//? - cho_type = val; - fluid_synth_set_chorus(fluidsynth, cho_num, cho_level, cho_speed, cho_depth, cho_type); - if (!fromGui) { - MidiEvent ev(0, 0, ME_CONTROLLER, FS_CHORUS_TYPE, val); - gui->writeEvent(ev); - } - break; - } - case FS_CHORUS_SPEED: {//(0.291,5) Hz - cho_speed = (double)(0.291 + (double)val/3479); - fluid_synth_set_chorus(fluidsynth, cho_num, cho_level, cho_speed, cho_depth, cho_type); - if (!fromGui) { - MidiEvent ev(0, 0, ME_CONTROLLER, FS_CHORUS_SPEED, val); - gui->writeEvent(ev); - } - break; - } - case FS_CHORUS_DEPTH: { //[0,40] - cho_depth = (double) val*40/16383; - fluid_synth_set_chorus(fluidsynth, cho_num, cho_level, cho_speed, cho_depth, cho_type); - if (!fromGui) { - MidiEvent ev(0, 0, ME_CONTROLLER, FS_CHORUS_DEPTH, val); - gui->writeEvent(ev); - } - break; - } - case FS_CHORUS_LEVEL: { //[0,1] - cho_level = (double) val/16383; - fluid_synth_set_chorus(fluidsynth, cho_num, cho_level, cho_speed, cho_depth, cho_type); - if (!fromGui) { - MidiEvent ev(0, 0, ME_CONTROLLER, FS_CHORUS_LEVEL, val); - gui->writeEvent(ev); - } - break; - } - // - // Controllers that depend on channels - // - case CTRL_PITCH: - err = fluid_synth_pitch_bend (fluidsynth, channel, val); - break; - case CTRL_PROGRAM: { - //Check if MusE is trying to set a preset on an unspecified font. If so, ignore. - if (FS_DEBUG) - printf("Program select : channel %d val %d\n",channel, val); - byte font_intid = channels[channel].font_intid; - - if (font_intid == FS_UNSPECIFIED_ID || font_intid == FS_UNSPECIFIED_FONT) - return; - - byte banknum = ((val >> 16) & 0xff); - byte patch = (val & 0xff); - //printf("val: %d banknum: %x patch: %d\n", val, banknum, patch); - - err = fluid_synth_program_select(fluidsynth, channel, font_intid , banknum, patch); - if (err) - printf("FluidSynth::setController() - Error changing program on soundfont %s, channel: %d\n", fluid_synth_error(fluidsynth), channel); - else { - channels[channel].preset = val;//setChannelPreset(val, channel); - channels[channel].banknum = banknum; - } - break; - } - default: - if (FS_DEBUG) - printf("Setting controller on channel: %d with id: 0x%x to val: %d\n",channel, id, val); - err = fluid_synth_cc(fluidsynth, channel, id, val); - break; - } - - if (err) - printf ("FluidSynth::setController() - error processing controller event: %s\n", fluid_synth_error(fluidsynth)); - } - -//--------------------------------------------------------- -// getControllerInfo -//--------------------------------------------------------- -int FluidSynth::getControllerInfo(int id, const char** name, int* controller, int* min, int* max) - { - if (id >= NUM_CONTROLLER) - return 0; - *controller = fluidCtrl[id].num; - *name = fluidCtrl[id].name; - *min = fluidCtrl[id].min; - *max = fluidCtrl[id].max; - if (FS_DEBUG) - printf("FluidSynth::getControllerInfo() id: %d name: %s controller: %d min: %d max: %d\n",id,*name,*controller,*min,*max); - return ++id; - } - -//--------------------------------------------------------- -// sendError -//--------------------------------------------------------- -void FluidSynth::sendError(const char *errorMessage) - { - int len = 2 + strlen(errorMessage); - unsigned char data[len]; - *data = FS_ERROR; - memcpy(data + 1, errorMessage, len - 1); - sendSysex(len, data); - } - -//--------------------------------------------------------- -// getNextAvailableExternalId -//--------------------------------------------------------- - -int FluidSynth::getNextAvailableExternalId() - { - unsigned char place[FS_MAX_NR_OF_CHANNELS]; - for(int i=0; i::iterator it = stack.begin(); it != stack.end(); it++) - place[it->extid] = 1; - - int i=0; - while (i < FS_MAX_NR_OF_CHANNELS && place[i] == 1) - i++; - - return i; - } - -//--------------------------------------------------------- -// sfChannelChange -//--------------------------------------------------------- - -void FluidSynth::sfChannelChange(byte extid, byte channel) - { - if (FS_DEBUG) - printf("FluidSynth::sfChannelChange()-Setting channel %d to font with extid %d intid %d\n",channel, extid, getFontInternalIdByExtId(extid)); - channels[channel].font_extid = extid; - channels[channel].font_intid = getFontInternalIdByExtId(extid); - } - -//--------------------------------------------------------- -// getFontInternalIdByExtId -//--------------------------------------------------------- -byte FluidSynth::getFontInternalIdByExtId(byte ext_id) - { - for (std::list::iterator it = stack.begin(); it !=stack.end(); it++) { - if (it->extid == ext_id) - return it->intid; - } - return FS_UNSPECIFIED_FONT; - } - -//--------------------------------------------------------- -// sendLastDir -//--------------------------------------------------------- -void FluidSynth::sendLastdir(const char* lastdir) - { - int n = strlen(lastdir) + 2; - byte d[n]; - d[0] = FS_LASTDIR_CHANGE; - memcpy(d+1,lastdir, strlen(lastdir)+1); - - MidiEvent ev(0, ME_SYSEX, d, n); - gui->writeEvent(ev); - } - -//--------------------------------------------------------- -// sendLastDir -//--------------------------------------------------------- -void FluidSynth::sendFontSuccessfullyLoaded(const char* filename, byte extid) - { - // extid first, then filename: - int n = strlen(filename) + 3; - byte d[n]; - d[0] = FS_FONT_SUCCESSFULLY_LOADED; - d[1] = extid; - memcpy(d+2, filename, strlen(filename)+1); - MidiEvent ev(0, ME_SYSEX, d, n); - gui->writeEvent(ev); - } -//--------------------------------------------------------- -// rewriteChannelSettings -//--------------------------------------------------------- -void FluidSynth::rewriteChannelSettings() - { - //Walk through the channels, remap internal ID:s to external ID:s (something that actually only needs to be done at - //startup, since the fonts aren't loaded yet at that time and it isn't possible to give them a correct internal id - //since they don't have any at that time, this can probably be fixed in a smarter way (but it works..)) - for (int i=0; iget_name(preset); - } - } - -//--------------------------------------------------------- -// getPatchInfo -//--------------------------------------------------------- -const MidiPatch* FluidSynth::getPatchInfo(int i, const MidiPatch* patch) const - { - if (channels[i].font_intid == FS_UNSPECIFIED_FONT) - return 0; - //else if (channels[i].preset == FS_UNSPECIFIED_PRESET) - // return 0; - else { - //printf("Getpatchname, channel: %d\n",channel); - if (!patch) - //Deliver first patch - return getFirstPatch(i); - else - //Deliver next patch - return getNextPatch(i, patch); - } - } - -//--------------------------------------------------------- -// getFirstPatch -//--------------------------------------------------------- -const MidiPatch* FluidSynth::getFirstPatch (int channel) const - { - static MidiPatch midiPatch; - - midiPatch.typ = 0; - midiPatch.lbank = 0; - - fluid_preset_t* preset; - int font_id = channels[channel].font_intid; - if (font_id == FS_UNSPECIFIED_FONT) - return 0; - - fluid_sfont_t* sfont = fluid_synth_get_sfont_by_id(fluidsynth, font_id); - - if (!channels[channel].drumchannel) { - for (unsigned bank = 0; bank < 128; ++bank) { - for (unsigned patch = 0; patch < 128; ++patch) { - preset = sfont->get_preset (sfont, bank, patch); - if (preset) { - midiPatch.hbank = bank; - midiPatch.prog = patch; - midiPatch.name = preset->get_name (preset); - return &midiPatch; - } - } - } - return 0; - } - else { //This is a drumchannel - int bank = 128; - for (unsigned patch = 0; patch < 128; ++patch) { - preset = sfont->get_preset (sfont, bank, patch); - if (preset) { - midiPatch.hbank = bank; - midiPatch.prog = patch; - midiPatch.name = preset->get_name(preset); - return &midiPatch; - } - } - } - return 0; - } - -//--------------------------------------------------------- -// getNextPatch -//--------------------------------------------------------- -const MidiPatch* FluidSynth::getNextPatch (int channel, const MidiPatch* patch) const - { - static MidiPatch midiPatch; - //First check if there actually is any soundfont associated to the channel. If not, don't bother - int font_id = channels[channel].font_intid; - if (font_id == FS_UNSPECIFIED_FONT) - return 0; - if (patch == 0) - return getFirstPatch(channel); - - midiPatch.typ = 0; - midiPatch.lbank = 0; - - if (font_id == FS_UNSPECIFIED_FONT) - return 0; - //printf("Font has internal id: %d\n",font_id); - fluid_preset_t* preset; - fluid_sfont_t* sfont = fluid_synth_get_sfont_by_id(fluidsynth, font_id); - - if (!channels[channel].drumchannel) { - unsigned prog = patch->prog + 1; - - for (unsigned bank = patch->hbank; bank < 128; ++bank) { - for ( ; prog < 128; ++prog) { - preset = sfont->get_preset (sfont, bank, prog); - if (preset) { - //printf("Preset info: bank: %d prog: %d name: %s\n", bank, prog, preset->get_name(preset)); - midiPatch.hbank = bank; - midiPatch.prog = prog; - midiPatch.name = preset->get_name (preset); - return &midiPatch; - } - } - prog = 0; // Reset if we "come around" - } - } - else { //This is a drum channel - unsigned bank = 128; - unsigned prog = patch->prog; - for (prog = patch->prog + 1; prog < 128; ++prog) { - preset = sfont->get_preset (sfont, bank, prog); - if (preset) { - //printf("Preset info: bank: %d prog: %d name: %s\n",bank, prog, preset->get_name(preset)); - midiPatch.hbank = bank; - midiPatch.prog = prog; - midiPatch.name = preset->get_name (preset); - return &midiPatch; - } - } - } - return 0; - } - -//--------------------------------------------------------- -// popSoundfont -//--------------------------------------------------------- - -bool FluidSynth::popSoundfont (int ext_id) - { - bool success = false; - int int_id = getFontInternalIdByExtId(ext_id); - - if (int_id == FS_UNSPECIFIED_FONT) { - std::cerr << DEBUG_ARGS << "Internal error! Request for deletion of Soundfont that is not registered!" << std::endl; - } - else - { - //Try to unload soundfont - int err = fluid_synth_sfunload(fluidsynth, int_id, 0); - if (err != -1) {//Success - //Check all channels that the font is used in - for (int i=0; i::iterator it =stack.begin(); it !=stack.end(); it++) { - if (it->intid == int_id) { - stack.erase(it); - break; - } - } - //Resend fontdata & re-initialize - sendSoundFontData(); - sendChannelData(); - rewriteChannelSettings(); - success = true; - currentlyLoadedFonts--; - } - else //OK, there was trouble - std::cerr << DEBUG_ARGS << "Error unloading soundfont!" << fluid_synth_error(fluidsynth) << std::endl; - } - if (FS_DEBUG) - printf("Removed soundfont with ext it: %d\n",ext_id); - return success; - } - -//--------------------------------------------------------- -// instantiate -// construct a new synthesizer instance -//--------------------------------------------------------- - -class QWidget; - -static Mess* instantiate(int sr, const char* name) - { - printf("fluidsynth sampleRate %d\n", sr); - FluidSynth* synth = new FluidSynth(sr); - if (synth->init(name)) { - delete synth; - synth = 0; - } - return synth; - } - -extern "C" - { - static MESS descriptor = { - "FluidSynth", - "Mathias Lundgren (lunar_shuttle@users.sf.net)", - "0.1", //Version string - MESS_MAJOR_VERSION, MESS_MINOR_VERSION, - instantiate, - }; - const MESS* mess_descriptor() { return &descriptor; } - } - diff --git a/muse/synti/fluidsynth/fluidsynti.h b/muse/synti/fluidsynth/fluidsynti.h deleted file mode 100644 index c66b1faf..00000000 --- a/muse/synti/fluidsynth/fluidsynti.h +++ /dev/null @@ -1,141 +0,0 @@ -/* - * MusE FLUID Synth softsynth plugin - * - * Copyright (C) 2004 Mathias Lundgren (lunar_shuttle@users.sourcforge.net) - * - * $Id: fluidsynti.h,v 1.20 2006/01/06 22:48:09 wschweer Exp $ - * - */ - -#ifndef __MUSE_FLUIDSYNTI_H__ -#define __MUSE_FLUIDSYNTI_H__ - -#include -#include -#include -#include "fluidsynthgui.h" -#include "libsynti/mess.h" -#include "muse/debug.h" -#include "libsynti/midievent.h" -#include "muse/midictrl.h" - -#define FS_DEBUG_DATA 0 //Turn on/off debug print of midi data sent to fluidsynth - -typedef unsigned char byte; - -struct FluidSoundFont - { - std::string filename; - std::string name; - byte extid, intid; - }; - -struct FluidCtrl { - const char* name; - int num; - int min, max; - //int val; - }; - -// NRPN-controllers: -static const int FS_GAIN = 0 + CTRL_NRPN14_OFFSET; -static const int FS_REVERB_ON = 1 + CTRL_NRPN14_OFFSET; -static const int FS_REVERB_LEVEL = 2 + CTRL_NRPN14_OFFSET; -static const int FS_REVERB_ROOMSIZE = 3 + CTRL_NRPN14_OFFSET; -static const int FS_REVERB_DAMPING = 4 + CTRL_NRPN14_OFFSET; -static const int FS_REVERB_WIDTH = 5 + CTRL_NRPN14_OFFSET; -static const int FS_CHORUS_ON = 6 + CTRL_NRPN14_OFFSET; -static const int FS_CHORUS_NUM = 7 + CTRL_NRPN14_OFFSET; -static const int FS_CHORUS_TYPE = 8 + CTRL_NRPN14_OFFSET; -static const int FS_CHORUS_SPEED = 9 + CTRL_NRPN14_OFFSET; -static const int FS_CHORUS_DEPTH = 10 + CTRL_NRPN14_OFFSET; -static const int FS_CHORUS_LEVEL = 11 + CTRL_NRPN14_OFFSET; - -// FluidChannel is used to map different soundfonts to different fluid-channels -// This is to be able to select different presets from specific soundfonts, since -// Fluidsynth has a quite strange way of dealing with fontloading and channels -// We also need this since getFirstPatch and getNextPatch only tells us which channel is -// used, so this works as a connection between soundfonts and fluid-channels (one channel -// can only have one soundfont, but one soundfont can have many channels) - -struct FluidChannel - { - byte font_extid, font_intid, preset, drumchannel; - byte banknum; // hbank - }; - -class FluidSynth : public Mess { - private: - bool pushSoundfont (const char*, int); - void sendSysex(int l, const unsigned char* d); - void sendLastdir(const char*); - void sfChannelChange(unsigned char font_id, unsigned char channel); - void parseInitData(int n, const byte* d); - - byte getFontInternalIdByExtId (byte channel); - - void debug(const char* msg) { if (FS_DEBUG) printf("Debug: %s\n",msg); } - void dumpInfo(); //Prints out debug info - - FluidChannel channels[FS_MAX_NR_OF_CHANNELS]; - std::string lastdir; - pthread_t fontThread; - const MidiPatch * getFirstPatch (int channel) const; - const MidiPatch* getNextPatch (int, const MidiPatch *) const; - - //For reverb and chorus: - double rev_size, rev_damping, rev_width, rev_level, cho_level, cho_speed, cho_depth; - bool rev_on, cho_on; - int cho_num, cho_type; - -public: - FluidSynth(int sr); - ~FluidSynth(); - bool init(const char*); - virtual void process(float**, int, int); - virtual bool playNote(int channel, int pitch, int velo); - virtual bool sysex(int, const unsigned char*); - virtual bool setController(int, int, int); - void setController(int, int , int, bool); - virtual void getInitData(int*, const unsigned char**); - virtual const char* getPatchName(int, int, int) const; - virtual const MidiPatch* getPatchInfo(int i, const MidiPatch* patch) const; - virtual int getControllerInfo(int, const char**, int*, int*, int*); - virtual bool processEvent(const MidiEvent&); - - virtual bool hasGui() const { return true; } - virtual bool guiVisible() const; - virtual void showGui(bool val); - - void sendError(const char*); - void sendSoundFontData(); - void sendChannelData(); - void sendFontSuccessfullyLoaded(const char* filename, byte extid); - void rewriteChannelSettings(); //used because fluidsynth does some very nasty things when loading a font! - bool popSoundfont (int ext_id); - - int getNextAvailableExternalId(); - - fluid_synth_t* fluidsynth; - FluidSynthGui* gui; - pthread_mutex_t _sfloader_mutex; - int currentlyLoadedFonts; //To know whether or not to run the init-parameters - std::list stack; - int nrOfSoundfonts; - - void initInternal(); - - static FluidCtrl fluidCtrl[]; - static void* fontLoadThread(void* t); - - }; - -struct FS_Helper //Only used to pass parameters when calling the loading thread - { - FluidSynth* fptr; - std::string filename; - int id; - }; - - -#endif /* __MUSE_FLUIDSYNTI_H__ */ diff --git a/muse/synti/libsynti/CMakeLists.txt b/muse/synti/libsynti/CMakeLists.txt deleted file mode 100644 index c30048dc..00000000 --- a/muse/synti/libsynti/CMakeLists.txt +++ /dev/null @@ -1,39 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -include(${PROJECT_SOURCE_DIR}/pch.txt) - -add_library(synti - ${PROJECT_BINARY_DIR}/all-pic.h.pch - mess.cpp - mess2.cpp - gui.cpp - mono.cpp - poly.cpp - midievent.cpp - ) - -# -# -fPIC is necessary for 64 bit systems -# -set_target_properties( synti - PROPERTIES COMPILE_FLAGS "-fPIC -include ${PROJECT_BINARY_DIR}/all-pic.h" - ) - diff --git a/muse/synti/libsynti/evdata.h b/muse/synti/libsynti/evdata.h deleted file mode 100644 index 29f6441e..00000000 --- a/muse/synti/libsynti/evdata.h +++ /dev/null @@ -1,66 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: evdata.h,v 1.1 2004/02/13 13:55:03 wschweer Exp $ -// -// (C) Copyright 1999-2003 Werner Schweer (ws@seh.de) -//========================================================= - -#ifndef __EVDATA_H__ -#define __EVDATA_H__ - -#include - -//--------------------------------------------------------- -// EvData -// variable len event data (sysex, meta etc.) -//--------------------------------------------------------- - -class EvData { - int* refCount; - - public: - unsigned char* data; - int dataLen; - - EvData() { - data = 0; - dataLen = 0; - refCount = new int(1); - } - EvData(const EvData& ed) { - data = ed.data; - dataLen = ed.dataLen; - refCount = ed.refCount; - (*refCount)++; - } - - EvData& operator=(const EvData& ed) { - if (data == ed.data) - return *this; - if (--(*refCount) == 0) { - delete refCount; - delete[] data; - } - data = ed.data; - dataLen = ed.dataLen; - refCount = ed.refCount; - (*refCount)++; - return *this; - } - - ~EvData() { - if (--(*refCount) == 0) { - delete[] data; - delete refCount; - } - } - void setData(const unsigned char* p, int l) { - data = new unsigned char[l]; - memcpy(data, p, l); - dataLen = l; - } - }; - -#endif - diff --git a/muse/synti/libsynti/gui.cpp b/muse/synti/libsynti/gui.cpp deleted file mode 100644 index 30fd177b..00000000 --- a/muse/synti/libsynti/gui.cpp +++ /dev/null @@ -1,124 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// software synthesizer helper library -// $Id: gui.cpp,v 1.7 2005/05/11 14:18:48 wschweer Exp $ -// -// (C) Copyright 2004 Werner Schweer (ws@seh.de) -//========================================================= - -#include "gui.h" -#include "muse/midi.h" - -#include - -//--------------------------------------------------------- -// MessGui -//--------------------------------------------------------- - -MessGui::MessGui() - { - // - // prepare for interprocess communication: - // - int filedes[2]; // 0 - reading 1 - writing - if (pipe(filedes) == -1) { - perror("thread:creating pipe4"); - exit(-1); - } - readFd = filedes[0]; - writeFd = filedes[1]; - wFifoSize = 0; - wFifoWindex = 0; - wFifoRindex = 0; - rFifoSize = 0; - rFifoWindex = 0; - rFifoRindex = 0; - } - -//--------------------------------------------------------- -// MessGui -//--------------------------------------------------------- - -MessGui::~MessGui() - { - } - -//--------------------------------------------------------- -// readMessage -//--------------------------------------------------------- - -void MessGui::readMessage() - { - char c; - while (rFifoSize) { - ::read(readFd, &c, 1); - processEvent(rFifo[rFifoRindex]); - rFifoRindex = (rFifoRindex + 1) % EVENT_FIFO_SIZE; - --rFifoSize; - } - } - -//--------------------------------------------------------- -// sendController -//--------------------------------------------------------- - -void MessGui::sendController(int ch, int idx, int val) - { - sendEvent(MidiEvent(0, ch, ME_CONTROLLER, idx, val)); - } - -//--------------------------------------------------------- -// sendSysex -//--------------------------------------------------------- - -void MessGui::sendSysex(unsigned char* p, int n) - { - sendEvent(MidiEvent(0, ME_SYSEX, p, n)); - } - -//--------------------------------------------------------- -// writeEvent -// send an event to synti gui -//--------------------------------------------------------- - -void MessGui::writeEvent(const MidiEvent& ev) - { - if (rFifoSize == EVENT_FIFO_SIZE) { - printf("event synti->gui fifo overflow\n"); - return; - } - rFifo[rFifoWindex] = ev; - rFifoWindex = (rFifoWindex + 1) % EVENT_FIFO_SIZE; - ++rFifoSize; - write(writeFd, "x", 1); // wakeup GUI - } - -//--------------------------------------------------------- -// sendEvent -//--------------------------------------------------------- - -void MessGui::sendEvent(const MidiEvent& ev) - { - if (wFifoSize == EVENT_FIFO_SIZE) { - printf("event gui->synti fifo overflow\n"); - return; - } - wFifo[wFifoWindex] = ev; - wFifoWindex = (wFifoWindex + 1) % EVENT_FIFO_SIZE; - ++wFifoSize; - } - -//--------------------------------------------------------- -// readEvent -// read event from synti gui -//--------------------------------------------------------- - -MidiEvent MessGui::readEvent() - { - MidiEvent ev = wFifo[wFifoRindex]; - wFifoRindex = (wFifoRindex + 1) % EVENT_FIFO_SIZE; - --wFifoSize; - return ev; - } - diff --git a/muse/synti/libsynti/gui.h b/muse/synti/libsynti/gui.h deleted file mode 100644 index 27bebe3f..00000000 --- a/muse/synti/libsynti/gui.h +++ /dev/null @@ -1,72 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// software synthesizer helper library -// $Id: gui.h,v 1.5 2005/05/11 14:18:48 wschweer Exp $ -// -// (C) Copyright 2004 Werner Schweer (ws@seh.de) -//========================================================= - -#ifndef __SYNTH_GUI_H__ -#define __SYNTH_GUI_H__ - -#include "midievent.h" - -const int EVENT_FIFO_SIZE = 256; -class QWidget; - -//--------------------------------------------------------- -// MessGui -// manage IO from synti-GUI to Host -//--------------------------------------------------------- - -class MessGui { - int writeFd; - - // Event Fifo synti -> GUI - MidiEvent rFifo[EVENT_FIFO_SIZE]; - volatile int rFifoSize; - int rFifoWindex; - int rFifoRindex; - - // Event Fifo GUI -> synti - MidiEvent wFifo[EVENT_FIFO_SIZE]; - volatile int wFifoSize; - int wFifoWindex; - int wFifoRindex; - - protected: - int readFd; - void readMessage(); - void sendEvent(const MidiEvent& ev); - void sendController(int ch, int idx, int val); - void sendSysex(unsigned char*, int); - - virtual void processEvent(const MidiEvent&) {}; - - public: - MessGui(); - virtual ~MessGui(); - - void writeEvent(const MidiEvent&); - int fifoSize() const { return wFifoSize; } - MidiEvent readEvent(); - }; - -//--------------------------------------------------------- -// SynthGuiCtrl -//--------------------------------------------------------- - -struct SynthGuiCtrl { - enum EditorType { SLIDER, SWITCH, COMBOBOX }; - QWidget* editor; - QWidget* label; - EditorType type; - - SynthGuiCtrl() {} - SynthGuiCtrl(QWidget* w, QWidget* l, const EditorType t) - : editor(w), label(l), type(t) {} - }; - -#endif - diff --git a/muse/synti/libsynti/mess.cpp b/muse/synti/libsynti/mess.cpp deleted file mode 100644 index 49f030f8..00000000 --- a/muse/synti/libsynti/mess.cpp +++ /dev/null @@ -1,123 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: mess.cpp,v 1.3 2005/05/11 14:18:48 wschweer Exp $ -// (C) Copyright 2004 Werner Schweer (ws@seh.de) -//========================================================= - -#include "mess.h" -#include "muse/midi.h" - -static const int FIFO_SIZE = 32; - -//--------------------------------------------------------- -// MessP -// private data for class Mess -//--------------------------------------------------------- - -struct MessP { - // Event Fifo synti -> Host: - MidiEvent fifo[FIFO_SIZE]; - volatile int fifoSize; - int fifoWindex; - int fifoRindex; - }; - -//--------------------------------------------------------- -// Mess -//--------------------------------------------------------- - -Mess::Mess(int n) - { - _channels = n; - _sampleRate = 44100; - d = new MessP; - d->fifoSize = 0; - d->fifoWindex = 0; - d->fifoRindex = 0; - } - -//--------------------------------------------------------- -// Mess -//--------------------------------------------------------- - -Mess::~Mess() - { - delete d; - } - -//--------------------------------------------------------- -// getGeometry -// dummy -//--------------------------------------------------------- - -void Mess::getGeometry(int* x, int* y, int* w, int* h) const - { - x = 0; - y = 0; - w = 0; - h = 0; - } - -//--------------------------------------------------------- -// sendEvent -// send Event synti -> host -//--------------------------------------------------------- - -void Mess::sendEvent(MidiEvent ev) - { - if (d->fifoSize == FIFO_SIZE) { - printf("event synti->host fifo overflow\n"); - return; - } - d->fifo[d->fifoWindex] = ev; - d->fifoWindex = (d->fifoWindex + 1) % FIFO_SIZE; - ++(d->fifoSize); - } - -//--------------------------------------------------------- -// receiveEvent -// called from host -//--------------------------------------------------------- - -MidiEvent Mess::receiveEvent() - { - MidiEvent ev = d->fifo[d->fifoRindex]; - d->fifoRindex = (d->fifoRindex + 1) % FIFO_SIZE; - --(d->fifoSize); - return ev; - } - -//--------------------------------------------------------- -// eventsPending -// called from host: -// while (eventsPending()) { -// receiveEvent(); -// ... -//--------------------------------------------------------- - -int Mess::eventsPending() const - { - return d->fifoSize; - } - -//--------------------------------------------------------- -// processEvent -// return true if synti is busy -//--------------------------------------------------------- - -bool Mess::processEvent(const MidiEvent& ev) - { - switch(ev.type()) { - case ME_NOTEON: - return playNote(ev.channel(), ev.dataA(), ev.dataB()); - case ME_NOTEOFF: - return playNote(ev.channel(), ev.dataA(), 0); - case ME_SYSEX: - return sysex(ev.len(), ev.data()); - case ME_CONTROLLER: - return setController(ev.channel(), ev.dataA(), ev.dataB()); - } - return false; - } - diff --git a/muse/synti/libsynti/mess.h b/muse/synti/libsynti/mess.h deleted file mode 100644 index c407d17e..00000000 --- a/muse/synti/libsynti/mess.h +++ /dev/null @@ -1,105 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: mess.h,v 1.6 2005/05/11 14:18:48 wschweer Exp $ -// (C) Copyright 2001-2004 Werner Schweer (ws@seh.de) -//========================================================= - -#ifndef __MESS_H__ -#define __MESS_H__ - -#define MESS_MAJOR_VERSION 3 -#define MESS_MINOR_VERSION 1 - -#include "midievent.h" - -class QWidget; -class MessP; - -//--------------------------------------------------------- -// MidiPatch -//--------------------------------------------------------- - -#define MP_TYPE_GM 1 -#define MP_TYPE_GS 2 -#define MP_TYPE_XG 4 -#define MP_TYPE_LBANK 8 -#define MP_TYPE_HBANK 16 - -struct MidiPatch { - signed char typ; // 1 - GM 2 - GS 4 - XG 8 - LBANK 16 - HBANK - signed char hbank, lbank, prog; - const char* name; - }; - -//--------------------------------------------------------- -// Mess -// MusE experimental software synth -// Instance virtual interface class -//--------------------------------------------------------- - -class Mess { - MessP* d; - - int _sampleRate; - int _channels; // 1 - mono, 2 - stereo - - public: - Mess(int channels); - virtual ~Mess(); - - int channels() const { return _channels; } - int sampleRate() const { return _sampleRate; } - void setSampleRate(int r) { _sampleRate = r; } - - virtual void process(float** data, int offset, int len) = 0; - - // The synti has to (re-)implement processEvent() or provide - // the playNote()/setControll()/sysex() functions. - // The even routines return true if synti is busy and the - // event must be send again. - - virtual bool processEvent(const MidiEvent&); - virtual bool setController(int, int, int) { return false; } - virtual bool playNote(int, int, int) { return false; } - virtual bool sysex(int, const unsigned char*) { return false; } - - virtual void getInitData(int*, const unsigned char**) {} - virtual int getControllerInfo(int, const char**, int*, int*, int*) {return 0;} - virtual const char* getPatchName(int, int, int) const { return "?"; } - virtual const MidiPatch* getPatchInfo(int, const MidiPatch*) const { return 0; } - - // synthesizer -> host communication - void sendEvent(MidiEvent); // called from synti - MidiEvent receiveEvent(); // called from host - int eventsPending() const; - - // GUI interface routines - virtual bool hasGui() const { return false; } - virtual bool guiVisible() const { return false; } - virtual void showGui(bool) {} - virtual void getGeometry(int* x, int* y, int* w, int* h) const; - virtual void setGeometry(int, int, int, int) {} - }; - -//--------------------------------------------------------- -// MESS -// Class descriptor -//--------------------------------------------------------- - -struct MESS { - const char* name; - const char* description; - const char* version; - int majorMessVersion, minorMessVersion; - // QWidget* parent allows for a threaded GUI using the Qt Library - // can be ignored by synti - Mess* (*instantiate)(int sr, const char* name); - }; - -extern "C" { - const MESS* mess_descriptor(); - } - -#endif - diff --git a/muse/synti/libsynti/mess2.cpp b/muse/synti/libsynti/mess2.cpp deleted file mode 100644 index 588edac9..00000000 --- a/muse/synti/libsynti/mess2.cpp +++ /dev/null @@ -1,128 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id:$ -// (C) Copyright 2007 Werner Schweer (ws@seh.de) -//========================================================= - -#include "mess2.h" - -QList Mess2::ctrl; - -//--------------------------------------------------------- -// Mess2 -//--------------------------------------------------------- - -Mess2::Mess2(int channels) - : Mess(channels) - { - initData = 0; - } - -//--------------------------------------------------------- -// Mess2 -//--------------------------------------------------------- - -Mess2::~Mess2() - { - if (initData) - delete[] initData; - } - -//--------------------------------------------------------- -// addController -//--------------------------------------------------------- - -void Mess2::addController(const char* name, int id, int min, int max, int init) - { - SynthCtrl* c = new SynthCtrl(name, id, min, max, init); - ctrl.append(c); - } - -//--------------------------------------------------------- -// controllerIdx -//--------------------------------------------------------- - -int Mess2::controllerIdx(const char* name) - { - for (int i = 0; i < ctrl.size(); ++i) { - if (strcmp(ctrl[i]->name, name) == 0) - return i; - } - return -1; - } - -//--------------------------------------------------------- -// controllerIdx -//--------------------------------------------------------- - -int Mess2::controllerIdx(int ctrlId) - { - for (int i = 0; i < ctrl.size(); ++i) { - if (ctrl[i]->ctrl == ctrlId) - return i; - } - return -1; - } - -//--------------------------------------------------------- -// controllerId -//--------------------------------------------------------- - -int Mess2::controllerId(int idx) - { - if (idx < 0 || idx >= ctrl.size()) { - printf("controllId::illegal controller index %d\n", idx); - return -1; - } - return ctrl[idx]->ctrl; - } - -//--------------------------------------------------------- -// controllerName -//--------------------------------------------------------- - -const char* Mess2::controllerName(int idx) - { - if (idx < 0 || idx >= ctrl.size()) { - printf("controllerName::illegal controller index %d\n", idx); - return "?"; - } - return ctrl[idx]->name; - } - -//--------------------------------------------------------- -// getInitData -//--------------------------------------------------------- - -void Mess2::getInitData(int* bytes, const unsigned char** data) - { - if (initData) - delete[] initData; - int n = ctrl.size() * sizeof(int); - initData = new unsigned char[n]; - int* p = (int*)initData; - foreach(SynthCtrl* c, ctrl) { - *p++ = c->val; - } - *data = initData; - *bytes = n; - } - -//--------------------------------------------------------- -// getControllerInfo -//--------------------------------------------------------- - -int Mess2::getControllerInfo(int idx, const char** name, int* id, int* min, int* max) - { - if (idx < 0 || idx >= ctrl.size()) - return 0; - *name = ctrl[idx]->name; - *id = ctrl[idx]->ctrl; - *min = ctrl[idx]->min; - *max = ctrl[idx]->max; - ++idx; - return (idx >= ctrl.size()) ? 0 : idx; - } - - diff --git a/muse/synti/libsynti/mess2.h b/muse/synti/libsynti/mess2.h deleted file mode 100644 index 207eb6c3..00000000 --- a/muse/synti/libsynti/mess2.h +++ /dev/null @@ -1,57 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id:$ -// (C) Copyright 2007 Werner Schweer (ws@seh.de) -//========================================================= - -#ifndef __MESS2_H__ -#define __MESS2_H__ - -#include "mess.h" - -//--------------------------------------------------------- -// SynthCtlr -//--------------------------------------------------------- - -struct SynthCtrl { - const char* name; - int ctrl; - int min; - int max; - int init; - int val; - SynthCtrl(const char* n, int i, int a, int b, int c) - : name(n), ctrl(i), min(a), max(b), init(c) - {} - }; - -//--------------------------------------------------------- -// Mess2 -// MusE experimental software synth -// extended interface -//--------------------------------------------------------- - -class Mess2 : public Mess { - unsigned char* initData; - - void getInitData(int*, const unsigned char**); - int getControllerInfo(int, const char**, int*, int*, int*); - - protected: - static QList ctrl; - - static void addController(const char* name, - int ctrl, int min = 0, int max = 16384, int init = 0); - static int controllerIdx(const char* name); - static int controllerId(int idx); - static int controllerIdx(int id); - static const char* controllerName(int idx); - - public: - Mess2(int channels); - virtual ~Mess2(); - }; - -#endif - diff --git a/muse/synti/libsynti/midievent.cpp b/muse/synti/libsynti/midievent.cpp deleted file mode 100644 index 7c1e14fd..00000000 --- a/muse/synti/libsynti/midievent.cpp +++ /dev/null @@ -1,21 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: mpevent.cpp,v 1.3 2005/05/11 14:18:48 wschweer Exp $ -// -// (C) Copyright 2002-2004 Werner Schweer (ws@seh.de) -//========================================================= - -#include "midievent.h" - -//--------------------------------------------------------- -// MidiEvent -//--------------------------------------------------------- - -MidiEvent::MidiEvent(unsigned t, int tpe, const unsigned char* data, int len) - { - _time = t; - edata.setData(data, len); - _type = tpe; - } - diff --git a/muse/synti/libsynti/midievent.h b/muse/synti/libsynti/midievent.h deleted file mode 100644 index a435d257..00000000 --- a/muse/synti/libsynti/midievent.h +++ /dev/null @@ -1,55 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: mpevent.h,v 1.3 2005/05/11 14:18:48 wschweer Exp $ -// -// (C) Copyright 1999-2002 Werner Schweer (ws@seh.de) -//========================================================= - -#ifndef __MIDIEVENT_H__ -#define __MIDIEVENT_H__ - -#include "evdata.h" - -//--------------------------------------------------------- -// MidiEvent -//--------------------------------------------------------- - -class MidiEvent { - unsigned _time; - EvData edata; - unsigned char _channel, _type; - int _a, _b; - - public: - MidiEvent() {} - MidiEvent(unsigned tm, int c, int t, int a, int b) - : _time(tm), _channel(c & 0xf), _type(t), _a(a), _b(b) {} - MidiEvent(unsigned t, int type, const unsigned char* data, int len); - MidiEvent(unsigned t, int tpe, EvData d) : _time(t), edata(d), _type(tpe) {} - - ~MidiEvent() {} - - int channel() const { return _channel; } - int type() const { return _type; } - int dataA() const { return _a; } - int dataB() const { return _b; } - unsigned time() const { return _time; } - - void setChannel(int val) { _channel = val; } - void setType(int val) { _type = val; } - void setA(int val) { _a = val; } - void setB(int val) { _b = val; } - void setTime(unsigned val) { _time = val; } - - const EvData& eventData() const { return edata; } - unsigned char* data() const { return edata.data; } - int len() const { return edata.dataLen; } - void setData(const EvData& e) { edata = e; } - void setData(const unsigned char* p, int len) { edata.setData(p, len); } - bool isNote() const { return _type == 0x90; } - bool isNoteOff() const { return (_type == 0x80)||(_type == 0x90 && _b == 0); } - }; - -#endif - diff --git a/muse/synti/libsynti/mono.cpp b/muse/synti/libsynti/mono.cpp deleted file mode 100644 index 14a23aca..00000000 --- a/muse/synti/libsynti/mono.cpp +++ /dev/null @@ -1,47 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// software synthesizer helper library -// $Id: mono.cpp,v 1.2 2004/04/15 13:46:18 wschweer Exp $ -// -// (C) Copyright 2004 Werner Schweer (ws@seh.de) -//========================================================= - -#include "mono.h" - -//--------------------------------------------------------- -// playNote -//--------------------------------------------------------- - -bool MessMono::playNote(int channel, int pitch, int velo) - { - if (velo == 0) { - if (pitchStack.empty()) - return false; - if (pitchStack.back().pitch == pitch) { - pitchStack.pop_back(); - if (pitchStack.empty()) { - note(channel, pitch, 0); - return false; - } - PitchVelo pv = pitchStack.back(); - note(pv.channel, pv.pitch, pv.velo); // change pitch - return false; - } - for (std::list::iterator i = pitchStack.begin(); - i != pitchStack.end(); ++i) { - if ((*i).pitch == pitch) { - pitchStack.erase(i); - return false; - } - } - // no noteon found - // emergency stop: - note(channel, pitch, velo); - return false; - } - pitchStack.push_back(PitchVelo(channel, pitch, velo)); - note(channel, pitch, velo); - return false; - } - diff --git a/muse/synti/libsynti/mono.h b/muse/synti/libsynti/mono.h deleted file mode 100644 index f2f8bdf7..00000000 --- a/muse/synti/libsynti/mono.h +++ /dev/null @@ -1,47 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// software synthesizer helper library -// $Id: mono.h,v 1.4 2004/04/15 13:46:18 wschweer Exp $ -// -// (C) Copyright 2004 Werner Schweer (ws@seh.de) -//========================================================= - -#ifndef __SYNTH_MONO_H__ -#define __SYNTH_MONO_H - -#include -#include "mess.h" - -//--------------------------------------------------------- -// PitchVelo -//--------------------------------------------------------- - -struct PitchVelo { - signed char channel; - signed char pitch; - signed char velo; - PitchVelo(signed char a, signed char b, signed char c) - : channel(a), pitch(b), velo(c) {} - }; - -//--------------------------------------------------------- -// MessMono -// implements some functions for monophone -// synthesizer -//--------------------------------------------------------- - -class MessMono : public Mess { - std::list pitchStack; - - protected: - virtual bool playNote(int channel, int pitch, int velo); - virtual void note(int channel, int pitch, int velo) = 0; - - public: - MessMono() : Mess(1) {} - virtual ~MessMono() {} - }; - -#endif - diff --git a/muse/synti/libsynti/poly.cpp b/muse/synti/libsynti/poly.cpp deleted file mode 100644 index e76fe966..00000000 --- a/muse/synti/libsynti/poly.cpp +++ /dev/null @@ -1,35 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// software synthesizer helper library -// $Id: poly.cpp,v 1.3 2004/06/01 14:25:50 wschweer Exp $ -// -// (C) Copyright 2004 Werner Schweer (ws@seh.de) -//========================================================= - -#include "poly.h" -#include "muse/midictrl.h" - -//--------------------------------------------------------- -// playNote -//--------------------------------------------------------- - -bool MessPoly::playNote(int /*channel*/, int /*pitch*/, int /*velo*/) - { - return false; - } - -//--------------------------------------------------------- -// setController -//--------------------------------------------------------- - -bool MessPoly::setController(int /*channel*/, int num, int /*val*/) - { - switch(num) { - case CTRL_VOLUME: - case CTRL_EXPRESSION: - break; - } - return false; - } - diff --git a/muse/synti/libsynti/poly.h b/muse/synti/libsynti/poly.h deleted file mode 100644 index b990b198..00000000 --- a/muse/synti/libsynti/poly.h +++ /dev/null @@ -1,39 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// software synthesizer helper library -// $Id: poly.h,v 1.2 2004/04/15 13:46:18 wschweer Exp $ -// -// (C) Copyright 2004 Werner Schweer (ws@seh.de) -//========================================================= - -#ifndef __SYNTH_POLY_H__ -#define __SYNTH_POLY_H - -#include -#include "mess.h" - -//--------------------------------------------------------- -// MessPoly -// implements some functions for monophone -// synthesizer -//--------------------------------------------------------- - -class MessPoly : public Mess { - float volume; - float expression; - - // cached values: - float mainLevel; - - protected: - virtual bool playNote(int channel, int pitch, int velo); - virtual bool setController(int, int, int); - - public: - MessPoly() : Mess(1) {} - virtual ~MessPoly() {} - }; - -#endif - diff --git a/muse/synti/mus/CMakeLists.txt b/muse/synti/mus/CMakeLists.txt deleted file mode 100644 index f7d8a0ad..00000000 --- a/muse/synti/mus/CMakeLists.txt +++ /dev/null @@ -1,28 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -add_executable ( mus mus.cpp ) -install_targets ( /bin mus ) -target_link_libraries(mus - synti - ${QT_LIBRARIES} - ${JACK_LIB} - ) - diff --git a/muse/synti/mus/mus.cpp b/muse/synti/mus/mus.cpp deleted file mode 100644 index a112b450..00000000 --- a/muse/synti/mus/mus.cpp +++ /dev/null @@ -1,276 +0,0 @@ -//============================================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// Copyright (C) 2002-2006 by Werner Schweer and others -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -//============================================================================= - -#include "all.h" -#include -#include -#include - -#include "config.h" -#include "libsynti/mess.h" -#include "jackaudio.h" -#include - -static const char* versionString = "1.0"; -static bool debug = false; - -static int sampleRate; -static int segmentSize; - -static Mess* mess; -static const int MAX_OUTPORTS = 8; -static jack_port_t* inPort; -static jack_port_t* outPorts[MAX_OUTPORTS]; -static float* outBuffer[MAX_OUTPORTS]; - -//--------------------------------------------------------- -// processAudio -// JACK callback -//--------------------------------------------------------- - -static int processAudio(jack_nframes_t nFrames, void*) - { - int nch = mess->channels(); - for (int i = 0; i < nch; ++i) { - outBuffer[i] = (float*)jack_port_get_buffer(outPorts[i], nFrames); -#ifdef JACK107 - jack_midi_clear_buffer(outBuffer[i]); -#endif -#ifdef JACK103 - jack_midi_clear_buffer(outBuffer[i], nFrames); -#endif - // memset(outBuffer[i], 0, sizeof(float) * nFrames); - } - while(mess->eventsPending()) - mess->processEvent(mess->receiveEvent()); - - void* midi = jack_port_get_buffer(inPort, nFrames); -#ifdef JACK107 - int n = jack_midi_get_event_count(midi); -#endif -#ifdef JACK103 - int n = jack_midi_get_event_count(midi, nFrames); -#endif - unsigned offset = 0; - - for (int i = 0; i < n; ++i) { - jack_midi_event_t event; - -#ifdef JACK107 - jack_midi_event_get(&event, midi, i); -#endif -#ifdef JACK103 - jack_midi_event_get(&event, midi, i, nFrames); -#endif - mess->process(outBuffer, offset, event.time - offset); - offset = event.time; - MidiEvent e; - e.setType(event.buffer[0] & 0xf0); - e.setChannel(event.buffer[0] & 0xf); - e.setA(event.buffer[1]); - e.setB(event.buffer[2]); - mess->processEvent(e); - } - if (offset < nFrames) - mess->process(outBuffer, offset, nFrames - offset); - return 0; - } - -//--------------------------------------------------------- -// jackError -//--------------------------------------------------------- - -static void jackError(const char* s) - { - fprintf(stderr, "JACK ERROR: %s\n", s); - } - -//--------------------------------------------------------- -// noJackError -//--------------------------------------------------------- - -static void noJackError(const char* /* s */) - { - } - -//--------------------------------------------------------- -// printVersion -//--------------------------------------------------------- - -static void printVersion(const char* programName) - { - printf("%s: Version %s\n", programName, versionString); - } - -//--------------------------------------------------------- -// usage -//--------------------------------------------------------- - -static void usage(const char* programName) - { - fprintf(stderr, "%s: usage MusE-synthesizer-plugin-name\n" - " options: -v print version\n" - " -d debug mode on\n", - programName - ); - } - -//--------------------------------------------------------- -// main -//--------------------------------------------------------- - -int main(int argc, char* argv[]) - { - new QApplication(argc, argv); - int c; - while ((c = getopt(argc, argv, "vd")) != EOF) { - switch (c) { - case 'v': - printVersion(argv[0]); - return 0; - case 'd': - debug = true; - break; - default: - usage(argv[0]); - return -1; - } - } - argc -= optind; - if (argc != 1) { - usage(argv[0]); - return -1; - } - // - // load synthesizer plugin - // - QDir pluginDir(INSTPREFIX "/lib/" INSTALL_NAME "/synthi"); - if (!pluginDir.exists()) { - fprintf(stderr, "plugin directory <%s> not found\n", - pluginDir.path().toLocal8Bit().data()); - return -2; - } - QString pluginName(argv[1]); - if (!pluginName.endsWith(".so", Qt::CaseInsensitive)) - pluginName += ".so"; - if (!pluginDir.exists(pluginName)) { - fprintf(stderr, "plugin <%s> in directory <%s> not found\n", - pluginName.toLocal8Bit().data(), - pluginDir.path().toLocal8Bit().data()); - return -3; - } - QString path = pluginDir.filePath(pluginName); - void* handle = dlopen(path.toLocal8Bit().data(), RTLD_LAZY); - if (handle == 0) { - fprintf(stderr, "%s: dlopen(%s) failed: %s\n", - argv[0], path.toLocal8Bit().data(), dlerror()); - return -4; - } - typedef const MESS* (*MESS_Function)(); - MESS_Function msynth = (MESS_Function)dlsym(handle, "mess_descriptor"); - if (!msynth) { - fprintf(stderr, - "%s: Unable to find msynth_descriptor() function in plugin\n" - "Are you sure this is a MESS plugin file?\n%s", - argv[0], dlerror()); - return -5; - } - const MESS* descr = msynth(); - if (descr == 0) { - fprintf(stderr, "%s: instantiate: no MESS descr found\n", - argv[0]); - return 6; - } - // - // initialize JACK - // - if (debug) { - fprintf(stderr, "init JACK audio\n"); - jack_set_error_function(jackError); - } - else - jack_set_error_function(noJackError); - - jack_client_t* client; - int i = 0; - QString instanceName; - QString s(pluginName.left(pluginName.size()-3)); - s += "-%1"; - static const int MAX_INSTANCES = 100; - for (i = 0; i < MAX_INSTANCES; ++i) { - instanceName = s.arg(i); - const char* jackIdString = strdup(instanceName.toLocal8Bit().data()); - client = jack_client_new(jackIdString); - if (client) - break; - } - if (i == MAX_INSTANCES) { - fprintf(stderr, "%s: too many instances of the synth! (>%d)\n", - argv[0], MAX_INSTANCES); - return -7; - } - jack_set_error_function(jackError); - if (debug) - fprintf(stderr, "init Jack Audio: register device\n"); - // jackAudio = new JackAudio(client, jackIdString); - if (debug) - fprintf(stderr, "init Jack Audio: register client\n"); - - jack_set_process_callback(client, processAudio, 0); -// jack_set_sync_callback(_client, processSync, 0); -// jack_on_shutdown(_client, processShutdown, 0); -// jack_set_buffer_size_callback(_client, bufsize_callback, 0); -// jack_set_sample_rate_callback(_client, srate_callback, 0); -// jack_set_port_registration_callback(_client, registration_callback, 0); -// jack_set_graph_order_callback(_client, graph_callback, 0); -// jack_set_freewheel_callback (_client, freewheel_callback, 0); -// jack_set_timebase_callback(_client, 0, timebase_callback, 0); - - sampleRate = jack_get_sample_rate(client); - segmentSize = jack_get_buffer_size(client); - // - // instantiate Synthesizer - // - mess = descr->instantiate(sampleRate, instanceName.toLocal8Bit().data()); - if (mess == 0) { - fprintf(stderr, "%s: instantiate failed\n", - argv[0]); - } - - int channels = mess->channels(); - if (channels > MAX_OUTPORTS) { - channels = MAX_OUTPORTS; - fprintf(stderr, "%s: too many outports %d > %d\n", - argv[0], channels, MAX_OUTPORTS); - } - for (int i = 0; i < channels; ++i) { - char portName[64]; - snprintf(portName, 64, "audioOut-%d", i); - outPorts[i] = jack_port_register(client, portName, - JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0); - } - inPort = jack_port_register(client, "midiIn", - JACK_DEFAULT_MIDI_TYPE, JackPortIsInput, 0); - if (mess->hasGui()) - mess->showGui(true); - jack_activate(client); - qApp->exec(); - } - diff --git a/muse/synti/organ/CMakeLists.txt b/muse/synti/organ/CMakeLists.txt deleted file mode 100644 index 01540c88..00000000 --- a/muse/synti/organ/CMakeLists.txt +++ /dev/null @@ -1,50 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -QT4_WRAP_CPP ( organ_mocs organgui.h ) -QT4_WRAP_UI ( organ_uis organgui.ui ) - -add_library ( organ SHARED - organ.cpp - organgui.cpp - reverb.cpp - routing.cpp - organgui.h - ${organ_mocs} - ${organ_uis} - ) - -# - tell cmake to name target organ.so instead of -# liborgan.so -# - use precompiled header files -# -set_target_properties ( organ - PROPERTIES PREFIX "" - COMPILE_FLAGS "-O2 -include ${PROJECT_BINARY_DIR}/all-pic.h" - ) - -target_link_libraries(organ - synti - awl - ${QT_LIBRARIES} - ) - -install_targets ( /${CMAKE_INSTALL_LIBDIR}/${MusE_INSTALL_NAME}/synthi/ organ ) - diff --git a/muse/synti/organ/organ.cpp b/muse/synti/organ/organ.cpp deleted file mode 100644 index 7c83a463..00000000 --- a/muse/synti/organ/organ.cpp +++ /dev/null @@ -1,621 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: organ.cpp,v 1.23 2005/12/16 15:36:51 wschweer Exp $ -// -// Parts of this file taken from: -// Organ - Additive Organ Synthesizer Voice -// Copyright (C) 1999, 2000 David A. Bartold -// Some information was gathered form the "beatrix" organ -// from Fredrik Kilander -// -// (C) Copyright 2001-2007 Werner Schweer (ws@seh.de) -//========================================================= - -#include "muse/midi.h" -#include "libsynti/midievent.h" - -#include "organ.h" -#include "organgui.h" -#include "reverb.h" - -float* Organ::attackEnv; -float* Organ::releaseEnv; -int Organ::envSize; -float* Organ::waveTable; -int Organ::useCount; -double Organ::cb2amp_tab[MAX_ATTENUATION]; -float Organ::keyCompression[NO_VOICES]; - -//--------------------------------------------------------- -// dBToGain -//--------------------------------------------------------- - -static double dBToGain(double dB) - { - return pow(10.0, (dB / 20.0)); - } - -//--------------------------------------------------------- -// cb2amp -// convert centibel to amplification (0 - 96dB) -//--------------------------------------------------------- - -double Organ::cb2amp(int cb) - { - if (cb < 0) - return 1.0; - if (cb >= MAX_ATTENUATION) - return 0.0; - return cb2amp_tab[cb]; - } - -static const unsigned SHIFT = 16; -static const double RESO = 256.0 * 256.0 * 256.0 * 256.0; -static const unsigned resolution = 256 * 256; // 16 Bit - -//--------------------------------------------------------- -// Organ -//--------------------------------------------------------- - -Organ::Organ(int sr) - : Mess2(2) - { - setSampleRate(sr); - gui = 0; - reverb = new Reverb(); - - ++useCount; - if (useCount > 1) - return; - - // centibels to amplitude conversion - for (int i = 0; i < MAX_ATTENUATION; i++) - cb2amp_tab[i] = pow(10.0, double(i) / -200.0); - - // Initialize sine table. - waveTable = new float[resolution]; - for (unsigned i = 0; i < resolution; i++) - waveTable[i] = sin (double(i) * 2.0 * M_PI / double(resolution)); - - // Initialize envelope tables - - envSize = sr * 4 / 1000; // 4 msec - attackEnv = new float[envSize]; - releaseEnv = new float[envSize]; - - for (int i = 0; i < envSize; ++i) { - attackEnv[i] = float(i) / float(envSize); - releaseEnv[i] = float(i) / float(envSize); - } - - // Initialize key compression table - - keyCompression[ 0] = 1.0; - keyCompression[ 1] = 1.0; - keyCompression[ 2] = dBToGain(-1.1598); - keyCompression[ 3] = dBToGain(-2.0291); - keyCompression[ 4] = dBToGain(-2.4987); - keyCompression[ 5] = dBToGain(-2.9952); - keyCompression[ 6] = dBToGain(-3.5218); - keyCompression[ 7] = dBToGain(-4.0823); - keyCompression[ 8] = dBToGain(-4.6815); - keyCompression[ 9] = dBToGain(-4.9975); - keyCompression[10] = dBToGain(-4.9998); - - /* Linear interpolation from u to v. */ - - static const float u = -5.0; - static const float v = -9.0; - static const float m = 1.0 / (NO_VOICES - 12); - for (int i = 11; i < NO_VOICES; i++) { - keyCompression[i] = dBToGain(u + ((v - u) * float(i - 11) * m)); - } - - // Initialize controller table - - addController("drawbar16", DRAWBAR0, 0, 8, 8); - addController("drawbar513", DRAWBAR1, 0, 8, 8); - addController("drawbar8", DRAWBAR2, 0, 8, 8); - addController("drawbar4", DRAWBAR3, 0, 8, 0); - addController("drawbar223", DRAWBAR4, 0, 8, 0); - addController("drawbar2", DRAWBAR5, 0, 8, 0); - addController("drawbar135", DRAWBAR6, 0, 8, 0); - addController("drawbar113", DRAWBAR7, 0, 8, 0); - addController("drawbar1", DRAWBAR8, 0, 8, 0); - addController("reverbOn", REVERB_ON, 0, 1, 0); - addController("reverbRoomSize", REVERB_ROOM_SIZE, 0, 127, 60); - addController("reverbMix", REVERB_MIX, 0, 127, 100); - addController("vibratoOn", VIBRATO_ON, 0, 1, 1); - addController("vibratoFreq", VIBRATO_FREQ, 0, 127, 100); - addController("vibratoDepth", VIBRATO_DEPTH, 0, 127, 50); - addController("volume", CTRL_VOLUME, 0, 127, 100); - addController("percOn", PERC_ON, 0, 1, 1); - addController("percGain", PERC_GAIN, 0, 127, 60); - addController("percDecay", PERC_DECAY, 0, 127, 60); - addController("percHarmony", PERC_HARMONY, 0, 8, 3); - addController("rotaryOn", ROTARY_ON, 0, 1, 0); - addController("rot1Freq", ROT1_FREQ, 0, 127, 100); - addController("rot1Depth", ROT1_DEPTH, 0, 127, 50); - addController("rot2Freq", ROT2_FREQ, 0, 127, 100); - addController("rot2Depth", ROT2_DEPTH, 0, 127, 50); - } - -//--------------------------------------------------------- -// ~Organ -//--------------------------------------------------------- - -Organ::~Organ() - { - if (gui) - delete gui; - delete reverb; - - --useCount; - if (useCount == 0) { - delete[] waveTable; - delete[] attackEnv; - delete[] releaseEnv; - } - } - -//--------------------------------------------------------- -// init -//--------------------------------------------------------- - -bool Organ::init(const char* name) - { - gui = new OrganGui; - gui->hide(); - gui->setWindowTitle(QString(name)); - - // - // Initialize controller - // - int idx = 0; - foreach(SynthCtrl* c, ctrl) { - setController(c->ctrl, c->init); // init synti - gui->setParamIdx(idx, c->init); // init gui - ++idx; - } - - // see: http://www.dairiki.org/HammondWiki/GearRatio - static const int gearA[12] = { 85, 71,67,35,69,12,37,49,48,11,67,54 }; - static const int gearB[12] = { 104,82,73,36,67,11,32,40,37, 8,46,35 }; - static const int teeth[] = { 2, 4, 8, 16, 32, 64, 128, 192 }; - - vibratoAccu = 0; - rot1AccuL = 0; - rot1AccuR = 0x80000000; - rot2AccuL = 0; - rot2AccuR = 0x80000000; - - for (int i = 0; i < NO_WHEELS; ++i) { - int note = i % 12; - int octave = i / 12; - if (octave == 7) - note += 5; - // in 60Hz organs, the motor turns at 1200 RPM (20 revolutions /sec) - double freq = 20.0 * teeth[octave] * gearA[note] / gearB[note]; - wheels[i].frameStep = lrint(freq * RESO / double(sampleRate())); - wheels[i].accu = 0; - wheels[i].refCount = 0; - wheels[i].active = false; - for (int k = 0; k < NO_BUSES; ++k) - wheels[i].envCount[k] = 0; - } - keyCompressionValue = 1.0; - keyCompressionCount = 0; - percGain = 0.0; - return false; - } - -//--------------------------------------------------------- -// process -//--------------------------------------------------------- - -void Organ::process(float** ports, int offset, int sampleCount) - { - // - // get and process all pending events from the - // synthesizer GUI - // - while (gui->fifoSize()) { - MidiEvent ev = gui->readEvent(); - if (ev.type() == ME_CONTROLLER) { - setController(ev.dataA(), ev.dataB()); - sendEvent(ev); - } - else - printf("Organ::process(): unknown event\n"); - } - - float* buffer1 = ports[0] + offset; - float* buffer2 = ports[1] + offset; - memset(buffer1, 0, sizeof(float) * sampleCount); - memset(buffer2, 0, sizeof(float) * sampleCount); - - float vibrato[sampleCount]; - - if (vibratoOn) { - // - // compute partial vibrato sinus - // - for (int i = 0; i < sampleCount; ++i) { - vibratoAccu += vibratoStep; - vibrato[i] = waveTable[vibratoAccu >> SHIFT] * vibratoDepth; - } - } - - foreach (Wheel* w, activeWheels) { - for (int i = 0; i < sampleCount; ++i) { - - unsigned step = w->frameStep; - if (vibratoOn) - step += unsigned(step * vibrato[i]); - - w->accu += step; - - int idx = w->accu >> SHIFT; - float val1 = waveTable[idx]; - idx = (idx + 1) & 0xffff; - float val2 = waveTable[idx]; - float val = val1 + (val2 - val1) * double(w->accu & 0xffff)/double(0x10000); - - for (int k = 0; k < NO_BUSES; ++k) { - int* envCnt = &(w->envCount[k]); - float v; - if (*envCnt > 0) { - (*envCnt)--; - float gain = w->gain[k] - w->deltaGain[k] * w->env[k][*envCnt]; - v = val * gain; - if ((*envCnt == 0) && (w->refCount == 0)) { - int idx = activeWheels.indexOf(w); - if (idx != -1) { - activeWheels.removeAt(idx); - w->active = false; - } - } - } - else { - v = val * w->gain[k]; - } - buffer1[i] += v * drawBarGain[k]; - if (k == percussionBus) - buffer2[i] += v; - } - } - } - if (percussionOn) { - for (int i = 0; i < sampleCount; ++i) { - buffer1[i] = buffer1[i] * volume * keyCompressionValue - + buffer2[i] * percGain; - percGain *= percussionEnvDecay; - if (keyCompressionCount) { - keyCompressionValue += keyCompressionDelta; - --keyCompressionCount; - } - } - } - else { - for (int i = 0; i < sampleCount; ++i) { - buffer1[i] *= volume * keyCompressionValue; - if (keyCompressionCount) { - keyCompressionValue += keyCompressionDelta; - --keyCompressionCount; - } - } - } - memcpy(buffer2, buffer1, sizeof(float) * sampleCount); - if (reverbOn) - reverb->process(buffer1, buffer2, sampleCount); - } - -//--------------------------------------------------------- -// changeKeyCompression -//--------------------------------------------------------- - -void Organ::changeKeyCompression() - { - float kc = keyCompression[pressedKeys.size()]; - keyCompressionCount = int(sampleRate() * .005); // 5 msec envelope - if (keyCompressionCount < 2) - keyCompressionCount = 2; - keyCompressionDelta = (kc - keyCompressionValue) / keyCompressionCount; - } - -//--------------------------------------------------------- -// playNote -//--------------------------------------------------------- - -bool Organ::playNote(int /*channel*/, int pitch, int velo) - { - if (pitch < 36 || pitch > 97) - return false; - if (velo == 0) { - int idx = pressedKeys.indexOf(pitch); - if (idx == -1) { - printf("Organ: noteoff %d not found\n", pitch); - return false; - } - pressedKeys.removeAt(idx); - } - else { - if (pressedKeys.isEmpty()) - percGain = percGainInit; - pressedKeys.append(pitch); - } - changeKeyCompression(); - - for (int k = 0; k < NO_ELEMENTS; ++k) { - const Elem* e = &routing[pitch - 36][k]; - if (e->bus == -1) - break; - Wheel* w = &wheels[int(e->wheel)]; - int bus = e->bus; - float level = e->level; - - if (velo) { - if (!w->active) { - // activate wheel - for (int k = 0; k < NO_BUSES; ++k) { - w->gain[k] = 0.0; - w->envCount[k] = 0; - } - activeWheels.append(w); - w->active = true; - } - float deltaGain = level; - - if (w->envCount[bus]) { - deltaGain += w->deltaGain[bus] * w->env[bus][w->envCount[bus]]; - } - w->env[bus] = attackEnv; - w->deltaGain[bus] = deltaGain; - w->gain[bus] += level; - w->refCount++; - } - else { - float deltaGain = -level; - - if (w->envCount[bus]) { - deltaGain += w->deltaGain[bus] * w->env[bus][w->envCount[bus]]; - } - w->env[bus] = releaseEnv; - w->deltaGain[bus] = deltaGain; - w->gain[bus] -= level; - if (w->refCount) - w->refCount--; - } - w->envCount[bus] = envSize; - } - return false; - } - -//--------------------------------------------------------- -// percussionChanged -//--------------------------------------------------------- - -void Organ::percussionChanged() - { - percussionEnvDecay = exp(log(0.001/percGainInit) / (percDecay * double(sampleRate()))); - } - -//--------------------------------------------------------- -// setController -//--------------------------------------------------------- - -void Organ::setController(int ctrlId, int data) - { - int ctrlIdx = controllerIdx(ctrlId); - if (ctrlIdx != -1) - ctrl[ctrlIdx]->val = data; - switch (ctrlId) { - case DRAWBAR0 ... DRAWBAR8: - { - int db = ctrlId - DRAWBAR0; - drawBarGain[db] = float(data) / 8.0; - } - break; - case REVERB_ROOM_SIZE: - reverb->setRoomSize(float(data) / 127.0); - break; - - case REVERB_MIX: - reverb->setMix(float(data) / 127.0); - break; - - case REVERB_ON: - reverbOn = data != 0; - break; - - case VIBRATO_ON: - vibratoOn = data != 0; - break; - - case VIBRATO_FREQ: - vibratoFreq = float(data) * 6.0 / 127.0 + 4; - vibratoStep = lrint(vibratoFreq * RESO / double(sampleRate())); - break; - - case VIBRATO_DEPTH: - vibratoDepth = float(data) / 127.0 * .01; - break; - - case PERC_ON: - percussionOn = data != 0; - break; - - case PERC_GAIN: // 0.01 - 0.4 - percGainInit = float(data) * .39 / 127.0 + 0.01; - percussionChanged(); - break; - - case PERC_DECAY: // 0.5 - 4.5 sec - percDecay = float(data) * 4.0 / 127.0 + 0.5; - percussionChanged(); - break; - - case PERC_HARMONY: - percussionBus = data; - break; - - case ROTARY_ON: - rotaryOn = data != 0; - break; - - case ROT1_FREQ: - rot1Freq = float(data) * 6.0 / 127.0 + 0.67; - rot1Step = lrint(rot1Freq * RESO / double(sampleRate())); - break; - - case ROT1_DEPTH: - rot1Depth = float(data) / 127.0 * 1.0; - break; - - case ROT2_FREQ: - rot1Freq = float(data) * 5.0 / 127.0 + 0.5; - rot1Step = lrint(rot1Freq * RESO / double(sampleRate())); - break; - - case ROT2_DEPTH: - rot2Depth = float(data) / 127.0 * 1.0; - break; - - case CTRL_VOLUME: - data &= 0x7f; - volume = data == 0 ? 0.0 : cb2amp(int(200 * log10((127.0 * 127)/(data*data)))); - volume *= .04; - break; - - case CTRL_ALL_SOUNDS_OFF: - foreach(Wheel* w, activeWheels) { - for (int k = 0; k < NO_ELEMENTS; ++k) { - w->gain[k] = 0.0; - w->envCount[k] = 0; - } - w->refCount = 0; - } - pressedKeys.clear(); - break; - - case CTRL_RESET_ALL_CTRL: -// for (int i = 0; i < NUM_CONTROLLER; ++i) -// setController(0, synthCtrl[i].num, synthCtrl[i].val); - break; - default: - fprintf(stderr, "Organ:set unknown Ctrl 0x%x to 0x%x\n", ctrlId, data); - return; - } - } - -//--------------------------------------------------------- -// setController -//--------------------------------------------------------- - -bool Organ::setController(int channel, int ctrlId, int data) - { - MidiEvent ev(0, channel, ME_CONTROLLER, ctrlId, data); - gui->writeEvent(ev); - setController(ctrlId, data); - return false; - } - -//--------------------------------------------------------- -// sysex -//--------------------------------------------------------- - -bool Organ::sysex(int n, const unsigned char* data) - { - int nn = ctrl.size() * sizeof(int); - if (nn != n) { - printf("unknown sysex %d %02x %02x\n", n, data[0], data[1]); - return false; - } - const int* s = (const int*) data; - for (int i = 0; i < ctrl.size(); ++i) { - setController(0, ctrl[i]->ctrl, *s); - setController(ctrl[i]->ctrl, *s); - s++; - } - return false; - } - -//--------------------------------------------------------- -// MESS -//--------------------------------------------------------- - -//--------------------------------------------------------- -// guiVisible -//--------------------------------------------------------- - -bool Organ::guiVisible() const - { - return gui->isVisible(); - } - -//--------------------------------------------------------- -// showGui -//--------------------------------------------------------- - -void Organ::showGui(bool val) - { - gui->setShown(val); - } - -//--------------------------------------------------------- -// getGeometry -//--------------------------------------------------------- - -void Organ::getGeometry(int* x, int* y, int* w, int* h) const - { - QPoint pos(gui->pos()); - QSize size(gui->size()); - *x = pos.x(); - *y = pos.y(); - *w = size.width(); - *h = size.height(); - } - -//--------------------------------------------------------- -// setGeometry -//--------------------------------------------------------- - -void Organ::setGeometry(int x, int y, int w, int h) - { - gui->resize(QSize(w, h)); - gui->move(QPoint(x, y)); - } - -//--------------------------------------------------------- -// instantiate -// construct a new synthesizer instance -//--------------------------------------------------------- - -static Mess* instantiate(int sr, const char* name) - { - Organ* synth = new Organ(sr); - if (synth->init(name)) { - delete synth; - synth = 0; - } - return synth; - } - -//--------------------------------------------------------- -// msynth_descriptor -// Return a descriptor of the requested plugin type. -//--------------------------------------------------------- - -extern "C" { - static MESS descriptor = { - "Organ", - "Organ; based on David A. Bartold's LADSPA plugin", - "0.1", // version string - MESS_MAJOR_VERSION, MESS_MINOR_VERSION, - instantiate, - }; - - const MESS* mess_descriptor() { return &descriptor; } - } - diff --git a/muse/synti/organ/organ.h b/muse/synti/organ/organ.h deleted file mode 100644 index 971e6cc9..00000000 --- a/muse/synti/organ/organ.h +++ /dev/null @@ -1,151 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: organ.h,v 1.5 2004/04/15 13:46:18 wschweer Exp $ -// -// Parts of this file taken from: -// Organ - Additive Organ Synthesizer Voice -// Copyright (c) 1999, 2000 David A. Bartold -// -// (C) Copyright 2001-2007 Werner Schweer (ws@seh.de) -//========================================================= - -#ifndef __ORGAN_H__ -#define __ORGAN_H__ - -#include "muse/midictrl.h" -#include "libsynti/mess2.h" - -static const int NO_VOICES = 128; // max polyphony -static const int NO_KEYS = 97 - 36; -class OrganGui; -class Reverb; - -static const int MAX_ATTENUATION = 960; -static const int NO_BUSES = 9; -static const int NO_WHEELS = 91; -static const int NO_ELEMENTS = 194; - -enum { - DRAWBAR0 = CTRL_RPN14_OFFSET, DRAWBAR1, DRAWBAR2, - DRAWBAR3, DRAWBAR4, DRAWBAR5, DRAWBAR6, DRAWBAR7, DRAWBAR8, - REVERB_ON, REVERB_ROOM_SIZE, REVERB_MIX, - VIBRATO_ON, VIBRATO_FREQ, VIBRATO_DEPTH, - PERC_ON, PERC_GAIN, PERC_DECAY, PERC_HARMONY, - ROTARY_ON, ROT1_FREQ, ROT1_DEPTH, ROT2_FREQ, ROT2_DEPTH - }; - -//--------------------------------------------------------- -// Wheel -//--------------------------------------------------------- - -struct Wheel { - unsigned frameStep; - unsigned accu; - - int refCount; - bool active; - float gain[NO_BUSES]; - - // envelopes: - float* env[NO_BUSES]; - int envCount[NO_BUSES]; - float deltaGain[NO_BUSES]; - }; - -//--------------------------------------------------------- -// Elem -//--------------------------------------------------------- - -struct Elem { - char wheel; - char bus; - float level; - - Elem() { bus = -1; } - Elem(char w, char b, float l) : wheel(w), bus(b), level(l) {} - }; - -//--------------------------------------------------------- -// Organ -//--------------------------------------------------------- - -class Organ : public Mess2 { - static int useCount; - - static float* waveTable; - static double cb2amp_tab[MAX_ATTENUATION]; - static double cb2amp(int cb); - static Elem routing[NO_KEYS][NO_ELEMENTS]; - static float* attackEnv; - static float* releaseEnv; - static int envSize; - static float keyCompression[NO_VOICES]; - - OrganGui* gui; - Reverb* reverb; - bool reverbOn; - double volume; - - unsigned vibratoStep; - unsigned vibratoAccu; - - bool vibratoOn; - double vibratoFreq; - double vibratoDepth; - - // key compression - float keyCompressionDelta; - float keyCompressionValue; - int keyCompressionCount; - - // percussion - int percussionBus; // usually drawbar 3 or drawbar 4 - bool percussionOn; - double percDecay; - double percussionEnvDecay; - double percGain; - double percGainInit; - - // rotary speaker emulation - bool rotaryOn; - double rot1Freq; // horn: 0,67 - 6,7 - double rot1Depth; - double rot2Freq; // drum: 0,5 - 5,5 - double rot2Depth; - unsigned rot1Step; - unsigned rot1AccuL; - unsigned rot1AccuR; - unsigned rot2Step; - unsigned rot2AccuL; - unsigned rot2AccuR; - - float drawBarGain[NO_BUSES]; - Wheel wheels[NO_WHEELS]; - QList pressedKeys; - QList activeWheels; - - void setController(int ctrl, int val); - void changeKeyCompression(); - void percussionChanged(); - - virtual void process(float**, int, int); - virtual bool playNote(int channel, int pitch, int velo); - virtual bool setController(int channel, int ctrl, int val); - virtual bool sysex(int, const unsigned char*); - - virtual bool guiVisible() const; - virtual void showGui(bool); - virtual bool hasGui() const { return true; } - virtual void getGeometry(int* x, int* y, int* w, int* h) const; - virtual void setGeometry(int x, int y, int w, int h); - - public: - friend class OrganGui; - Organ(int sampleRate); - ~Organ(); - bool init(const char* name); - }; - -#endif - diff --git a/muse/synti/organ/organgui.cpp b/muse/synti/organ/organgui.cpp deleted file mode 100644 index c00d23fb..00000000 --- a/muse/synti/organ/organgui.cpp +++ /dev/null @@ -1,184 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: organgui.cpp,v 1.21 2005/12/16 15:36:51 wschweer Exp $ -// -// This is a simple GUI implemented with QT for -// organ software synthesizer. -// -// (C) Copyright 2001-2007 Werner Schweer (ws@seh.de) -//========================================================= - -#include "organgui.h" -#include "muse/midi.h" -#include "muse/midictrl.h" -#include "awl/knob.h" - -//--------------------------------------------------------- -// OrganGui -//--------------------------------------------------------- - -OrganGui::OrganGui() - : QWidget(0), - MessGui() - { - setupUi(this); - QSocketNotifier* s = new QSocketNotifier(readFd, QSocketNotifier::Read); - connect(s, SIGNAL(activated(int)), SLOT(readMessage(int))); - - map = new QSignalMapper(this); - QList wl = findChildren(); - foreach(QWidget* w, wl) { - int idx = Mess2::controllerIdx(w->objectName().toAscii().data()); - if (idx == -1) - continue; - w->setProperty("ctrlIdx", idx); - map->setMapping(w, w); - const char* cname = w->metaObject()->className(); - if (strcmp(cname, "QSlider") == 0) { - QSlider* slider = (QSlider*)w; - w->setProperty("ctrlType", 0); - connect(slider, SIGNAL(valueChanged(int)), map, SLOT(map())); - } - else if (strcmp(cname, "QCheckBox") == 0) { - w->setProperty("ctrlType", 1); - connect(w, SIGNAL(toggled(bool)), map, SLOT(map())); - } - else if (strcmp(cname, "QGroupBox") == 0) { - w->setProperty("ctrlType", 2); - connect(w, SIGNAL(toggled(bool)), map, SLOT(map())); - } - else if (strcmp(cname, "Awl::Knob") == 0) { - w->setProperty("ctrlType", 3); - connect(w, SIGNAL(valueChanged(double,int)), map, SLOT(map())); - } - else if (strcmp(cname, "QPushButton") == 0) { - w->setProperty("ctrlType", 4); - connect(w, SIGNAL(toggled(bool)), map, SLOT(map())); - } - else if (strcmp(cname, "Awl::Drawbar") == 0) { - Awl::Drawbar* drawbar = (Awl::Drawbar*)w; - w->setProperty("ctrlType", 5); - connect(drawbar, SIGNAL(valueChanged(double,int)), map, SLOT(map())); - } - else - printf("Gui Element <%s> not supported\n", cname); - } - ignoreControllerChange = false; - connect(map, SIGNAL(mapped(QWidget*)), this, SLOT(ctrlChanged(QWidget*))); - } - -//--------------------------------------------------------- -// ctrlChanged -//--------------------------------------------------------- - -void OrganGui::ctrlChanged(QWidget* w) - { - if (ignoreControllerChange) - return; - int ctrlIdx = w->property("ctrlIdx").toInt(); - int ctrlType = w->property("ctrlType").toInt(); - int value = 0; - - switch(ctrlType) { - case 0: // QSlider - value = ((QSlider*)w)->value(); - break; - case 1: - value = ((QCheckBox*)w)->isChecked(); - break; - case 2: - value = ((QGroupBox*)w)->isChecked(); - break; - case 3: - value = lrint(((Awl::Knob*)w)->value()); - break; - case 4: - value = ((QPushButton*)w)->isChecked(); - break; - case 5: - value = lrint(((Awl::Drawbar*)w)->value()); - break; - default: - printf("OrganGui::ctrlChanged: illegal ctrlType %d\n", ctrlType); - break; - } - int id = Mess2::controllerId(ctrlIdx); - sendController(0, id, value); // to synth - } - -//--------------------------------------------------------- -// setParam -//--------------------------------------------------------- - -void OrganGui::setParam(int ctrlId, int val) - { - int ctrlIdx = Mess2::controllerIdx(ctrlId); - if (ctrlIdx == -1) - return; - setParamIdx(ctrlIdx, val); - } - -//--------------------------------------------------------- -// setParamIdx -// set controller value in gui -//--------------------------------------------------------- - -void OrganGui::setParamIdx(int ctrlIdx, int val) - { - const char* name = Organ::controllerName(ctrlIdx); - if (name == 0) - return; - ignoreControllerChange = true; - QList wl = findChildren(name); - - foreach(QWidget* w, wl) { - int ctrlType = w->property("ctrlType").toInt(); - switch(ctrlType) { - case 0: - ((QSlider*)w)->setValue(val); - break; - case 1: - ((QCheckBox*)w)->setChecked(val); - break; - case 2: - ((QGroupBox*)w)->setChecked(val); - break; - case 3: - ((Awl::Knob*)w)->setValue(double(val)); - break; - case 4: - ((QPushButton*)w)->setChecked(val); - break; - case 5: - ((Awl::Drawbar*)w)->setValue(double(val)); - break; - default: - printf("OrganGui::setParamIdx: illegal ctrlType %d\n", ctrlType); - break; - } - } - ignoreControllerChange = false; - } - -//--------------------------------------------------------- -// processEvent -//--------------------------------------------------------- - -void OrganGui::processEvent(const MidiEvent& ev) - { - if (ev.type() == ME_CONTROLLER) - setParam(ev.dataA(), ev.dataB()); - else - printf("OrganGui::illegal event type received\n"); - } - -//--------------------------------------------------------- -// readMessage -//--------------------------------------------------------- - -void OrganGui::readMessage(int) - { - MessGui::readMessage(); - } - diff --git a/muse/synti/organ/organgui.h b/muse/synti/organ/organgui.h deleted file mode 100644 index c691b1a1..00000000 --- a/muse/synti/organ/organgui.h +++ /dev/null @@ -1,48 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: organgui.h,v 1.8 2005/10/04 21:37:44 lunar_shuttle Exp $ -// -// (C) Copyright 2001-2004 Werner Schweer (ws@seh.de) -//========================================================= - -#ifndef __ORGANGUI_H__ -#define __ORGANGUI_H__ - -#include "ui_organgui.h" -#include "organ.h" -#include "libsynti/gui.h" -#include "libsynti/midievent.h" - -class QSignalMapper; - -#define NUM_GUI_CONTROLLER 18 - -//--------------------------------------------------------- -// OrganGui -//--------------------------------------------------------- - -class OrganGui : public QWidget, public Ui::OrganGuiBase, public MessGui { - Q_OBJECT - - bool ignoreControllerChange; - - QSignalMapper* map; - virtual void processEvent(const MidiEvent&); - - protected: - void setParam(int, int); - void setParamIdx(int ctrlIdx, int val); - - private slots: - void ctrlChanged(QWidget*); - void readMessage(int); - - public: - friend class Organ; - friend class Mess2; - OrganGui(); - }; - -#endif - diff --git a/muse/synti/organ/organgui.ui b/muse/synti/organ/organgui.ui deleted file mode 100644 index 297042c7..00000000 --- a/muse/synti/organ/organgui.ui +++ /dev/null @@ -1,791 +0,0 @@ - - OrganGuiBase - - - - 0 - 0 - 611 - 342 - - - - - 0 - 0 - - - - MusE: Organ - - - QWidget { -background-color: rgb(93,106,121); -color: rgb(240, 240, 240); -} -QLabel#name { -font-size: 64px; -font-weight: bold; -} -Awl--Drawbar { -font-size: 10px; -} -Awl--Knob { -font-size: 10px; -} - -QGroupBox::indicator:checked { -background-color: yellow; -} -QGroupBox::indicator:unchecked { -background-color: gray; -} -QCheckBox::indicator:checked:disabled { -background-color: darkGray; -} -QCheckBox::indicator:unchecked:disabled { -background-color: gray; -} -QCheckBox::indicator:checked:enabled { -background-color: yellow; -} -QCheckBox::indicator:unchecked:enabled { -background-color: gray; -} - - - - - - - - - - 0 - 0 - - - - - -1 - 75 - true - - - - O-1 - - - Qt::AlignCenter - - - - - - - Percussion - - - true - - - - - - - 0 - 0 - - - - 5 - - - - 255 - 255 - 0 - - - - 127.000000000000000 - - - 8.000000000000000 - - - 20.000000000000000 - - - - - - - - 0 - 0 - - - - 5 - - - - 255 - 255 - 0 - - - - 127.000000000000000 - - - 8.000000000000000 - - - 20.000000000000000 - - - - - - - - 0 - 0 - - - - 5 - - - - 255 - 255 - 0 - - - - 8.000000000000000 - - - 1.000000000000000 - - - 1.000000000000000 - - - - - - - Gain - - - Qt::AlignCenter - - - - - - - Decay - - - Qt::AlignCenter - - - - - - - Harmony - - - Qt::AlignCenter - - - - - - - - - - Reverb - - - true - - - - - - - 0 - 0 - - - - 5 - - - - 255 - 255 - 0 - - - - 127.000000000000000 - - - 8.000000000000000 - - - 20.000000000000000 - - - - - - - - 0 - 0 - - - - Room - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - Mix - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - 5 - - - - 255 - 255 - 0 - - - - 127.000000000000000 - - - 8.000000000000000 - - - 20.000000000000000 - - - - - - - - - - Vibrato - - - true - - - - - - - 0 - 0 - - - - 5 - - - - 255 - 255 - 0 - - - - 127.000000000000000 - - - 8.000000000000000 - - - 20.000000000000000 - - - - - - - - 0 - 0 - - - - 5 - - - - 255 - 255 - 0 - - - - 127.000000000000000 - - - 8.000000000000000 - - - 20.000000000000000 - - - - - - - - 0 - 0 - - - - Freq - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - Depth - - - Qt::AlignCenter - - - - - - - - - - - - - - - 0 - 0 - - - - UPPER MANUAL - - - - - - 4.000000000000000 - - - - 60 - 60 - 60 - - - - - - - - 5.000000000000000 - - - - 60 - 60 - 60 - - - - - - - - - 0 - 150 - - - - 8.000000000000000 - - - - 240 - 240 - 240 - - - - - - - - 8.000000000000000 - - - - 240 - 240 - 240 - - - - - - - - 8.000000000000000 - - - - 128 - 102 - 86 - - - - - - - - 0.000000000000000 - - - - 240 - 240 - 240 - - - - - - - - 5.000000000000000 - - - - 128 - 102 - 86 - - - - - - - - 2.000000000000000 - - - - 128 - 102 - 86 - - - - - - - - 0.000000000000000 - - - - 240 - 240 - 240 - - - - - - - - - - - RotarySpeaker (test) - - - true - - - - - - - 0 - 0 - - - - 5 - - - - 255 - 255 - 0 - - - - 127.000000000000000 - - - 8.000000000000000 - - - 20.000000000000000 - - - - - - - - 0 - 0 - - - - 5 - - - - 255 - 255 - 0 - - - - 127.000000000000000 - - - 8.000000000000000 - - - 20.000000000000000 - - - - - - - - 0 - 0 - - - - f1 - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - depth1 - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - 5 - - - - 255 - 255 - 0 - - - - 127.000000000000000 - - - 8.000000000000000 - - - 20.000000000000000 - - - - - - - - 0 - 0 - - - - 5 - - - - 255 - 255 - 0 - - - - 127.000000000000000 - - - 8.000000000000000 - - - 20.000000000000000 - - - - - - - - 0 - 0 - - - - f2 - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - depth2 - - - Qt::AlignCenter - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - Awl::Knob - QWidget -
awl/knob.h
-
- - Awl::Drawbar - Awl::Slider -
awl/drawbar.h
-
-
- - -
diff --git a/muse/synti/organ/reverb.cpp b/muse/synti/organ/reverb.cpp deleted file mode 100644 index 72775bc5..00000000 --- a/muse/synti/organ/reverb.cpp +++ /dev/null @@ -1,163 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id:$ -// -// based on "freeverb" written by Jezar at Dreampoint, -// June 2000 -// -// (C) Copyright 2007 Werner Schweer (ws@seh.de) -//========================================================= - -#include "reverb.h" - -//--------------------------------------------------------- -// Reverb -//--------------------------------------------------------- - -Reverb::Reverb() - { - // Tie the components to their buffers - combL[0].setbuffer(bufcombL1,combtuningL1); - combR[0].setbuffer(bufcombR1,combtuningR1); - combL[1].setbuffer(bufcombL2,combtuningL2); - combR[1].setbuffer(bufcombR2,combtuningR2); - combL[2].setbuffer(bufcombL3,combtuningL3); - combR[2].setbuffer(bufcombR3,combtuningR3); - combL[3].setbuffer(bufcombL4,combtuningL4); - combR[3].setbuffer(bufcombR4,combtuningR4); - combL[4].setbuffer(bufcombL5,combtuningL5); - combR[4].setbuffer(bufcombR5,combtuningR5); - combL[5].setbuffer(bufcombL6,combtuningL6); - combR[5].setbuffer(bufcombR6,combtuningR6); - combL[6].setbuffer(bufcombL7,combtuningL7); - combR[6].setbuffer(bufcombR7,combtuningR7); - combL[7].setbuffer(bufcombL8,combtuningL8); - combR[7].setbuffer(bufcombR8,combtuningR8); - allpassL[0].setbuffer(bufallpassL1,allpasstuningL1); - allpassR[0].setbuffer(bufallpassR1,allpasstuningR1); - allpassL[1].setbuffer(bufallpassL2,allpasstuningL2); - allpassR[1].setbuffer(bufallpassR2,allpasstuningR2); - allpassL[2].setbuffer(bufallpassL3,allpasstuningL3); - allpassR[2].setbuffer(bufallpassR3,allpasstuningR3); - allpassL[3].setbuffer(bufallpassL4,allpasstuningL4); - allpassR[3].setbuffer(bufallpassR4,allpasstuningR4); - - // Set default values - allpassL[0].setfeedback(0.5f); - allpassR[0].setfeedback(0.5f); - allpassL[1].setfeedback(0.5f); - allpassR[1].setfeedback(0.5f); - allpassL[2].setfeedback(0.5f); - allpassR[2].setfeedback(0.5f); - allpassL[3].setfeedback(0.5f); - allpassR[3].setfeedback(0.5f); - - setRoomSize(.5); - setMix(.5); - setdamp(.5); - setwidth(initialwidth); - - // Buffer will be full of rubbish - so we MUST mute them - - for (int i = 0; i < numcombs; i++) { - combL[i].mute(); - combR[i].mute(); - } - for (int i=0;i= bufsize) - bufidx = 0; - return output; - } - void mute() { - memset(buffer, 0, sizeof(float) * bufsize); - } - void setfeedback(float val) { feedback = val; } - float getfeedback() { return feedback; } - }; - -//--------------------------------------------------------- -// comb -//--------------------------------------------------------- - -class comb - { - float feedback; - float filterstore; - float damp1; - float damp2; - float *buffer; - int bufsize; - int bufidx; - - public: - comb() { - filterstore = 0; - bufidx = 0; - } - void setbuffer(float *buf, int size) { - buffer = buf; - bufsize = size; - } - float process(float input) { - float output = buffer[bufidx]; - undenormalise(output); - filterstore = (output*damp2) + (filterstore*damp1); - undenormalise(filterstore); - buffer[bufidx] = input + (filterstore*feedback); - if (++bufidx >= bufsize) - bufidx = 0; - return output; - } - void mute() { - for (int i=0; i -#include - -#include "synti/libsynti/mono.h" - -#define RESOLUTION 16384 - -//--------------------------------------------------------- -// S1 - simple mono demo synthesizer -//--------------------------------------------------------- - -class S1 : public MessMono { - static int useCount; - static float *wave_table; - - int gate; - float freq; - unsigned accu; - float sample; - - virtual void note(int channel, int pitch, int velo); - virtual void process(float** buffer, int offset, int n); - - public: - S1(); - ~S1(); - }; - -float* S1::wave_table; -int S1::useCount = 0; - -//--------------------------------------------------------- -// S1 -//--------------------------------------------------------- - -S1::S1() : MessMono() - { - if (useCount++ == 0) { - // - // create sinus wave table - // - wave_table = new float[RESOLUTION]; - for (int i = 0; i < RESOLUTION; i++) - wave_table[i] = sin ((i * 2.0 * M_PI) / RESOLUTION) / 6.0; - } - gate = 0; - } - -//--------------------------------------------------------- -// ~S1 -//--------------------------------------------------------- - -S1::~S1() - { - if (--useCount == 0) - delete[] wave_table; - } - -//--------------------------------------------------------- -// noteon -// process note on -//--------------------------------------------------------- - -void S1::note(int /*channel*/, int pitch, int velo) - { - if (velo == 0) { - // - // note off - // - if (sample == 0.0) - gate = 0; - else if (sample > 0.0) - gate = 2; - else if (sample < 0.0) - gate = 3; - } - else { - // - // note on - // - accu = 0; - gate = 1; - freq = 8.176 * exp(float(pitch)*log(2.0)/12.0); - } - } - -//--------------------------------------------------------- -// write -// synthesize n samples into buffer+offset -//--------------------------------------------------------- - -void S1::process(float** buffer, int offset, int n) - { - if (gate == 0) - return; - float* p = buffer[0] + offset; - unsigned freq_256 = (int) (freq * ((double) RESOLUTION) / sampleRate() * 256.0); - for (int i = 0; i < n; i++) { - accu += freq_256; - while (accu >= RESOLUTION * 256) - accu -= RESOLUTION * 256; - sample = wave_table[accu >> 8]; - // - // stop on zero crossing - // if in decay state - // - if (gate == 2 && sample <= 0.0) { - gate = 0; - break; - } - else if (gate == 3 && sample >= 0.0) { - gate = 0; - break; - } - p[i] += sample; - } - } - -//--------------------------------------------------------- -// inst -//--------------------------------------------------------- - -static Mess* instantiate(int sr, const char*) - { - S1* s1 = new S1(); - s1->setSampleRate(sr); - return s1; - } - -extern "C" { - static MESS descriptor = { - "S1", - "S1 MusE Demo Software Synthesizer", - "0.2", // version string - MESS_MAJOR_VERSION, MESS_MINOR_VERSION, - instantiate - }; - - const MESS* mess_descriptor() { return &descriptor; } - } - diff --git a/muse/synti/simpledrums/CMakeLists.txt b/muse/synti/simpledrums/CMakeLists.txt deleted file mode 100644 index b29bab02..00000000 --- a/muse/synti/simpledrums/CMakeLists.txt +++ /dev/null @@ -1,52 +0,0 @@ -#============================================================================= -# MusE -# Linux Music Editor -# $Id:$ -# -# Copyright (C) 2002-2006 by Werner Schweer and others -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -QT4_WRAP_CPP ( simpledrums_mocs simpledrumsgui.h ssplugingui.h ) -QT4_WRAP_UI ( simpledrums_uis simpledrumsguibase.ui sspluginchooserbase.ui ) - -add_library ( simpledrums SHARED - simpledrums.cpp - simpledrumsgui.cpp - simpledrums.h - ssplugin.cpp - ssplugingui.cpp - ssplugin.h - common.h - ${simpledrums_mocs} - ${simpledrums_uis} - ) - -# - tell cmake to name target simpledrums.so instead of -# libsimpledrums.so -# - use precompiled header files -# -set_target_properties ( simpledrums - PROPERTIES PREFIX "" - COMPILE_FLAGS "-O6 -include ${PROJECT_BINARY_DIR}/all-pic.h" - ) - -target_link_libraries(simpledrums - synti -# awl - ${QT_LIBRARIES} - ) - -install_targets ( /${CMAKE_INSTALL_LIBDIR}/${MusE_INSTALL_NAME}/synthi/ simpledrums ) - diff --git a/muse/synti/simpledrums/COPYING b/muse/synti/simpledrums/COPYING deleted file mode 100644 index 5c3cefc2..00000000 --- a/muse/synti/simpledrums/COPYING +++ /dev/null @@ -1,3 +0,0 @@ -COPYING ---------------------------------------- -This software is licensed under GNU GPL. diff --git a/muse/synti/simpledrums/README b/muse/synti/simpledrums/README deleted file mode 100644 index 468640b1..00000000 --- a/muse/synti/simpledrums/README +++ /dev/null @@ -1,43 +0,0 @@ --------------------------------------- -Simpledrums v 0.2, by Mathias Lundgren --------------------------------------- - -Simpledrums is a simple MESS-synth sampler (MusE Experimental Soft -Synth) aiming at becoming a simple, tightly integrated sampler for -MusE, specifically aimed at drumsamples. - -Features: -- 16 channels/samples (1 sample/channel) -- Simple controls for each individual channel: volume, balance, noteoff-ignore, channel on/off -- Main volume -- 4 LADSPA send-effects can be used, 4 effect taps for each individual channel -- All channel parameters are controllable via the GUI, or by MusE:s controller handling (controller pane in pianoroll/drumeditor) -- All effect parameters can be controlled via the GUI, or by Sysex messages (f.ex. turn effect on/off, modify effect parameters) -- Complete synth state (fx-parameters, samples etc) is saved together with MusE project, and restored later when loaded -- Samples automatically resampled when loaded (if needed) - -That's all folks! - -------------- -Known issues: -------------- -- Not the prettiest gui in the world -- All samples are read directly into memory (no caching) -- Some obscure LADSPA-effects make SimpleSynth segfault -- More... - -------------- -Future plans: -------------- -- Fix all the known issues! ;-) -- Sample loops -- Sample offset variation w respect to note velocity -- Treble/eq-controller for each individual channel -- Treble level variation w respect to note velocity -- More... - -Mathias Lundgren, (lunar_shuttle@users.sourceforge.net), 2004 -Plugin management code based on Werner Schweers plugin management handling for MusE - -(C) Copyright Mathias Lundgren, Werner Schweer 2000-2004 -Licensed under the GNU General Public License diff --git a/muse/synti/simpledrums/ReleaseNotes.txt b/muse/synti/simpledrums/ReleaseNotes.txt deleted file mode 100644 index e0d633d8..00000000 --- a/muse/synti/simpledrums/ReleaseNotes.txt +++ /dev/null @@ -1,18 +0,0 @@ -RELEASE NOTES: --------------- -????-??-?? ver 0.2 -- Support for 4 LADSPA sendeffects added -- Resampling of samples when loading (libsamplerate) -- Synth state is saved to/restored from project file -- Channel settings: balance, volume, effect tap for each sendeffect -- Effect settings: all LADSPA parameters controllable and saved to MusE project, effect master volume, effect on/off -- Support for mono + stereo samples -- Support for stereo + mono LADSPA effects -- Bugfixes, GUI-improvements etc... - -2004-11-09 ver 0.1 -- Simpledrums initial release -- 16 channels (1 sample for each channel) with parameters: volume, balance, noteoff-ignore - -(C) Copyright Mathias Lundgren, Werner Schweer 2000-2004 -Licensed under the GNU General Public License diff --git a/muse/synti/simpledrums/common.h b/muse/synti/simpledrums/common.h deleted file mode 100644 index e4763540..00000000 --- a/muse/synti/simpledrums/common.h +++ /dev/null @@ -1,110 +0,0 @@ -// -// C++ Interface: common -// -// Description: -// -// -// Author: Mathias Lundgren , (C) 2004 -// -// Copyright: See COPYING file that comes with this distribution -// -// -#ifndef __MUSE_TESTO_COMMON_H__ -#define __MUSE_TESTO_COMMON_H__ - -#include "muse/midictrl.h" - -#define SS_VERSIONSTRING "1.0" - -#define SS_DEBUG 0 -#define SS_DEBUG_INIT 0 -#define SS_TRACE_FUNC 0 -#define SS_DEBUG_MIDI 0 -#define SS_DEBUG_LADSPA 0 -#define SS_DEBUG_STATE 0 - -#define SS_DBG(string) if (SS_DEBUG) fprintf(stderr, "%s:%d:%s: %s\n", __FILE__ , __LINE__ , __PRETTY_FUNCTION__, string); -#define SS_DBG2(string1, string2) if (SS_DEBUG) fprintf(stderr, "%s:%d:%s: %s: %s\n", __FILE__ , __LINE__ , __PRETTY_FUNCTION__, string1, string2); -#define SS_DBG_I(string1, int) if (SS_DEBUG) fprintf(stderr, "%s:%d:%s: %s: %d\n", __FILE__ , __LINE__ , __PRETTY_FUNCTION__, string1, int); - -#define SS_TRACE_IN if (SS_TRACE_FUNC) fprintf (stderr, "->%s:%d\n", __PRETTY_FUNCTION__, __LINE__); -#define SS_TRACE_OUT if (SS_TRACE_FUNC) fprintf (stderr, "<-%s:%d\n", __PRETTY_FUNCTION__, __LINE__); -#define SS_ERROR(string) fprintf(stderr, "SimpleDrums error: %s\n", string) -#define SS_DBG_LADSPA(string1) if (SS_DEBUG_LADSPA) fprintf(stderr, "%s:%d:%s: %s\n", __FILE__ , __LINE__ , __PRETTY_FUNCTION__, string1); -#define SS_DBG_LADSPA2(string1, string2) if (SS_DEBUG_LADSPA) fprintf(stderr, "%s:%d:%s: %s: %s\n", __FILE__ , __LINE__ , __PRETTY_FUNCTION__, string1, string2); - -#define SS_SYSEX_INIT_DATA_VERSION 1 - -#define SS_NR_OF_CHANNELS 16 -#define SS_AUDIO_CHANNELS 2 -#define SS_NR_OF_SENDEFFECTS 4 - -// Controller-related: -#define SS_CHANNEL_CTRL_VOLUME 0 -#define SS_CHANNEL_CTRL_PAN 1 -#define SS_CHANNEL_CTRL_NOFF 2 -#define SS_CHANNEL_CTRL_ONOFF 3 -#define SS_CHANNEL_SENDFX1 4 -#define SS_CHANNEL_SENDFX2 5 -#define SS_CHANNEL_SENDFX3 6 -#define SS_CHANNEL_SENDFX4 7 - -#define SS_PLUGIN_RETURN 0 -#define SS_PLUGIN_ONOFF 1 - -#define SS_NR_OF_MASTER_CONTROLLERS 1 -#define SS_NR_OF_CHANNEL_CONTROLLERS 8 -#define SS_NR_OF_PLUGIN_CONTROLLERS 2 - -#define SS_NR_OF_CONTROLLERS (SS_NR_OF_MASTER_CONTROLLERS + (SS_NR_OF_CHANNELS * SS_NR_OF_CHANNEL_CONTROLLERS) + (SS_NR_OF_PLUGIN_CONTROLLERS*SS_NR_OF_SENDEFFECTS)) -#define SS_FIRST_MASTER_CONTROLLER CTRL_NRPN14_OFFSET -#define SS_FIRST_CHANNEL_CONTROLLER (SS_FIRST_MASTER_CONTROLLER + SS_NR_OF_MASTER_CONTROLLERS) -#define SS_LAST_MASTER_CONTROLLER (SS_FIRST_CHANNEL_CONTROLLER - 1) -#define SS_LAST_CHANNEL_CONTROLLER (SS_FIRST_CHANNEL_CONTROLLER -1 + (SS_NR_OF_CHANNEL_CONTROLLERS * SS_NR_OF_CHANNELS)) - -#define SS_FIRST_PLUGIN_CONTROLLER (SS_LAST_CHANNEL_CONTROLLER + 1) -#define SS_LAST_PLUGIN_CONTROLLER (SS_FIRST_PLUGIN_CONTROLLER -1 + SS_NR_OF_SENDEFFECTS*SS_NR_OF_PLUGIN_CONTROLLERS) - -#define SS_MASTER_CTRL_VOLUME SS_FIRST_MASTER_CONTROLLER - -#define SS_CHANNEL_VOLUME_CONTROLLER(int) (SS_FIRST_CHANNEL_CONTROLLER + (SS_NR_OF_CHANNEL_CONTROLLERS * int) + SS_CHANNEL_CTRL_VOLUME) -#define SS_CHANNEL_PAN_CONTROLLER(int) (SS_FIRST_CHANNEL_CONTROLLER + (SS_NR_OF_CHANNEL_CONTROLLERS * int) + SS_CHANNEL_CTRL_PAN) -#define SS_CHANNEL_NOFF_CONTROLLER(int) (SS_FIRST_CHANNEL_CONTROLLER + (SS_NR_OF_CHANNEL_CONTROLLERS * int) + SS_CHANNEL_CTRL_NOFF) -#define SS_CHANNEL_ONOFF_CONTROLLER(int) (SS_FIRST_CHANNEL_CONTROLLER + (SS_NR_OF_CHANNEL_CONTROLLERS * int) + SS_CHANNEL_CTRL_ONOFF) -#define SS_CHANNEL_SENDFX_CONTROLLER(int1,int2) (SS_FIRST_CHANNEL_CONTROLLER + (SS_NR_OF_CHANNEL_CONTROLLERS * int1) + SS_CHANNEL_SENDFX1 + int2) - -#define SS_PLUGIN_RETURNLEVEL_CONTROLLER(int) (SS_FIRST_PLUGIN_CONTROLLER + (int * SS_NR_OF_PLUGIN_CONTROLLERS)) -#define SS_PLUGIN_ONOFF_CONTROLLER(int) (SS_FIRST_PLUGIN_CONTROLLER + (int * SS_NR_OF_PLUGIN_CONTROLLERS) + 1) - -#define SS_LOWEST_NOTE 36 -#define SS_HIGHEST_NOTE (SS_LOWEST_NOTE + SS_NR_OF_CHANNELS) - -#define SS_PLUGIN_PARAM_MIN 0 -#define SS_PLUGIN_PARAM_MAX 127 - -typedef unsigned char byte; - -enum { - SS_SYSEX_LOAD_SAMPLE = 0, // gui -> synth: tell synth to load sample - SS_SYSEX_INIT_DATA, // synth reinitialization, the position of this (1) in the enum must not be changed since this value is written into proj file - SS_SYSEX_LOAD_SAMPLE_OK, // synth -> gui: tell gui sample loaded OK - SS_SYSEX_LOAD_SAMPLE_ERROR, // synth -> gui: tell gui sample ! loaded OK - SS_SYSEX_CLEAR_SAMPLE, // gui -> synth: tell synth to clear sample - SS_SYSEX_CLEAR_SAMPLE_OK, // synth->gui: confirm sample cleared OK - SS_SYSEX_LOAD_SENDEFFECT, // gui -> synth: tell synth to load laspa-effect - SS_SYSEX_LOAD_SENDEFFECT_OK,// synth->gui: plugin loaded ok - SS_SYSEX_LOAD_SENDEFFECT_ERROR, // synth->gui: plugin _not_ loaded ok - SS_SYSEX_CLEAR_SENDEFFECT, // gui->synth: clear plugin - SS_SYSEX_CLEAR_SENDEFFECT_OK,// synth->gui: plugin cleared - SS_SYSEX_SET_PLUGIN_PARAMETER, //gui->synth: set plugin parameter - SS_SYSEX_SET_PLUGIN_PARAMETER_OK, // synth->gui: set plugin parameter (update gui) - SS_SYSEX_ERRORMSG, // synth -> gui: general error message from synth - SS_SYSEX_GET_INIT_DATA, // gui->synth: request init data - SS_SYSEX_SEND_INIT_DATA // synth->gui: give gui init data - }; - -extern int SS_samplerate; -extern float SS_map_pluginparam2logdomain(int pluginparam_val); -extern int SS_map_logdomain2pluginparam(float pluginparam_log); -#endif - diff --git a/muse/synti/simpledrums/simpledrums.cpp b/muse/synti/simpledrums/simpledrums.cpp deleted file mode 100644 index 93be946d..00000000 --- a/muse/synti/simpledrums/simpledrums.cpp +++ /dev/null @@ -1,1719 +0,0 @@ -// -// C++ Implementation: simplesynth -// -// Description: -// -// -// Author: Mathias Lundgren , (C) 2004 -// -// Copyright: See COPYING file that comes with this distribution -// -// - -#include "muse/midictrl.h" -#include "muse/midi.h" -#include "libsynti/midievent.h" -#include "simpledrums.h" -// #include -#include - -const char* SimpleSynth::synth_state_descr[] = - { - "SS_INITIALIZING", - "SS_LOADING_SAMPLE", - "SS_CLEARING_SAMPLE", - "SS_RUNNING" - }; - -const char* SimpleSynth::channel_state_descr[] = - { - "SS_CHANNEL_INACTIVE", - "SS_SAMPLE_PLAYING" - }; - -#define SWITCH_SYNTH_STATE(state)\ -synth_state = state; \ -if (SS_DEBUG_STATE) \ - fprintf (stderr, "SS STATE: %s\n", SimpleSynth::synth_state_descr[state]); - -#define SWITCH_CHAN_STATE(ch, s)\ -channels[ch].state = s; \ -if (SS_DEBUG_STATE) \ - fprintf (stderr, "SS CHAN %d STATE: %s\n", ch, SimpleSynth::channel_state_descr[s]); - -#define SS_CHANNEL_VOLUME_QUOT 100.0 -#define SS_MASTER_VOLUME_QUOT 100.0 -int SS_samplerate; - -#define SS_LOG_MAX 0 -#define SS_LOG_MIN -10 -#define SS_LOG_OFFSET SS_LOG_MIN - - -// -// Map plugin parameter on domain [SS_PLUGIN_PARAM_MIN, SS_PLUGIN_PARAM_MAX] to domain [SS_LOG_MIN, SS_LOG_MAX] (log domain) -// -float SS_map_pluginparam2logdomain(int pluginparam_val) - { - float scale = (float) (SS_LOG_MAX - SS_LOG_MIN)/ (float) SS_PLUGIN_PARAM_MAX; - float scaled = (float) pluginparam_val * scale; - float mapped = scaled + SS_LOG_OFFSET; - return mapped; - } -// -// Map plugin parameter on domain to domain [SS_LOG_MIN, SS_LOG_MAX] to [SS_PLUGIN_PARAM_MIN, SS_PLUGIN_PARAM_MAX] (from log-> [0,127]) -// (inverse func to the above) -int SS_map_logdomain2pluginparam(float pluginparam_log) - { - float mapped = pluginparam_log - SS_LOG_OFFSET; - float scale = (float) SS_PLUGIN_PARAM_MAX / (float) (SS_LOG_MAX - SS_LOG_MIN); - int scaled = (int) round(mapped * scale); - return scaled; - } - -//--------------------------------------------------------- -// SimpleSynth -//--------------------------------------------------------- -SimpleSynth::SimpleSynth(int sr) - : Mess(SS_AUDIO_CHANNELS) - { - SS_TRACE_IN - SS_samplerate = sr; - SS_initPlugins(); - - simplesynth_ptr = this; - master_vol = 100.0 / SS_MASTER_VOLUME_QUOT; - master_vol_ctrlval = 100; - - //initialize - for (int i=0; idata; - delete channels[i].sample; - } - } - simplesynth_ptr = NULL; - - SS_DBG("Deleting pluginlist"); - //Cleanup plugins: - for (iPlugin i = plugins.begin(); i != plugins.end(); ++i) { - delete (*i); - } - plugins.clear(); - - SS_DBG("Deleting sendfx buffers"); - //Delete sendfx buffers: - for (int i=0; i